24 int numberOfGridCellsPerPatchPerAxis,
27 int auxiliaryVariables,
32 #if defined(SharedOMP) and ((!defined(__INTEL_LLVM_COMPILER) and !defined(__clang__) and !defined(__GNUC__)) or !defined(GPUOffloadingOMP))
33 #pragma omp declare simd
35 #if defined(GPUOffloadingOMP)
36 #pragma omp declare target
38 template <
class QInEnumeratorType,
class QOutEnumeratorType>
40 const double* __restrict__ QIn,
41 const QInEnumeratorType& QInEnumerator,
45 double* __restrict__ QOut,
46 const QOutEnumeratorType& QOutEnumerator
48 #if defined(GPUOffloadingOMP)
49 #pragma omp end declare target
55 #if defined(SharedOMP) and ((!defined(__INTEL_LLVM_COMPILER) and !defined(__clang__) and !defined(__GNUC__)) or !defined(GPUOffloadingOMP))
56 #pragma omp declare simd
58 #if defined(GPUOffloadingOMP)
59 #pragma omp declare target
61 template <
class QOutEnumeratorType>
66 double* __restrict__ QOut,
67 const QOutEnumeratorType& QOutEnumerator
69 #if defined(GPUOffloadingOMP)
70 #pragma omp end declare target
95 template <
class QInEnumeratorType,
class QOutEnumeratorType>
97 const double* __restrict__ QIn,
98 const QInEnumeratorType& QInEnumerator,
106 double* __restrict__ QOut,
107 const QOutEnumeratorType& QOutEnumerator
114 template <
typename Solver,
class QInEnumeratorType,
class QOutEnumeratorType>
116 const double* __restrict__ QIn,
117 const QInEnumeratorType& QInEnumerator,
124 double* __restrict__ QOut,
125 const QOutEnumeratorType& QOutEnumerator
131 template <
typename Solver>
133 const double* __restrict__ QIn,
141 double* __restrict__ QOut,
145 template <
class QOutEnumeratorType>
147 const double* __restrict__ QOut,
148 const QOutEnumeratorType& QOutEnumerator,
163 const double* __restrict__ QOut,
177 template <
typename Solver,
class QOutEnumeratorType>
179 const double* __restrict__ QOut,
180 const QOutEnumeratorType& QOutEnumerator,
192 template <
typename Solver>
194 const double* __restrict__ QOut,
static void copySolution_LoopBody(const double *__restrict__ QIn, const QInEnumeratorType &QInEnumerator, int patchIndex, const tarch::la::Vector< Dimensions, int > &volumeIndex, int unknown, double *__restrict__ QOut, const QOutEnumeratorType &QOutEnumerator) InlineMethod
static void addAlgebraicSourceTerm_LoopBody(const double *__restrict__ QIn, const QInEnumeratorType &QInEnumerator, exahype2::fd::Source AlgebraicSource, const tarch::la::Vector< Dimensions, double > &patchCentre, const tarch::la::Vector< Dimensions, double > &patchSize, int patchIndex, const tarch::la::Vector< Dimensions, int > &volumeIndex, double t, double dt, double *__restrict__ QOut, const QOutEnumeratorType &QOutEnumerator) InlineMethod
Copy previous solution over into new time step and add source term.
static void clearSolution_LoopBody(int patchIndex, const tarch::la::Vector< Dimensions, int > &volumeIndex, int unknown, double *__restrict__ QOut, const QOutEnumeratorType &QOutEnumerator) InlineMethod
The complicated way to write =0.
static double reduceMaxEigenvalue_LoopBody(const double *__restrict__ QOut, const QOutEnumeratorType &QOutEnumerator, exahype2::fd::MaxEigenvalue maxEigenvalue, const tarch::la::Vector< Dimensions, double > &patchCentre, const tarch::la::Vector< Dimensions, double > &patchSize, int patchIndex, const tarch::la::Vector< Dimensions, int > &volumeIndex, double t, double dt) InlineMethod
std::function< void(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &gridCellX, const tarch::la::Vector< Dimensions, double > &gridCellH, double t, double dt, double *__restrict__ AlgeSrc) Source)
void reduceMaxEigenvalue_patchwise_functors(::exahype2::CellData< double, double > &patchData, int numberOfGridCellsPerPatchPerAxis, int overlap, int unknowns, int auxiliaryVariables, MaxEigenvalue maxEigenvalue)
constexpr int PickAllEntriesFromOutputVector
std::function< double(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &gridCellX, const tarch::la::Vector< Dimensions, double > &gridCellH, double t, double dt, int normal) MaxEigenvalue)
The max eigenvalue is used if and only if you have adaptive time stepping.
For the generic kernels that I use here most of the time.
auto volumeIndex(Args... args)
Representation of a number of cells which contains all information that's required to process the sto...
Array of struct enumerator.
#define InlineMethod
Generic identifier for inlined functions.