ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_SpongeStruct.H
Go to the documentation of this file.
1 #ifndef ERF_SPONGE_STRUCT_H_
2 #define ERF_SPONGE_STRUCT_H_
3 
4 #include <string>
5 #include <iostream>
6 
7 #include <AMReX_ParmParse.H>
8 #include <AMReX_Print.H>
9 #include <AMReX_Gpu.H>
10 
11 AMREX_ENUM(SpongeType,
12  None, Input_Sponge
13 );
14 
15 /**
16  * Container holding the sponge-related choices
17  */
18 
19 struct SpongeChoice {
20  public:
21  void init_params(std::string pp_prefix)
22  {
23  amrex::ParmParse pp(pp_prefix);
24 
25  pp.query_enum_case_insensitive("sponge_type",sponge_type);
26 
27  // Include sponge damping
28  if (sponge_type != SpongeType::None) {
29  pp.query("use_xlo_sponge_damping", use_xlo_sponge_damping);
30  pp.query("use_xhi_sponge_damping", use_xhi_sponge_damping);
31  pp.query("use_ylo_sponge_damping", use_ylo_sponge_damping);
32  pp.query("use_yhi_sponge_damping", use_yhi_sponge_damping);
33  pp.query("use_zlo_sponge_damping", use_zlo_sponge_damping);
34  pp.query("use_zhi_sponge_damping", use_zhi_sponge_damping);
35 
36  pp.get("sponge_strength" , sponge_strength);
37 
39  pp.get("xlo_sponge_end" , xlo_sponge_end);
40  }
42  pp.get("xhi_sponge_start" , xhi_sponge_start);
43  }
45  pp.get("ylo_sponge_end" , ylo_sponge_end);
46  }
48  pp.get("yhi_sponge_start" , yhi_sponge_start);
49  }
51  pp.get("zlo_sponge_end" , zlo_sponge_end);
52  }
54  pp.get("zhi_sponge_start" , zhi_sponge_start);
55  }
56 
57  pp.query("sponge_density" , sponge_density);
58  pp.query("sponge_rhotheta" , sponge_rhotheta);
59  pp.query("sponge_rhomoist" , sponge_rhomoist);
60  pp.query("sponge_x_velocity" , sponge_x_velocity);
61  pp.query("sponge_y_velocity" , sponge_y_velocity);
62  pp.query("sponge_z_velocity" , sponge_z_velocity);
63  }
64  }
65 
66  void display()
67  {
68  amrex::Print() << "Sponge choices: " << std::endl;
69  }
70 
71  bool use_xlo_sponge_damping = false;
72  bool use_xhi_sponge_damping = false;
73  bool use_ylo_sponge_damping = false;
74  bool use_yhi_sponge_damping = false;
75  bool use_zlo_sponge_damping = false;
76  bool use_zhi_sponge_damping = false;
77 
79 
80  inline static
81  SpongeType sponge_type = SpongeType::None;
82 
90 };
91 #endif
constexpr amrex::Real one
Definition: ERF_Constants.H:7
ParmParse pp("prob")
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_ENUM(SpongeType, None, Input_Sponge)
Definition: ERF_SpongeStruct.H:19
bool use_xlo_sponge_damping
Definition: ERF_SpongeStruct.H:71
amrex::Real sponge_y_velocity
Definition: ERF_SpongeStruct.H:89
amrex::Real xlo_sponge_end
Definition: ERF_SpongeStruct.H:83
amrex::Real zlo_sponge_end
Definition: ERF_SpongeStruct.H:85
bool use_zlo_sponge_damping
Definition: ERF_SpongeStruct.H:75
amrex::Real sponge_strength
Definition: ERF_SpongeStruct.H:78
bool use_ylo_sponge_damping
Definition: ERF_SpongeStruct.H:73
amrex::Real zhi_sponge_start
Definition: ERF_SpongeStruct.H:85
void display()
Definition: ERF_SpongeStruct.H:66
amrex::Real sponge_z_velocity
Definition: ERF_SpongeStruct.H:89
static SpongeType sponge_type
Definition: ERF_SpongeStruct.H:81
bool use_xhi_sponge_damping
Definition: ERF_SpongeStruct.H:72
void init_params(std::string pp_prefix)
Definition: ERF_SpongeStruct.H:21
amrex::Real sponge_x_velocity
Definition: ERF_SpongeStruct.H:89
bool use_zhi_sponge_damping
Definition: ERF_SpongeStruct.H:76
amrex::Real yhi_sponge_start
Definition: ERF_SpongeStruct.H:84
amrex::Real sponge_density
Definition: ERF_SpongeStruct.H:86
bool use_yhi_sponge_damping
Definition: ERF_SpongeStruct.H:74
amrex::Real xhi_sponge_start
Definition: ERF_SpongeStruct.H:83
amrex::Real sponge_rhomoist
Definition: ERF_SpongeStruct.H:88
amrex::Real ylo_sponge_end
Definition: ERF_SpongeStruct.H:84
amrex::Real sponge_rhotheta
Definition: ERF_SpongeStruct.H:87