380 auto T_mid_d =
T_mid;
381 auto p_mid_d =
p_mid;
382 auto p_int_d =
p_int;
384 auto omega_d =
omega;
393 auto z_mid_d =
z_mid;
394 auto z_int_d =
z_int;
410 auto wm_zt_d =
wm_zt;
423 auto ProbLoArr =
m_geom.ProbLoArray();
424 for (MFIter mfi(*
m_cons); mfi.isValid(); ++mfi) {
425 const auto& vbx = mfi.validbox();
426 const int nx = vbx.length(0);
427 const int imin = vbx.smallEnd(0);
428 const int jmin = vbx.smallEnd(1);
430 const Array4<const Real>& cons_arr =
m_cons->const_array(mfi);
432 Array4<const Real>{};
433 ParallelFor(vbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k)
436 const int icol = (j-jmin)*nx + (i-imin) +
offset;
450 Real r_avg = 0.5 * (r + r_lo);
451 Real rt_avg = 0.5 * (rt + rt_lo);
452 Real qv_avg = 0.5 * (
qv + qv_lo);
456 surf_sens_flux_d(icol) = 0.0;
457 surf_evap_d(icol) = 0.0;
458 surf_mom_flux_d(icol,0) = 0.0;
459 surf_mom_flux_d(icol,1) = 0.0;
462 dens_d(icol,ilay) = r;
465 qv_d(icol,ilay) =
qv;
466 qc_d(icol,ilay) =
qc;
467 qc_copy_d(icol,ilay) =
qc;
468 tke_d(icol,ilay) = std::max(cons_arr(i,j,k,
RhoKE_comp)/r, 0.0);
469 tke_copy_d(icol,ilay) = std::max(cons_arr(i,j,k,
RhoKE_comp)/r, 0.0);
471 dz_d(icol,ilay) = (z_arr) ? 0.25 * ( (z_arr(i ,j ,k+1) - z_arr(i ,j ,k))
472 + (z_arr(i+1,j ,k+1) - z_arr(i+1,j ,k))
473 + (z_arr(i ,j+1,k+1) - z_arr(i ,j+1,k))
474 + (z_arr(i+1,j+1,k+1) - z_arr(i+1,j+1,k)) ) :
dz;
475 z_mid_d(icol,ilay) = (z_arr) ? 0.125 * ( z_arr(i ,j ,k+1) + z_arr(i ,j ,k)
476 + z_arr(i+1,j ,k+1) + z_arr(i+1,j ,k)
477 + z_arr(i ,j+1,k+1) + z_arr(i ,j+1,k)
478 + z_arr(i+1,j+1,k+1) + z_arr(i+1,j+1,k) ) :
479 ProbLoArr[2] + (k + 0.5) *
dz;
483 z_int_d(icol,ilay) = (z_arr) ? 0.25 * ( z_arr(i ,j ,k) + z_arr(i+1,j ,k)
484 + z_arr(i ,j+1,k) + z_arr(i+1,j+1,k) ) :
485 ProbLoArr[2] + (k) *
dz;
486 if (ilay==(nlay-1)) {
489 Real qv_hi = (moist) ? std::max(cons_arr(i,j,k+1,
RhoQ1_comp)/r_hi,0.0) : 0.0;
490 r_avg = 0.5 * (r + r_hi);
491 rt_avg = 0.5 * (rt + rt_hi);
492 qv_avg = 0.5 * (
qv + qv_hi);
494 z_int_d(icol,ilay+1) = (z_arr) ? 0.25 * ( z_arr(i ,j ,k+1) + z_arr(i+1,j ,k+1)
495 + z_arr(i ,j+1,k+1) + z_arr(i+1,j+1,k+1) ) :
496 ProbLoArr[2] + (k+1) *
dz;
500 zt_grid_d(icol,ilay) = z_mid_d(icol,ilay);
501 zi_grid_d(icol,ilay) = z_int_d(icol,ilay);
502 cloud_frac_d(icol,ilay) = ((
qc+qi)>0.0) ? 1. : 0.;
503 cldfrac_liq_d(icol,ilay) = (
qc>0.0) ? 1. : 0.;
504 cldfrac_liq_prev_d(icol,ilay) = (
qc>0.0) ? 1. : 0.;
507 wpthlp_sfc_d(icol) = 0.0;
508 wprtp_sfc_d(icol) = 0.0;
509 upwp_sfc_d(icol) = 0.0;
510 vpwp_sfc_d(icol) = 0.0;
511 wtracer_sfc_d(icol,0) = 0.0;
513 omega_d(icol,ilay) = 0.0;
514 shoc_s_d(icol,ilay) = 0.0;
515 rrho_d(icol,ilay) = 0.0;
516 rrho_i_d(icol,ilay) = 0.0;
517 thv_d(icol,ilay) = 0.0;
518 wm_zt_d(icol,ilay) = 0.0;
519 inv_exner_d(icol,ilay) = 0.0;
520 thlm_d(icol,ilay) = 0.0;
521 qw_d(icol,ilay) = 0.0;
522 dse(icol,ilay) = 0.0;
526 qtracers_d(icol,ilay,0) = 0.0;
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 RhoQ2_comp
Definition: ERF_IndexDefines.H:43
#define RhoQ3_comp
Definition: ERF_IndexDefines.H:44
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:42
#define RhoKE_comp
Definition: ERF_IndexDefines.H:38
AMREX_FORCE_INLINE IntVect offset(const int face_dir, const int normal)
Definition: ERF_ReadBndryPlanes.cpp:28
amrex::MultiFab * m_z_phys
Definition: ERF_ShocInterface.H:560
amrex::MultiFab * m_cons
Definition: ERF_ShocInterface.H:557
amrex::Vector< int > m_col_offsets
Definition: ERF_ShocInterface.H:532