218 Box domain =
m_geom.Domain();
220 Print () <<
"Noah-MP driver started at time step: " << nstep+1 << std::endl;
225 for (MFIter mfi(cons_in,
false); mfi.isValid(); ++mfi, ++idb) {
227 Box bx = mfi.tilebox();
230 if (bx.smallEnd(2) != domain.smallEnd(2)) {
continue; }
232 bx.makeSlab(2,domain.smallEnd(2));
236 const Array4<const Real>& U_PHY = xvel_in.const_array(mfi);
237 const Array4<const Real>& V_PHY = yvel_in.const_array(mfi);
238 const Array4<const Real>& QV_TH = cons_in.const_array(mfi);
260 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int ) noexcept
262 noahmpio->U_PHY(i,1,j) = 0.5*(U_PHY(i,j,0)+U_PHY(i+1,j ,0));
263 noahmpio->V_PHY(i,1,j) = 0.5*(V_PHY(i,j,0)+V_PHY(i ,j+1,0));
267 noahmpio->SWDOWN(i,j) = SWDOWN(i,j,0);
268 noahmpio->GLW(i,j) = GLW(i,j,0);
269 noahmpio->COSZEN(i,j) = COSZEN(i,j,0);
274 noahmpio->itimestep = nstep+1;
275 noahmpio->DriverMain();
278 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int ) noexcept
280 t_flux_arr(i,j,0) = noahmpio->HFX(i,j)/(QV_TH(i,j,0,
Rho_comp)*
Cp_d);
281 q_flux_arr(i,j,0) = noahmpio->LH(i,j)/(QV_TH(i,j,0,
Rho_comp)*
L_v);
282 tau13_arr(i,j,0) = noahmpio->TAU_EW(i,j)/QV_TH(i,j,0,
Rho_comp);
283 tau23_arr(i,j,0) = noahmpio->TAU_NS(i,j)/QV_TH(i,j,0,
Rho_comp);
284 TSK(i,j,0) = noahmpio->TSK(i,j);
285 EMISS(i,j,0) = noahmpio->EMISS(i,j);
286 ALBSFCDIR_VIS(i,j,0) = noahmpio->ALBSFCDIRXY(i,1,j);
287 ALBSFCDIR_NIR(i,j,0) = noahmpio->ALBSFCDIRXY(i,2,j);
288 ALBSFCDIF_VIS(i,j,0) = noahmpio->ALBSFCDIFXY(i,1,j);
289 ALBSFCDIF_NIR(i,j,0) = noahmpio->ALBSFCDIFXY(i,2,j);
293 noahmpio->WriteLand(nstep+1);
296 Print () <<
"Noah-MP driver completed" << std::endl;
constexpr amrex::Real Cp_d
Definition: ERF_Constants.H:12
constexpr amrex::Real L_v
Definition: ERF_Constants.H:16
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getPgivenRTh(const amrex::Real rhotheta, const amrex::Real qv=0.)
Definition: ERF_EOS.H:81
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getTgivenRandRTh(const amrex::Real rho, const amrex::Real rhotheta, const amrex::Real qv=0.0)
Definition: ERF_EOS.H:46
#define Rho_comp
Definition: ERF_IndexDefines.H:36
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:37
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:42
int m_plot_int_1
Definition: ERF_NOAHMP.H:208
amrex::Array< FabPtr, LsmFlux_NOAHMP::NumVars > lsm_fab_flux
Definition: ERF_NOAHMP.H:202
NoahmpIO_vector noahmpio_vect
Definition: ERF_NOAHMP.H:205
amrex::Array< FabPtr, LsmData_NOAHMP::NumVars > lsm_fab_data
Definition: ERF_NOAHMP.H:199
amrex::Geometry m_geom
Definition: ERF_NOAHMP.H:181
@ sw_flux_dn
Definition: ERF_NOAHMP.H:32
@ sfc_emis
Definition: ERF_NOAHMP.H:26
@ sfc_alb_dir_vis
Definition: ERF_NOAHMP.H:27
@ sfc_alb_dif_nir
Definition: ERF_NOAHMP.H:30
@ lw_flux_dn
Definition: ERF_NOAHMP.H:33
@ cos_zenith_angle
Definition: ERF_NOAHMP.H:31
@ t_sfc
Definition: ERF_NOAHMP.H:25
@ sfc_alb_dir_nir
Definition: ERF_NOAHMP.H:28
@ sfc_alb_dif_vis
Definition: ERF_NOAHMP.H:29
@ t_flux
Definition: ERF_NOAHMP.H:41
@ tau13
Definition: ERF_NOAHMP.H:43
@ q_flux
Definition: ERF_NOAHMP.H:42
@ tau23
Definition: ERF_NOAHMP.H:44