Peano
InitialValues.cpp
Go to the documentation of this file.
1 #include "InitialValues.h"
2 #include "Properties.h"
3 
8 #include "Constants.h"
9 
10 #include "tarch/la/Vector.h"
11 
12 #include "peano4/utils/Globals.h"
13 
14 #include <stdio.h>
15 #include <string.h>
16 
17 
18 
20  double * NOALIAS Q, // Q[64+0],
21  const tarch::la::Vector<DIMENSIONS,double>& x,
22  double t
23 ) {
24  constexpr int nVars = 64;
25  constexpr double pi = M_PI;
26  constexpr double peak_number = 2.0;
27  constexpr double ICA = 0.1;
28  double HH = 1.0 - ICA*sin( peak_number*pi*( x[0] - t));
29  double dxH = -peak_number*pi*ICA*cos( peak_number * pi*(x[0] - t));
30  double dxphi = - pow(HH,(-7.0/6.0))*dxH/6.0;
31  double phi = pow(( 1.0 / HH),(1.0/6.0));
32  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)) );
33  double traceK = Kxx/HH;
34  memset(Q, .0, nVars*sizeof(double));
35  Q[0] = phi*phi*HH ; //\tilde(\gamma)_xx
36  Q[3] = phi*phi ; //\tilde(\gamma)_yy
37  Q[5] = phi*phi ; //\tilde(\gamma)_zz
38  Q[6] = phi*phi*(Kxx - 1.0/3.0*traceK*HH ) ; //\tilde(A)_xx
39  Q[9] = phi*phi*(0.0 - 1.0/3.0*traceK*1.0) ; //\tilde(A)_yy
40  Q[11] = phi*phi*(0.0 - 1.0/3.0*traceK*1.0) ; //\tilde(A)_zz
41  Q[16] = log(sqrt(HH)); //ln(\alpha)
42  Q[13] = 2.0/(3.0*pow(HH,(5.0/3.0)))*dxH ; //\hat(\Gamma)^x
43  Q[23] = 1.0/(2.0*HH)*dxH ; //A_x
44  Q[35] = pow(HH,(-1.0/3.0))*dxH/3.0 ; //D_xxx
45  Q[38] = phi*dxphi ; //D_xyy
46  Q[40] = phi*dxphi ; //D_xzz
47  Q[53] = traceK; //K
48  Q[54] = log(phi); //ln(\phi)
49  Q[55] = dxphi/phi; //P_x
50  Q[59] = HH;
51  Q[60] = 2.0*Kxx;
52  Q[61] = dxH;
53 }
54 
56  double * NOALIAS Q, // Q[64+0],
57  const tarch::la::Vector<DIMENSIONS,double>& X,
58  double t
59 ) {
60  constexpr int nVars = 64;
61  constexpr double pi = M_PI;
62  constexpr double peak_number = 2.0;
63  constexpr double ICA = 1e-4;
64  double HH = ICA*sin( peak_number*pi*( X[0] - t));
65  double dxHH = peak_number*pi*ICA*cos( peak_number * pi*(X[0] - t));
66  double dtHH = -peak_number*pi*ICA*cos( peak_number * pi*(X[0] - t));
67  memset(Q, .0, nVars*sizeof(double));
68  Q[0] = 1.0 ; //\tilde(\gamma)_xx
69  Q[3] = 1+HH ; //\tilde(\gamma)_yy
70  Q[5] = 1-HH ; //\tilde(\gamma)_zz
71  Q[6] = 0.0 ; //\tilde(A)_xx
72  Q[9] = -0.5*dtHH ; //\tilde(A)_yy
73  Q[11] = 0.5*dtHH ; //\tilde(A)_zz
74  Q[16] = log(1.0) ; //ln(\alpha)
75  Q[35] = 0.0 ; //D_xxx
76  Q[38] = 0.5*dxHH ; //D_xyy
77  Q[40] = -0.5*dxHH ; //D_xzz
78  Q[54] = log(1.0) ; //ln(\phi)
79 }
80 
82  double * NOALIAS Q, // Q[64+0],
83  const tarch::la::Vector<DIMENSIONS,double>& x,
84  double t
85 ) {
86  constexpr int nVars = 64;
87  constexpr double pi = M_PI;
88  constexpr double peak_number = 2.0;
89  constexpr double ICA = 0.1;
90  double HH = 1.0 - ICA*sin( peak_number*pi*( x[0] - t));
91  double dxH = -peak_number*pi*ICA*cos( peak_number * pi*(x[0] - t));
92  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)) );
93  memset(Q, .0, nVars*sizeof(double));
94  Q[0] = 1.0 ; //\tilde(\gamma)_xx
95  Q[3] = 1.0 ; //\tilde(\gamma)_yy
96  Q[5] = 1.0 ; //\tilde(\gamma)_zz
97  Q[59] = HH;
98  Q[60] = 2.0*Kxx;
99  Q[61] = dxH;
100 }
101 
102 
void linearWave(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)
void forcedflat(double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &X, double t)