Alamo
Hydro.H
Go to the documentation of this file.
1#ifndef INTEGRATOR_HYDRO_H
2#define INTEGRATOR_HYDRO_H
3
5#include "IO/ParmParse.H"
6
7#include "BC/BC.H"
8#include "BC/Constant.H"
9#include "BC/Nothing.H"
10#include "IC/IC.H"
11
12#include "Set/Base.H"
14
15#if AMREX_SPACEDIM==2
16
17namespace Integrator
18{
19class Hydro : virtual public Integrator
20{
21public:
22 static constexpr const char* name = "hydro";
23
24 Hydro() {};
25 Hydro(IO::ParmParse& pp);
26 static void Parse(Hydro& value, IO::ParmParse& pp);
27 virtual ~Hydro()
28 {
29 delete density_bc;
30 delete momentum_bc;
31 delete energy_bc;
32 delete eta_bc;
33
34 delete density_ic;
35 delete velocity_ic;
36 delete pressure_ic;
37
38 delete ic_m0;
39 delete ic_u0;
40 delete ic_q;
41
42 delete eta_ic;
43 delete etadot_ic;
44
45 delete solid.momentum_ic;
46 delete solid.density_ic;
47 delete solid.energy_ic;
48
49 delete roesolver;
50 }
51
52protected:
53 void Initialize(int lev) override;
54 void Mix(int lev);
55 void TimeStepBegin(Set::Scalar a_time, int a_iter) override;
56 void TimeStepComplete(Set::Scalar time, int lev) override;
57 void Advance(int lev, Set::Scalar time, Set::Scalar dt) override;
58 void TagCellsForRefinement(int lev, amrex::TagBoxArray& tags, amrex::Real /*time*/, int /*ngrow*/) override;
59 void Regrid(int lev, Set::Scalar time) override;
60
61 virtual void UpdateEta(int lev, Set::Scalar time);
62private:
63
64 Set::Field<Set::Scalar> density_mf;
65 Set::Field<Set::Scalar> density_old_mf;
66
68 Set::Field<Set::Scalar> energy_old_mf;
69
70 Set::Field<Set::Scalar> momentum_mf;
71 Set::Field<Set::Scalar> momentum_old_mf;
72
73 Set::Field<Set::Scalar> velocity_mf;
74 Set::Field<Set::Scalar> pressure_mf;
75
76 struct {
77 Set::Field<Set::Scalar> density_mf;
78 Set::Field<Set::Scalar> momentum_mf;
80 IC::IC<Set::Scalar>* density_ic = nullptr;
81 IC::IC<Set::Scalar>* momentum_ic = nullptr;
82 IC::IC<Set::Scalar>* energy_ic = nullptr;
83 } solid;
84
85protected:
87 Set::Field<Set::Scalar> eta_old_mf;
88private:
90
91 Set::Field<Set::Scalar> vorticity_mf;
92
98
99 BC::BC<Set::Scalar>* density_bc = nullptr;
100 BC::BC<Set::Scalar>* momentum_bc = nullptr;
101 BC::BC<Set::Scalar>* energy_bc = nullptr;
102 BC::BC<Set::Scalar>* eta_bc = nullptr;
103
104 IC::IC<Set::Scalar>* velocity_ic = nullptr;
105 IC::IC<Set::Scalar>* pressure_ic = nullptr;
106 IC::IC<Set::Scalar>* density_ic = nullptr;
107
108 IC::IC<Set::Scalar>* ic_m0 = nullptr;
109 IC::IC<Set::Scalar>* ic_u0 = nullptr;
110 IC::IC<Set::Scalar>* ic_q = nullptr;
111
112 IC::IC<Set::Scalar>* eta_ic = nullptr;
113 IC::IC<Set::Scalar>* etadot_ic = nullptr;
114
115 BC::Nothing bc_nothing;
116
117 BC::Constant neumann_bc_1 = BC::Constant::ZeroNeumann(1);
118 BC::Constant neumann_bc_D = BC::Constant::ZeroNeumann(AMREX_SPACEDIM);
119
120 Set::Scalar c_max = 0.0;
121 Set::Scalar vx_max = 0.0;
122 Set::Scalar vy_max = 0.0;
123
124 Set::Scalar eta_refinement_criterion=NAN, omega_refinement_criterion=NAN, gradu_refinement_criterion=NAN, p_refinement_criterion=NAN, rho_refinement_criterion;
125 Set::Scalar gamma=NAN, cfl=NAN, cfl_v=NAN, mu=NAN, pref=NAN;
126
127 Set::Scalar small=NAN;
128 Set::Scalar cutoff=NAN;
129 Set::Scalar lagrange=NAN;
130
131 Solver::Local::Riemann::Roe *roesolver = nullptr;
132
133};
134}
135
136#endif
137#endif
Definition BC.H:42
static Constant ZeroNeumann(int ncomp=1)
Definition Constant.H:77
Pure abstract IC object from which all other IC objects inherit.
Definition IC.H:23
Roe Riemann Solver based on Gas Dynamics - Culbert B. Laney.
Definition Roe.H:30
Collection of numerical integrator objects.
Definition AllenCahn.H:41
amrex::Real Scalar
Definition Base.H:19
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, 1 > Vector
Definition Base.H:20
std::complex< int > Parse(std::string input)
Definition Util.cpp:313
void Initialize()
Definition Util.cpp:128