|
Peano
|
#include <CCZ4.h>


Public Member Functions | |
| CCZ4 () | |
| ::exahype2::RefinementCommand | refinementCriterion (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t) override |
| Refinement criterion. | |
| void | initialCondition (double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, bool gridIsConstructed) override |
| virtual void | boundaryConditions (const double *__restrict__ Qinside, double *__restrict__ Qoutside, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, int normal) override |
| void | sourceTerm (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, double *__restrict__ S) override |
| virtual void | maxEigenvalue (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ maxEigenvalue) override |
| Determine max eigenvalue over Jacobian in a given point with solution values (states) Q. | |
| virtual void | nonconservativeProduct (const double *__restrict__ Q, const double *__restrict__ deltaQ, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ BgradQ) override |
Static Public Member Functions | |
| static GPUCallableMethod void | sourceTerm (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, double *__restrict__ S, ::exahype2::Solver::Offloadable) |
| To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header. | |
| static GPUCallableMethod void | maxEigenvalue (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ maxEigenvalue, ::exahype2::Solver::Offloadable) |
| To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header. | |
| static GPUCallableMethod void | nonconservativeProduct (const double *__restrict__ Q, const double *__restrict__ deltaQ, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ BgradQ, ::exahype2::Solver::Offloadable) |
| To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header. | |
Static Private Attributes | |
| static tarch::logging::Log | _log |
| applications::exahype2::ccz4::CCZ4::CCZ4 | ( | ) |
|
overridevirtual |
|
override |
|
overridevirtual |
Determine max eigenvalue over Jacobian in a given point with solution values (states) Q.
All parameters are in.
Referenced by maxEigenvalue().

|
static |
To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header.
So it would read
static inline double maxEigenvalue( ... ) { code here }
The GPU offloading requires static functions. As we cannot overload the original (virtual) function with a static alternative, we do the TBB trick and overload by adding an additional enum. It has no semantics but helps the compiler to distinguish the different function variants.
Definition at line 198 of file CCZ4.h.
References maxEigenvalue().

|
overridevirtual |
|
static |
To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header.
So it would read
static inline void nonconservativeProduct( ... ) { code here }
The GPU offloading requires static functions. As we cannot overload the original (virtual) function with a static alternative, we do the TBB trick and overload by adding an additional enum. It has no semantics but helps the compiler to distinguish the different function variants.
|
override |
Refinement criterion.
Single black hole setup with two refinement levels such that the finest volume is the same size as it is in the regular grid tests. We use two level of refinement which arrange around the area of interest. Within the innermost radius of 3.5, we enforce a mesh size of 0.04, while we have a compute cell size of at least 0.15 within the radius of 5. For everything futher away than 5 from the centre, we stick to the maximum mesh size.
We use the setup with
python3 ccz4.py -impl fd4-rk1-adaptive -s two-punctures -maxh 0.4 -minh 0.04 -ps 6 -plt 0.5 -et 0.5 -exn test --domain_r 9.0 --ReSwi 7 -cfl 0.1 -outdir ./ --KOSigma 8.0
in standard benchmarks.
Alternative settings would have been
double Radius[NumberOfRefinementLayers] = {5.0, 3.0};
double MaxH[NumberOfRefinementLayers] = {0.3, 0.15};
| Q | This is the (current) solution. The data is not set to a valid value throughout grid construction. That is: If t equals 0.0, you cannot assume that Q is properly initialised. Therefore, Q usually is only evaluated by dynamic AMR codes which make the solution follow |
|
override |
|
static |
To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header.
So it would read
static inline void sourceTerm( ... ) { code here }
The GPU offloading requires static functions. As we cannot overload the original (virtual) function with a static alternative, we do the TBB trick and overload by adding an additional enum. It has no semantics but helps the compiler to distinguish the different function variants.
Definition at line 165 of file CCZ4.h.
References exagrype::ccz4::source().

|
staticprivate |