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"
13//#include "Solver/Local/Riemann/Roe.H"
15
16#include "Model/Gas/Gas.H"
17
18namespace Integrator
19{
20class Hydro : virtual public Integrator
21{
22public:
23 static constexpr const char* name = "hydro";
24
25 Hydro() {};
26
29 bool a_invert) :
30 eta_mf(&a_eta), eta_old_mf(&a_etaold), invert(a_invert)
31 {
32 this->managed = true;
33 }
34
35 Hydro(IO::ParmParse& pp);
36 static void Parse(Hydro& value, IO::ParmParse& pp);
37 virtual ~Hydro()
38 {
39 if (!managed)
40 {
41 delete eta_mf;
42 delete eta_old_mf;
43 }
44
45 delete density_bc;
46 delete momentum_bc;
47 delete energy_bc;
48 delete eta_bc;
49
50 delete density_ic;
51 delete velocity_ic;
52 delete pressure_ic;
53
54 delete ic_m0;
55 delete ic_u0;
56 delete ic_q;
57
58 delete eta_ic;
59 delete etadot_ic;
60
61 delete solid.momentum_ic;
62 delete solid.density_ic;
63 delete solid.energy_ic;
64
65 delete riemannsolver;
66 }
67
68protected:
69 void Initialize(int lev) override;
70 void Mix(int lev);
71 void TimeStepBegin(Set::Scalar a_time, int a_iter) override;
72 void TimeStepComplete(Set::Scalar time, int lev) override;
73 void Advance(int lev, Set::Scalar time, Set::Scalar dt) override;
74 void TagCellsForRefinement(int lev, amrex::TagBoxArray& tags, amrex::Real /*time*/, int /*ngrow*/) override;
75 void Regrid(int lev, Set::Scalar time) override;
76
77 virtual void UpdateEta(int lev, Set::Scalar time);
78 virtual void UpdateFluxes(int lev, Set::Scalar time, Set::Scalar dt);
79protected:
80
81 void RHS( int lev, Set::Scalar time,
82 amrex::MultiFab &rho_rhs_mf,
83 amrex::MultiFab &M_rhs_mf,
84 amrex::MultiFab &E_rhs_mf,
85 const amrex::MultiFab &rho_mf,
86 const amrex::MultiFab &M_mf,
87 const amrex::MultiFab &E_mf);
88
91
94
97
101
105
106 struct {
114
118
120
126
132
137
141
144
146
149
153
156
161
163
164 //std::vector<std::string> species;
165 //std::vector<double> mw_array, cp_array, h0_array, s0_array, Tref_array, mu_array, k_array;
168
169
174
179
180
182
183 bool managed = false;
184 bool invert = false;
185
186 std::vector<bool> mixed;
187
188};
189}
190
191#endif
Definition BC.H:43
static Constant ZeroNeumann(int ncomp=1, Unit unit=Unit::Less())
Definition Constant.H:82
Pure abstract IC object from which all other IC objects inherit.
Definition IC.H:23
void Regrid(int lev, Set::Scalar time) override
Definition Hydro.cpp:868
Set::Scalar vy_max
Definition Hydro.H:152
void Mix(int lev)
Definition Hydro.cpp:250
IC::IC< Set::Scalar > * momentum_ic
Definition Hydro.H:111
Set::Scalar eta_refinement_criterion
Definition Hydro.H:154
IC::IC< Set::Scalar > * etadot_ic
Definition Hydro.H:143
std::vector< bool > mixed
Definition Hydro.H:186
Set::Field< Set::Scalar > etadot_mf
Definition Hydro.H:117
Hydro(Set::Field< Set::Scalar > &a_eta, Set::Field< Set::Scalar > &a_etaold, bool a_invert)
Definition Hydro.H:27
IC::IC< Set::Scalar > * ic_q
Definition Hydro.H:140
Model::Gas::Gas gas
Definition Hydro.H:167
Set::Field< Set::Scalar > scratch_mf
Definition Hydro.H:104
IntegrationScheme scheme
Definition Hydro.H:173
IC::IC< Set::Scalar > * ic_u0
Definition Hydro.H:139
PrescribedFlowMode prescribedflowmode
Definition Hydro.H:178
Set::Scalar gradu_refinement_criterion
Definition Hydro.H:154
Set::Scalar cfl_v
Definition Hydro.H:155
struct Integrator::Hydro::@7 solid
Set::Field< Set::Scalar > vorticity_mf
Definition Hydro.H:119
Set::Field< Set::Scalar > Source_mf
Definition Hydro.H:124
Set::Scalar cutoff
Definition Hydro.H:158
void TimeStepBegin(Set::Scalar a_time, int a_iter) override
Definition Hydro.cpp:326
IC::IC< Set::Scalar > * tracer_ic
Definition Hydro.H:136
Set::Scalar rho_refinement_criterion
Definition Hydro.H:154
IC::IC< Set::Scalar > * ic_m0
Definition Hydro.H:138
Set::Field< Set::Scalar > * eta_old_mf
Definition Hydro.H:116
Set::Scalar lagrange_m0
Definition Hydro.H:160
void Initialize(int lev) override
Definition Hydro.cpp:217
Set::Field< Set::Scalar > momentum_mf
Definition Hydro.H:95
Set::Field< Set::Scalar > mole_fraction_mf
Definition Hydro.H:103
Set::Field< Set::Scalar > energy_old_mf
Definition Hydro.H:93
void TimeStepComplete(Set::Scalar time, int lev) override
Definition Hydro.cpp:331
void TagCellsForRefinement(int lev, amrex::TagBoxArray &tags, amrex::Real, int) override
Definition Hydro.cpp:878
Set::Field< Set::Scalar > velocity_mf
Definition Hydro.H:98
Set::Scalar c_max
Definition Hydro.H:150
virtual void UpdateFluxes(int lev, Set::Scalar time, Set::Scalar dt)
Definition Hydro.cpp:321
Set::Scalar cfl
Definition Hydro.H:155
BC::Constant neumann_bc_D
Definition Hydro.H:148
Set::Field< Set::Scalar > density_old_mf
Definition Hydro.H:90
BC::Constant neumann_bc_1
Definition Hydro.H:147
static void Parse(Hydro &value, IO::ParmParse &pp)
Definition Hydro.cpp:35
virtual ~Hydro()
Definition Hydro.H:37
BC::Nothing bc_nothing
Definition Hydro.H:145
Set::Field< Set::Scalar > flux_mf
Definition Hydro.H:125
void RHS(int lev, Set::Scalar time, amrex::MultiFab &rho_rhs_mf, amrex::MultiFab &M_rhs_mf, amrex::MultiFab &E_rhs_mf, const amrex::MultiFab &rho_mf, const amrex::MultiFab &M_mf, const amrex::MultiFab &E_mf)
Definition Hydro.cpp:486
BC::BC< Set::Scalar > * tracer_bc
Definition Hydro.H:131
IC::IC< Set::Scalar > * pressure_ic
Definition Hydro.H:134
BC::BC< Set::Scalar > * density_bc
Definition Hydro.H:127
Set::Field< Set::Scalar > temperature_mf
Definition Hydro.H:100
Set::Scalar vx_max
Definition Hydro.H:151
IC::IC< Set::Scalar > * velocity_ic
Definition Hydro.H:133
Set::Scalar p_refinement_criterion
Definition Hydro.H:154
BC::BC< Set::Scalar > * eta_bc
Definition Hydro.H:130
Set::Field< Set::Scalar > q_mf
Definition Hydro.H:123
IC::IC< Set::Scalar > * density_ic
Definition Hydro.H:110
BC::BC< Set::Scalar > * energy_bc
Definition Hydro.H:129
Set::Scalar small
Definition Hydro.H:157
Set::Field< Set::Scalar > u0_mf
Definition Hydro.H:122
Set::Vector g
Definition Hydro.H:181
Set::Field< Set::Scalar > momentum_old_mf
Definition Hydro.H:96
Set::Scalar omega_refinement_criterion
Definition Hydro.H:154
static constexpr const char * name
Definition Hydro.H:23
BC::BC< Set::Scalar > * momentum_bc
Definition Hydro.H:128
Set::Field< Set::Scalar > m0_mf
Definition Hydro.H:121
Set::Scalar lagrange
Definition Hydro.H:159
Set::Field< Set::Scalar > * eta_mf
Definition Hydro.H:115
Set::Field< Set::Scalar > mass_fraction_mf
Definition Hydro.H:102
virtual void UpdateEta(int lev, Set::Scalar time)
Definition Hydro.cpp:315
Set::Field< Set::Scalar > energy_mf
Definition Hydro.H:92
Set::Field< Set::Scalar > density_mf
Definition Hydro.H:89
void Advance(int lev, Set::Scalar time, Set::Scalar dt) override
Definition Hydro.cpp:350
IC::IC< Set::Scalar > * energy_ic
Definition Hydro.H:112
Set::Field< Set::Scalar > pressure_mf
Definition Hydro.H:99
Solver::Local::Riemann::Riemann * riemannsolver
Definition Hydro.H:162
IC::IC< Set::Scalar > * eta_ic
Definition Hydro.H:142
amrex::Vector< amrex::Real > dt
Timesteps for each level of refinement.
Definition Integrator.H:394
Collection of numerical integrator objects.
Definition AllenCahn.H:42
amrex::Real Scalar
Definition Base.H:18
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, 1 > Vector
Definition Base.H:19