|
| void | startTimeStep (double globalMinTimeStamp, double globalMaxTimeStamp, double globalMinTimeStepSize, double globalMaxTimeStepSize) override |
| |
| void | finishTimeStep () override |
| |
| ::exahype2::RefinementCommand | refinementCriterion (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t) override |
| |
| void | initialCondition (double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, bool gridIsConstructed) 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 |
| | There are two variants of the source term.
|
| |
| 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 |
| |
| virtual double | 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) override |
| | See flux() for a description why there are two maxEigenvalue() versions.
|
| |
| virtual void | flux (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__ F) override |
| | The flux in the SSInfall does not depend on any variable of the solver.
|
| |
| void | add_mass (const double r_coor, const double rho, const double size) |
| |
| double | mass_interpolate (const double r_coor, const int MassCal) |
| |
| virtual bool | patchCanUseStatelessPDETerms (const tarch::la::Vector< Dimensions, double > &patchCentre, const tarch::la::Vector< Dimensions, double > &patchH, double t, double dt) const |
| | Within the mass accumulation radius, I return false.
|
| |
| bool | isOutsideOfLargestRadius (const tarch::la::Vector< Dimensions, double > &patchCentre, const tarch::la::Vector< Dimensions, double > &patchH) const |
| | This is a very conservative routine.
|
| |
|
| static 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, Offloadable) |
| | This is the variation that's used on the GPU.
|
| |
| static double | 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, Offloadable) |
| |
| static void | flux (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__ F, Offloadable) |
| |
Definition at line 13 of file SSInfall.h.
| bool applications::exahype2::euler::sphericalaccretion::SSInfall::isOutsideOfLargestRadius |
( |
const tarch::la::Vector< Dimensions, double > & |
patchCentre, |
|
|
const tarch::la::Vector< Dimensions, double > & |
patchH |
|
) |
| const |
This is a very conservative routine.
It takes the difference to centre, computes the L2 norm, adds a safety distance of \( \sqrt{3} h/2 \) and return true if an only if this holds.
If a patch is definitely outside of the largest radius, there's a couple of very natural consequences:
- The interpolation is way easier than int eh general case: It will always be the fallback/generic version only using the static fields to interpolate.
- A patch outside of the largest radius will definitely not contribute at all to the global mass, density, ...