1 #ifndef ERF_NEAR_SURFACE_DIAGNOSTICS_H_
2 #define ERF_NEAR_SURFACE_DIAGNOSTICS_H_
4 #include <AMReX_GpuQualifiers.H>
5 #include <AMReX_MultiFab.H>
6 #include <AMReX_iMultiFab.H>
47 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
50 return std::isfinite(
value);
53 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
60 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
63 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
66 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
69 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
77 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
89 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
95 bundle.mixing_ratio_vegetated >=
amrex::Real(0.0) &&
101 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
109 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
114 f * bundle.temperature_vegetated + (
amrex::Real(1.0)-f) * bundle.temperature_bare,
115 f * bundle.mixing_ratio_vegetated + (
amrex::Real(1.0)-f) * bundle.mixing_ratio_bare
119 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
127 height <= state.roughness_height ||
132 factor = std::log(
height / state.roughness_height) -
139 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
154 profile.potential_temperature = state.theta_surface +
155 state.theta_star /
KAPPA * profile_factor;
156 profile.mixing_ratio = state.mixing_ratio_surface +
157 state.mixing_ratio_star /
KAPPA * profile_factor;
158 return valid_real(profile.potential_temperature) &&
160 profile.potential_temperature >
amrex::Real(0.0) &&
180 const amrex::MultiFab*
cons =
nullptr;
194 void fill (amrex::MultiFab& dst,
195 int temperature_comp,
196 int mixing_ratio_comp,
constexpr amrex::Real KAPPA
Definition: ERF_Constants.H:63
constexpr amrex::Real lsm_undefined
Definition: ERF_Constants.H:35
Real value
Definition: ERF_HurricaneDiagnostics.cpp:30
Real height
Definition: ERF_InitCustomPert_SquallLine.H:33
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_NearSurfaceDiagnostics.cpp:14
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool native_bundle_vegetation_fraction_is_valid(const NativeBundle &bundle) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:102
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool native_bundle_temperature_is_valid(const NativeBundle &bundle) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:78
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE NativeAggregate aggregate_native_bundle(const NativeBundle &bundle) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:110
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool native_bundle_is_valid(const NativeBundle &bundle) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:70
void fill(MultiFab &dst, int temperature_comp, int mixing_ratio_comp, int source_comp, const Sources &sources, Real missing_value)
Definition: ERF_NearSurfaceDiagnostics.cpp:41
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool native_bundle_mixing_ratio_is_valid(const NativeBundle &bundle) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:90
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool valid_noahmp_component(amrex::Real value) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:54
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool evaluate_most_profile(const MostState &state, amrex::Real height, MostProfile &profile) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:140
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool valid_real(amrex::Real value) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:48
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool evaluate_most_factor(const MostState &state, amrex::Real height, amrex::Real &factor) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:120
Definition: ERF_NearSurfaceDiagnostics.H:42
amrex::Real potential_temperature
Definition: ERF_NearSurfaceDiagnostics.H:43
amrex::Real mixing_ratio
Definition: ERF_NearSurfaceDiagnostics.H:44
Definition: ERF_NearSurfaceDiagnostics.H:32
amrex::Real mixing_ratio_star
Definition: ERF_NearSurfaceDiagnostics.H:36
amrex::Real theta_star
Definition: ERF_NearSurfaceDiagnostics.H:34
amrex::Real theta_surface
Definition: ERF_NearSurfaceDiagnostics.H:33
amrex::Real obukhov_length
Definition: ERF_NearSurfaceDiagnostics.H:38
amrex::Real mixing_ratio_surface
Definition: ERF_NearSurfaceDiagnostics.H:35
amrex::Real roughness_height
Definition: ERF_NearSurfaceDiagnostics.H:37
Definition: ERF_NearSurfaceDiagnostics.H:26
amrex::Real temperature
Definition: ERF_NearSurfaceDiagnostics.H:27
amrex::Real mixing_ratio
Definition: ERF_NearSurfaceDiagnostics.H:28
Definition: ERF_NearSurfaceDiagnostics.H:17
amrex::Real mixing_ratio_vegetated
Definition: ERF_NearSurfaceDiagnostics.H:20
amrex::Real temperature_vegetated
Definition: ERF_NearSurfaceDiagnostics.H:18
amrex::Real vegetation_fraction
Definition: ERF_NearSurfaceDiagnostics.H:22
amrex::Real mixing_ratio_bare
Definition: ERF_NearSurfaceDiagnostics.H:21
amrex::Real temperature_bare
Definition: ERF_NearSurfaceDiagnostics.H:19
Definition: ERF_NearSurfaceDiagnostics.H:165
const amrex::MultiFab * theta_surface
Definition: ERF_NearSurfaceDiagnostics.H:172
const amrex::MultiFab * z_phys_nd
Definition: ERF_NearSurfaceDiagnostics.H:181
bool moist
Definition: ERF_NearSurfaceDiagnostics.H:185
bool has_lsm
Definition: ERF_NearSurfaceDiagnostics.H:186
int klo
Definition: ERF_NearSurfaceDiagnostics.H:184
const amrex::iMultiFab * land_mask
Definition: ERF_NearSurfaceDiagnostics.H:179
const amrex::MultiFab * obukhov_length
Definition: ERF_NearSurfaceDiagnostics.H:177
const amrex::MultiFab * roughness_height
Definition: ERF_NearSurfaceDiagnostics.H:176
const amrex::MultiFab * native_temperature_bare
Definition: ERF_NearSurfaceDiagnostics.H:167
const amrex::MultiFab * cons
Definition: ERF_NearSurfaceDiagnostics.H:180
const amrex::MultiFab * theta_star
Definition: ERF_NearSurfaceDiagnostics.H:173
const amrex::MultiFab * native_temperature_vegetated
Definition: ERF_NearSurfaceDiagnostics.H:166
const amrex::MultiFab * mixing_ratio_surface
Definition: ERF_NearSurfaceDiagnostics.H:174
const amrex::MultiFab * native_mixing_ratio_bare
Definition: ERF_NearSurfaceDiagnostics.H:169
amrex::Real dz
Definition: ERF_NearSurfaceDiagnostics.H:183
const amrex::MultiFab * source_mask
Definition: ERF_NearSurfaceDiagnostics.H:178
const amrex::MultiFab * mixing_ratio_star
Definition: ERF_NearSurfaceDiagnostics.H:175
const amrex::MultiFab * native_mixing_ratio_vegetated
Definition: ERF_NearSurfaceDiagnostics.H:168
const amrex::MultiFab * native_vegetation_fraction
Definition: ERF_NearSurfaceDiagnostics.H:170
Definition: ERF_MOSTStress.H:40
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_h(amrex::Real zeta) const
Definition: ERF_MOSTStress.H:104