1 #include "InitialValues.h"
2 #include "Properties.h"
9 #include "tarch/la/Vector.h"
11 #include "peano4/utils/Globals.h"
17 #ifdef IncludeTwoPunctures
23 const tarch::la::Vector<DIMENSIONS,double>&
x,
26 constexpr
int nVars = 59;
27 constexpr
double pi = M_PI;
28 constexpr
double peak_number = 2.0;
29 constexpr
double ICA = 0.1;
30 double HH = 1.0 - ICA*sin( peak_number*
pi*(
x[0] -
t));
31 double dxH = -peak_number*
pi*ICA*cos( peak_number *
pi*(
x[0] -
t));
32 double dxphi = - pow(HH,(-7.0/6.0))*dxH/6.0;
33 double phi = pow(( 1.0 / HH),(1.0/6.0));
34 double Kxx = - 0.5*peak_number*
pi*ICA*cos( peak_number *
pi*(
x[0] -
t))/sqrt( 1.0 - ICA*sin( peak_number*
pi*(
x[0] -
t)) );
35 double traceK = Kxx/HH;
36 std::memset(Q, .0, nVars*
sizeof(
double));
40 Q[6] = phi*phi*(Kxx - 1.0/3.0*traceK*HH ) ;
41 Q[9] = phi*phi*(0.0 - 1.0/3.0*traceK*1.0) ;
42 Q[11] = phi*phi*(0.0 - 1.0/3.0*traceK*1.0) ;
44 Q[13] = 2.0/(3.0*pow(HH,(5.0/3.0)))*dxH ;
45 Q[23] = 1.0/(2.0)*dxH*pow(HH,(-1.0/2.0)) ;
46 Q[35] = pow(HH,(-1.0/3.0))*dxH/3.0 ;
56 const tarch::la::Vector<DIMENSIONS,double>&
x,
59 constexpr
int nVars = 59;
60 constexpr
double pi = M_PI;
61 constexpr
double peak_number = 2.0;
62 constexpr
double ICA = 0.1;
63 double phase = peak_number*
pi*(
x[0] -
x[1] -
t);
64 double H=1+2.0*ICA*sin(phase);
65 std::memset(Q, .0, nVars*
sizeof(
double));
66 Q[0] = pow(
H,(-1.0/3.0))*(1+ICA*sin(phase));
67 Q[1] = -pow(
H,(-1.0/3.0))*(ICA*sin(phase));
68 Q[3] = pow(
H,(-1.0/3.0))*(1+ICA*sin(phase));
69 Q[5] = pow(
H,(-1.0/3.0));
70 Q[6] = pow(
H,(-5.0/6.0))*(peak_number*
pi*ICA/2.0)*cos(phase)*(1.0 - 2.0 * (1+ICA*sin(phase)) / (3.0*
H) );
71 Q[7] = pow(
H,(-5.0/6.0))*(peak_number*
pi*ICA/2.0)*cos(phase)*(2.0 * ICA*sin(phase) / (3.0*
H) - 1.0 );
72 Q[9] = pow(
H,(-5.0/6.0))*(peak_number*
pi*ICA/2.0)*cos(phase)*(1.0 - 2.0 * (1+ICA*sin(phase)) / (3.0*
H) );
73 Q[11] = pow(
H,(-11.0/6.0))*(peak_number*
pi*ICA/3.0)*cos(phase);
74 Q[13] = pow(
H,(-5.0/3.0))*(4.0*peak_number*
pi*ICA/3.0)*cos(phase);
75 Q[14] = -pow(
H,(-5.0/3.0))*(4.0*peak_number*
pi*ICA/3.0)*cos(phase);
77 Q[23] = pow(
H,-1.0)*(peak_number*
pi*ICA)*cos(phase);
78 Q[24] = -pow(
H,-1.0)*(peak_number*
pi*ICA)*cos(phase);
79 Q[35] = pow(
H,(-4.0/3.0))*(peak_number*
pi*ICA/6.0)*cos(phase)*(1.0 + 4.0 * ICA*sin(phase) );
80 Q[36] = -pow(
H,(-4.0/3.0))*(peak_number*
pi*ICA/6.0)*cos(phase)*(3.0 + 4.0 * ICA*sin(phase) );
81 Q[38] = pow(
H,(-4.0/3.0))*(peak_number*
pi*ICA/6.0)*cos(phase)*(1.0 + 4.0 * ICA*sin(phase) );
82 Q[40] = -pow(
H,(-4.0/3.0))*(peak_number*
pi*ICA/3.0)*cos(phase);
83 Q[41] = -pow(
H,(-4.0/3.0))*(peak_number*
pi*ICA/6.0)*cos(phase)*(1.0 + 4.0 * ICA*sin(phase) );
84 Q[42] = pow(
H,(-4.0/3.0))*(peak_number*
pi*ICA/6.0)*cos(phase)*(3.0 + 4.0 * ICA*sin(phase) );
85 Q[41] = -pow(
H,(-4.0/3.0))*(peak_number*
pi*ICA/6.0)*cos(phase)*(1.0 + 4.0 * ICA*sin(phase) );
86 Q[46] = pow(
H,(-4.0/3.0))*(peak_number*
pi*ICA/3.0)*cos(phase);
87 Q[53] = pow(
H,(-3.0/2.0))*(peak_number*
pi*ICA)*cos(phase);
88 Q[54] = -(1.0/6.0)*log(
H);
89 Q[55] = -pow(
H,-1.0)*(peak_number*
pi*ICA/3.0)*cos(phase);
90 Q[56] = pow(
H,-1.0)*(peak_number*
pi*ICA/3.0)*cos(phase);
95 const tarch::la::Vector<DIMENSIONS,double>&
X,
98 constexpr
int nVars = 59;
99 constexpr
double pi = M_PI;
100 constexpr
double peak_number = 2.0;
101 constexpr
double ICA = 1e-4;
102 double HH = ICA*sin( peak_number*
pi*(
X[0] -
t));
103 double dxHH = peak_number*
pi*ICA*cos( peak_number *
pi*(
X[0] -
t));
104 double dtHH = -peak_number*
pi*ICA*cos( peak_number *
pi*(
X[0] -
t));
105 std::memset(Q, .0, nVars*
sizeof(
double));
121 const tarch::la::Vector<DIMENSIONS,double>&
x,
124 std::memset(Q, .0, 59*
sizeof(
double));
132 #ifdef IncludeTwoPunctures
135 const tarch::la::Vector<DIMENSIONS,double>&
X,
140 constexpr
int nVars = 59;
141 const double coor[3]={
X[0],
X[1],
X[2]};
142 double LgradQ[3*nVars];
143 std::memset(Q, .0, nVars*
sizeof(
double));
void Interpolate(const double *const pos, double *Q, bool low_res=false)
Interpolation function for an external caller.
void GradientCal(const double *X, double *NOALIAS Q, double *LgradQ, int nVars, TP::TwoPunctures *tp, bool low_res=false)
void AuxiliaryCal(double *NOALIAS Q, double *LgradQ, int nVars)
void SOCCZ4Cal(double *NOALIAS Q)
void diagonal_gaugeWave(double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &x, double t)
void linearWave(double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &X, double t)
void ApplyTwoPunctures(double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &X, double t, TP::TwoPunctures *tp, bool low_res)
void flat(double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &X, double t)
void gaugeWave(double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &x, double t)