23#if defined(GPUOffloadingOMP)
82 int auxiliaryVariables,
84 const double* __restrict__ quadraturePoints,
86 const double* __restrict__ projectedValues,
87 double* __restrict__ solution
100 const int auxiliaryVariables,
105 const double* __restrict__ QuadratureNodes1d,
106 const double* __restrict__ MassMatrixDiagonal1d,
107 const double* __restrict__ StiffnessMatrix1d,
108 const double* __restrict__ DerivativeOperator1d,
110 bool evaluateNonconservativeProduct,
112 bool evaluatePointSources
116 order, unknowns, auxiliaryVariables,
117 flux, nonConservativeProduct, source, pointSources,
119 MassMatrixDiagonal1d,
121 DerivativeOperator1d,
122 evaluateFlux, evaluateNonconservativeProduct, evaluateSource, evaluatePointSources
136 const int auxiliaryVariables,
137 const double* __restrict__ MassMatrixDiagonal1d
141 order, unknowns, auxiliaryVariables, MassMatrixDiagonal1d
152 const double*
const __restrict__ faceQLeft,
153 const double*
const __restrict__ faceQRight,
154 const double*
const __restrict__ faceQBottom,
155 const double*
const __restrict__ faceQUp,
158 const int auxiliaryVariables,
160 const double*
const __restrict__ BasisFunctionValuesLeft,
161 const double* __restrict__ MassMatrixDiagonal1d,
162 double* __restrict__ cellQ
165 faceQLeft, faceQRight, faceQBottom, faceQUp,
166 order, unknowns, auxiliaryVariables,
168 BasisFunctionValuesLeft,
169 MassMatrixDiagonal1d,
181 const double*
const __restrict__ faceQLeft,
182 const double*
const __restrict__ faceQRight,
183 const double*
const __restrict__ faceQBottom,
184 const double*
const __restrict__ faceQUp,
185 const double*
const __restrict__ faceQFront,
186 const double*
const __restrict__ faceQBack,
189 const int auxiliaryVariables,
191 const double*
const __restrict__ BasisFunctionValuesLeft,
192 const double* __restrict__ MassMatrixDiagonal1d,
193 double* __restrict__ cellQ
196 faceQLeft, faceQRight, faceQBottom, faceQUp, faceQFront, faceQBack,
197 order, unknowns, auxiliaryVariables,
199 BasisFunctionValuesLeft,
200 MassMatrixDiagonal1d,
210 int auxiliaryVariables
215 bool evaluateNonconservativeProduct,
217 bool evaluatePointSources
219 ::exahype2::dg::cellIntegral_patchwise_in_situ_GaussLegendre<Solver,order,unknowns,auxiliaryVariables>(
222 evaluateNonconservativeProduct,
static void multiplyWithInvertedMassMatrix_GaussLegendre(::exahype2::CellData< double, double > &cellData, const int order, const int unknowns, const int auxiliaryVariables, const double *__restrict__ MassMatrixDiagonal1d)
Delegate to generic implementation.
static void integrateOverRiemannSolutionsAndAddToVolume_GaussLegendre(const double *const __restrict__ faceQLeft, const double *const __restrict__ faceQRight, const double *const __restrict__ faceQBottom, const double *const __restrict__ faceQUp, int order, int unknowns, const int auxiliaryVariables, const tarch::la::Vector< 2, double > &cellSize, const double *const __restrict__ BasisFunctionValuesLeft, const double *__restrict__ MassMatrixDiagonal1d, double *__restrict__ cellQ)
Delegate to generic implementation.
void cellIntegral_patchwise_in_situ_GaussLegendre(::exahype2::CellData< double, double > &cellData, bool evaluateFlux, bool evaluateNonconservativeProduct, bool evaluateSource, bool evaluatePointSources)
static void cellIntegral_patchwise_in_situ_GaussLegendre_functors(::exahype2::CellData< double, double > &cellData, const int order, const int unknowns, const int auxiliaryVariables, Flux flux, NonConservativeProduct nonConservativeProduct, Source source, PointSources pointSources, const double *__restrict__ QuadratureNodes1d, const double *__restrict__ MassMatrixDiagonal1d, const double *__restrict__ StiffnessMatrix1d, const double *__restrict__ DerivativeOperator1d, bool evaluateFlux, bool evaluateNonconservativeProduct, bool evaluateSource, bool evaluatePointSources)
Delegate to generic implementation in parent directory.
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 double *__restrict__ dQdx, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal, double *__restrict__ F) NonConservativeProduct)
void multiplyWithInvertedMassMatrix_GaussLegendre(::exahype2::CellData< double, double > &cellData, const int order, const int unknowns, const int auxiliaryVariables, const double *__restrict__ MassMatrixDiagonal1d)
Final step of DG algorithm.
std::function< std::vector< PointSource >(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &cellCentre, const tarch::la::Vector< Dimensions, double > &h, double t, double dt) PointSources)
This is the only routine within the DG framework which accepts the dimensions of the underlying cell ...
void cellIntegral_patchwise_in_situ_GaussLegendre_functors(::exahype2::CellData< double, double > &cellData, const int order, const int unknowns, const int auxiliaryVariables, Flux flux, NonConservativeProduct nonconservativeProduct, Source source, PointSources pointSources, const double *__restrict__ QuadratureNodes1d, const double *__restrict__ MassMatrixDiagonal1d, const double *__restrict__ StiffnessMatrix1d, const double *__restrict__ DerivativeOperator1d, bool evaluateFlux, bool evaluateNonconservativeProduct, bool evaluateSource, bool evaluatePointSources)
std::function< void(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, double *__restrict__ S) Source)
Source functor.
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.
void integrateOverRiemannSolutionsAndAddToVolume_GaussLegendre(const double *const __restrict__ faceQLeft, const double *const __restrict__ faceQRight, const double *const __restrict__ faceQBottom, const double *const __restrict__ faceQUp, int order, int unknowns, const int auxiliaryVariables, const tarch::la::Vector< 2, double > &cellSize, const double *const __restrict__ BasisFunctionValuesLeft, const double *__restrict__ MassMatrixDiagonal1d, double *__restrict__ cellQ)
Given a numerical flux at the various faces, this computes and adds the Riemann integral of this flux...
This file is part of the multigrid project within Peano 4.
Representation of a number of cells which contains all information that's required to process the sto...