![]() |
Peano
|
#include <CCZ4.h>
Public Member Functions | |
CCZ4 () | |
::exahype2::RefinementCommand | refinementCriterion (const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &volumeCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t) override |
Refinement criterion. More... | |
void | prepare (TP::TwoPunctures *tp) |
void | initialCondition (double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &volumeCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, bool gridIsConstructed) override |
virtual void | boundaryConditions (const double *NOALIAS Qinside, double *NOALIAS Qoutside, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, int normal) override |
void | sourceTerm (const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &volumeCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, double *NOALIAS S) override |
virtual double | maxEigenvalue (const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, int normal) override |
Determine max eigenvalue over Jacobian in a given point with solution values (states) Q. More... | |
virtual void | nonconservativeProduct (const double *NOALIAS Q, const double *NOALIAS deltaQ, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, int normal, double *NOALIAS BgradQ) override |
Static Public Member Functions | |
static GPU_CALLABLE_METHOD void | sourceTerm (const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &volumeCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, double *NOALIAS 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. More... | |
static GPU_CALLABLE_METHOD double | maxEigenvalue (const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, int normal, ::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. More... | |
static GPU_CALLABLE_METHOD void | nonconservativeProduct (const double *NOALIAS Q, const double *NOALIAS deltaQ, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, int normal, double *NOALIAS 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. More... | |
Static Private Attributes | |
static tarch::logging::Log | _log |
benchmarks::exahype2::ccz4::CCZ4::CCZ4 | ( | ) |
Definition at line 114 of file CCZ4.cpp.
References _tp, and convergence-study::name.
|
overridevirtual |
Definition at line 56 of file CCZ4.cpp.
References acoustic::t.
|
override |
|
overridevirtual |
Determine max eigenvalue over Jacobian in a given point with solution values (states) Q.
All parameters are in.
Definition at line 250 of file CCZ4.cpp.
References CSVConvert::dt, applications::exahype2::ccz4::maxEigenvalue(), and acoustic::t.
|
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 206 of file CCZ4.h.
References TP::min(), and CSVConvert::tem.
|
overridevirtual |
Definition at line 263 of file CCZ4.cpp.
References CSVConvert::dt, and acoustic::t.
|
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.
void benchmarks::exahype2::ccz4::CCZ4::prepare | ( | TP::TwoPunctures * | tp | ) |
Definition at line 23 of file CCZ4.cpp.
References TP::Parameters::center_offset, create-plots::D, TP::Parameters::give_bare_mass, TP::Parameters::grid_setup_method, TP::Parameters::par_b, TP::Parameters::par_m_minus, TP::Parameters::par_m_plus, TP::Parameters::par_P_minus, TP::Parameters::par_P_plus, TP::Parameters::par_S_minus, TP::Parameters::par_S_plus, TP::Parameters::PrintParameters(), TP::TwoPunctures::Run(), TP::Parameters::target_M_minus, TP::Parameters::target_M_plus, and TP::Parameters::TP_epsilon.
|
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 |
Definition at line 180 of file CCZ4.cpp.
References CSVConvert::dt, and acoustic::t.
|
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 170 of file CCZ4.h.
References applications::exahype2::ccz4::source().
|
staticprivate |