Peano
Loading...
Searching...
No Matches
SelfSimilarInfallFD4.h
Go to the documentation of this file.
1//
2// ExaHyPE2 solver file
3// Generated by Peano's Python API
4// www.peano-framework.org
5//
6// This is generated. If you change fundamental properties, you will have to
7// generate this file. Backup your manual changes before you do so.
8//
9#pragma once
10
11#include "AbstractSelfSimilarInfallFD4.h"
12#include "tarch/logging/Log.h"
13
14#include "spherical-accretion/MassAccumulator.h"
15#include "spherical-accretion/GravityModel.h"
16
17#include "EulerKernels.h"
18
19namespace benchmarks {
20 namespace exahype2 {
21 namespace euler {
22 namespace sphericalaccretionupscaling {
23 class SelfSimilarInfallFD4;
24 }
25 }
26 }
27}
28
29
30class benchmarks::exahype2::euler::sphericalaccretionupscaling::SelfSimilarInfallFD4: public benchmarks::exahype2::euler::sphericalaccretionupscaling::AbstractSelfSimilarInfallFD4 {
31 private:
33
38
44
45 public:
46 static constexpr double BaseDensity = 0.1;
47 static constexpr double Gamma = 5.0/3.0;
48 static constexpr double pInitial = 1e-6;
49 static constexpr double aInitial = 0.001;
50 static constexpr double AdditionalMass = 0.15;
51 static constexpr double InitialTopHatRadius = 0.05;
52
54
55
60 const tarch::la::Vector<Dimensions,double>& volumeCentre,
62 double density
63 );
64
65
66 void finishTimeStep() override;
67
68
90 const double * __restrict__ Q, // Q[5+0],
91 const tarch::la::Vector<Dimensions,double>& volumeCentre,
93 double t
94 ) override;
95
96
97
98
100 double * __restrict__ Q,
101 const tarch::la::Vector<Dimensions,double>& volumeCentre,
103 bool gridIsConstructed
104 ) override;
105
106
107
108
109 virtual void boundaryConditions(
110 const double * __restrict__ Qinside, // Qinside[5+0]
111 double * __restrict__ Qoutside, // Qoutside[5+0]
112 const tarch::la::Vector<Dimensions,double>& faceCentre,
114 double t,
115 int normal
116 ) override;
117
118
119
120 public:
121
123 const double * __restrict__ Q,
124 const tarch::la::Vector<Dimensions,double>& gridCellCentre,
126 double t,
127 double dt,
128 double * __restrict__ S
129 ) override;
130
131
132
140 virtual double maxEigenvalue(
141 const double * __restrict__ Q, // Q[5+0],
142 const tarch::la::Vector<Dimensions,double>& faceCentre,
144 double t,
145 double dt,
146 int normal
147 ) override;
148
149
150
151
152 virtual void flux(
153 const double * __restrict__ Q, // Q[5+0],
154 const tarch::la::Vector<Dimensions,double>& faceCentre,
156 double t,
157 double dt,
158 int normal,
159 double * __restrict__ F // F[5]
160 ) override;
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177};
178
179
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.
::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.
static double TotalMassInPreviousTimeStep
After each time step, we backup the total mass in this static variable.
virtual double maxEigenvalue(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &gridCellH, double t, double dt, int normal) override
Determine max eigenvalue over Jacobian in a given point with solution values (states) Q.
::applications::exahype2::euler::sphericalaccretion::MassAccumulator _accumulator
Use class from application folders.
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 > &gridCellCentre, const tarch::la::Vector< Dimensions, double > &gridCellH, double t, double dt, double *__restrict__ S) override
virtual void flux(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &gridCellH, double t, double dt, int normal, double *__restrict__ F) override
Log Device.
Definition Log.h:517
Definition euler.py:1
This file is part of the ExaHyPE 2 project within Peano 4.
Definition __init__.py:1
Simple vector class.
Definition Vector.h:159