1 #ifndef ERF_SHOC_TRANSPORT_STRUCT_H_
2 #define ERF_SHOC_TRANSPORT_STRUCT_H_
4 #include <AMReX_ParmParse.H>
77 std::transform(value.begin(), value.end(), value.begin(),
78 [] (
unsigned char c) { return static_cast<char>(std::tolower(c)); });
85 std::string& error_message)
88 if (value ==
"state_update") {
92 if (value ==
"host_diffusion") {
96 if (value ==
"tendencies") {
98 "erf.shoc.transport_mode = tendencies has been removed for native SHOC. Use erf.shoc.transport_mode = state_update. Native SHOC now applies its coupled column increment before the dycore to avoid splitting theta and momentum from moisture.";
102 error_message =
"erf.shoc.transport_mode must be 'state_update' or 'host_diffusion'";
109 std::string& error_message)
112 if (value ==
"none") {
116 if (value ==
"state_update") {
120 if (value ==
"host_diffusion") {
125 error_message =
"erf.shoc.momentum_transport must be 'none', 'state_update', or 'host_diffusion'";
141 amrex::ParmParse
pp(
"erf.shoc");
143 std::string transport_mode_string;
144 if (
pp.query(
"transport_mode", transport_mode_string)) {
145 std::string error_message;
149 amrex::Abort(error_message.c_str());
153 std::string momentum_transport_string;
154 if (
pp.query(
"momentum_transport", momentum_transport_string)) {
155 std::string error_message;
159 amrex::Abort(error_message.c_str());
bool parse_shoc_momentum_transport_string(std::string value, ShocMomentumTransport &mode, std::string &error_message)
Definition: ERF_ShocTransportStruct.H:107
bool parse_shoc_transport_mode_string(std::string value, ShocTransportMode &mode, std::string &error_message)
Definition: ERF_ShocTransportStruct.H:83
const char * shoc_transport_mode_name(ShocTransportMode mode)
Definition: ERF_ShocTransportStruct.H:24
ShocMomentumTransport
Definition: ERF_ShocTransportStruct.H:17
bool shoc_disables_momentum_transport(ShocMomentumTransport mode)
Definition: ERF_ShocTransportStruct.H:69
bool shoc_uses_momentum_state_update(ShocMomentumTransport mode)
Definition: ERF_ShocTransportStruct.H:57
bool shoc_uses_host_diffusion(ShocTransportMode mode)
Definition: ERF_ShocTransportStruct.H:51
std::string shoc_to_lower(std::string value)
Definition: ERF_ShocTransportStruct.H:75
const char * shoc_momentum_transport_name(ShocMomentumTransport mode)
Definition: ERF_ShocTransportStruct.H:34
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_state_update(ShocTransportMode mode)
Definition: ERF_ShocTransportStruct.H:45
bool shoc_uses_momentum_host_diffusion(ShocMomentumTransport mode)
Definition: ERF_ShocTransportStruct.H:63
ShocTransportMode
Definition: ERF_ShocTransportStruct.H:11