MathFunctions.h 687 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef AMDIS_MATHFUNCTIONS_H
#define AMDIS_MATHFUNCTIONS_H
namespace AMDiS {
  //converts signed distance to phasefield
  inline double Phi1(double r, double eps) { return 0.5*(1-tanh(3*r/eps)); }
  inline double Phi2(double r, double eps) { return 0.5*(1+tanh(3*r/eps)); }
  
  //levelset: positive (1) in the set, negative (-1) outside, zero on the boundary
  inline double LevelSet(double r)
  {
    if(r<0)
      return 1;
    if(r>0)
      return -1;
    return 0;
  }

  //convert Phi1 to r
  inline double Phi1ToR(double p1, double eps) { return atanh(1-2*p1)*eps/3; }
  //convert Phi2 to r
  inline double Phi2ToR(double p2, double eps) { return atanh(1+2*p2)*eps/3; }
}
#endif