9#include "../Functors.h"
14#include "../CellIntegral.h"
15#include "../Riemann.h"
23#if defined(GPUOffloadingOMP)
110 int auxiliaryVariables,
112 const double* __restrict__ quadraturePoints,
115 const double* __restrict__ projectedValues,
116 double* __restrict__ solution
129 int auxiliaryVariables,
131 const double* __restrict__ quadraturePoints,
134 const double* __restrict__ projectedValues,
135 double* __restrict__ solution,
154 int auxiliaryVariables,
156 const double* __restrict__ quadraturePoints,
159 const double* __restrict__ projectedValues,
160 double* __restrict__ solution
173 const int auxiliaryVariables,
178 const double* __restrict__ QuadratureNodes1d,
179 const double* __restrict__ MassMatrixDiagonal1d,
180 const double* __restrict__ StiffnessMatrix1d,
181 const double* __restrict__ DerivativeOperator1d,
183 bool evaluateNonconservativeProduct,
185 bool evaluatePointSources
189 order, unknowns, auxiliaryVariables,
190 flux, nonConservativeProduct, source, pointSources,
192 MassMatrixDiagonal1d,
194 DerivativeOperator1d,
195 evaluateFlux, evaluateNonconservativeProduct, evaluateSource, evaluatePointSources
209 const int auxiliaryVariables,
210 const double* __restrict__ MassMatrixDiagonal1d
214 order, unknowns, auxiliaryVariables, MassMatrixDiagonal1d
225 const double*
const __restrict__ faceQLeft,
226 const double*
const __restrict__ faceQRight,
227 const double*
const __restrict__ faceQBottom,
228 const double*
const __restrict__ faceQUp,
231 const int auxiliaryVariables,
233 const double*
const __restrict__ BasisFunctionValuesLeft,
234 const double* __restrict__ MassMatrixDiagonal1d,
235 double* __restrict__ cellQ
238 faceQLeft, faceQRight, faceQBottom, faceQUp,
239 order, unknowns, auxiliaryVariables,
241 BasisFunctionValuesLeft,
242 MassMatrixDiagonal1d,
254 const double*
const __restrict__ faceQLeft,
255 const double*
const __restrict__ faceQRight,
256 const double*
const __restrict__ faceQBottom,
257 const double*
const __restrict__ faceQUp,
258 const double*
const __restrict__ faceQFront,
259 const double*
const __restrict__ faceQBack,
262 const int auxiliaryVariables,
264 const double*
const __restrict__ BasisFunctionValuesLeft,
265 const double* __restrict__ MassMatrixDiagonal1d,
266 double* __restrict__ cellQ
269 faceQLeft, faceQRight, faceQBottom, faceQUp, faceQFront, faceQBack,
270 order, unknowns, auxiliaryVariables,
272 BasisFunctionValuesLeft,
273 MassMatrixDiagonal1d,
283 int auxiliaryVariables
288 bool evaluateNonconservativeProduct,
290 bool evaluatePointSources
292 ::exahype2::dg::cellIntegral_patchwise_in_situ_GaussLegendre<Solver,order,unknowns,auxiliaryVariables>(
295 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)
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< void(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal, double *maxEigenvalue) > MaxEigenvalue
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 ...
std::function< void(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, double *__restrict__ S) > Source
Source functor.
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, int normal, double *__restrict__ F) > Flux
Flux functor.
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 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 ExaHyPE 2 project within Peano 4.
Representation of a number of cells which contains all information that's required to process the sto...