Peano
Loading...
Searching...
No Matches
Riemann.h
Go to the documentation of this file.
1// This file is part of the ExaHyPE2 project. For conditions of distribution and
2// use, please see the copyright notice at www.peano-framework.org
3#pragma once
4
5#include "exahype2/CellData.h"
7#include "Functors.h"
8#include "LoopBodies.h"
9#include "peano4/utils/Loop.h"
10
11namespace exahype2::fv::riemann {
12 template <
13 int NumberOfVolumesPerAxisInPatch,
14 int HaloSize,
17 bool EvaluateFlux,
18 bool EvaluateNonconservativeProduct,
19 bool EvaluateEigenvalues,
20 bool EvaluateSource,
21 bool EvaluateRiemann,
22 bool EvaluateMaximumEigenvalueAfterTimeStep,
23 class TempDataEnumeratorType>
26 CellData<double, double>& patchData,
27 const FluxFunctor& fluxFunctor,
28 const NonconservativeProductFunctor& nonconservativeProductFunctor,
29 const SourceFunctor& sourceFunctor,
30 const EigenvaluesFunctor& eigenvaluesFunctor,
31 const RiemannFunctor& riemannFunctor,
33 LoopPlacement::Serial
35
36
37 template <
38 class SolverType,
39 int NumberOfVolumesPerAxisInPatch,
40 int HaloSize,
41 int NumberOfUnknowns,
42 int NumberOfAuxiliaryVariables,
43 bool EvaluateFlux,
44 bool EvaluateNonconservativeProduct,
45 bool EvaluateEigenvalues,
46 bool EvaluateSource,
47 bool EvaluateRiemann,
48 bool EvaluateMaximumEigenvalueAfterTimeStep,
49 class TempDataEnumeratorType>
52 CellData<double, double>& patchData,
54 LoopPlacement::Serial
56
57
58 namespace internal {
60 int numberOfVolumesPerAxisInPatch,
61 int unknowns
62 );
65 int numberOfVolumesPerAxisInPatch,
66 int unknowns,
67 int auxiliaryVariables
68 );
69
71 int numberOfVolumesPerAxisInPatch,
72 int patches
73 );
75 int numberOfVolumesPerAxisInPatch,
76 int unknowns,
77 int patches
78 );
81 int numberOfVolumesPerAxisInPatch,
82 int unknowns,
83 int auxiliaryVariables,
84 int patches
85 );
86
96 int numberOfVolumesPerAxisInPatch,
97 int haloSize,
98 bool extendInBothDirections
99 );
101 int numberOfVolumesPerAxisInPatch,
102 int haloSize,
103 bool extendInBothDirections
104 );
106 int numberOfVolumesPerAxisInPatch,
107 int haloSize,
108 bool extendInBothDirections
109 );
110
113 int numberOfVolumesPerAxisInPatch,
114 int haloSize,
115 int patches
116 );
119 int numberOfVolumesPerAxisInPatch,
120 int haloSize,
121 int patches
122 );
124 int numberOfVolumesPerAxisInPatch,
125 int haloSize,
126 int patches
127 );
128 } // namespace internal
129} // namespace exahype2::fv::riemann
130
131#include "PatchwiseFunctors.cpph"
132#include "PatchwiseStateless.cpph"
#define KeywordToAvoidDuplicateSymbolsForInlinedFunctions
Definition LinuxAMD.h:31
tarch::la::Vector< Dimensions+1, int > rangeOverVolumesTimesUnknownsPlusAuxiliaryVariables(int numberOfVolumesPerAxisInPatch, int unknowns, int auxiliaryVariables)
tarch::la::Vector< Dimensions+1, int > rangeOverVolumesTimesUnknowns(int numberOfVolumesPerAxisInPatch, int unknowns)
tarch::la::Vector< Dimensions+2, int > rangeOverVolumesTimesUnknownsPlusAuxiliaryVariablesTimesPatches(int numberOfVolumesPerAxisInPatch, int unknowns, int auxiliaryVariables, int patches)
tarch::la::Vector< Dimensions+1, int > rangeOverVolumesTimesPatchesPlusHaloInXDirection(int numberOfVolumesPerAxisInPatch, int haloSize, int patches)
tarch::la::Vector< Dimensions, int > rangeOverVolumesPlusHaloInYDirection(int numberOfVolumesPerAxisInPatch, int haloSize, bool extendInBothDirections)
tarch::la::Vector< Dimensions+1, int > rangeOverVolumesTimesPatches(int numberOfVolumesPerAxisInPatch, int patches)
tarch::la::Vector< Dimensions+1, int > rangeOverVolumesTimesPatchesPlusHaloInYDirection(int numberOfVolumesPerAxisInPatch, int haloSize, int patches)
tarch::la::Vector< Dimensions+2, int > rangeOverVolumesTimesUnknownsTimesPatches(int numberOfVolumesPerAxisInPatch, int unknowns, int patches)
tarch::la::Vector< 3, int > rangeOverVolumesPlusHaloInZDirection(int numberOfVolumesPerAxisInPatch, int haloSize, bool extendInBothDirections)
tarch::la::Vector< 3+1, int > rangeOverVolumesTimesPatchesPlusHaloInZDirection(int numberOfVolumesPerAxisInPatch, int haloSize, int patches)
tarch::la::Vector< Dimensions, int > rangeOverVolumesPlusHaloInXDirection(int numberOfVolumesPerAxisInPatch, int haloSize, bool extendInBothDirections)
Construct iteration range.
std::function< void(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, double t, double dt, int normal, double *__restrict__ L)> EigenvaluesFunctor
Definition Functors.h:50
std::function< void(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, double t, double dt, double *__restrict__ S)> SourceFunctor
Definition Functors.h:19
std::function< void(const double *__restrict__ Q, const double *__restrict__ deltaQ, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, double t, double dt, int normal, double *__restrict__ BTimesDeltaQ)> NonconservativeProductFunctor
Definition Functors.h:40
KeywordToAvoidDuplicateSymbolsForInlinedFunctions void timeStepWithRiemannPatchwiseHeapStateless(CellData< double, double > &patchData, peano4::utils::LoopPlacement loopPlacement=peano4::utils::LoopPlacement::Serial) InlineMethod
std::function< void(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, double t, double dt, int normal, double *__restrict__ F)> FluxFunctor
Definition Functors.h:29
std::function< double(const double *__restrict__ QR, const double *__restrict__ QL, const double *__restrict__ FR, const double *__restrict__ FL, const double *__restrict__ LR, const double *__restrict__ LL, const tarch::la::Vector< Dimensions, double > &xR, const tarch::la::Vector< Dimensions, double > &xL, const tarch::la::Vector< Dimensions, double > &h, double t, double dt, int normal, double *__restrict__ APDQ, double *__restrict__ AMDQ)> RiemannFunctor
Definition Functors.h:67
KeywordToAvoidDuplicateSymbolsForInlinedFunctions void timeStepWithRiemannPatchwiseHeapFunctors(CellData< double, double > &patchData, const FluxFunctor &fluxFunctor, const NonconservativeProductFunctor &nonconservativeProductFunctor, const SourceFunctor &sourceFunctor, const EigenvaluesFunctor &eigenvaluesFunctor, const RiemannFunctor &riemannFunctor, peano4::utils::LoopPlacement loopPlacement=peano4::utils::LoopPlacement::Serial) InlineMethod
LoopPlacement
Guide loop-level parallelism.
Definition Loop.h:72
Representation of a number of cells which contains all information that's required to process the sto...
Definition CellData.h:78
Simple vector class.
Definition Vector.h:159
#define InlineMethod
Generic identifier for inlined functions.
Definition tarch.h:97