4 [[maybe_unused]]
const double * __restrict__ Q,
6 [[maybe_unused]]
double t,
7 [[maybe_unused]]
double dt,
8 [[maybe_unused]]
int normal,
9 [[maybe_unused]]
double * __restrict__ F
11 constexpr double gamma = 1.4;
12 const double irho = 1./Q[0];
13 const double p = (gamma-1) * (Q[4] - 0.5*irho*(Q[1]*Q[1]+Q[2]*Q[2]+Q[3]*Q[3]));
15 const double velocity = irho*Q[normal+1];
21 F[4] = velocity*(Q[4]+p);
25 [[maybe_unused]]
const double * __restrict__ Q,
27 [[maybe_unused]]
double t,
28 [[maybe_unused]]
double dt,
29 [[maybe_unused]]
double * __restrict__ S
39 [[maybe_unused]]
const double * __restrict__ Q,
41 [[maybe_unused]]
double t,
42 [[maybe_unused]]
double dt,
43 [[maybe_unused]]
int normal
45 assertion8( Q[0]>0.0, Q[0], Q[1], Q[2], Q[3], Q[4], x, t, normal );
46 const double irho = 1.0/Q[0];
49 const double gamma = 1.4;
50 const double p = (gamma-1) * (Q[4] - 0.5*irho*(Q[1]*Q[1]+Q[2]*Q[2]+Q[3]*Q[3]));
52 assertion8( p>=0.0, Q[0], Q[1], Q[2], Q[3], Q[4], x, t, normal );
53 const double c = std::sqrt(gamma * p * irho);
70 [[maybe_unused]]
const double * __restrict__ Qinside,
71 [[maybe_unused]]
double * __restrict__ Qoutside,
73 [[maybe_unused]]
double t,
74 [[maybe_unused]]
double dt,
75 [[maybe_unused]]
int normal
77 Qoutside[0] = Qinside[0];
78 Qoutside[1] = Qinside[1];
79 Qoutside[2] = Qinside[2];
80 Qoutside[3] = Qinside[3];
81 Qoutside[4] = Qinside[4];
85 [[maybe_unused]]
double* __restrict__ Q,
86 [[maybe_unused]]
int node
88 Q[0] = 1.00000000000000;
89 Q[1] = 0.100000000000000;
90 Q[2] = 0.200000000000000;
91 Q[3] = 0.300000000000000;
92 Q[4] = 2.57000000000000;
96 for(
int i=0; i<9; i++){
106 [[maybe_unused]]
const double * __restrict__ Q,
108 [[maybe_unused]]
double t,
109 [[maybe_unused]]
double dt,
110 [[maybe_unused]]
int normal,
111 [[maybe_unused]]
double * __restrict__ F
114 for(
int i=0; i<6; i++){
139 [[maybe_unused]]
const double * __restrict__ Q,
141 [[maybe_unused]]
double t,
142 [[maybe_unused]]
double dt,
143 [[maybe_unused]]
double * __restrict__ S
157 [[maybe_unused]]
const double * __restrict__ Q,
159 [[maybe_unused]]
double t,
160 [[maybe_unused]]
double dt,
161 [[maybe_unused]]
int normal
168 [[maybe_unused]]
const double * __restrict__ Qinside,
169 [[maybe_unused]]
double * __restrict__ Qoutside,
171 [[maybe_unused]]
double t,
172 [[maybe_unused]]
double dt,
173 [[maybe_unused]]
int normal
175 Qoutside[0] = Qinside[0];
176 Qoutside[1] = Qinside[1];
177 Qoutside[2] = Qinside[2];
178 Qoutside[3] = Qinside[3];
179 Qoutside[4] = Qinside[4];
180 Qoutside[5] = Qinside[5];
181 Qoutside[6] = Qinside[6];
182 Qoutside[7] = Qinside[7];
183 Qoutside[8] = Qinside[8];
184 Qoutside[9] = Qinside[9];
185 Qoutside[10] = Qinside[10];
186 Qoutside[11] = Qinside[11];
190 [[maybe_unused]]
const double * __restrict__ Q,
191 [[maybe_unused]]
const double * __restrict__ deltaQ,
193 [[maybe_unused]]
double t,
194 [[maybe_unused]]
double dt,
195 [[maybe_unused]]
int normal,
196 [[maybe_unused]]
double * __restrict__ BgradQ
199 double mu = Q[9] * Q[11] * Q[11];
200 double lambda = Q[9] * Q[10] * Q[10] - 2 * mu;
205 BgradQ[0] = (lambda + 2*mu) * deltaQ[6];
206 BgradQ[1] = lambda * deltaQ[6];
207 BgradQ[2] = lambda * deltaQ[6];
208 BgradQ[3] = mu * deltaQ[7];
209 BgradQ[4] = mu * deltaQ[8];
213 BgradQ[0] = lambda * deltaQ[7];
214 BgradQ[1] = (lambda + 2*mu) * deltaQ[7];
215 BgradQ[2] = lambda * deltaQ[7];
216 BgradQ[3] = mu * deltaQ[6];
218 BgradQ[5] = mu * deltaQ[8];
221 BgradQ[0] = lambda * deltaQ[8];
222 BgradQ[1] = lambda * deltaQ[8];
223 BgradQ[2] = (lambda + 2*mu) * deltaQ[8];
225 BgradQ[4] = mu * deltaQ[6];
226 BgradQ[5] = mu * deltaQ[7];
237 [[maybe_unused]]
const double * __restrict__ Qinside,
238 [[maybe_unused]]
double * __restrict__ Qoutside,
240 [[maybe_unused]]
double t,
241 [[maybe_unused]]
double dt,
242 [[maybe_unused]]
int normal
244 Qoutside[0] = Qinside[0];
247 Qoutside[3] = normal;
251 [[maybe_unused]]
const double * __restrict__ Q,
253 [[maybe_unused]]
double t,
254 [[maybe_unused]]
double dt,
255 [[maybe_unused]]
int normal
257 double result = Q[0]*normal;
262 [[maybe_unused]]
const double * __restrict__ Qinside,
263 [[maybe_unused]]
double * __restrict__ Qoutside,
265 [[maybe_unused]]
double t,
266 [[maybe_unused]]
double dt,
267 [[maybe_unused]]
int normal
#define assertion8(expr, param0, param1, param2, param3, param4, param5, param6, param7)
void elasticInitial(double *__restrict__ Q)
double eulerEigenvalue(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal)
void elasticFlux(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal, double *__restrict__ F)
double elasticEigenvalue(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal)
void secondTestBoundaryConditions(const double *__restrict__ Qinside, double *__restrict__ Qoutside, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal)
void elasticSource(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, double *__restrict__ S)
void eulerBoundaryConditions(const double *__restrict__ Qinside, double *__restrict__ Qoutside, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal)
void eulerFlux(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal, double *__restrict__ F)
void elasticBoundaryConditions(const double *__restrict__ Qinside, double *__restrict__ Qoutside, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal)
void testBoundaryConditions(const double *__restrict__ Qinside, double *__restrict__ Qoutside, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal)
double testEigenvalue(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal)
void eulerInitial(double *__restrict__ Q, int node=0)
void elasticNonConservativeProduct(const double *__restrict__ Q, const double *__restrict__ deltaQ, const tarch::la::Vector< Dimensions, double > &faceCentre, double t, double dt, int normal, double *__restrict__ BgradQ)
void eulerSource(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, double *__restrict__ S)