11#include "AbstractSelfSimilarInfallDG.h"
16#include "spherical-accretion/MassAccumulator.h"
17#include "spherical-accretion/GravityModel.h"
19#include "EulerKernels.h"
44 static constexpr double Gamma = 5.0/3.0;
66 double * __restrict__ Q,
70 bool gridIsConstructed
75 const double * __restrict__ Qinside,
76 double * __restrict__ Qoutside,
84 const double * __restrict__ Q,
88 double * __restrict__ S
100 const double * __restrict__ Q,
109 const double * __restrict__ Q,
114 double * __restrict__ F
127 const double * __restrict__ Q,
154 #if defined(GPUOffloadingOMP)
155 #pragma omp declare target
158 const double * __restrict__ Q,
162 double * __restrict__ S,
165 for (
int i=0; i<NumberOfUnknowns; i++) {
178 #if defined(GPUOffloadingOMP)
179 #pragma omp end declare target
186 #if defined(GPUOffloadingOMP)
187 #pragma omp declare target
190 const double * __restrict__ Q,
195 double * __restrict__ F,
206 NumberOfAuxiliaryVariables,
211 #if defined(GPUOffloadingOMP)
212 #pragma omp end declare target
#define GPUCallableMethod
Simple spherical mass accumulator.
virtual void flux(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal, double *__restrict__ F) override
static GPUCallableMethod void flux(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal, double *__restrict__ F, Offloadable)
Manually inlined.
::exahype2::RefinementCommand refinementCriterion(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, double t) override
Evaluate refinement criterion over cell.
static GPUCallableMethod void sourceTerm(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, double *__restrict__ S, Offloadable)
Manually inlined version of the source term.
void finishTimeStep() override
According to the docu, I always call the superclass routine.
void initialCondition(double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, const tarch::la::Vector< Dimensions, int > &index, bool gridIsConstructed) override
static constexpr double pInitial
static constexpr double Gamma
static double TotalMassInPreviousTimeStep
After each time step, we backup the total mass in this static variable.
bool cellCanUseStatelessPDETerms(const tarch::la::Vector< Dimensions, double > &patchCentre, const tarch::la::Vector< Dimensions, double > &patchH, double t, double dt) const override
::applications::exahype2::euler::sphericalaccretion::MassAccumulator _accumulator
Use class from application folders.
static constexpr double AdditionalMass
virtual double maxEigenvalue(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, int normal) override
Determine max eigenvalue over Jacobian in a given point with solution values (states) Q.
static constexpr double BaseDensity
static constexpr double aInitial
static constexpr double InitialTopHatRadius
static tarch::logging::Log _log
virtual void boundaryConditions(const double *__restrict__ Qinside, double *__restrict__ Qoutside, const tarch::la::Vector< Dimensions, double > &x, double t, int normal) override
void sourceTerm(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, double t, double dt, double *__restrict__ S) override
void addDensity(const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< 3, double > &cellSize, const tarch::la::Vector< 3, int > &index, double density)
Add mass corresponding to one degree of freedom.
void addGravitationalSource_AlphaCDM(double *__restrict__ S, const tarch::la::Vector< Dimensions, double > &x, const double *__restrict__ Q, double mass, double aInitial, double t)
static GPUCallableInlineMethod void flux(const double *const __restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, const double t, const double dt, const int normal, double *const __restrict__ F) InlineMethod
This file is part of the ExaHyPE 2 project within Peano 4.