4 #include "EulerSolver.h"
11 * (0.2969 * sqrt(
x /
c) + ((((-0.1015) * (
x /
c) + 0.2843) * (
x /
c) - 0.3516) * (
x /
c) - 0.1260) * (
x /
c));
14 void tutorials::exahype2::euler::EulerSolver::initialCondition(
15 [[maybe_unused]]
double*
const NOALIAS Q,
16 [[maybe_unused]]
const tarch::la::Vector<DIMENSIONS, double>&
x,
17 [[maybe_unused]]
const tarch::la::Vector<DIMENSIONS, double>&
h,
18 [[maybe_unused]]
const bool gridIsConstructed
21 const double alpha = (
y >
x[1] && -
y <
x[1]) ? 0.0 : 1.0;
23 Q[0] = (
y >
x[1] && -
y <
x[1]) ? 1000.0 : 1.0;
29 void tutorials::exahype2::euler::EulerSolver::boundaryConditions(
30 [[maybe_unused]]
const double*
const NOALIAS Qinside,
31 [[maybe_unused]]
double*
const NOALIAS Qoutside,
32 [[maybe_unused]]
const tarch::la::Vector<DIMENSIONS, double>&
x,
33 [[maybe_unused]]
const tarch::la::Vector<DIMENSIONS, double>&
h,
34 [[maybe_unused]]
const double t,
35 [[maybe_unused]]
const int normal
37 if (normal == 0 &&
x[0] == DomainOffset[0]) {
43 Qoutside[0] = Qinside[0];
44 Qoutside[1] = Qinside[1];
45 Qoutside[2] = Qinside[2];
46 Qoutside[3] = Qinside[3];
51 [[maybe_unused]]
const double*
const NOALIAS Q,
52 [[maybe_unused]]
const tarch::la::Vector<DIMENSIONS, double>&
x,
53 [[maybe_unused]]
const tarch::la::Vector<DIMENSIONS, double>&
h,
54 [[maybe_unused]]
const double t,
55 [[maybe_unused]]
const double dt,
56 [[maybe_unused]]
const int normal
58 const double irho = 1.0 / Q[0];
59 constexpr
double gamma = 1.4;
60 const double p = (
gamma - 1) * (Q[3] - 0.5 * irho * (Q[1] * Q[1] + Q[2] * Q[2]));
62 const double c = std::sqrt(
gamma *
p * irho);
63 const double u = Q[normal + 1] * irho;
65 return std::max(std::abs(
u -
c), std::abs(
u +
c));
69 [[maybe_unused]]
const double*
const NOALIAS Q,
70 [[maybe_unused]]
const tarch::la::Vector<DIMENSIONS, double>&
x,
71 [[maybe_unused]]
const tarch::la::Vector<DIMENSIONS, double>&
h,
72 [[maybe_unused]]
const double t,
73 [[maybe_unused]]
const double dt,
74 [[maybe_unused]]
const int normal,
75 [[maybe_unused]]
double*
const NOALIAS F
77 const double irho = 1.0 / Q[0];
78 constexpr
double gamma = 1.4;
79 const double p = (
gamma - 1) * (Q[3] - 0.5 * irho * (Q[1] * Q[1] + Q[2] * Q[2]));
82 F[1] = Q[normal + 1] * Q[1] * irho;
83 F[2] = Q[normal + 1] * Q[2] * irho;
84 F[3] = Q[normal + 1] * irho * (Q[3] +
p);
double airfoilSymmetric(double x, double c=100, double t=0.12)
static double maxEigenvalue(const double *const Q, int normal, const double CCZ4e, const double CCZ4ds, const double CCZ4GLMc, const double CCZ4GLMd)
tarch::logging::Log _log
This is variant 1 of the fused kernels.