23#if defined(GPUOffloadingOMP)
110 int auxiliaryVariables,
112 const double* __restrict__ quadraturePoints,
115 const double* __restrict__ projectedValues,
116 double* __restrict__ solution
134 int auxiliaryVariables,
136 const double* __restrict__ quadraturePoints,
139 const double* __restrict__ projectedValues,
140 double* __restrict__ solution
153 const int auxiliaryVariables,
158 const double* __restrict__ QuadratureNodes1d,
159 const double* __restrict__ MassMatrixDiagonal1d,
160 const double* __restrict__ StiffnessMatrix1d,
161 const double* __restrict__ DerivativeOperator1d,
163 bool evaluateNonconservativeProduct,
165 bool evaluatePointSources
169 order, unknowns, auxiliaryVariables,
170 flux, nonConservativeProduct, source, pointSources,
172 MassMatrixDiagonal1d,
174 DerivativeOperator1d,
175 evaluateFlux, evaluateNonconservativeProduct, evaluateSource, evaluatePointSources
189 const int auxiliaryVariables,
190 const double* __restrict__ MassMatrixDiagonal1d
194 order, unknowns, auxiliaryVariables, MassMatrixDiagonal1d
205 const double*
const __restrict__ faceQLeft,
206 const double*
const __restrict__ faceQRight,
207 const double*
const __restrict__ faceQBottom,
208 const double*
const __restrict__ faceQUp,
211 const int auxiliaryVariables,
213 const double*
const __restrict__ BasisFunctionValuesLeft,
214 const double* __restrict__ MassMatrixDiagonal1d,
215 double* __restrict__ cellQ
218 faceQLeft, faceQRight, faceQBottom, faceQUp,
219 order, unknowns, auxiliaryVariables,
221 BasisFunctionValuesLeft,
222 MassMatrixDiagonal1d,
234 const double*
const __restrict__ faceQLeft,
235 const double*
const __restrict__ faceQRight,
236 const double*
const __restrict__ faceQBottom,
237 const double*
const __restrict__ faceQUp,
238 const double*
const __restrict__ faceQFront,
239 const double*
const __restrict__ faceQBack,
242 const int auxiliaryVariables,
244 const double*
const __restrict__ BasisFunctionValuesLeft,
245 const double* __restrict__ MassMatrixDiagonal1d,
246 double* __restrict__ cellQ
249 faceQLeft, faceQRight, faceQBottom, faceQUp, faceQFront, faceQBack,
250 order, unknowns, auxiliaryVariables,
252 BasisFunctionValuesLeft,
253 MassMatrixDiagonal1d,
263 int auxiliaryVariables
268 bool evaluateNonconservativeProduct,
270 bool evaluatePointSources
272 ::exahype2::dg::cellIntegral_patchwise_in_situ_GaussLegendre<Solver,order,unknowns,auxiliaryVariables>(
275 evaluateNonconservativeProduct,
void solveRiemannProblem_pointwise_in_situ(::exahype2::dg::Flux flux, ::exahype2::dg::NonConservativeProduct ncp, ::exahype2::dg::MaxEigenvalue maxEigenvalue, 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, bool useNcp, const double *__restrict__ projectedValues, double *__restrict__ solution)
Solve Riemann problem on face.
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.
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.
void solveRiemannProblem_pointwise_in_situ_with_gradient_projection(::exahype2::dg::Flux flux, ::exahype2::dg::NonConservativeProduct ncp, ::exahype2::dg::MaxEigenvalue maxEigenvalue, 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, bool useNcp, const double *__restrict__ projectedValues, double *__restrict__ solution)
std::function< double(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal) MaxEigenvalue)
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...
For the generic kernels that I use here most of the time.
Representation of a number of cells which contains all information that's required to process the sto...