14 int auxiliaryVariables,
16 const double* __restrict__ quadraturePoints,
18 const double* __restrict__ projectedValues,
19 double* __restrict__ solution
22 faceOffset(faceNumber%Dimensions) += 0.5 * cellSize(faceNumber%Dimensions);
27 double* averageQ =
new double[unknowns+auxiliaryVariables];
29 dfore(dof,order+1,faceNumber % Dimensions,0) {
31 for (
int d=0; d<Dimensions; d++) {
33 x(d) += (d==faceNumber % Dimensions) ? 0.0 : quadraturePoints[dof(d)] * cellSize(d);
39 leftDoF(faceNumber % Dimensions) = 0;
40 rightDoF(faceNumber % Dimensions) = 1;
43 for(
int var=0; var<unknowns; var++){
44 solution[ outputEnumerator(leftDoF,var) ] = 0.0;
45 solution[ outputEnumerator(rightDoF,var) ] = 0.0;
48 for(
int var=0; var<unknowns+auxiliaryVariables; var++){
49 averageQ[ var ] = 0.5 * projectedValues[ inputEnumerator(rightDoF,var) ]
50 + 0.5 * projectedValues[ inputEnumerator(leftDoF,var) ];
#define dfore(counter, max, dim, value)
This is an exclusive d-dimensional for loop.
void solveRiemannProblem_pointwise_in_situ(::exahype2::dg::Flux flux, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &cellSize, double t, double dt, int order, int unknowns, int auxiliaryVariables, int faceNumber, const double *__restrict__ quadraturePoints, bool useFlux, const double *__restrict__ projectedValues, double *__restrict__ solution)
Solve Riemann problem on face.
std::function< void(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal, double *__restrict__ F) Flux)
Flux functor.