54 return p_loc / (R_d * rho * (1.0 + R_v/R_d*qv) );
-Referenced by buoyancy_dry_default(), buoyancy_dry_Tpert(), buoyancy_type2(), buoyancy_type3(), SAM::Compute_Coefficients(), Kessler::Copy_State_to_Micro(), SAM::Copy_State_to_Micro(), derived::erf_dermoisttemp(), derived::erf_dertemp(), Radiation::initialize(), and ERF::WritePlotFile().
+Referenced by buoyancy_dry_Tpert(), buoyancy_moist_Tpert(), SAM::Compute_Coefficients(), Kessler::Copy_State_to_Micro(), SAM::Copy_State_to_Micro(), derived::erf_dermoisttemp(), derived::erf_dertemp(), Radiation::initialize(), and ERF::WritePlotFile().
diff --git a/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.map b/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.map
index 7e436be8af..a1df84044e 100644
--- a/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.map
+++ b/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.map
@@ -1,19 +1,17 @@
diff --git a/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.md5 b/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.md5
index 41edf10daa..d44905dee1 100644
--- a/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.md5
+++ b/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.md5
@@ -1 +1 @@
-de5b3d3f49721d49a959b58eed3df374
\ No newline at end of file
+ffdb3b252f63e15f5bb4359375d58642
\ No newline at end of file
diff --git a/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.png b/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.png
index 4576440999..d8691aa19a 100644
Binary files a/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.png and b/ERF__EOS_8H_a65cf1718b7a1fcc56cb16685642543da_icgraph.png differ
diff --git a/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.map b/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.map
index 29cdf71eaf..6c7f53fa0a 100644
--- a/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.map
+++ b/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.map
@@ -1,8 +1,8 @@
diff --git a/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.md5 b/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.md5
index 144aaf418e..9145ded408 100644
--- a/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.md5
+++ b/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.md5
@@ -1 +1 @@
-3851852540e807b88ba22351d6ceb14d
\ No newline at end of file
+24cbc27a00b9c0a864acd7e4ac5cfe67
\ No newline at end of file
diff --git a/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.png b/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.png
index 535f498442..5ae598e466 100644
Binary files a/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.png and b/ERF__EOS_8H_ae76d3ce3486d0e450849c56159f2dbd4_icgraph.png differ
diff --git a/ERF__Kessler_8H_source.html b/ERF__Kessler_8H_source.html
index 0708e7051d..124e43a5c4 100644
--- a/ERF__Kessler_8H_source.html
+++ b/ERF__Kessler_8H_source.html
@@ -327,11 +327,11 @@
@ NumVars
Definition: ERF_Kessler.H:42
@ qv
Definition: ERF_Kessler.H:36
Definition: ERF_DataStruct.H:78
-amrex::Real c_p
Definition: ERF_DataStruct.H:571
-bool do_precip
Definition: ERF_DataStruct.H:631
-MoistureType moisture_type
Definition: ERF_DataStruct.H:617
-bool do_cloud
Definition: ERF_DataStruct.H:630
-int ave_plane
Definition: ERF_DataStruct.H:628
+amrex::Real c_p
Definition: ERF_DataStruct.H:572
+bool do_precip
Definition: ERF_DataStruct.H:632
+MoistureType moisture_type
Definition: ERF_DataStruct.H:618
+bool do_cloud
Definition: ERF_DataStruct.H:631
+int ave_plane
Definition: ERF_DataStruct.H:629
diff --git a/ERF__SAM_8H_source.html b/ERF__SAM_8H_source.html
index 8c6cb22540..0869fe3bcd 100644
--- a/ERF__SAM_8H_source.html
+++ b/ERF__SAM_8H_source.html
@@ -536,12 +536,12 @@
@ qps
Definition: ERF_SAM.H:43
@ qp
Definition: ERF_SAM.H:41
Definition: ERF_DataStruct.H:78
-amrex::Real rdOcp
Definition: ERF_DataStruct.H:572
-amrex::Real c_p
Definition: ERF_DataStruct.H:571
-bool do_precip
Definition: ERF_DataStruct.H:631
-MoistureType moisture_type
Definition: ERF_DataStruct.H:617
-bool do_cloud
Definition: ERF_DataStruct.H:630
-int ave_plane
Definition: ERF_DataStruct.H:628
+amrex::Real rdOcp
Definition: ERF_DataStruct.H:573
+amrex::Real c_p
Definition: ERF_DataStruct.H:572
+bool do_precip
Definition: ERF_DataStruct.H:632
+MoistureType moisture_type
Definition: ERF_DataStruct.H:618
+bool do_cloud
Definition: ERF_DataStruct.H:631
+int ave_plane
Definition: ERF_DataStruct.H:629
diff --git a/ERF__TI__slow__rhs__fun_8H_source.html b/ERF__TI__slow__rhs__fun_8H_source.html
index cf374cdb16..b4593afacd 100644
--- a/ERF__TI__slow__rhs__fun_8H_source.html
+++ b/ERF__TI__slow__rhs__fun_8H_source.html
@@ -103,478 +103,480 @@
-
-
-
-
-
-
- 24 BL_PROFILE(
"slow_rhs_fun_pre");
- 25 if (verbose) Print() <<
"Making slow rhs at time " << old_stage_time <<
" for fast variables advancing from " <<
- 26 old_step_time <<
" to " << new_stage_time << std::endl;
-
- 28 Real slow_dt = new_stage_time - old_step_time;
+
+
+
+
+
+
+
+
+ 26 BL_PROFILE(
"slow_rhs_fun_pre");
+ 27 if (verbose) Print() <<
"Making slow rhs at time " << old_stage_time <<
" for fast variables advancing from " <<
+ 28 old_step_time <<
" to " << new_stage_time << std::endl;
- 30 int n_qstate = micro->Get_Qstate_Size();
+ 30 Real slow_dt = new_stage_time - old_step_time;
-
-
+ 32 int n_qstate = micro->Get_Qstate_Size();
+
- 35 YAFluxRegister* fr_as_crse =
nullptr;
- 36 YAFluxRegister* fr_as_fine =
nullptr;
- 37 if (solverChoice.coupling_type == CouplingType::TwoWay) {
- 38 if (level < finest_level) {
- 39 fr_as_crse = getAdvFluxReg(level+1);
-
-
-
- 43 fr_as_fine = getAdvFluxReg(level);
-
-
-
- 47 Real* dptr_u_geos = solverChoice.have_geo_wind_profile ? d_u_geos[level].data():
nullptr;
- 48 Real* dptr_v_geos = solverChoice.have_geo_wind_profile ? d_v_geos[level].data():
nullptr;
-
-
- 51 make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, cc_src, z_phys_cc[level],
- 52 #
if defined(ERF_USE_RRTMGP)
- 53 qheating_rates[level].get(),
-
- 55 fine_geom, solverChoice,
- 56 mapfac_u[level], mapfac_v[level], mapfac_m[level],
- 57 dptr_rhotheta_src, dptr_rhoqt_src,
- 58 dptr_wbar_sub, d_rayleigh_ptrs_at_lev,
- 59 input_sounding_data, turbPert);
-
-
- 62 MultiFab* forest_drag =
nullptr;
- 63 if (solverChoice.do_forest) { forest_drag = m_forest[level]->get_drag_field(); }
-
-
- 66 if ( solverChoice.terrain_type == TerrainType::Moving )
-
-
-
-
-
-
-
-
- 75 if (verbose) Print() <<
"Re-making old geometry at old time : " << old_step_time << std::endl;
- 76 prob->init_custom_terrain(fine_geom,*z_phys_nd[level],old_step_time);
- 77 init_terrain_grid (level,fine_geom,*z_phys_nd[level], zlevels_stag[level], phys_bc_type);
- 78 make_J (fine_geom,*z_phys_nd[level], *detJ_cc[level]);
- 79 make_areas (fine_geom,*z_phys_nd[level], *ax[level], *ay[level], *az[level]);
-
- 81 if (verbose) Print() <<
"Making src geometry at old_stage_time: " << old_stage_time << std::endl;
- 82 prob->init_custom_terrain(fine_geom,*z_phys_nd_src[level],old_stage_time);
- 83 init_terrain_grid (level,fine_geom,*z_phys_nd_src[level], zlevels_stag[level], phys_bc_type);
- 84 make_J (fine_geom,*z_phys_nd_src[level], *detJ_cc_src[level]);
- 85 make_areas (fine_geom,*z_phys_nd_src[level], *ax_src[level], *ay_src[level], *az_src[level]);
-
- 87 if (verbose) Print() <<
"Making new geometry at new_stage_time: " << new_stage_time << std::endl;
- 88 prob->init_custom_terrain(fine_geom,*z_phys_nd_new[level],new_stage_time);
- 89 init_terrain_grid (level,fine_geom,*z_phys_nd_new[level], zlevels_stag[level], phys_bc_type);
- 90 make_J (fine_geom,*z_phys_nd_new[level], *detJ_cc_new[level]);
- 91 make_areas (fine_geom,*z_phys_nd_new[level], *ax_new[level], *ay_new[level], *az_new[level]);
-
- 93 Real inv_dt = 1./slow_dt;
+
+
+ 37 YAFluxRegister* fr_as_crse =
nullptr;
+ 38 YAFluxRegister* fr_as_fine =
nullptr;
+ 39 if (solverChoice.coupling_type == CouplingType::TwoWay) {
+ 40 if (level < finest_level) {
+ 41 fr_as_crse = getAdvFluxReg(level+1);
+
+
+
+ 45 fr_as_fine = getAdvFluxReg(level);
+
+
+
+ 49 Real* dptr_u_geos = solverChoice.have_geo_wind_profile ? d_u_geos[level].data():
nullptr;
+ 50 Real* dptr_v_geos = solverChoice.have_geo_wind_profile ? d_v_geos[level].data():
nullptr;
+
+
+ 53 make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, cc_src, z_phys_cc[level],
+ 54 #
if defined(ERF_USE_RRTMGP)
+ 55 qheating_rates[level].get(),
+
+ 57 fine_geom, solverChoice,
+ 58 mapfac_u[level], mapfac_v[level], mapfac_m[level],
+ 59 dptr_rhotheta_src, dptr_rhoqt_src,
+ 60 dptr_wbar_sub, d_rayleigh_ptrs_at_lev,
+ 61 input_sounding_data, turbPert);
+
+
+ 64 MultiFab* forest_drag =
nullptr;
+ 65 if (solverChoice.do_forest) { forest_drag = m_forest[level]->get_drag_field(); }
+
+
+ 68 if ( solverChoice.terrain_type == TerrainType::Moving )
+
+
+
+
+
+
+
+
+ 77 if (verbose) Print() <<
"Re-making old geometry at old time : " << old_step_time << std::endl;
+ 78 prob->init_custom_terrain(fine_geom,*z_phys_nd[level],old_step_time);
+ 79 init_terrain_grid (level,fine_geom,*z_phys_nd[level], zlevels_stag[level], phys_bc_type);
+ 80 make_J (fine_geom,*z_phys_nd[level], *detJ_cc[level]);
+ 81 make_areas (fine_geom,*z_phys_nd[level], *ax[level], *ay[level], *az[level]);
+
+ 83 if (verbose) Print() <<
"Making src geometry at old_stage_time: " << old_stage_time << std::endl;
+ 84 prob->init_custom_terrain(fine_geom,*z_phys_nd_src[level],old_stage_time);
+ 85 init_terrain_grid (level,fine_geom,*z_phys_nd_src[level], zlevels_stag[level], phys_bc_type);
+ 86 make_J (fine_geom,*z_phys_nd_src[level], *detJ_cc_src[level]);
+ 87 make_areas (fine_geom,*z_phys_nd_src[level], *ax_src[level], *ay_src[level], *az_src[level]);
+
+ 89 if (verbose) Print() <<
"Making new geometry at new_stage_time: " << new_stage_time << std::endl;
+ 90 prob->init_custom_terrain(fine_geom,*z_phys_nd_new[level],new_stage_time);
+ 91 init_terrain_grid (level,fine_geom,*z_phys_nd_new[level], zlevels_stag[level], phys_bc_type);
+ 92 make_J (fine_geom,*z_phys_nd_new[level], *detJ_cc_new[level]);
+ 93 make_areas (fine_geom,*z_phys_nd_new[level], *ax_new[level], *ay_new[level], *az_new[level]);
-
- 96 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
-
- 98 for (MFIter mfi(*z_t_rk[level],TilingIfNotGPU()); mfi.isValid(); ++mfi)
-
- 100 Box gbx = mfi.growntilebox(IntVect(1,1,0));
-
- 102 const Array4<Real >& z_t_arr = z_t_rk[level]->array(mfi);
- 103 const Array4<Real const>& z_nd_new_arr = z_phys_nd_new[level]->const_array(mfi);
- 104 const Array4<Real const>& z_nd_old_arr = z_phys_nd[level]->const_array(mfi);
-
-
- 107 amrex::ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
-
-
- 110 z_t_arr(i,j,k) = 0.25 * inv_dt * (z_nd_new_arr(i+1,j+1,k) - z_nd_old_arr(i+1,j+1,k)
- 111 +z_nd_new_arr(i ,j+1,k) - z_nd_old_arr( i,j+1,k)
- 112 +z_nd_new_arr(i+1,j ,k) - z_nd_old_arr(i+1,j ,k)
- 113 +z_nd_new_arr(i ,j ,k) - z_nd_old_arr(i ,j ,k));
-
-
-
+ 95 Real inv_dt = 1./slow_dt;
+
+
+ 98 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
+
+ 100 for (MFIter mfi(*z_t_rk[level],TilingIfNotGPU()); mfi.isValid(); ++mfi)
+
+ 102 Box gbx = mfi.growntilebox(IntVect(1,1,0));
+
+ 104 const Array4<Real >& z_t_arr = z_t_rk[level]->array(mfi);
+ 105 const Array4<Real const>& z_nd_new_arr = z_phys_nd_new[level]->const_array(mfi);
+ 106 const Array4<Real const>& z_nd_old_arr = z_phys_nd[level]->const_array(mfi);
+
+
+ 109 amrex::ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
+
+
+ 112 z_t_arr(i,j,k) = 0.25 * inv_dt * (z_nd_new_arr(i+1,j+1,k) - z_nd_old_arr(i+1,j+1,k)
+ 113 +z_nd_new_arr(i ,j+1,k) - z_nd_old_arr( i,j+1,k)
+ 114 +z_nd_new_arr(i+1,j ,k) - z_nd_old_arr(i+1,j ,k)
+ 115 +z_nd_new_arr(i ,j ,k) - z_nd_old_arr(i ,j ,k));
+
-
-
-
-
-
- 123 MultiFab* r0_new = &r_hse_new;
- 124 MultiFab* p0_new = &p_hse_new;
- 125 MultiFab* pi0_new = &pi_hse_new;
- 126 MultiFab* th0_new = &th_hse_new;
-
-
- 129 z_phys_nd[level], z_phys_cc[level],
- 130 xvel_new, yvel_new, zvel_new,
- 131 xmom_src, ymom_src, zmom_src,
- 132 base_state_new[level], forest_drag, fine_geom, solverChoice,
- 133 mapfac_m[level], mapfac_u[level], mapfac_v[level],
- 134 dptr_u_geos, dptr_v_geos, dptr_wbar_sub,
- 135 d_rayleigh_ptrs_at_lev, d_sponge_ptrs_at_lev,
- 136 input_sounding_data, n_qstate);
-
- 138 erf_slow_rhs_pre(level, finest_level, nrk, slow_dt, S_rhs, S_old, S_data, S_prim, S_scratch,
- 139 xvel_new, yvel_new, zvel_new,
- 140 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src,
- 141 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
- 142 Tau11_lev[level].get(), Tau22_lev[level].get(), Tau33_lev[level].get(), Tau12_lev[level].get(),
- 143 Tau13_lev[level].get(), Tau21_lev[level].get(), Tau23_lev[level].get(), Tau31_lev[level].get(),
- 144 Tau32_lev[level].get(), SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
- 145 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
- 146 z_phys_nd_src[level], ax_src[level], ay_src[level], az_src[level], detJ_cc_src[level], p0_new,
-
- 148 mapfac_m[level], mapfac_u[level], mapfac_v[level],
-
-
-
- 152 fr_as_crse, fr_as_fine);
-
-
- 155 xflux_imask[level], yflux_imask[level], zflux_imask[level],
- 156 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
-
-
-
-
- 161 MultiFab rt0(p0->boxArray(),p0->DistributionMap(),1,1);
- 162 MultiFab rt0_new(p0->boxArray(),p0->DistributionMap(),1,1);
- 163 MultiFab r0_temp(p0->boxArray(),p0->DistributionMap(),1,1);
-
-
-
-
-
-
- 170 Real dt_base = (new_stage_time - old_step_time);
+
+
+
+
+
+
+
+ 125 MultiFab* r0_new = &r_hse_new;
+ 126 MultiFab* p0_new = &p_hse_new;
+ 127 MultiFab* pi0_new = &pi_hse_new;
+ 128 MultiFab* th0_new = &th_hse_new;
+
+
+ 131 z_phys_nd[level], z_phys_cc[level],
+ 132 xvel_new, yvel_new, zvel_new,
+ 133 xmom_src, ymom_src, zmom_src,
+ 134 base_state_new[level], forest_drag, fine_geom, solverChoice,
+ 135 mapfac_m[level], mapfac_u[level], mapfac_v[level],
+ 136 dptr_u_geos, dptr_v_geos, dptr_wbar_sub,
+ 137 d_rayleigh_ptrs_at_lev, d_sponge_ptrs_at_lev,
+ 138 input_sounding_data, n_qstate);
+
+ 140 erf_slow_rhs_pre(level, finest_level, nrk, slow_dt, S_rhs, S_old, S_data, S_prim, S_scratch,
+ 141 xvel_new, yvel_new, zvel_new,
+ 142 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src,
+ 143 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
+ 144 Tau11_lev[level].get(), Tau22_lev[level].get(), Tau33_lev[level].get(), Tau12_lev[level].get(),
+ 145 Tau13_lev[level].get(), Tau21_lev[level].get(), Tau23_lev[level].get(), Tau31_lev[level].get(),
+ 146 Tau32_lev[level].get(), SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
+ 147 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
+ 148 z_phys_nd_src[level], ax_src[level], ay_src[level], az_src[level], detJ_cc_src[level], p0_new,
+
+ 150 mapfac_m[level], mapfac_u[level], mapfac_v[level],
+
+
+
+ 154 fr_as_crse, fr_as_fine);
+
+
+ 157 xflux_imask[level], yflux_imask[level], zflux_imask[level],
+ 158 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
+
+
+
+
+ 163 MultiFab rt0(p0->boxArray(),p0->DistributionMap(),1,1);
+ 164 MultiFab rt0_new(p0->boxArray(),p0->DistributionMap(),1,1);
+ 165 MultiFab r0_temp(p0->boxArray(),p0->DistributionMap(),1,1);
+
+
+
+
+
- 172 const GpuArray<Real, AMREX_SPACEDIM> dxInv = fine_geom.InvCellSizeArray();
+ 172 Real dt_base = (new_stage_time - old_step_time);
- 174 const Real l_rdOcp = solverChoice.rdOcp;
+ 174 const GpuArray<Real, AMREX_SPACEDIM> dxInv = fine_geom.InvCellSizeArray();
-
- 177 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
-
- 179 for ( MFIter mfi(*p0,TilingIfNotGPU()); mfi.isValid(); ++mfi)
-
- 181 const Array4<Real > rt0_arr = rt0.array(mfi);
- 182 const Array4<Real > rt0_tmp_arr = rt0_new.array(mfi);
-
- 184 const Array4<Real const> r0_arr = r0->const_array(mfi);
- 185 const Array4<Real > r0_new_arr = r0_new->array(mfi);
- 186 const Array4<Real > r0_tmp_arr = r0_temp.array(mfi);
-
- 188 const Array4<Real const> p0_arr = p0->const_array(mfi);
- 189 const Array4<Real > p0_new_arr = p0_new->array(mfi);
- 190 const Array4<Real > pi0_new_arr = pi0_new->array(mfi);
- 191 const Array4<Real > th0_new_arr = th0_new->array(mfi);
-
- 193 const Array4<Real >& z_t_arr = z_t_rk[level]->array(mfi);
+ 176 const Real l_rdOcp = solverChoice.rdOcp;
+
+
+ 179 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
+
+ 181 for ( MFIter mfi(*p0,TilingIfNotGPU()); mfi.isValid(); ++mfi)
+
+ 183 const Array4<Real > rt0_arr = rt0.array(mfi);
+ 184 const Array4<Real > rt0_tmp_arr = rt0_new.array(mfi);
+
+ 186 const Array4<Real const> r0_arr = r0->const_array(mfi);
+ 187 const Array4<Real > r0_new_arr = r0_new->array(mfi);
+ 188 const Array4<Real > r0_tmp_arr = r0_temp.array(mfi);
+
+ 190 const Array4<Real const> p0_arr = p0->const_array(mfi);
+ 191 const Array4<Real > p0_new_arr = p0_new->array(mfi);
+ 192 const Array4<Real > pi0_new_arr = pi0_new->array(mfi);
+ 193 const Array4<Real > th0_new_arr = th0_new->array(mfi);
- 195 const Array4<Real const>& dJ_old_arr = detJ_cc[level]->const_array(mfi);
- 196 const Array4<Real const>& dJ_new_arr = detJ_cc_new[level]->const_array(mfi);
- 197 const Array4<Real const>& dJ_src_arr = detJ_cc_src[level]->const_array(mfi);
-
- 199 Box gbx = mfi.growntilebox({1,1,1});
- 200 amrex::ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
-
-
-
- 204 r0_tmp_arr(i,j,k) = r0_new_arr(i,j,k);
-
-
- 207 Box gbx2 = mfi.growntilebox({1,1,0});
- 208 amrex::ParallelFor(gbx2, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
-
- 210 Real zflux_r_lo = -z_t_arr(i,j,k ) * 0.5 * (r0_tmp_arr(i,j,k) + r0_tmp_arr(i,j,k-1));
- 211 Real zflux_r_hi = -z_t_arr(i,j,k+1) * 0.5 * (r0_tmp_arr(i,j,k) + r0_tmp_arr(i,j,k+1));
-
- 213 Real zflux_rt_lo = zflux_r_lo * 0.5 * (rt0_tmp_arr(i,j,k)/r0_tmp_arr(i,j,k) + rt0_tmp_arr(i,j,k-1)/r0_tmp_arr(i,j,k-1));
- 214 Real zflux_rt_hi = zflux_r_hi * 0.5 * (rt0_tmp_arr(i,j,k)/r0_tmp_arr(i,j,k) + rt0_tmp_arr(i,j,k+1)/r0_tmp_arr(i,j,k+1));
-
- 216 Real invdetJ = 1.0 / dJ_src_arr(i,j,k);
+ 195 const Array4<Real >& z_t_arr = z_t_rk[level]->array(mfi);
+
+ 197 const Array4<Real const>& dJ_old_arr = detJ_cc[level]->const_array(mfi);
+ 198 const Array4<Real const>& dJ_new_arr = detJ_cc_new[level]->const_array(mfi);
+ 199 const Array4<Real const>& dJ_src_arr = detJ_cc_src[level]->const_array(mfi);
+
+ 201 Box gbx = mfi.growntilebox({1,1,1});
+ 202 amrex::ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
+
+
+
+ 206 r0_tmp_arr(i,j,k) = r0_new_arr(i,j,k);
+
+
+ 209 Box gbx2 = mfi.growntilebox({1,1,0});
+ 210 amrex::ParallelFor(gbx2, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
+
+ 212 Real zflux_r_lo = -z_t_arr(i,j,k ) * 0.5 * (r0_tmp_arr(i,j,k) + r0_tmp_arr(i,j,k-1));
+ 213 Real zflux_r_hi = -z_t_arr(i,j,k+1) * 0.5 * (r0_tmp_arr(i,j,k) + r0_tmp_arr(i,j,k+1));
+
+ 215 Real zflux_rt_lo = zflux_r_lo * 0.5 * (rt0_tmp_arr(i,j,k)/r0_tmp_arr(i,j,k) + rt0_tmp_arr(i,j,k-1)/r0_tmp_arr(i,j,k-1));
+ 216 Real zflux_rt_hi = zflux_r_hi * 0.5 * (rt0_tmp_arr(i,j,k)/r0_tmp_arr(i,j,k) + rt0_tmp_arr(i,j,k+1)/r0_tmp_arr(i,j,k+1));
- 218 Real src_r = - invdetJ * ( zflux_r_hi - zflux_r_lo ) * dxInv[2];
- 219 Real src_rt = - invdetJ * ( zflux_rt_hi - zflux_rt_lo ) * dxInv[2];
-
- 221 Real rho0_new = dJ_old_arr(i,j,k) * r0_arr(i,j,k) + dt_base * dJ_src_arr(i,j,k) * src_r;
- 222 Real rt0_tmp_new = dJ_old_arr(i,j,k) * rt0_arr(i,j,k) + dt_base * dJ_src_arr(i,j,k) * src_rt;
-
- 224 r0_new_arr(i,j,k) = rho0_new / dJ_new_arr(i,j,k);
- 225 rt0_tmp_new /= dJ_new_arr(i,j,k);
-
-
-
- 229 th0_new_arr(i,j,k) = rt0_tmp_new / r0_new_arr(i,j,k);
-
-
- 232 r0_new->FillBoundary(fine_geom.periodicity());
- 233 p0_new->FillBoundary(fine_geom.periodicity());
-
-
+ 218 Real invdetJ = 1.0 / dJ_src_arr(i,j,k);
+
+ 220 Real src_r = - invdetJ * ( zflux_r_hi - zflux_r_lo ) * dxInv[2];
+ 221 Real src_rt = - invdetJ * ( zflux_rt_hi - zflux_rt_lo ) * dxInv[2];
+
+ 223 Real rho0_new = dJ_old_arr(i,j,k) * r0_arr(i,j,k) + dt_base * dJ_src_arr(i,j,k) * src_r;
+ 224 Real rt0_tmp_new = dJ_old_arr(i,j,k) * rt0_arr(i,j,k) + dt_base * dJ_src_arr(i,j,k) * src_rt;
+
+ 226 r0_new_arr(i,j,k) = rho0_new / dJ_new_arr(i,j,k);
+ 227 rt0_tmp_new /= dJ_new_arr(i,j,k);
+
+
+
+ 231 th0_new_arr(i,j,k) = rt0_tmp_new / r0_new_arr(i,j,k);
+
+
+ 234 r0_new->FillBoundary(fine_geom.periodicity());
+ 235 p0_new->FillBoundary(fine_geom.periodicity());
-
- 238 z_phys_nd[level], z_phys_cc[level],
- 239 xvel_new, yvel_new, zvel_new,
- 240 xmom_src, ymom_src, zmom_src,
- 241 base_state[level], forest_drag, fine_geom, solverChoice,
- 242 mapfac_m[level], mapfac_u[level], mapfac_v[level],
- 243 dptr_u_geos, dptr_v_geos, dptr_wbar_sub,
- 244 d_rayleigh_ptrs_at_lev, d_sponge_ptrs_at_lev,
- 245 input_sounding_data, n_qstate);
-
- 247 erf_slow_rhs_pre(level, finest_level, nrk, slow_dt, S_rhs, S_old, S_data, S_prim, S_scratch,
- 248 xvel_new, yvel_new, zvel_new,
- 249 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src,
- 250 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
- 251 Tau11_lev[level].get(), Tau22_lev[level].get(), Tau33_lev[level].get(), Tau12_lev[level].get(),
- 252 Tau13_lev[level].get(), Tau21_lev[level].get(), Tau23_lev[level].get(), Tau31_lev[level].get(),
- 253 Tau32_lev[level].get(), SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3,Q2fx3, Diss,
- 254 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
- 255 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], p0,
-
- 257 mapfac_m[level], mapfac_u[level], mapfac_v[level],
-
-
-
- 261 fr_as_crse, fr_as_fine);
-
-
- 264 xflux_imask[level], yflux_imask[level], zflux_imask[level],
- 265 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
-
-
- 268 #ifdef ERF_USE_NETCDF
-
- 270 if (use_real_bcs && (level == 0)) {
-
-
- 273 real_width, real_set_width, fine_geom,
- 274 S_rhs, S_old, S_data,
- 275 bdy_data_xlo, bdy_data_xhi,
- 276 bdy_data_ylo, bdy_data_yhi);
-
-
-
-
-
-
-
- 284 if (level > 0 && cf_width > 0) {
-
- 286 cf_width, cf_set_width, fine_geom,
- 287 &FPr_c[level-1], &FPr_u[level-1], &FPr_v[level-1], &FPr_w[level-1],
- 288 domain_bcs_type, S_rhs, S_data);
-
-
-
-
-
-
+
+
+
+ 240 z_phys_nd[level], z_phys_cc[level],
+ 241 xvel_new, yvel_new, zvel_new,
+ 242 xmom_src, ymom_src, zmom_src,
+ 243 base_state[level], forest_drag, fine_geom, solverChoice,
+ 244 mapfac_m[level], mapfac_u[level], mapfac_v[level],
+ 245 dptr_u_geos, dptr_v_geos, dptr_wbar_sub,
+ 246 d_rayleigh_ptrs_at_lev, d_sponge_ptrs_at_lev,
+ 247 input_sounding_data, n_qstate);
+
+ 249 erf_slow_rhs_pre(level, finest_level, nrk, slow_dt, S_rhs, S_old, S_data, S_prim, S_scratch,
+ 250 xvel_new, yvel_new, zvel_new,
+ 251 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src,
+ 252 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
+ 253 Tau11_lev[level].get(), Tau22_lev[level].get(), Tau33_lev[level].get(), Tau12_lev[level].get(),
+ 254 Tau13_lev[level].get(), Tau21_lev[level].get(), Tau23_lev[level].get(), Tau31_lev[level].get(),
+ 255 Tau32_lev[level].get(), SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3,Q2fx3, Diss,
+ 256 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
+ 257 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], p0,
+
+ 259 mapfac_m[level], mapfac_u[level], mapfac_v[level],
+
+
+
+ 263 fr_as_crse, fr_as_fine);
+
+
+ 266 xflux_imask[level], yflux_imask[level], zflux_imask[level],
+ 267 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
+
+
+ 270 #ifdef ERF_USE_NETCDF
+
+ 272 if (use_real_bcs && (level == 0)) {
+
+
+ 275 real_width, real_set_width, fine_geom,
+ 276 S_rhs, S_old, S_data,
+ 277 bdy_data_xlo, bdy_data_xhi,
+ 278 bdy_data_ylo, bdy_data_yhi);
+
+
+
+
+
+
+
+ 286 if (level > 0 && cf_width > 0) {
+
+ 288 cf_width, cf_set_width, fine_geom,
+ 289 &FPr_c[level-1], &FPr_u[level-1], &FPr_v[level-1], &FPr_w[level-1],
+ 290 domain_bcs_type, S_rhs, S_data);
+
+
+
+
-
- 297 Vector<MultiFab>& S_old,
- 298 Vector<MultiFab>& S_new,
- 299 Vector<MultiFab>& S_data,
- 300 Vector<MultiFab>& S_scratch,
- 301 const Real old_step_time,
- 302 const Real old_stage_time,
- 303 const Real new_stage_time,
-
-
- 306 amrex::ignore_unused(nrk);
-
-
-
-
- 311 Real slow_dt = new_stage_time - old_step_time;
-
- 313 if (verbose) amrex::Print() <<
"Time integration of scalars at level " << level
- 314 <<
" from " << old_step_time <<
" to " << new_stage_time
- 315 <<
" with dt = " << slow_dt
- 316 <<
" using RHS created at " << old_stage_time << std::endl;
-
- 318 int n_qstate = micro->Get_Qstate_Size();
+
+
+
+ 299 Vector<MultiFab>& S_old,
+ 300 Vector<MultiFab>& S_new,
+ 301 Vector<MultiFab>& S_data,
+ 302 Vector<MultiFab>& S_scratch,
+ 303 const Real old_step_time,
+ 304 const Real old_stage_time,
+ 305 const Real new_stage_time,
+
+
+ 308 amrex::ignore_unused(nrk);
+
+
+
+
+ 313 Real slow_dt = new_stage_time - old_step_time;
+
+ 315 if (verbose) amrex::Print() <<
"Time integration of scalars at level " << level
+ 316 <<
" from " << old_step_time <<
" to " << new_stage_time
+ 317 <<
" with dt = " << slow_dt
+ 318 <<
" using RHS created at " << old_stage_time << std::endl;
- 320 #if defined(ERF_USE_NETCDF)
- 321 bool moist_set_rhs =
false;
-
-
- 324 (real_set_width > 0) &&
- 325 (solverChoice.moisture_type != MoistureType::None) )
-
- 327 moist_set_rhs =
true;
-
-
-
-
-
+ 320 int n_qstate = micro->Get_Qstate_Size();
+
+ 322 #if defined(ERF_USE_NETCDF)
+ 323 bool moist_set_rhs =
false;
+
+
+ 326 (real_set_width > 0) &&
+ 327 (solverChoice.moisture_type != MoistureType::None) )
+
+ 329 moist_set_rhs =
true;
+
+
+
- 334 YAFluxRegister* fr_as_crse =
nullptr;
- 335 YAFluxRegister* fr_as_fine =
nullptr;
- 336 if (solverChoice.coupling_type == CouplingType::TwoWay)
-
- 338 if (level < finest_level) {
- 339 fr_as_crse = getAdvFluxReg(level+1);
-
-
- 342 fr_as_fine = getAdvFluxReg(level);
-
-
-
-
- 347 if ( solverChoice.terrain_type == TerrainType::Moving ) {
-
- 349 S_rhs, S_old, S_new, S_data, S_prim, S_scratch,
- 350 xvel_new, yvel_new, zvel_new, cc_src, SmnSmn, eddyDiffs,
- 351 Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
- 352 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
- 353 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], detJ_cc_new[level],
- 354 mapfac_m[level], mapfac_u[level], mapfac_v[level],
-
-
-
- 358 #
if defined(ERF_USE_NETCDF)
- 359 moist_set_rhs, bdy_time_interval, start_bdy_time, new_stage_time,
- 360 real_width, real_set_width,
- 361 bdy_data_xlo, bdy_data_xhi, bdy_data_ylo, bdy_data_yhi,
-
- 363 fr_as_crse, fr_as_fine);
-
-
- 366 S_rhs, S_old, S_new, S_data, S_prim, S_scratch,
- 367 xvel_new, yvel_new, zvel_new, cc_src, SmnSmn, eddyDiffs,
- 368 Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
- 369 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
- 370 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], detJ_cc[level],
- 371 mapfac_m[level], mapfac_u[level], mapfac_v[level],
-
-
-
- 375 #
if defined(ERF_USE_NETCDF)
- 376 moist_set_rhs, bdy_time_interval, start_bdy_time, new_stage_time,
- 377 real_width, real_set_width,
- 378 bdy_data_xlo, bdy_data_xhi, bdy_data_ylo, bdy_data_yhi,
-
- 380 fr_as_crse, fr_as_fine);
-
-
-
-
-
- 386 fast_only=
false, vel_and_mom_synced=
false);
-
-
+
+
+ 336 YAFluxRegister* fr_as_crse =
nullptr;
+ 337 YAFluxRegister* fr_as_fine =
nullptr;
+ 338 if (solverChoice.coupling_type == CouplingType::TwoWay)
+
+ 340 if (level < finest_level) {
+ 341 fr_as_crse = getAdvFluxReg(level+1);
+
+
+ 344 fr_as_fine = getAdvFluxReg(level);
+
+
+
+
+ 349 if ( solverChoice.terrain_type == TerrainType::Moving ) {
+
+ 351 S_rhs, S_old, S_new, S_data, S_prim, S_scratch,
+ 352 xvel_new, yvel_new, zvel_new, cc_src, SmnSmn, eddyDiffs,
+ 353 Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
+ 354 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
+ 355 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], detJ_cc_new[level],
+ 356 mapfac_m[level], mapfac_u[level], mapfac_v[level],
+
+
+
+ 360 #
if defined(ERF_USE_NETCDF)
+ 361 moist_set_rhs, bdy_time_interval, start_bdy_time, new_stage_time,
+ 362 real_width, real_set_width,
+ 363 bdy_data_xlo, bdy_data_xhi, bdy_data_ylo, bdy_data_yhi,
+
+ 365 fr_as_crse, fr_as_fine);
+
+
+ 368 S_rhs, S_old, S_new, S_data, S_prim, S_scratch,
+ 369 xvel_new, yvel_new, zvel_new, cc_src, SmnSmn, eddyDiffs,
+ 370 Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
+ 371 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
+ 372 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], detJ_cc[level],
+ 373 mapfac_m[level], mapfac_u[level], mapfac_v[level],
+
+
+
+ 377 #
if defined(ERF_USE_NETCDF)
+ 378 moist_set_rhs, bdy_time_interval, start_bdy_time, new_stage_time,
+ 379 real_width, real_set_width,
+ 380 bdy_data_xlo, bdy_data_xhi, bdy_data_ylo, bdy_data_yhi,
+
+ 382 fr_as_crse, fr_as_fine);
+
+
+
+
+
+ 388 fast_only=
false, vel_and_mom_synced=
false);
-
- 391 Vector<MultiFab>& S_old,
- 392 Vector<MultiFab>& S_data,
- 393 Vector<MultiFab>& S_scratch,
- 394 const Real old_step_time,
- 395 const Real old_stage_time,
- 396 const Real new_stage_time,
-
-
- 399 BL_PROFILE(
"slow_rhs_fun_inc");
- 400 if (verbose) Print() <<
"Making slow rhs at time " << old_stage_time <<
" for fast variables advancing from " <<
- 401 old_step_time <<
" to " << new_stage_time << std::endl;
-
-
-
-
-
-
-
-
-
- 411 Real slow_dt = new_stage_time - old_step_time;
+
+
+
+ 393 Vector<MultiFab>& S_old,
+ 394 Vector<MultiFab>& S_data,
+ 395 Vector<MultiFab>& S_scratch,
+ 396 const Real old_step_time,
+ 397 const Real old_stage_time,
+ 398 const Real new_stage_time,
+
+
+ 401 BL_PROFILE(
"slow_rhs_fun_inc");
+ 402 if (verbose) Print() <<
"Making slow rhs at time " << old_stage_time <<
" for fast variables advancing from " <<
+ 403 old_step_time <<
" to " << new_stage_time << std::endl;
+
+
+
+
+
+
+
+
-
-
+ 413 Real slow_dt = new_stage_time - old_step_time;
+
- 416 YAFluxRegister* fr_as_crse =
nullptr;
- 417 YAFluxRegister* fr_as_fine =
nullptr;
- 418 if (solverChoice.coupling_type == CouplingType::TwoWay) {
- 419 if (level < finest_level) {
- 420 fr_as_crse = getAdvFluxReg(level+1);
-
-
-
- 424 fr_as_fine = getAdvFluxReg(level);
-
-
-
- 428 Real* dptr_u_geos = solverChoice.have_geo_wind_profile ? d_u_geos[level].data():
nullptr;
- 429 Real* dptr_v_geos = solverChoice.have_geo_wind_profile ? d_v_geos[level].data():
nullptr;
-
-
- 432 MultiFab* forest_drag =
nullptr;
- 433 if (solverChoice.do_forest) { forest_drag = m_forest[level]->get_drag_field(); }
-
- 435 make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, cc_src, z_phys_cc[level],
- 436 #
if defined(ERF_USE_RRTMGP)
- 437 qheating_rates[level],
-
- 439 fine_geom, solverChoice,
- 440 mapfac_u[level], mapfac_v[level], mapfac_m[level],
- 441 dptr_rhotheta_src, dptr_rhoqt_src,
- 442 dptr_wbar_sub, d_rayleigh_ptrs_at_lev,
- 443 input_sounding_data, turbPert);
-
- 445 int n_qstate = micro->Get_Qstate_Size();
-
- 447 z_phys_nd[level], z_phys_cc[level],
- 448 xvel_new, yvel_new, zvel_new,
- 449 xmom_src, ymom_src, zmom_src,
- 450 base_state[level], forest_drag, fine_geom, solverChoice,
- 451 mapfac_m[level], mapfac_u[level], mapfac_v[level],
- 452 dptr_u_geos, dptr_v_geos, dptr_wbar_sub,
- 453 d_rayleigh_ptrs_at_lev, d_sponge_ptrs_at_lev,
- 454 input_sounding_data, n_qstate);
-
-
- 457 S_rhs, S_old, S_data, S_prim, S_scratch,
- 458 xvel_new, yvel_new, zvel_new,
- 459 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src,
- 460 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
- 461 Tau11_lev[level].get(), Tau22_lev[level].get(), Tau33_lev[level].get(), Tau12_lev[level].get(),
- 462 Tau13_lev[level].get(), Tau21_lev[level].get(), Tau23_lev[level].get(), Tau31_lev[level].get(),
- 463 Tau32_lev[level].get(), SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
- 464 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
- 465 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], p0,
-
- 467 mapfac_m[level], mapfac_u[level], mapfac_v[level],
-
-
-
- 471 fr_as_crse, fr_as_fine);
-
-
- 474 xflux_imask[level], yflux_imask[level], zflux_imask[level],
- 475 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
-
- 477 #ifdef ERF_USE_NETCDF
-
- 479 if (use_real_bcs && (level == 0)) {
-
-
- 482 real_width, real_set_width, fine_geom,
- 483 S_rhs, S_old, S_data,
- 484 bdy_data_xlo, bdy_data_xhi,
- 485 bdy_data_ylo, bdy_data_yhi);
-
-
-
-
+
+
+ 418 YAFluxRegister* fr_as_crse =
nullptr;
+ 419 YAFluxRegister* fr_as_fine =
nullptr;
+ 420 if (solverChoice.coupling_type == CouplingType::TwoWay) {
+ 421 if (level < finest_level) {
+ 422 fr_as_crse = getAdvFluxReg(level+1);
+
+
+
+ 426 fr_as_fine = getAdvFluxReg(level);
+
+
+
+ 430 Real* dptr_u_geos = solverChoice.have_geo_wind_profile ? d_u_geos[level].data():
nullptr;
+ 431 Real* dptr_v_geos = solverChoice.have_geo_wind_profile ? d_v_geos[level].data():
nullptr;
+
+
+ 434 MultiFab* forest_drag =
nullptr;
+ 435 if (solverChoice.do_forest) { forest_drag = m_forest[level]->get_drag_field(); }
+
+ 437 make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, cc_src, z_phys_cc[level],
+ 438 #
if defined(ERF_USE_RRTMGP)
+ 439 qheating_rates[level],
+
+ 441 fine_geom, solverChoice,
+ 442 mapfac_u[level], mapfac_v[level], mapfac_m[level],
+ 443 dptr_rhotheta_src, dptr_rhoqt_src,
+ 444 dptr_wbar_sub, d_rayleigh_ptrs_at_lev,
+ 445 input_sounding_data, turbPert);
+
+ 447 int n_qstate = micro->Get_Qstate_Size();
+
+ 449 z_phys_nd[level], z_phys_cc[level],
+ 450 xvel_new, yvel_new, zvel_new,
+ 451 xmom_src, ymom_src, zmom_src,
+ 452 base_state[level], forest_drag, fine_geom, solverChoice,
+ 453 mapfac_m[level], mapfac_u[level], mapfac_v[level],
+ 454 dptr_u_geos, dptr_v_geos, dptr_wbar_sub,
+ 455 d_rayleigh_ptrs_at_lev, d_sponge_ptrs_at_lev,
+ 456 input_sounding_data, n_qstate);
+
+
+ 459 S_rhs, S_old, S_data, S_prim, S_scratch,
+ 460 xvel_new, yvel_new, zvel_new,
+ 461 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src,
+ 462 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
+ 463 Tau11_lev[level].get(), Tau22_lev[level].get(), Tau33_lev[level].get(), Tau12_lev[level].get(),
+ 464 Tau13_lev[level].get(), Tau21_lev[level].get(), Tau23_lev[level].get(), Tau31_lev[level].get(),
+ 465 Tau32_lev[level].get(), SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
+ 466 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
+ 467 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], p0,
+
+ 469 mapfac_m[level], mapfac_u[level], mapfac_v[level],
+
+
+
+ 473 fr_as_crse, fr_as_fine);
+
+
+ 476 xflux_imask[level], yflux_imask[level], zflux_imask[level],
+ 477 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
+
+ 479 #ifdef ERF_USE_NETCDF
+
+ 481 if (use_real_bcs && (level == 0)) {
+
+
+ 484 real_width, real_set_width, fine_geom,
+ 485 S_rhs, S_old, S_data,
+ 486 bdy_data_xlo, bdy_data_xhi,
+ 487 bdy_data_ylo, bdy_data_yhi);
+
+
+
+
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getPgivenRTh(const amrex::Real rhotheta, const amrex::Real qv=0.)
Definition: ERF_EOS.H:84
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getExnergivenRTh(const amrex::Real rhotheta, const amrex::Real rdOcp, const amrex::Real qv=0.0)
Definition: ERF_EOS.H:159
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getRhoThetagivenP(const amrex::Real p, const amrex::Real qv=0.0)
Definition: ERF_EOS.H:175
@@ -582,9 +584,9 @@
void realbdy_compute_interior_ghost_rhs(const Real &bdy_time_interval, const Real &start_bdy_time, const Real &time, const Real &delta_t, int width, int set_width, const Geometry &geom, Vector< MultiFab > &S_rhs, Vector< MultiFab > &S_old_data, Vector< MultiFab > &S_cur_data, Vector< Vector< FArrayBox >> &bdy_data_xlo, Vector< Vector< FArrayBox >> &bdy_data_xhi, Vector< Vector< FArrayBox >> &bdy_data_ylo, Vector< Vector< FArrayBox >> &bdy_data_yhi)
Definition: ERF_InteriorGhostCells.cpp:107
void fine_compute_interior_ghost_rhs(const Real &time, const Real &delta_t, const int &width, const int &set_width, const Geometry &geom, ERFFillPatcher *FPr_c, ERFFillPatcher *FPr_u, ERFFillPatcher *FPr_v, ERFFillPatcher *FPr_w, Vector< BCRec > &domain_bcs_type, Vector< MultiFab > &S_rhs_f, Vector< MultiFab > &S_data_f)
Definition: ERF_InteriorGhostCells.cpp:520
-auto slow_rhs_fun_inc
Definition: ERF_TI_slow_rhs_fun.H:390
+auto slow_rhs_fun_inc
Definition: ERF_TI_slow_rhs_fun.H:392
auto slow_rhs_fun_pre
Definition: ERF_TI_slow_rhs_fun.H:6
-auto slow_rhs_fun_post
Definition: ERF_TI_slow_rhs_fun.H:296
+auto slow_rhs_fun_post
Definition: ERF_TI_slow_rhs_fun.H:298
auto apply_bcs
Definition: ERF_TI_utils.H:50
auto cons_to_prim
Definition: ERF_TI_utils.H:4
void init_terrain_grid(int lev, const Geometry &geom, MultiFab &z_phys_nd, Vector< Real > const &z_levels_h, GpuArray< ERF_BC, AMREX_SPACEDIM *2 > &phys_bc_type)
Definition: ERF_TerrainMetrics.cpp:118
diff --git a/ERF__TI__substep__fun_8H_source.html b/ERF__TI__substep__fun_8H_source.html
index f0a18b740b..34f2cd48cc 100644
--- a/ERF__TI__substep__fun_8H_source.html
+++ b/ERF__TI__substep__fun_8H_source.html
@@ -290,7 +290,7 @@
@ cons
Definition: ERF_IndexDefines.H:139
@ zmom
Definition: ERF_IndexDefines.H:142
@ xmom
Definition: ERF_IndexDefines.H:140
-static TerrainType terrain_type
Definition: ERF_DataStruct.H:523
+static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
diff --git a/ERF__buoyancy__utils_8H.html b/ERF__buoyancy__utils_8H.html
index 662147e0ec..d6853aac79 100644
--- a/ERF__buoyancy__utils_8H.html
+++ b/ERF__buoyancy__utils_8H.html
@@ -123,18 +123,16 @@
|
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_moist_anelastic (int &i, int &j, int &k, amrex::Real const &grav_gpu, amrex::Real const &rv_over_rd, const amrex::Array4< const amrex::Real > &r0_arr, const amrex::Array4< const amrex::Real > &th0_arr, const amrex::Array4< const amrex::Real > &cell_data) |
|
-AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_dry_default (int &i, int &j, int &k, amrex::Real const &grav_gpu, amrex::Real const &rd_over_cp, const amrex::Array4< const amrex::Real > &r0_arr, const amrex::Array4< const amrex::Real > &p0_arr, const amrex::Array4< const amrex::Real > &th0_arr, const amrex::Array4< const amrex::Real > &cell_data) |
- |
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_rhopert (int &i, int &j, int &k, const int &n_qstate, amrex::Real const &grav_gpu, const amrex::Array4< const amrex::Real > &r0_arr, const amrex::Array4< const amrex::Real > &cell_data) |
|
-AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_type2 (int &i, int &j, int &k, const int &n_qstate, amrex::Real const &grav_gpu, amrex::Real *rho_d_ptr, amrex::Real *theta_d_ptr, amrex::Real *qv_d_ptr, amrex::Real *qc_d_ptr, amrex::Real *qp_d_ptr, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< const amrex::Real > &cell_data) |
- |
-AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_type3 (int &i, int &j, int &k, const int &n_qstate, amrex::Real const &grav_gpu, amrex::Real *rho_d_ptr, amrex::Real *theta_d_ptr, amrex::Real *qv_d_ptr, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< const amrex::Real > &cell_data) |
- |
-AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_type4 (int &i, int &j, int &k, const int &n_qstate, amrex::Real const &grav_gpu, amrex::Real *rho_d_ptr, amrex::Real *theta_d_ptr, amrex::Real *qv_d_ptr, amrex::Real *qc_d_ptr, amrex::Real *qp_d_ptr, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< const amrex::Real > &cell_data) |
- |
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_dry_Tpert (int &i, int &j, int &k, amrex::Real const &grav_gpu, amrex::Real const &rd_over_cp, const amrex::Array4< const amrex::Real > &r0_arr, const amrex::Array4< const amrex::Real > &p0_arr, const amrex::Array4< const amrex::Real > &th0_arr, const amrex::Array4< const amrex::Real > &cell_data) |
|
+AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_dry_Thpert (int &i, int &j, int &k, amrex::Real const &grav_gpu, const amrex::Array4< const amrex::Real > &r0_arr, const amrex::Array4< const amrex::Real > &th0_arr, const amrex::Array4< const amrex::Real > &cell_prim) |
+ |
+AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_moist_Tpert (int &i, int &j, int &k, const int &n_qstate, amrex::Real const &grav_gpu, amrex::Real const &rd_over_cp, const amrex::Array4< const amrex::Real > &r0_arr, const amrex::Array4< const amrex::Real > &th0_arr, const amrex::Array4< const amrex::Real > &p0_arr, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< const amrex::Real > &cell_data) |
+ |
+AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_moist_Thpert (int &i, int &j, int &k, const int &n_qstate, amrex::Real const &grav_gpu, const amrex::Array4< const amrex::Real > &r0_arr, const amrex::Array4< const amrex::Real > &th0_arr, const amrex::Array4< const amrex::Real > &cell_prim) |
+ |
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real | buoyancy_dry_anelastic_T (int &i, int &j, int &k, amrex::Real const &grav_gpu, amrex::Real const &rd_over_cp, const amrex::Array4< const amrex::Real > &r0_arr, const amrex::Array4< const amrex::Real > &p0_arr, const amrex::Array4< const amrex::Real > &cell_data) |
|
@@ -199,17 +197,12 @@