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, Standard, 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  // The default type is SpongeType::Standard
26  // Here we can overwrite the default with None or Input_Sponge
27  pp.query_enum_case_insensitive("sponge_type",sponge_type);
28 
29  if (sponge_type == SpongeType::None) return;
30 
31  pp.query("sponge_strength" , sponge_strength);
32 
33  // If sponge_strength == 0 then we set sponge_type to None
34  if (std::abs(sponge_strength) == zero)
35  {
36  sponge_type = SpongeType::None;
37  }
38  else
39  {
40  pp.query("use_xlo_sponge_damping", use_xlo_sponge_damping);
41  pp.query("use_xhi_sponge_damping", use_xhi_sponge_damping);
42  pp.query("use_ylo_sponge_damping", use_ylo_sponge_damping);
43  pp.query("use_yhi_sponge_damping", use_yhi_sponge_damping);
44  pp.query("use_zlo_sponge_damping", use_zlo_sponge_damping);
45  pp.query("use_zhi_sponge_damping", use_zhi_sponge_damping);
46 
48  pp.get("xlo_sponge_end" , xlo_sponge_end);
49  }
51  pp.get("xhi_sponge_start" , xhi_sponge_start);
52  }
54  pp.get("ylo_sponge_end" , ylo_sponge_end);
55  }
57  pp.get("yhi_sponge_start" , yhi_sponge_start);
58  }
60  pp.get("zlo_sponge_end" , zlo_sponge_end);
61  }
63  pp.get("zhi_sponge_start" , zhi_sponge_start);
64  }
65 
66  pp.query("sponge_density" , sponge_density);
67  pp.query("sponge_rhotheta" , sponge_rhotheta);
68  pp.query("sponge_rhomoist" , sponge_rhomoist);
69  pp.query("sponge_x_velocity" , sponge_x_velocity);
70  pp.query("sponge_y_velocity" , sponge_y_velocity);
71  pp.query("sponge_z_velocity" , sponge_z_velocity);
72  }
73  }
74 
75  void display()
76  {
77  amrex::Print() << "Sponge choices: " << std::endl;
78  }
79 
80  bool use_xlo_sponge_damping = false;
81  bool use_xhi_sponge_damping = false;
82  bool use_ylo_sponge_damping = false;
83  bool use_yhi_sponge_damping = false;
84  bool use_zlo_sponge_damping = false;
85  bool use_zhi_sponge_damping = false;
86 
88 
89  inline static
90  SpongeType sponge_type = SpongeType::Standard;
91 
99 };
100 #endif
constexpr amrex::Real one
Definition: ERF_Constants.H:9
constexpr amrex::Real zero
Definition: ERF_Constants.H:8
ParmParse pp("prob")
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_ENUM(SpongeType, None, Standard, Input_Sponge)
Definition: ERF_SpongeStruct.H:19
bool use_xlo_sponge_damping
Definition: ERF_SpongeStruct.H:80
amrex::Real sponge_y_velocity
Definition: ERF_SpongeStruct.H:98
amrex::Real xlo_sponge_end
Definition: ERF_SpongeStruct.H:92
amrex::Real zlo_sponge_end
Definition: ERF_SpongeStruct.H:94
bool use_zlo_sponge_damping
Definition: ERF_SpongeStruct.H:84
amrex::Real sponge_strength
Definition: ERF_SpongeStruct.H:87
bool use_ylo_sponge_damping
Definition: ERF_SpongeStruct.H:82
amrex::Real zhi_sponge_start
Definition: ERF_SpongeStruct.H:94
void display()
Definition: ERF_SpongeStruct.H:75
amrex::Real sponge_z_velocity
Definition: ERF_SpongeStruct.H:98
static SpongeType sponge_type
Definition: ERF_SpongeStruct.H:90
bool use_xhi_sponge_damping
Definition: ERF_SpongeStruct.H:81
void init_params(std::string pp_prefix)
Definition: ERF_SpongeStruct.H:21
amrex::Real sponge_x_velocity
Definition: ERF_SpongeStruct.H:98
bool use_zhi_sponge_damping
Definition: ERF_SpongeStruct.H:85
amrex::Real yhi_sponge_start
Definition: ERF_SpongeStruct.H:93
amrex::Real sponge_density
Definition: ERF_SpongeStruct.H:95
bool use_yhi_sponge_damping
Definition: ERF_SpongeStruct.H:83
amrex::Real xhi_sponge_start
Definition: ERF_SpongeStruct.H:92
amrex::Real sponge_rhomoist
Definition: ERF_SpongeStruct.H:97
amrex::Real ylo_sponge_end
Definition: ERF_SpongeStruct.H:93
amrex::Real sponge_rhotheta
Definition: ERF_SpongeStruct.H:96