7 Vector<MultiFab>& S_old,
8 Vector<MultiFab>& S_data,
9 const double old_step_time,
10 const double old_stage_time,
11 const double new_stage_time,
14 BL_PROFILE(
"slow_rhs_fun_pre");
27 if (verbose) Print() << std::setprecision(timeprecision)
28 <<
"Making slow rhs at time " << old_stage_time
29 <<
" for fast variables advancing from " << old_step_time
30 <<
" to " << new_stage_time << std::endl;
32 double slow_dt = new_stage_time - old_step_time;
34 const GpuArray<Real, AMREX_SPACEDIM>
dxInv = fine_geom.InvCellSizeArray();
39 YAFluxRegister* fr_as_crse =
nullptr;
40 YAFluxRegister* fr_as_fine =
nullptr;
41 if (solverChoice.coupling_type == CouplingType::TwoWay && finest_level > 0) {
42 if (level < finest_level) {
43 fr_as_crse = getAdvFluxReg(level+1);
47 fr_as_fine = getAdvFluxReg(level);
56 MultiFab* forest_drag = (solverChoice.do_forest_drag) ?
57 m_forest_drag[level]->get_drag_field() :
nullptr;
58 MultiFab* frontal_area = (solverChoice.do_forest_drag) ?
59 m_forest_drag[level]->get_frontal_area() :
nullptr;
62 MultiFab* terrain_blank = (solverChoice.terrain_type == TerrainType::ImmersedForcing ||
63 solverChoice.buildings_type == BuildingsType::ImmersedForcing) ?
64 terrain_blanking[level].
get() :
nullptr;
65 MultiFab* terrain_blank_xface = (solverChoice.terrain_type == TerrainType::ImmersedForcing ||
66 solverChoice.buildings_type == BuildingsType::ImmersedForcing) ?
67 terrain_blanking_xface[level].
get() :
nullptr;
68 MultiFab* terrain_blank_yface = (solverChoice.terrain_type == TerrainType::ImmersedForcing ||
69 solverChoice.buildings_type == BuildingsType::ImmersedForcing) ?
70 terrain_blanking_yface[level].
get() :
nullptr;
71 MultiFab* terrain_blank_zface = (solverChoice.terrain_type == TerrainType::ImmersedForcing ||
72 solverChoice.buildings_type == BuildingsType::ImmersedForcing) ?
73 terrain_blanking_zface[level].
get() :
nullptr;
78 int n_qstate_into_total = micro->Get_Qstate_Moist_Size() - micro->Get_Qstate_Moist_NumConc_Size();
82 MultiFab p0_to_use, base_to_use;
83 MultiFab *zpn_to_use, *zpc_to_use, *ax_to_use, *ay_to_use, *az_to_use, *dJ_to_use;
86 std::unique_ptr<MultiFab> z_t_pert;
87 if ( solverChoice.terrain_type == TerrainType::MovingFittedMesh )
94 zpn_to_use = z_phys_nd_src[level].get();
95 zpc_to_use = z_phys_cc_src[level].get();
96 ax_to_use = ax_src[level].get();
97 ay_to_use = ay_src[level].get();
98 az_to_use = az_src[level].get();
99 dJ_to_use = detJ_cc_src[level].get();
104 zpn_to_use = z_phys_nd[level].get();
105 zpc_to_use = z_phys_cc[level].get();
106 ax_to_use = ax[level].get();
107 ay_to_use = ay[level].get();
108 az_to_use = az[level].get();
109 dJ_to_use = detJ_cc[level].get();
113 bool l_use_IF = (solverChoice.terrain_type == TerrainType::ImmersedForcing ||
114 solverChoice.buildings_type == BuildingsType::ImmersedForcing);
115 Table1D<Real> r_avg_to_pass = l_use_IF ? r_plane_avg[level].table() : Table1D<Real>();
116 Table1D<Real> t_avg_to_pass = l_use_IF ? t_plane_avg[level].table() : Table1D<Real>();
122 S_data, S_prim, cc_src, base_state[level], zpc_to_use,
123 xvel_new, yvel_new, zvel_new,
124 qheating_rates[level].
get(),
125 terrain_blank, fine_geom, solverChoice,
127 rhotheta_src[level].
get(), rhoqt_src[level].
get(),
128 dptr_wbar_sub, d_rayleigh_ptrs_at_lev, d_sinesq_at_lev,
130 r_avg_to_pass, t_avg_to_pass,
135 if (ibseb_params.enable && ibseb_params.couple_heat &&
136 level <
static_cast<int>(m_ibseb.size()) && m_ibseb[level]) {
137 m_ibseb[level]->add_heat_flux_to_source(cc_src, S_data[
IntVars::cons], fine_geom,
138 solverChoice.c_p, solverChoice.rdOcp);
142 if (solverChoice.nudging_from_observations &&
obs_nudging) {
143 obs_nudging->add_theta_source(level, old_stage_time,
static_cast<Real>(slow_dt), fine_geom,
150 #if defined(ERF_USE_NETCDF)
151 if ( solverChoice.use_real_bcs && (level==0) &&
154 Real bdy_factor = solverChoice.bdy_nudge_factor;
155 Real l_rdOcp = solverChoice.rdOcp;
156 Real l_c_p = solverChoice.c_p;
157 int moist_nudge_type = solverChoice.bdy_moist_nudge_type;
158 int num_q = micro->Get_Qstate_Moist_Size() - micro->Get_Qstate_Moist_NumConc_Size();
160 (solverChoice.moisture_type != MoistureType::Morrison_NoIce &&
161 solverChoice.moisture_type != MoistureType::SAM_NoIce) );
162 add_moist_nudging_terms(S_data[
IntVars::cons], cc_src, num_q, slow_dt,
163 start_time+old_stage_time,
164 start_bdy_time, final_bdy_time, bdy_time_interval,
165 bdy_factor, real_width, geom[level],
166 bdy_data_xlo, bdy_data_xhi, bdy_data_ylo, bdy_data_yhi,
167 m_r2d, l_c_p, l_rdOcp,
168 solverChoice.moisture_indices,
169 solverChoice.use_wrf_bdy_density, moist_nudge_type);
176 if (solverChoice.do_forest_drag && solverChoice.forest_biophysics &&
177 solverChoice.forest_biophysics_heat && frontal_area) {
180 xvel_new, yvel_new, zvel_new,
181 frontal_area, base_to_use,
189 p0_to_use, *zpn_to_use, *zpc_to_use,
191 get_eb(level), gradp[level]);
196 int num_q = micro->Get_Qstate_Moist_Size() - micro->Get_Qstate_Moist_NumConc_Size();
197 make_buoyancy(level, S_data, S_prim,
qt, buoyancy, fine_geom, solverChoice, base_to_use,
198 num_q, get_eb(level), solverChoice.anelastic[level]);
204 S_data, zpn_to_use, zpc_to_use, stretched_dz_h[level],
205 xvel_new, yvel_new, zvel_new,
206 xmom_src, ymom_src, zmom_src,
207 base_to_use, forest_drag, terrain_blank,
208 terrain_blank_xface, terrain_blank_yface, terrain_blank_zface,
209 cosPhi_m[level].
get(), sinPhi_m[level].
get(), fine_geom, solverChoice,
211 (solverChoice.have_geo_wind_profile) ? d_u_geos[level].data():
nullptr,
212 (solverChoice.have_geo_wind_profile) ? d_v_geos[level].data():
nullptr,
213 dptr_wbar_sub, d_rayleigh_ptrs_at_lev, d_sinesq_at_lev, d_sinesq_stag_at_lev,
214 d_sponge_ptrs_at_lev,
215 (solverChoice.hindcast_lateral_forcing? &forecast_state_interp[level] :
nullptr),
216 sounding_at_level(level), lsf_at_level(level), lsf_data[level],
217 get_eb(level),
true);
220 if (solverChoice.nudging_from_observations &&
obs_nudging) {
221 obs_nudging->add_momentum_sources(level, old_stage_time,
static_cast<Real>(slow_dt), fine_geom,
223 xmom_src, ymom_src, zmom_src, zpn_to_use,
224 terrain_blank_xface, terrain_blank_yface,
225 terrain_blank_zface);
232 xflux_imask[level], yflux_imask[level], zflux_imask[level],
233 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
239 S_prim,
qt, avg_xmom[level], avg_ymom[level], avg_zmom[level],
240 xvel_new, yvel_new, zvel_new,
241 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src, buoyancy,
242 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
243 Tau[level], Tau_corr[level], Tau_EB[level],
244 SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss, Hfx3_EB,
245 fine_geom, solverChoice, m_SurfaceLayer, domain_bcs_type_d, domain_bcs_type,
246 *zpn_to_use, *zpc_to_use, *ax_to_use, *ay_to_use, *az_to_use, *dJ_to_use,
247 stretched_dz_d[level], gradp[level],
248 mapfac[level], get_eb(level),
249 #ifdef ERF_USE_EAMXX_SHOC
250 eamxx_shoc_interface[level].
get(),
252 native_shoc_driver[level].
get(),
253 fr_as_crse, fr_as_fine, &base_to_use,
254 cloud_chamber_config.active ? &cloud_chamber_config :
nullptr,
255 cloud_chamber_budget.get());
257 if ((solverChoice.vert_implicit_fac[level][nrk] > zero_d) && solverChoice.implicit_before_substep) {
258 const Real stage_dt =
static_cast<Real>(slow_dt);
265 MultiFab::Saxpy(scratch, stage_dt, S_rhs[
IntVars::cons], 0, 0, 2, 0);
266 scratch.FillBoundary(geom[level].periodicity());
280 #ifdef ERF_IMPLICIT_W
288 if (solverChoice.implicit_momentum_diffusion) {
290 MultiFab::Saxpy(scratch_xmom, stage_dt, S_rhs[
IntVars::xmom], 0, 0, 1, 0);
291 scratch_xmom.FillBoundary(geom[level].periodicity());
294 MultiFab::Saxpy(scratch_ymom, stage_dt, S_rhs[
IntVars::ymom], 0, 0, 1, 0);
295 scratch_ymom.FillBoundary(geom[level].periodicity());
296 #ifdef ERF_IMPLICIT_W
298 MultiFab::Saxpy(scratch_zmom, stage_dt, S_rhs[
IntVars::zmom], 0, 0, 1, 0);
299 scratch_zmom.FillBoundary(geom[level].periodicity());
305 MultiFab::Saxpy(scratch, -one_d, S_old[
IntVars::cons], 1, 1, 1, 0);
306 scratch.mult(one_d / stage_dt);
309 if (solverChoice.implicit_momentum_diffusion) {
310 MultiFab::Saxpy(scratch_xmom, -one_d, S_old[
IntVars::xmom], 0, 0, 1, 0);
311 scratch_xmom.mult(one_d / stage_dt);
312 MultiFab::Copy(S_rhs[
IntVars::xmom], scratch_xmom, 0, 0, 1, 0);
314 MultiFab::Saxpy(scratch_ymom, -one_d, S_old[
IntVars::ymom], 0, 0, 1, 0);
315 scratch_ymom.mult(one_d / stage_dt);
316 MultiFab::Copy(S_rhs[
IntVars::ymom], scratch_ymom, 0, 0, 1, 0);
317 #ifdef ERF_IMPLICIT_W
318 MultiFab::Saxpy(scratch_zmom, -one_d, S_old[
IntVars::zmom], 0, 0, 1, 0);
319 scratch_zmom.mult(one_d / stage_dt);
320 MultiFab::Copy(S_rhs[
IntVars::zmom], scratch_zmom, 0, 0, 1, 0);
325 #ifdef ERF_USE_EAMXX_SHOC
326 if (solverChoice.turbChoice[level].uses_eamxx_shoc() && eamxx_shoc_interface[level]) {
327 eamxx_shoc_interface[level]->add_fast_tend(S_rhs);
330 if (solverChoice.turbChoice[level].uses_native_shoc() && native_shoc_driver[level]) {
338 if ( solverChoice.terrain_type == TerrainType::MovingFittedMesh )
345 MultiFab* r0_new = &r_hse_new;
346 MultiFab* p0_new = &p_hse_new;
347 MultiFab* pi0_new = &pi_hse_new;
348 MultiFab* th0_new = &th_hse_new;
353 MultiFab rt0(
p0->boxArray(),
p0->DistributionMap(),1,1);
354 MultiFab rt0_new(
p0->boxArray(),
p0->DistributionMap(),1,1);
355 MultiFab r0_temp(
p0->boxArray(),
p0->DistributionMap(),1,1);
362 double dt_base = new_stage_time - old_step_time;
364 const Real l_rdOcp = solverChoice.rdOcp;
367 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
369 for ( MFIter mfi(*
p0,TilingIfNotGPU()); mfi.isValid(); ++mfi)
371 const Array4<Real > rt0_arr = rt0.array(mfi);
372 const Array4<Real > rt0_tmp_arr = rt0_new.array(mfi);
374 const Array4<Real const> r0_arr =
r0->const_array(mfi);
375 const Array4<Real > r0_new_arr = r0_new->array(mfi);
376 const Array4<Real > r0_tmp_arr = r0_temp.array(mfi);
378 const Array4<Real const> p0_arr =
p0->const_array(mfi);
379 const Array4<Real > p0_new_arr = p0_new->array(mfi);
380 const Array4<Real > pi0_new_arr = pi0_new->array(mfi);
381 const Array4<Real > th0_new_arr = th0_new->array(mfi);
383 const Array4<Real >& z_t_arr = z_t_rk[level]->array(mfi);
385 const Array4<Real const>& dJ_old_arr = detJ_cc[level]->const_array(mfi);
386 const Array4<Real const>& dJ_new_arr = detJ_cc_new[level]->const_array(mfi);
387 const Array4<Real const>& dJ_src_arr = detJ_cc_src[level]->const_array(mfi);
389 Box gbx = mfi.growntilebox({1,1,1});
394 r0_tmp_arr(i,j,k) = r0_new_arr(i,j,k);
397 Box gbx2 = mfi.growntilebox({1,1,0});
400 Real zflux_r_lo = -z_t_arr(i,j,k ) *
myhalf * (r0_tmp_arr(i,j,k) + r0_tmp_arr(i,j,k-1));
401 Real zflux_r_hi = -z_t_arr(i,j,k+1) *
myhalf * (r0_tmp_arr(i,j,k) + r0_tmp_arr(i,j,k+1));
403 Real zflux_rt_lo = zflux_r_lo *
myhalf * (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));
404 Real zflux_rt_hi = zflux_r_hi *
myhalf * (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));
406 Real invdetJ =
one / dJ_src_arr(i,j,k);
408 Real src_r = - invdetJ * ( zflux_r_hi - zflux_r_lo ) *
dxInv[2];
409 Real src_rt = - invdetJ * ( zflux_rt_hi - zflux_rt_lo ) *
dxInv[2];
411 Real dt_b =
static_cast<Real>(dt_base);
412 Real rho0_new = dJ_old_arr(i,j,k) * r0_arr(i,j,k) + dt_b * dJ_src_arr(i,j,k) * src_r;
413 Real rt0_tmp_new = dJ_old_arr(i,j,k) * rt0_arr(i,j,k) + dt_b * dJ_src_arr(i,j,k) * src_rt;
415 r0_new_arr(i,j,k) = rho0_new / dJ_new_arr(i,j,k);
416 rt0_tmp_new /= dJ_new_arr(i,j,k);
420 th0_new_arr(i,j,k) = rt0_tmp_new / r0_new_arr(i,j,k);
423 r0_new->FillBoundary(fine_geom.periodicity());
424 p0_new->FillBoundary(fine_geom.periodicity());
425 th0_new->FillBoundary(fine_geom.periodicity());
428 #ifdef ERF_USE_NETCDF
430 if (solverChoice.use_real_bcs && (level == 0)) {
431 const Real bdy_factor = solverChoice.bdy_nudge_factor;
437 double total_time = start_time + old_stage_time;
438 Real l_rdOcp = solverChoice.rdOcp;
439 Real l_c_p = solverChoice.c_p;
441 start_bdy_time, final_bdy_time, bdy_time_interval,
442 bdy_factor, real_width, fine_geom,
444 bdy_data_xlo, bdy_data_xhi,
445 bdy_data_ylo, bdy_data_yhi,
446 m_r2d, l_c_p, l_rdOcp,
447 solverChoice.use_wrf_bdy_density,
448 solverChoice.bdy_rho_nudge_factor);
void add_thin_body_sources(MultiFab &xmom_src, MultiFab &ymom_src, MultiFab &zmom_src, std::unique_ptr< iMultiFab > &xflux_imask_lev, std::unique_ptr< iMultiFab > &yflux_imask_lev, std::unique_ptr< iMultiFab > &zflux_imask_lev, std::unique_ptr< MultiFab > &thin_xforce_lev, std::unique_ptr< MultiFab > &thin_yforce_lev, std::unique_ptr< MultiFab > &thin_zforce_lev)
Definition: ERF_AddThinBodySources.cpp:27
AMREX_INLINE void AddCanopyBiophysicsHeatSources(amrex::MultiFab &cell_source, const amrex::MultiFab &S_data, const amrex::MultiFab &xvel, const amrex::MultiFab &yvel, const amrex::MultiFab &zvel, const amrex::MultiFab *frontal_area, const amrex::MultiFab &base_state, const SolverChoice &solver_choice)
Definition: ERF_CanopyBiophysics.H:28
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getRhoThetagivenP(const amrex::Real p, const amrex::Real qv=amrex::Real(0))
Definition: ERF_EOS.H:172
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getExnergivenRTh(const amrex::Real rhotheta, const amrex::Real rdOcp, const amrex::Real qv=amrex::Real(0))
Definition: ERF_EOS.H:156
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getPgivenRTh(const amrex::Real rhotheta, const amrex::Real qv=amrex::Real(0))
Definition: ERF_EOS.H:81
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
pp get("wavelength", wavelength)
void realbdy_compute_interior_ghost_rhs(const double &time, const double &delta_t_d, const double &start_bdy_time, const double &final_bdy_time, const double &bdy_time_interval, const Real &nudge_factor, int width, const Geometry &geom, Vector< MultiFab > &S_rhs, 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, std::unique_ptr< ReadBndryPlanes > &m_r2d, const Real &c_p, const Real &rdOcp, const bool use_wrf_bdy_density, const Real &bdy_rho_nudge_factor)
Definition: ERF_InteriorGhostCells.cpp:161
void make_buoyancy(int lev, const Vector< MultiFab > &S_data, const MultiFab &S_prim, const MultiFab &qt, MultiFab &buoyancy, const Geometry geom, const SolverChoice &solverChoice, const MultiFab &base_state, const int n_qstate, const eb_ &ebfact, const int anelastic)
Definition: ERF_MakeBuoyancy.cpp:34
void make_gradp_pert(int level, const SolverChoice &solverChoice, const Geometry &geom, Vector< MultiFab > &S_data, const MultiFab &p0, const MultiFab &z_phys_nd, const MultiFab &z_phys_cc, Vector< std::unique_ptr< MultiFab >> &mapfac, const eb_ &ebfact, Vector< MultiFab > &gradp)
Definition: ERF_MakeGradP.cpp:28
void make_mom_sources(double time_d, double dt, const Vector< MultiFab > &S_data, const MultiFab *z_phys_nd, const MultiFab *z_phys_cc, Vector< Real > &stretched_dz_h, const MultiFab &xvel, const MultiFab &yvel, const MultiFab &wvel, MultiFab &xmom_src, MultiFab &ymom_src, MultiFab &zmom_src, const MultiFab &base_state, MultiFab *forest_drag, MultiFab *terrain_blank, MultiFab *terrain_blank_xface, MultiFab *terrain_blank_yface, MultiFab *terrain_blank_zface, MultiFab *cosPhi_mf, MultiFab *sinPhi_mf, const Geometry geom, const SolverChoice &solverChoice, Vector< std::unique_ptr< MultiFab >> &, const Real *dptr_u_geos, const Real *dptr_v_geos, const Real *dptr_wbar_sub, const Vector< Real * > d_rayleigh_ptrs_at_lev, const amrex::Real *d_sinesq_at_lev, const amrex::Real *d_sinesq_stag_at_lev, const Vector< Real * > d_sponge_ptrs_at_lev, const Vector< MultiFab > *forecast_state_at_lev, const InputSoundingData &input_sounding_data, const LargeScaleForcingData &lsf_data, std::unique_ptr< amrex::MultiFab > &lsf_tendencies, const eb_ &ebfact, bool is_slow_step)
Definition: ERF_MakeMomSources.cpp:38
void make_sources(int level, int, double dt, double time_d, const Vector< MultiFab > &S_data, const MultiFab &S_prim, MultiFab &source, const MultiFab &base_state, const MultiFab *z_phys_cc, const MultiFab &xvel, const MultiFab &yvel, const MultiFab &zvel, const MultiFab *qheating_rates, MultiFab *terrain_blank, const Geometry geom, const SolverChoice &solverChoice, Vector< std::unique_ptr< MultiFab >> &mapfac, const MultiFab *rhotheta_src, const MultiFab *rhoqt_src, const Real *dptr_wbar_sub, const Vector< Real * > d_rayleigh_ptrs_at_lev, const Real *d_sinesq_at_lev, TurbulentPerturbation &turbPert, const Table1D< Real > r_plane_avg, const Table1D< Real > t_plane_avg, bool is_slow_step)
Definition: ERF_MakeSources.cpp:36
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);})
constexpr amrex::Real one
Definition: ERF_NumericalConstants.H:37
constexpr amrex::Real zero
Definition: ERF_NumericalConstants.H:36
constexpr amrex::Real myhalf
Definition: ERF_NumericalConstants.H:41
amrex::Real Real
Definition: ERF_ShocInterface.H:19
void erf_slow_rhs_pre(int level, int finest_level, int nrk, double dt, Vector< MultiFab > &S_rhs, Vector< MultiFab > &S_old, Vector< MultiFab > &S_data, const MultiFab &S_prim, const MultiFab &qt, MultiFab &avg_xmom, MultiFab &avg_ymom, MultiFab &avg_zmom, const MultiFab &xvel, const MultiFab &yvel, const MultiFab &zvel, std::unique_ptr< MultiFab > &z_t_mf, const MultiFab &cc_src, const MultiFab &xmom_src, const MultiFab &ymom_src, const MultiFab &zmom_src, const MultiFab &buoyancy, const MultiFab *zmom_crse_rhs, Vector< std::unique_ptr< MultiFab >> &Tau_lev, Vector< std::unique_ptr< MultiFab >> &Tau_corr_lev, Vector< Vector< std::unique_ptr< MultiFab >>> &Tau_EB, MultiFab *SmnSmn, MultiFab *eddyDiffs, MultiFab *Hfx1, MultiFab *Hfx2, MultiFab *Hfx3, MultiFab *Q1fx1, MultiFab *Q1fx2, MultiFab *Q1fx3, MultiFab *Q2fx3, MultiFab *, MultiFab *Hfx3_EB, const Geometry geom, const SolverChoice &solverChoice, const amrex::Vector< std::unique_ptr< SurfaceLayer >> &SurfLayer, const Gpu::DeviceVector< BCRec > &domain_bcs_type_d, const Vector< BCRec > &domain_bcs_type_h, const MultiFab &z_phys_nd, const MultiFab &z_phys_cc, const MultiFab &ax, const MultiFab &ay, const MultiFab &az, const MultiFab &detJ, Gpu::DeviceVector< Real > &stretched_dz_d, Vector< MultiFab > &gradp, Vector< std::unique_ptr< MultiFab >> &mapfac, const eb_ &ebfact, ShocDriver *native_shoc_lev, YAFluxRegister *fr_as_crse, YAFluxRegister *fr_as_fine, const MultiFab *cloud_chamber_base_state, const erf_cloud_chamber::Config *cloud_chamber_config, CloudChamberBudget *cloud_budget)
Definition: ERF_SlowRhsPre.cpp:70
auto slow_rhs_fun_pre
Definition: ERF_TI_slow_rhs_pre.H:6
auto make_pi_stage
Definition: ERF_TI_utils.H:4
auto update_terrain_stage
Definition: ERF_TI_utils.H:125
void cons_to_prim(const MultiFab &cons_state, MultiFab &S_prim, int ng)
Definition: ERF_Utils.cpp:13
void make_qt(const MultiFab &cons_state, MultiFab &qt, int n_qstate_into_total)
Definition: ERF_Utils.cpp:108
@ num_comps
Definition: ERF_IndexDefines.H:84
@ pi0_comp
Definition: ERF_IndexDefines.H:81
@ p0_comp
Definition: ERF_IndexDefines.H:80
@ th0_comp
Definition: ERF_IndexDefines.H:82
@ r0_comp
Definition: ERF_IndexDefines.H:79
@ ymom
Definition: ERF_IndexDefines.H:237
@ cons
Definition: ERF_IndexDefines.H:235
@ zmom
Definition: ERF_IndexDefines.H:238
@ xmom
Definition: ERF_IndexDefines.H:236
@ None
Definition: ERF_LSM_Types.H:6
@ qt
Definition: ERF_Kessler.H:30
real(c_double), parameter p0
Definition: ERF_module_model_constants.F90:40
real(kind=kind_phys), parameter, private r0
Definition: ERF_module_mp_wdm6.F90:75
Definition: ERF_ObsNudging.cpp:22