Peano
Loading...
Searching...
No Matches
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)