Peano
Loading...
Searching...
No Matches
FD4.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
7#include "exahype2/CellData.h"
8
9
10#include "KernelVariants.h"
11
12
13namespace exahype2 {
14 namespace fd {
15 namespace fd4 {
63 int numberOfGridCellsPerPatchPerAxis,
64 int haloSize,
65 int unknowns,
66 int auxiliaryVariables,
67 double KOSigma,
68 bool evaluateFlux,
69 bool evaluateDifferentialSource, //for ncp
70 bool evaluateAlgebraicSource, //real source
71 bool copyOldTimeStepAndScaleWithTimeStepSize,
73 Flux flux,
74 NonconservativeProduct DifferentialSource,
75 Source AlgebraicSource
76 )
77 #if defined(UseManualInlining)
78 __attribute__((always_inline))
79 #endif
80 ;
81
97 int numberOfGridCellsPerPatchPerAxis,
98 int haloSize,
99 int unknowns,
100 int auxiliaryVariables
101 )
102 #if defined(UseManualInlining)
103 __attribute__((always_inline))
104 #endif
105 ;
106
107 template <
108 typename Solver,
109 int numberOfGridCellsPerPatchPerAxis,
110 int haloSize,
111 int unknowns,
112 int auxiliaryVariables,
113 typename TempDataEnumerator
114 >
117 double KOSigma,
118 bool evaluateFlux,
119 bool evaluateDifferentialSource, //for ncp
120 bool evaluateAlgebraicSource, //real source
121 bool copyOldTimeStepAndScaleWithTimeStepSize,
123 )
124 #if defined(UseManualInlining)
125 __attribute__((always_inline))
126 #endif
127 ;
128
129
130 template <
131 typename Solver,
132 int numberOfGridCellsPerPatchPerAxis,
133 int haloSize,
134 int unknowns,
135 int auxiliaryVariables,
136 typename TempDataEnumerator
137 >
140 double KOSigma,
141 bool evaluateFlux,
142 bool evaluateDifferentialSource, //for ncp
143 bool evaluateAlgebraicSource, //real source
144 bool copyOldTimeStepAndScaleWithTimeStepSize,
146 )
147 #if defined(UseManualInlining)
148 __attribute__((always_inline))
149 #endif
150 ;
151
152
153 template <
154 typename Solver,
155 int numberOfGridCellsPerPatchPerAxis,
156 int haloSize,
157 int unknowns,
158 int auxiliaryVariables,
159 typename TempDataEnumerator
160 >
163 double KOSigma,
164 bool evaluateFlux,
165 bool evaluateDifferentialSource, //for ncp
166 bool evaluateAlgebraicSource, //real source
167 bool copyOldTimeStepAndScaleWithTimeStepSize,
169 )
170 #if defined(UseManualInlining)
171 __attribute__((always_inline))
172 #endif
173 ;
174 }
175 }
176}
177
178
179
180#if defined(GPUOffloadingOMP) or defined(SharedOMP)
182#endif
183
184//#if defined(GPUOffloadingCPP) or defined(SharedCPP)
185//#include "exahype2/fd/fd4/cpp/FD4.h"
186//#endif
187
188/*
189#if defined(GPUOffloadingSYCL) or defined(SharedSYCL)
190#include "exahype2/fd/fd4/sycl/FD4.h"
191#endif
192*/
193
194#include "../FD_Helper.cpph"
int __attribute__((optimize("O0"))) toolbox
static void timeStep_patchwise_heap_static_calls(::exahype2::CellData< double, double > &patchData, double KOSigma, bool evaluateFlux, bool evaluateDifferentialSource, bool evaluateAlgebraicSource, bool copyOldTimeStepAndScaleWithTimeStepSize, DifferentialSourceTermVariant variant)
static void timeStep_batched_heap_static_calls(::exahype2::CellData< double, double > &patchData, double KOSigma, bool evaluateFlux, bool evaluateDifferentialSource, bool evaluateAlgebraicSource, bool copyOldTimeStepAndScaleWithTimeStepSize, DifferentialSourceTermVariant variant)
void reconstruct_first_derivatives(::exahype2::CellData< double, double > &patchData, int numberOfGridCellsPerPatchPerAxis, int haloSize, int unknowns, int auxiliaryVariables)
Helper routine to reconstruct the first derivatives.
void timeStep_patchwise_heap_functors(::exahype2::CellData< double, double > &patchData, int numberOfGridCellsPerPatchPerAxis, int haloSize, int unknowns, int auxiliaryVariables, double KOSigma, bool evaluateFlux, bool evaluateDifferentialSource, bool evaluateAlgebraicSource, bool copyOldTimeStepAndScaleWithTimeStepSize, DifferentialSourceTermVariant variant, Flux flux, NonconservativeProduct DifferentialSource, Source AlgebraicSource)
Fourth-order Finite Differences.
static void timeStep_batched_heap_multicore_static_calls(::exahype2::CellData< double, double > &patchData, double KOSigma, bool evaluateFlux, bool evaluateDifferentialSource, bool evaluateAlgebraicSource, bool copyOldTimeStepAndScaleWithTimeStepSize, DifferentialSourceTermVariant variant)
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)
Definition Functors.h:20
std::function< void(const double *__restrict__ Q, const double *__restrict__ deltaQ, const tarch::la::Vector< Dimensions, double > &gridCellX, const tarch::la::Vector< Dimensions, double > &gridCellH, double t, double dt, int normal, double *__restrict__ DiffSrc) NonconservativeProduct)
Definition Functors.h:41
std::function< void(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &gridCellH, double t, double dt, int normal, double *__restrict__ F) Flux)
Definition Functors.h:30
For the generic kernels that I use here most of the time.
Definition CellAccess.h:13
Representation of a number of cells which contains all information that's required to process the sto...
Definition CellData.h:77