1 #ifndef ERF_NEAR_SURFACE_DIAGNOSTICS_H_
2 #define ERF_NEAR_SURFACE_DIAGNOSTICS_H_
4 #include <AMReX_GpuQualifiers.H>
5 #include <AMReX_Math.H>
6 #include <AMReX_MultiFab.H>
7 #include <AMReX_iMultiFab.H>
48 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
51 return amrex::Math::isfinite(value);
54 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
61 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
64 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
67 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
70 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
78 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
90 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
96 bundle.mixing_ratio_vegetated >=
amrex::Real(0.0) &&
102 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
110 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
115 f * bundle.temperature_vegetated + (
amrex::Real(1.0)-f) * bundle.temperature_bare,
116 f * bundle.mixing_ratio_vegetated + (
amrex::Real(1.0)-f) * bundle.mixing_ratio_bare
120 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
128 height <= state.roughness_height ||
133 factor = std::log(
height / state.roughness_height) -
140 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
155 profile.potential_temperature = state.theta_surface +
156 state.theta_star /
KAPPA * profile_factor;
157 profile.mixing_ratio = state.mixing_ratio_surface +
158 state.mixing_ratio_star /
KAPPA * profile_factor;
159 return valid_real(profile.potential_temperature) &&
161 profile.potential_temperature >
amrex::Real(0.0) &&
181 const amrex::MultiFab*
cons =
nullptr;
195 void fill (amrex::MultiFab& dst,
196 int temperature_comp,
197 int mixing_ratio_comp,
constexpr amrex::Real KAPPA
Definition: ERF_Constants.H:55
constexpr amrex::Real lsm_undefined
Definition: ERF_Constants.H:26
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:103
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool native_bundle_temperature_is_valid(const NativeBundle &bundle) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:79
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE NativeAggregate aggregate_native_bundle(const NativeBundle &bundle) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:111
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool native_bundle_is_valid(const NativeBundle &bundle) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:71
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:91
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool valid_noahmp_component(amrex::Real value) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:55
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool evaluate_most_profile(const MostState &state, amrex::Real height, MostProfile &profile) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:141
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool valid_real(amrex::Real value) noexcept
Definition: ERF_NearSurfaceDiagnostics.H:49
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:121
Definition: ERF_NearSurfaceDiagnostics.H:43
amrex::Real potential_temperature
Definition: ERF_NearSurfaceDiagnostics.H:44
amrex::Real mixing_ratio
Definition: ERF_NearSurfaceDiagnostics.H:45
Definition: ERF_NearSurfaceDiagnostics.H:33
amrex::Real mixing_ratio_star
Definition: ERF_NearSurfaceDiagnostics.H:37
amrex::Real theta_star
Definition: ERF_NearSurfaceDiagnostics.H:35
amrex::Real theta_surface
Definition: ERF_NearSurfaceDiagnostics.H:34
amrex::Real obukhov_length
Definition: ERF_NearSurfaceDiagnostics.H:39
amrex::Real mixing_ratio_surface
Definition: ERF_NearSurfaceDiagnostics.H:36
amrex::Real roughness_height
Definition: ERF_NearSurfaceDiagnostics.H:38
Definition: ERF_NearSurfaceDiagnostics.H:27
amrex::Real temperature
Definition: ERF_NearSurfaceDiagnostics.H:28
amrex::Real mixing_ratio
Definition: ERF_NearSurfaceDiagnostics.H:29
Definition: ERF_NearSurfaceDiagnostics.H:18
amrex::Real mixing_ratio_vegetated
Definition: ERF_NearSurfaceDiagnostics.H:21
amrex::Real temperature_vegetated
Definition: ERF_NearSurfaceDiagnostics.H:19
amrex::Real vegetation_fraction
Definition: ERF_NearSurfaceDiagnostics.H:23
amrex::Real mixing_ratio_bare
Definition: ERF_NearSurfaceDiagnostics.H:22
amrex::Real temperature_bare
Definition: ERF_NearSurfaceDiagnostics.H:20
Definition: ERF_NearSurfaceDiagnostics.H:166
const amrex::MultiFab * theta_surface
Definition: ERF_NearSurfaceDiagnostics.H:173
const amrex::MultiFab * z_phys_nd
Definition: ERF_NearSurfaceDiagnostics.H:182
bool moist
Definition: ERF_NearSurfaceDiagnostics.H:186
bool has_lsm
Definition: ERF_NearSurfaceDiagnostics.H:187
int klo
Definition: ERF_NearSurfaceDiagnostics.H:185
const amrex::iMultiFab * land_mask
Definition: ERF_NearSurfaceDiagnostics.H:180
const amrex::MultiFab * obukhov_length
Definition: ERF_NearSurfaceDiagnostics.H:178
const amrex::MultiFab * roughness_height
Definition: ERF_NearSurfaceDiagnostics.H:177
const amrex::MultiFab * native_temperature_bare
Definition: ERF_NearSurfaceDiagnostics.H:168
const amrex::MultiFab * cons
Definition: ERF_NearSurfaceDiagnostics.H:181
const amrex::MultiFab * theta_star
Definition: ERF_NearSurfaceDiagnostics.H:174
const amrex::MultiFab * native_temperature_vegetated
Definition: ERF_NearSurfaceDiagnostics.H:167
const amrex::MultiFab * mixing_ratio_surface
Definition: ERF_NearSurfaceDiagnostics.H:175
const amrex::MultiFab * native_mixing_ratio_bare
Definition: ERF_NearSurfaceDiagnostics.H:170
amrex::Real dz
Definition: ERF_NearSurfaceDiagnostics.H:184
const amrex::MultiFab * source_mask
Definition: ERF_NearSurfaceDiagnostics.H:179
const amrex::MultiFab * mixing_ratio_star
Definition: ERF_NearSurfaceDiagnostics.H:176
const amrex::MultiFab * native_mixing_ratio_vegetated
Definition: ERF_NearSurfaceDiagnostics.H:169
const amrex::MultiFab * native_vegetation_fraction
Definition: ERF_NearSurfaceDiagnostics.H:171
Definition: ERF_MOSTUtils.H:37
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_h(amrex::Real zeta) const
Definition: ERF_MOSTUtils.H:121