1 #ifndef ERF_CANOPY_TURBULENCE_H_
2 #define ERF_CANOPY_TURBULENCE_H_
8 #include <AMReX_GpuQualifiers.H>
9 #include <AMReX_Array4.H>
10 #include <AMReX_Box.H>
11 #include <AMReX_GpuLaunch.H>
12 #include <AMReX_REAL.H>
53 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
57 + std::numeric_limits<amrex::Real>::min());
60 return capped ? cap :
length;
91 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
101 const amrex::Real x_safe = amrex::max(
x, std::numeric_limits<amrex::Real>::min());
102 const amrex::Real phi1 = -std::expm1(-x_safe) / x_safe;
103 return rho * beta_p * f_drag * wind * wind * wind * phi1 - rhok_old * decay / dt;
129 const amrex::Array4<amrex::Real>& cell_src,
130 const amrex::Array4<const amrex::Real>& cell_data,
131 const amrex::Array4<const amrex::Real>& cell_old,
132 const amrex::Array4<const amrex::Real>& u,
133 const amrex::Array4<const amrex::Real>& v,
134 const amrex::Array4<const amrex::Real>&
w,
135 const amrex::Array4<const amrex::Real>& f_arr,
136 const amrex::Array4<const amrex::Real>& t_blank_arr,
142 const bool use_blank =
static_cast<bool>(t_blank_arr);
150 if (use_blank && t_blank_arr(i, j, k) ==
amrex::Real(1.0)) {
158 const amrex::Real wind = std::sqrt(u_cc*u_cc + v_cc*v_cc + w_cc*w_cc);
AMREX_INLINE void AddCanopyTKESources(const amrex::Box &bx, const amrex::Array4< amrex::Real > &cell_src, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &cell_old, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &f_arr, const amrex::Array4< const amrex::Real > &t_blank_arr, const CanopyTurbulence &canopy, amrex::Real dt)
Definition: ERF_CanopyTurbulence.H:128
#define Rho_comp
Definition: ERF_IndexDefines.H:53
#define RhoKE_comp
Definition: ERF_IndexDefines.H:55
const Real length
Definition: ERF_InitCustomPert_AnelasticWallDiffusion.H:16
ParallelFor(fab_box, [=] AMREX_GPU_DEVICE(int i, int j, int k) { qrcuten_arr(i, j, k)=Real(0);qscuten_arr(i, j, k)=Real(0);qicuten_arr(i, j, k)=Real(0);})
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:23
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ rho
Definition: ERF_Kessler.H:25
@ alpha
Definition: ERF_SLM.H:151
Definition: ERF_CanopyTurbulence.H:43
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real tke_source(amrex::Real rho, amrex::Real rhok_old, amrex::Real f_drag, amrex::Real wind, amrex::Real beta_p, amrex::Real beta_d, amrex::Real dt)
Definition: ERF_CanopyTurbulence.H:92
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real limited_length(amrex::Real length, amrex::Real f_drag, amrex::Real alpha)
Definition: ERF_CanopyTurbulence.H:54
Definition: ERF_CanopyTurbStruct.H:16
amrex::Real beta_d
erf.forest_canopy_beta_d: short-circuit dissipation coefficient
Definition: ERF_CanopyTurbStruct.H:22
amrex::Real beta_p
erf.forest_canopy_beta_p: fraction of the drag work that becomes TKE
Definition: ERF_CanopyTurbStruct.H:20