1 #ifndef ERF_SHOC_TYPES_H_
2 #define ERF_SHOC_TYPES_H_
6 #include <AMReX_FArrayBox.H>
7 #include <AMReX_Geometry.H>
8 #include <AMReX_GpuQualifiers.H>
9 #include <AMReX_ParmParse.H>
10 #include <AMReX_Vector.H>
61 std::string& error_message)
66 "erf.shoc.transport_mode = host_diffusion requires erf.shoc.momentum_transport = host_diffusion";
166 amrex::ParmParse
pp(
"erf.shoc");
214 "erf.shoc.lambda_high must be >= lambda_low");
219 "erf.shoc.top_taper_depth must be non-negative");
222 "erf.shoc.top_taper_min_factor must be in [0, 1]");
224 "erf.shoc.debug_bad_column_max_reports must be positive");
226 "erf.shoc.debug_bad_column_theta_tend_threshold must be positive");
228 "erf.shoc.debug_bad_column_q_tend_threshold must be positive");
230 "erf.shoc.debug_bad_column_brunt_threshold must be positive");
232 "erf.shoc.debug_bad_column_min_dz must be positive");
234 "erf.shoc.debug_bad_column_scalar_moment_threshold must be positive");
235 std::string error_message;
237 error_message.c_str());
240 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
244 return comp >= 0 && comp < ncomp;
247 template <
typename T>
248 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
252 return amrex::max(lo, amrex::min(value, hi));
AMREX_ALWAYS_ASSERT_WITH_MESSAGE(m_cloud_chamber_config.active, "Cloud Chamber: initializer reached without a parsed configuration")
amrex::Real Real
Definition: ERF_ShocInterface.H:19
ShocMomentumTransport
Definition: ERF_ShocTransportStruct.H:17
bool shoc_uses_host_diffusion(ShocTransportMode mode)
Definition: ERF_ShocTransportStruct.H:51
void read_shoc_transport_modes(ShocTransportMode &transport_mode, ShocMomentumTransport &momentum_transport)
Read the native SHOC transport modes from the erf.shoc input namespace.
Definition: ERF_ShocTransportStruct.H:138
bool shoc_uses_momentum_host_diffusion(ShocMomentumTransport mode)
Definition: ERF_ShocTransportStruct.H:63
ShocTransportMode
Definition: ERF_ShocTransportStruct.H:11
void validate_shoc_runtime_options(const ShocRuntimeOptions &opts)
Definition: ERF_ShocTypes.H:210
bool validate_shoc_runtime_options_message(const ShocRuntimeOptions &opts, std::string &error_message)
Definition: ERF_ShocTypes.H:60
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool shoc_valid_comp(int comp, int ncomp)
Definition: ERF_ShocTypes.H:242
void read_shoc_runtime_options(ShocRuntimeOptions &opts)
Definition: ERF_ShocTypes.H:164
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T shoc_clamp(T value, T lo, T hi)
Definition: ERF_ShocTypes.H:250
@ T
Definition: ERF_IndexDefines.H:128
Definition: ERF_ShocTypes.H:85
amrex::FArrayBox theta_v
Definition: ERF_ShocTypes.H:97
amrex::FArrayBox theta
Definition: ERF_ShocTypes.H:95
amrex::FArrayBox qc_tend
Definition: ERF_ShocTypes.H:152
amrex::FArrayBox theta_base
Definition: ERF_ShocTypes.H:142
amrex::FArrayBox v_tend
Definition: ERF_ShocTypes.H:155
amrex::FArrayBox shoc_cond
Definition: ERF_ShocTypes.H:127
amrex::FArrayBox qi
Definition: ERF_ShocTypes.H:101
amrex::FArrayBox buoy_prod
Definition: ERF_ShocTypes.H:120
amrex::FArrayBox dz
Definition: ERF_ShocTypes.H:91
amrex::FArrayBox diss_tke
Definition: ERF_ShocTypes.H:121
amrex::FArrayBox w_sec
Definition: ERF_ShocTypes.H:139
amrex::FArrayBox tk
Definition: ERF_ShocTypes.H:117
amrex::FArrayBox w3
Definition: ERF_ShocTypes.H:138
amrex::FArrayBox vw_sec
Definition: ERF_ShocTypes.H:136
amrex::FArrayBox surf_lat_flux
Definition: ERF_ShocTypes.H:158
amrex::FArrayBox ustar
Definition: ERF_ShocTypes.H:113
amrex::FArrayBox shoc_evap
Definition: ERF_ShocTypes.H:128
amrex::FArrayBox shoc_mix
Definition: ERF_ShocTypes.H:114
amrex::FArrayBox v_base
Definition: ERF_ShocTypes.H:147
amrex::FArrayBox wthv_sec
Definition: ERF_ShocTypes.H:122
amrex::FArrayBox shear_prod
Definition: ERF_ShocTypes.H:119
amrex::FArrayBox rho
Definition: ERF_ShocTypes.H:94
amrex::FArrayBox tke_base_state
Definition: ERF_ShocTypes.H:148
amrex::FArrayBox wqw_sec
Definition: ERF_ShocTypes.H:134
amrex::FArrayBox qv_base
Definition: ERF_ShocTypes.H:143
amrex::FArrayBox shoc_ql
Definition: ERF_ShocTypes.H:124
amrex::FArrayBox uw_sec
Definition: ERF_ShocTypes.H:135
amrex::FArrayBox w
Definition: ERF_ShocTypes.H:107
amrex::FArrayBox host_dse
Definition: ERF_ShocTypes.H:108
amrex::FArrayBox pblh
Definition: ERF_ShocTypes.H:111
amrex::FArrayBox qc
Definition: ERF_ShocTypes.H:100
amrex::FArrayBox surf_tau_v
Definition: ERF_ShocTypes.H:160
amrex::FArrayBox isotropy
Definition: ERF_ShocTypes.H:116
amrex::FArrayBox tke
Definition: ERF_ShocTypes.H:104
amrex::FArrayBox p_int
Definition: ERF_ShocTypes.H:93
amrex::FArrayBox qw_sec
Definition: ERF_ShocTypes.H:131
amrex::FArrayBox qi_base
Definition: ERF_ShocTypes.H:145
amrex::FArrayBox tkh
Definition: ERF_ShocTypes.H:118
amrex::FArrayBox exner
Definition: ERF_ShocTypes.H:96
amrex::FArrayBox u_base
Definition: ERF_ShocTypes.H:146
amrex::FArrayBox tke_tend
Definition: ERF_ShocTypes.H:156
amrex::FArrayBox qi_tend
Definition: ERF_ShocTypes.H:153
amrex::FArrayBox qc_base
Definition: ERF_ShocTypes.H:144
amrex::FArrayBox u_tend
Definition: ERF_ShocTypes.H:154
ShocColumnLayout layout
Definition: ERF_ShocTypes.H:86
amrex::FArrayBox zi
Definition: ERF_ShocTypes.H:90
amrex::FArrayBox tabs
Definition: ERF_ShocTypes.H:103
amrex::FArrayBox surf_sens_flux
Definition: ERF_ShocTypes.H:157
amrex::FArrayBox qw
Definition: ERF_ShocTypes.H:102
amrex::FArrayBox v
Definition: ERF_ShocTypes.H:106
amrex::FArrayBox zt
Definition: ERF_ShocTypes.H:89
amrex::FArrayBox qv
Definition: ERF_ShocTypes.H:99
amrex::FArrayBox p_mid
Definition: ERF_ShocTypes.H:92
amrex::FArrayBox wtke_sec
Definition: ERF_ShocTypes.H:137
amrex::FArrayBox u
Definition: ERF_ShocTypes.H:105
amrex::FArrayBox theta_tend
Definition: ERF_ShocTypes.H:150
amrex::FArrayBox obklen
Definition: ERF_ShocTypes.H:112
amrex::FArrayBox wqls_sec
Definition: ERF_ShocTypes.H:126
amrex::FArrayBox surf_tau_u
Definition: ERF_ShocTypes.H:159
amrex::FArrayBox qv_tend
Definition: ERF_ShocTypes.H:151
amrex::FArrayBox wthl_sec
Definition: ERF_ShocTypes.H:133
amrex::FArrayBox thl_sec
Definition: ERF_ShocTypes.H:130
amrex::FArrayBox shoc_ql2
Definition: ERF_ShocTypes.H:125
amrex::FArrayBox thetal_base
Definition: ERF_ShocTypes.H:141
amrex::FArrayBox qwthl_sec
Definition: ERF_ShocTypes.H:132
amrex::FArrayBox brunt
Definition: ERF_ShocTypes.H:115
amrex::FArrayBox shoc_cldfrac
Definition: ERF_ShocTypes.H:123
amrex::FArrayBox thetal
Definition: ERF_ShocTypes.H:98
Definition: ERF_ShocTypes.H:73
int imin
Definition: ERF_ShocTypes.H:78
int nlev
Definition: ERF_ShocTypes.H:77
int kmax
Definition: ERF_ShocTypes.H:81
int ncell
Definition: ERF_ShocTypes.H:76
int jmin
Definition: ERF_ShocTypes.H:79
int ny
Definition: ERF_ShocTypes.H:75
int nx
Definition: ERF_ShocTypes.H:74
int kmin
Definition: ERF_ShocTypes.H:80
Definition: ERF_ShocTypes.H:17
int debug_bad_column_max_reports
Definition: ERF_ShocTypes.H:47
ShocTransportMode transport_mode
Definition: ERF_ShocTypes.H:43
bool debug_disable_moisture_state_update
Definition: ERF_ShocTypes.H:55
bool shoc_1p5tke
Definition: ERF_ShocTypes.H:35
amrex::Real debug_bad_column_q_tend_threshold
Definition: ERF_ShocTypes.H:49
amrex::Real coeff_kh
Definition: ERF_ShocTypes.H:30
amrex::Real top_taper_depth
Definition: ERF_ShocTypes.H:32
amrex::Real debug_bad_column_scalar_moment_threshold
Definition: ERF_ShocTypes.H:52
amrex::Real lambda_high
Definition: ERF_ShocTypes.H:19
amrex::Real w2tune
Definition: ERF_ShocTypes.H:26
amrex::Real debug_bad_column_min_dz
Definition: ERF_ShocTypes.H:51
amrex::Real qwthl2tune
Definition: ERF_ShocTypes.H:25
bool debug_disable_pdf_cloud_increment
Definition: ERF_ShocTypes.H:53
amrex::Real c_diag_3rd_mom
Definition: ERF_ShocTypes.H:29
ShocMomentumTransport momentum_transport
Definition: ERF_ShocTypes.H:44
bool column_conservation_check
Definition: ERF_ShocTypes.H:39
amrex::Real lambda_thresh
Definition: ERF_ShocTypes.H:21
bool extra_shoc_diags
Definition: ERF_ShocTypes.H:36
amrex::Real coeff_km
Definition: ERF_ShocTypes.H:31
bool debug_disable_theta_state_update
Definition: ERF_ShocTypes.H:54
amrex::Real debug_bad_column_theta_tend_threshold
Definition: ERF_ShocTypes.H:48
amrex::Real lambda_slope
Definition: ERF_ShocTypes.H:20
amrex::Real lambda_low
Definition: ERF_ShocTypes.H:18
bool debug_bad_column
Definition: ERF_ShocTypes.H:45
bool signed_tke_production
Definition: ERF_ShocTypes.H:42
amrex::Real debug_bad_column_brunt_threshold
Definition: ERF_ShocTypes.H:50
bool debug_disable_tke_state_update
Definition: ERF_ShocTypes.H:56
bool apply_tms
Definition: ERF_ShocTypes.H:37
bool debug_bad_column_abort
Definition: ERF_ShocTypes.H:46
bool allow_tendency_microphysics_overlap
Definition: ERF_ShocTypes.H:41
bool check_flux_state
Definition: ERF_ShocTypes.H:38
amrex::Real length_fac
Definition: ERF_ShocTypes.H:28
amrex::Real top_taper_min_factor
Definition: ERF_ShocTypes.H:33
amrex::Real thl2tune
Definition: ERF_ShocTypes.H:23
amrex::Real qw2tune
Definition: ERF_ShocTypes.H:24
bool debug_summary
Definition: ERF_ShocTypes.H:40