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
15namespace Integrator
16{
17class Hydro : virtual public Integrator
18{
19public:
20 static constexpr const char* name = "hydro";
21
22 Hydro() {};
23
26 bool a_invert) :
27 eta_mf(&a_eta), eta_old_mf(&a_etaold), invert(a_invert)
28 {
29 this->managed = true;
30 }
31
32 Hydro(IO::ParmParse& pp);
33 static void Parse(Hydro& value, IO::ParmParse& pp);
34 virtual ~Hydro()
35 {
36 if (!managed)
37 {
38 delete eta_mf;
39 delete eta_old_mf;
40 }
41
42 delete density_bc;
43 delete momentum_bc;
44 delete energy_bc;
45 delete eta_bc;
46
47 delete density_ic;
48 delete velocity_ic;
49 delete pressure_ic;
50
51 delete ic_m0;
52 delete ic_u0;
53 delete ic_q;
54
55 delete eta_ic;
56 delete etadot_ic;
57
58 delete solid.momentum_ic;
59 delete solid.density_ic;
60 delete solid.energy_ic;
61
62 delete riemannsolver;
63 }
64
65protected:
66 void Initialize(int lev) override;
67 void Mix(int lev);
68 void TimeStepBegin(Set::Scalar a_time, int a_iter) override;
69 void TimeStepComplete(Set::Scalar time, int lev) override;
70 void Advance(int lev, Set::Scalar time, Set::Scalar dt) override;
71 void TagCellsForRefinement(int lev, amrex::TagBoxArray& tags, amrex::Real /*time*/, int /*ngrow*/) override;
72 void Regrid(int lev, Set::Scalar time) override;
73
74 virtual void UpdateEta(int lev, Set::Scalar time);
75 virtual void UpdateFluxes(int lev, Set::Scalar time, Set::Scalar dt);
76protected:
77
78 void RHS( int lev, Set::Scalar time,
79 amrex::MultiFab &rho_rhs_mf,
80 amrex::MultiFab &M_rhs_mf,
81 amrex::MultiFab &E_rhs_mf,
82 const amrex::MultiFab &rho_mf,
83 const amrex::MultiFab &M_mf,
84 const amrex::MultiFab &E_mf);
85
88
91
94
97
98 struct {
106
110
112
118
124
129
133
136
138
141
145
147 Set::Scalar gamma=NAN, cfl=NAN, cfl_v=NAN, mu=NAN, pref=NAN;
148
153
155
160
165
166
168
169 bool managed = false;
170 bool invert = false;
171
172 std::vector<bool> mixed;
173
174};
175}
176
177#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:827
Set::Scalar vy_max
Definition Hydro.H:144
void Mix(int lev)
Definition Hydro.cpp:231
IC::IC< Set::Scalar > * momentum_ic
Definition Hydro.H:103
Set::Scalar eta_refinement_criterion
Definition Hydro.H:146
IC::IC< Set::Scalar > * etadot_ic
Definition Hydro.H:135
std::vector< bool > mixed
Definition Hydro.H:172
Set::Field< Set::Scalar > etadot_mf
Definition Hydro.H:109
Hydro(Set::Field< Set::Scalar > &a_eta, Set::Field< Set::Scalar > &a_etaold, bool a_invert)
Definition Hydro.H:24
Set::Scalar pref
Definition Hydro.H:147
IC::IC< Set::Scalar > * ic_q
Definition Hydro.H:132
IntegrationScheme scheme
Definition Hydro.H:159
IC::IC< Set::Scalar > * ic_u0
Definition Hydro.H:131
PrescribedFlowMode prescribedflowmode
Definition Hydro.H:164
Set::Scalar gradu_refinement_criterion
Definition Hydro.H:146
Set::Scalar cfl_v
Definition Hydro.H:147
struct Integrator::Hydro::@7 solid
Set::Field< Set::Scalar > vorticity_mf
Definition Hydro.H:111
Set::Field< Set::Scalar > Source_mf
Definition Hydro.H:116
Set::Scalar cutoff
Definition Hydro.H:150
void TimeStepBegin(Set::Scalar a_time, int a_iter) override
Definition Hydro.cpp:290
IC::IC< Set::Scalar > * tracer_ic
Definition Hydro.H:128
Set::Scalar gamma
Definition Hydro.H:147
Set::Scalar rho_refinement_criterion
Definition Hydro.H:146
IC::IC< Set::Scalar > * ic_m0
Definition Hydro.H:130
Set::Field< Set::Scalar > * eta_old_mf
Definition Hydro.H:108
Set::Scalar lagrange_m0
Definition Hydro.H:152
void Initialize(int lev) override
Definition Hydro.cpp:197
Set::Field< Set::Scalar > momentum_mf
Definition Hydro.H:92
Set::Field< Set::Scalar > energy_old_mf
Definition Hydro.H:90
void TimeStepComplete(Set::Scalar time, int lev) override
Definition Hydro.cpp:295
void TagCellsForRefinement(int lev, amrex::TagBoxArray &tags, amrex::Real, int) override
Definition Hydro.cpp:837
Set::Field< Set::Scalar > velocity_mf
Definition Hydro.H:95
Set::Scalar c_max
Definition Hydro.H:142
virtual void UpdateFluxes(int lev, Set::Scalar time, Set::Scalar dt)
Definition Hydro.cpp:285
Set::Scalar cfl
Definition Hydro.H:147
BC::Constant neumann_bc_D
Definition Hydro.H:140
Set::Field< Set::Scalar > density_old_mf
Definition Hydro.H:87
BC::Constant neumann_bc_1
Definition Hydro.H:139
static void Parse(Hydro &value, IO::ParmParse &pp)
Definition Hydro.cpp:27
virtual ~Hydro()
Definition Hydro.H:34
BC::Nothing bc_nothing
Definition Hydro.H:137
Set::Field< Set::Scalar > flux_mf
Definition Hydro.H:117
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:450
BC::BC< Set::Scalar > * tracer_bc
Definition Hydro.H:123
IC::IC< Set::Scalar > * pressure_ic
Definition Hydro.H:126
BC::BC< Set::Scalar > * density_bc
Definition Hydro.H:119
Set::Scalar vx_max
Definition Hydro.H:143
IC::IC< Set::Scalar > * velocity_ic
Definition Hydro.H:125
Set::Scalar p_refinement_criterion
Definition Hydro.H:146
BC::BC< Set::Scalar > * eta_bc
Definition Hydro.H:122
Set::Field< Set::Scalar > q_mf
Definition Hydro.H:115
IC::IC< Set::Scalar > * density_ic
Definition Hydro.H:102
BC::BC< Set::Scalar > * energy_bc
Definition Hydro.H:121
Set::Scalar small
Definition Hydro.H:149
Set::Field< Set::Scalar > u0_mf
Definition Hydro.H:114
Set::Vector g
Definition Hydro.H:167
Set::Field< Set::Scalar > momentum_old_mf
Definition Hydro.H:93
Set::Scalar omega_refinement_criterion
Definition Hydro.H:146
static constexpr const char * name
Definition Hydro.H:20
BC::BC< Set::Scalar > * momentum_bc
Definition Hydro.H:120
Set::Field< Set::Scalar > m0_mf
Definition Hydro.H:113
Set::Scalar lagrange
Definition Hydro.H:151
Set::Field< Set::Scalar > * eta_mf
Definition Hydro.H:107
virtual void UpdateEta(int lev, Set::Scalar time)
Definition Hydro.cpp:279
Set::Field< Set::Scalar > energy_mf
Definition Hydro.H:89
Set::Field< Set::Scalar > density_mf
Definition Hydro.H:86
void Advance(int lev, Set::Scalar time, Set::Scalar dt) override
Definition Hydro.cpp:314
IC::IC< Set::Scalar > * energy_ic
Definition Hydro.H:104
Set::Field< Set::Scalar > pressure_mf
Definition Hydro.H:96
Solver::Local::Riemann::Riemann * riemannsolver
Definition Hydro.H:154
Set::Scalar mu
Definition Hydro.H:147
IC::IC< Set::Scalar > * eta_ic
Definition Hydro.H:134
amrex::Vector< amrex::Real > dt
Timesteps for each level of refinement.
Definition Integrator.H:391
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