|
| | SelfSimilarInfallFV () |
| |
| void | addDensity (const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double density) |
| | Add density of one voxel to global bookkeeping.
|
| |
| void | initialCondition (double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, bool gridIsConstructed) override |
| | We start with a top hat overdensity.
|
| |
| 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 |
| | Apply Neumann boundary conditions.
|
| |
| 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 |
| | Fake source term.
|
| |
| 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 |
| | Determine max eigenvalue over Jacobian in a given point with solution values (states) Q.
|
| |
| 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 |
| | Same story again: This is the standard Euler flux which is independent of any modification of the right-hand side.
|
| |
| ::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 | finishTimeStep () override |
| | According to the docu, I always call the superclass routine.
|
| |
| bool | patchCanUseStatelessPDETerms (const tarch::la::Vector< Dimensions, double > &patchCentre, const tarch::la::Vector< Dimensions, double > &patchH, double t, double dt) const override |
| | Outside of the critical area, we can use the stateless PDE terms.
|
| |
|
| 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, Offloadable) |
| | Manually inlined version of the source term.
|
| |
| static GPUCallableMethod 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) |
| | Manually inlined.
|
| |
| static GPUCallableMethod 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) |
| | Manually inlined.
|
| |
Definition at line 31 of file SelfSimilarInfallFV.h.
| void benchmarks::exahype2::euler::sphericalaccretionupscaling::SelfSimilarInfallFV::initialCondition |
( |
double *__restrict__ |
Q, |
|
|
const tarch::la::Vector< Dimensions, double > & |
volumeCentre, |
|
|
const tarch::la::Vector< Dimensions, double > & |
volumeH, |
|
|
bool |
gridIsConstructed |
|
) |
| |
|
override |
We start with a top hat overdensity.
Please note that the initial overdensity does not enter the initial fluxes: The Euler equation are totally agnostic in principle of the density. However, the overdensity will enter the mass accumulation in the first time step.
It is important that we inject some initial energy into the system to close the PDE. This energy can be the same everywhere to get the setup going, but we may not set it to zero. If we do this, the system doesn't evolve at al.