7 Vector<MultiFab>& S_old,
8 Vector<MultiFab>& S_data,
9 Vector<MultiFab>& S_scratch,
10 const Real old_step_time,
11 const Real old_stage_time,
12 const Real new_stage_time,
26 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 Real slow_dt = new_stage_time - old_step_time;
34 int n_qstate = micro->Get_Qstate_Size();
39 YAFluxRegister* fr_as_crse =
nullptr;
40 YAFluxRegister* fr_as_fine =
nullptr;
41 if (solverChoice.coupling_type == CouplingType::TwoWay) {
42 if (level < finest_level) {
43 fr_as_crse = getAdvFluxReg(level+1);
47 fr_as_fine = getAdvFluxReg(level);
51 Real* dptr_u_geos = solverChoice.have_geo_wind_profile ? d_u_geos[level].data():
nullptr;
52 Real* dptr_v_geos = solverChoice.have_geo_wind_profile ? d_v_geos[level].data():
nullptr;
55 MultiFab* forest_drag =
nullptr;
56 if (solverChoice.do_forest_drag) { forest_drag = m_forest_drag[level]->get_drag_field(); }
58 MultiFab* terrain_blank =
nullptr;
59 if (solverChoice.terrain_type == TerrainType::ImmersedForcing) {
60 terrain_blank = terrain_blanking[level].get();
64 make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, cc_src, z_phys_cc[level],
65 #
if defined(ERF_USE_RRTMGP)
66 qheating_rates[level].get(),
68 terrain_blank, fine_geom, solverChoice,
69 mapfac_u[level], mapfac_v[level], mapfac_m[level],
70 dptr_rhotheta_src, dptr_rhoqt_src,
71 dptr_wbar_sub, d_rayleigh_ptrs_at_lev,
72 input_sounding_data, turbPert);
75 if ( solverChoice.terrain_type == TerrainType::MovingFittedMesh )
84 if (verbose) Print() <<
"Re-making old geometry at old time : " << old_step_time << std::endl;
89 Box terrain_bx(surroundingNodes(Geom(0).Domain())); terrain_bx.grow(z_phys_nd[level]->nGrow());
90 FArrayBox terrain_fab_old(makeSlab(terrain_bx,2,0),1);
91 FArrayBox terrain_fab_src(makeSlab(terrain_bx,2,0),1);
92 FArrayBox terrain_fab_new(makeSlab(terrain_bx,2,0),1);
94 prob->init_terrain_surface(fine_geom,terrain_fab_old,old_step_time);
95 prob->init_terrain_surface(fine_geom,terrain_fab_src,old_stage_time);
96 prob->init_terrain_surface(fine_geom,terrain_fab_new,new_stage_time);
99 for (MFIter mfi(*z_phys_nd[level],
false); mfi.isValid(); ++mfi)
101 Box isect = terrain_fab_old.box() & (*z_phys_nd[level])[mfi].box();
102 ( *z_phys_nd[level])[mfi].
template copy<RunOn::Device>(terrain_fab_old,isect,0,isect,0,1);
103 (*z_phys_nd_src[level])[mfi].
template copy<RunOn::Device>(terrain_fab_src,isect,0,isect,0,1);
104 (*z_phys_nd_new[level])[mfi].
template copy<RunOn::Device>(terrain_fab_new,isect,0,isect,0,1);
108 make_J (fine_geom,*z_phys_nd[level], *detJ_cc[level]);
109 make_areas (fine_geom,*z_phys_nd[level], *ax[level], *ay[level], *az[level]);
111 if (verbose) Print() <<
"Making src geometry at old_stage_time: "
112 << std::setprecision(timeprecision) << old_stage_time << std::endl;
114 make_J (fine_geom,*z_phys_nd_src[level], *detJ_cc_src[level]);
115 make_areas (fine_geom,*z_phys_nd_src[level], *ax_src[level], *ay_src[level], *az_src[level]);
117 if (verbose) Print() <<
"Making new geometry at new_stage_time: "
118 << std::setprecision(timeprecision) << new_stage_time << std::endl;
120 make_J (fine_geom,*z_phys_nd_new[level], *detJ_cc_new[level]);
121 make_areas (fine_geom,*z_phys_nd_new[level], *ax_new[level], *ay_new[level], *az_new[level]);
123 Real inv_dt = 1./slow_dt;
126 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
128 for (MFIter mfi(*z_t_rk[level],TilingIfNotGPU()); mfi.isValid(); ++mfi)
130 Box gbx = mfi.growntilebox(IntVect(1,1,0));
132 const Array4<Real >& z_t_arr = z_t_rk[level]->array(mfi);
133 const Array4<Real const>& z_nd_new_arr = z_phys_nd_new[level]->const_array(mfi);
134 const Array4<Real const>& z_nd_old_arr = z_phys_nd[level]->const_array(mfi);
137 amrex::ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
140 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)
141 +z_nd_new_arr(i ,j+1,k) - z_nd_old_arr( i,j+1,k)
142 +z_nd_new_arr(i+1,j ,k) - z_nd_old_arr(i+1,j ,k)
143 +z_nd_new_arr(i ,j ,k) - z_nd_old_arr(i ,j ,k));
153 MultiFab* r0_new = &r_hse_new;
154 MultiFab* p0_new = &p_hse_new;
155 MultiFab* pi0_new = &pi_hse_new;
156 MultiFab* th0_new = &th_hse_new;
159 z_phys_nd[level], z_phys_cc[level],
160 xvel_new, yvel_new, zvel_new,
161 xmom_src, ymom_src, zmom_src,
162 base_state_new[level], forest_drag, terrain_blank,
163 cosPhi_m[level].get(), sinPhi_m[level].get(), fine_geom, solverChoice,
164 mapfac_m[level], mapfac_u[level], mapfac_v[level],
165 dptr_u_geos, dptr_v_geos, dptr_wbar_sub,
166 d_rayleigh_ptrs_at_lev, d_sponge_ptrs_at_lev,
167 input_sounding_data, n_qstate);
169 erf_slow_rhs_pre(level, finest_level, nrk, slow_dt, S_rhs, S_old, S_data, S_prim, S_scratch,
170 xvel_new, yvel_new, zvel_new,
171 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src,
172 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
173 Tau11_lev[level].get(), Tau22_lev[level].get(), Tau33_lev[level].get(), Tau12_lev[level].get(),
174 Tau13_lev[level].get(), Tau21_lev[level].get(), Tau23_lev[level].get(), Tau31_lev[level].get(),
175 Tau32_lev[level].get(), SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
176 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
177 z_phys_nd_src[level], ax_src[level], ay_src[level], az_src[level], detJ_cc_src[level],
178 stretched_dz_d[level], p0_new, pp_inc[level],
179 mapfac_m[level], mapfac_u[level], mapfac_v[level],
181 fr_as_crse, fr_as_fine);
184 xflux_imask[level], yflux_imask[level], zflux_imask[level],
185 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
190 MultiFab rt0(p0->boxArray(),p0->DistributionMap(),1,1);
191 MultiFab rt0_new(p0->boxArray(),p0->DistributionMap(),1,1);
192 MultiFab r0_temp(p0->boxArray(),p0->DistributionMap(),1,1);
199 Real dt_base = (new_stage_time - old_step_time);
201 const GpuArray<Real, AMREX_SPACEDIM> dxInv = fine_geom.InvCellSizeArray();
203 const Real l_rdOcp = solverChoice.rdOcp;
206 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
208 for ( MFIter mfi(*p0,TilingIfNotGPU()); mfi.isValid(); ++mfi)
210 const Array4<Real > rt0_arr = rt0.array(mfi);
211 const Array4<Real > rt0_tmp_arr = rt0_new.array(mfi);
213 const Array4<Real const> r0_arr = r0->const_array(mfi);
214 const Array4<Real > r0_new_arr = r0_new->array(mfi);
215 const Array4<Real > r0_tmp_arr = r0_temp.array(mfi);
217 const Array4<Real const> p0_arr = p0->const_array(mfi);
218 const Array4<Real > p0_new_arr = p0_new->array(mfi);
219 const Array4<Real > pi0_new_arr = pi0_new->array(mfi);
220 const Array4<Real > th0_new_arr = th0_new->array(mfi);
222 const Array4<Real >& z_t_arr = z_t_rk[level]->array(mfi);
224 const Array4<Real const>& dJ_old_arr = detJ_cc[level]->const_array(mfi);
225 const Array4<Real const>& dJ_new_arr = detJ_cc_new[level]->const_array(mfi);
226 const Array4<Real const>& dJ_src_arr = detJ_cc_src[level]->const_array(mfi);
228 Box gbx = mfi.growntilebox({1,1,1});
229 amrex::ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
233 r0_tmp_arr(i,j,k) = r0_new_arr(i,j,k);
236 Box gbx2 = mfi.growntilebox({1,1,0});
237 amrex::ParallelFor(gbx2, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
239 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));
240 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));
242 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));
243 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));
245 Real invdetJ = 1.0 / dJ_src_arr(i,j,k);
247 Real src_r = - invdetJ * ( zflux_r_hi - zflux_r_lo ) * dxInv[2];
248 Real src_rt = - invdetJ * ( zflux_rt_hi - zflux_rt_lo ) * dxInv[2];
250 Real rho0_new = dJ_old_arr(i,j,k) * r0_arr(i,j,k) + dt_base * dJ_src_arr(i,j,k) * src_r;
251 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;
253 r0_new_arr(i,j,k) = rho0_new / dJ_new_arr(i,j,k);
254 rt0_tmp_new /= dJ_new_arr(i,j,k);
258 th0_new_arr(i,j,k) = rt0_tmp_new / r0_new_arr(i,j,k);
261 r0_new->FillBoundary(fine_geom.periodicity());
262 p0_new->FillBoundary(fine_geom.periodicity());
263 th0_new->FillBoundary(fine_geom.periodicity());
268 z_phys_nd[level], z_phys_cc[level],
269 xvel_new, yvel_new, zvel_new,
270 xmom_src, ymom_src, zmom_src,
271 base_state[level], forest_drag, terrain_blank,
272 cosPhi_m[level].get(), sinPhi_m[level].get(), fine_geom, solverChoice,
273 mapfac_m[level], mapfac_u[level], mapfac_v[level],
274 dptr_u_geos, dptr_v_geos, dptr_wbar_sub,
275 d_rayleigh_ptrs_at_lev, d_sponge_ptrs_at_lev,
276 input_sounding_data, n_qstate);
278 erf_slow_rhs_pre(level, finest_level, nrk, slow_dt, S_rhs, S_old, S_data, S_prim, S_scratch,
279 xvel_new, yvel_new, zvel_new,
280 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src,
281 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
282 Tau11_lev[level].get(), Tau22_lev[level].get(), Tau33_lev[level].get(), Tau12_lev[level].get(),
283 Tau13_lev[level].get(), Tau21_lev[level].get(), Tau23_lev[level].get(), Tau31_lev[level].get(),
284 Tau32_lev[level].get(), SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3,Q2fx3, Diss,
285 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
286 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level],
287 stretched_dz_d[level], p0, pp_inc[level],
288 mapfac_m[level], mapfac_u[level], mapfac_v[level],
290 fr_as_crse, fr_as_fine);
293 xflux_imask[level], yflux_imask[level], zflux_imask[level],
294 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
297 #ifdef ERF_USE_NETCDF
299 if (solverChoice.use_real_bcs && (level == 0)) {
302 real_width, real_set_width, fine_geom,
303 S_rhs, S_old, S_data,
304 bdy_data_xlo, bdy_data_xhi,
305 bdy_data_ylo, bdy_data_yhi);
313 if (level > 0 && cf_width > 0) {
315 cf_width, cf_set_width, fine_geom,
316 &FPr_c[level-1], &FPr_u[level-1], &FPr_v[level-1], &FPr_w[level-1],
317 domain_bcs_type, S_rhs, S_data);
326 Vector<MultiFab>& S_old,
327 Vector<MultiFab>& S_new,
328 Vector<MultiFab>& S_data,
329 Vector<MultiFab>& S_scratch,
330 const Real old_step_time,
331 const Real old_stage_time,
332 const Real new_stage_time,
335 amrex::ignore_unused(nrk);
340 Real slow_dt = new_stage_time - old_step_time;
342 if (verbose) amrex::Print() <<
"Time integration of scalars at level " << level
343 << std::setprecision(timeprecision)
344 <<
" from " << old_step_time <<
" to " << new_stage_time
345 <<
" with dt = " << slow_dt
346 <<
" using RHS created at " << old_stage_time << std::endl;
348 int n_qstate = micro->Get_Qstate_Size();
350 #if defined(ERF_USE_NETCDF)
351 bool moist_set_rhs =
false;
352 if ( solverChoice.use_real_bcs &&
354 (real_set_width > 0) &&
355 (solverChoice.moisture_type != MoistureType::None) )
357 moist_set_rhs =
true;
364 YAFluxRegister* fr_as_crse =
nullptr;
365 YAFluxRegister* fr_as_fine =
nullptr;
366 if (solverChoice.coupling_type == CouplingType::TwoWay)
368 if (level < finest_level) {
369 fr_as_crse = getAdvFluxReg(level+1);
372 fr_as_fine = getAdvFluxReg(level);
377 if ( solverChoice.terrain_type == TerrainType::MovingFittedMesh ) {
379 S_rhs, S_old, S_new, S_data, S_prim, S_scratch,
380 xvel_new, yvel_new, zvel_new, cc_src, SmnSmn, eddyDiffs,
381 Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
382 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
383 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], detJ_cc_new[level],
384 mapfac_m[level], mapfac_u[level], mapfac_v[level],
386 #
if defined(ERF_USE_NETCDF)
387 moist_set_rhs, bdy_time_interval, start_bdy_time, new_stage_time,
388 real_width, real_set_width,
389 bdy_data_xlo, bdy_data_xhi, bdy_data_ylo, bdy_data_yhi,
391 fr_as_crse, fr_as_fine);
394 S_rhs, S_old, S_new, S_data, S_prim, S_scratch,
395 xvel_new, yvel_new, zvel_new, cc_src, SmnSmn, eddyDiffs,
396 Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
397 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
398 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level], detJ_cc[level],
399 mapfac_m[level], mapfac_u[level], mapfac_v[level],
401 #
if defined(ERF_USE_NETCDF)
402 moist_set_rhs, bdy_time_interval, start_bdy_time, new_stage_time,
403 real_width, real_set_width,
404 bdy_data_xlo, bdy_data_xhi, bdy_data_ylo, bdy_data_yhi,
406 fr_as_crse, fr_as_fine);
412 fast_only=
false, vel_and_mom_synced=
false);
417 Vector<MultiFab>& S_old,
418 Vector<MultiFab>& S_data,
419 Vector<MultiFab>& S_scratch,
420 const Real old_step_time,
421 const Real old_stage_time,
422 const Real new_stage_time,
425 BL_PROFILE(
"slow_rhs_fun_inc");
426 if (verbose) Print() << std::setprecision(timeprecision)
427 <<
"Making slow rhs at time " << old_stage_time
428 <<
" for fast variables advancing from " << old_step_time
429 <<
" to " << new_stage_time << std::endl;
439 Real slow_dt = new_stage_time - old_step_time;
444 YAFluxRegister* fr_as_crse =
nullptr;
445 YAFluxRegister* fr_as_fine =
nullptr;
446 if (solverChoice.coupling_type == CouplingType::TwoWay) {
447 if (level < finest_level) {
448 fr_as_crse = getAdvFluxReg(level+1);
452 fr_as_fine = getAdvFluxReg(level);
456 Real* dptr_u_geos = solverChoice.have_geo_wind_profile ? d_u_geos[level].data():
nullptr;
457 Real* dptr_v_geos = solverChoice.have_geo_wind_profile ? d_v_geos[level].data():
nullptr;
460 MultiFab* forest_drag =
nullptr;
461 if (solverChoice.do_forest_drag) { forest_drag = m_forest_drag[level]->get_drag_field(); }
463 MultiFab* terrain_blank =
nullptr;
464 if (solverChoice.terrain_type == TerrainType::ImmersedForcing) {
465 terrain_blank = terrain_blanking[level].get();
468 make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, cc_src, z_phys_cc[level],
469 #
if defined(ERF_USE_RRTMGP)
470 qheating_rates[level].get(),
472 terrain_blank, fine_geom, solverChoice,
473 mapfac_u[level], mapfac_v[level], mapfac_m[level],
474 dptr_rhotheta_src, dptr_rhoqt_src,
475 dptr_wbar_sub, d_rayleigh_ptrs_at_lev,
476 input_sounding_data, turbPert);
478 int n_qstate = micro->Get_Qstate_Size();
480 z_phys_nd[level], z_phys_cc[level],
481 xvel_new, yvel_new, zvel_new,
482 xmom_src, ymom_src, zmom_src,
483 base_state[level], forest_drag, terrain_blank,
484 cosPhi_m[level].get(), sinPhi_m[level].get(), fine_geom, solverChoice,
485 mapfac_m[level], mapfac_u[level], mapfac_v[level],
486 dptr_u_geos, dptr_v_geos, dptr_wbar_sub,
487 d_rayleigh_ptrs_at_lev, d_sponge_ptrs_at_lev,
488 input_sounding_data, n_qstate);
491 S_rhs, S_old, S_data, S_prim, S_scratch,
492 xvel_new, yvel_new, zvel_new,
493 z_t_rk[level], cc_src, xmom_src, ymom_src, zmom_src,
494 (level > 0) ? &zmom_crse_rhs[level] :
nullptr,
495 Tau11_lev[level].get(), Tau22_lev[level].get(), Tau33_lev[level].get(), Tau12_lev[level].get(),
496 Tau13_lev[level].get(), Tau21_lev[level].get(), Tau23_lev[level].get(), Tau31_lev[level].get(),
497 Tau32_lev[level].get(), SmnSmn, eddyDiffs, Hfx1, Hfx2, Hfx3, Q1fx1, Q1fx2, Q1fx3, Q2fx3, Diss,
498 fine_geom, solverChoice, m_most, domain_bcs_type_d, domain_bcs_type,
499 z_phys_nd[level], ax[level], ay[level], az[level], detJ_cc[level],
500 stretched_dz_d[level], p0, pp_inc[level],
501 mapfac_m[level], mapfac_u[level], mapfac_v[level],
503 fr_as_crse, fr_as_fine);
506 xflux_imask[level], yflux_imask[level], zflux_imask[level],
507 thin_xforce[level], thin_yforce[level], thin_zforce[level]);
509 #ifdef ERF_USE_NETCDF
511 if (solverChoice.use_real_bcs && (level == 0)) {
514 real_width, real_set_width, fine_geom,
515 S_rhs, S_old, S_data,
516 bdy_data_xlo, bdy_data_xhi,
517 bdy_data_ylo, bdy_data_yhi);
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:29
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
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:175
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:599
void make_mom_sources(int level, int, Real, Real time, Vector< MultiFab > &S_data, const MultiFab &S_prim, std::unique_ptr< MultiFab > &z_phys_nd, std::unique_ptr< MultiFab > &z_phys_cc, 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 *cosPhi_mf, MultiFab *sinPhi_mf, const Geometry geom, const SolverChoice &solverChoice, std::unique_ptr< MultiFab > &, std::unique_ptr< MultiFab > &, 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 Vector< Real * > d_sponge_ptrs_at_lev, InputSoundingData &input_sounding_data, int n_qstate)
Definition: ERF_MakeMomSources.cpp:40
void make_sources(int level, int, Real dt, Real time, Vector< MultiFab > &S_data, const MultiFab &S_prim, MultiFab &source, std::unique_ptr< MultiFab > &z_phys_cc, MultiFab *terrain_blank, const Geometry geom, const SolverChoice &solverChoice, std::unique_ptr< MultiFab > &, std::unique_ptr< MultiFab > &, std::unique_ptr< MultiFab > &mapfac_m, const Real *dptr_rhotheta_src, const Real *dptr_rhoqt_src, const Real *dptr_wbar_sub, const Vector< Real * > d_rayleigh_ptrs_at_lev, InputSoundingData &input_sounding_data, TurbulentPerturbation &turbPert)
Definition: ERF_MakeSources.cpp:32
void erf_slow_rhs_post(int level, int finest_level, int nrk, Real dt, int n_qstate, Vector< MultiFab > &S_rhs, Vector< MultiFab > &S_old, Vector< MultiFab > &S_new, Vector< MultiFab > &S_data, const MultiFab &S_prim, Vector< MultiFab > &S_scratch, const MultiFab &xvel, const MultiFab &yvel, const MultiFab &, const MultiFab &source, const MultiFab *SmnSmn, const MultiFab *eddyDiffs, MultiFab *Hfx1, MultiFab *Hfx2, MultiFab *Hfx3, MultiFab *Q1fx1, MultiFab *Q1fx2, MultiFab *Q1fx3, MultiFab *Q2fx3, MultiFab *Diss, const Geometry geom, const SolverChoice &solverChoice, std::unique_ptr< ABLMost > &most, const Gpu::DeviceVector< BCRec > &domain_bcs_type_d, const Vector< BCRec > &domain_bcs_type_h, std::unique_ptr< MultiFab > &z_phys_nd, std::unique_ptr< MultiFab > &ax, std::unique_ptr< MultiFab > &ay, std::unique_ptr< MultiFab > &az, std::unique_ptr< MultiFab > &detJ, std::unique_ptr< MultiFab > &detJ_new, std::unique_ptr< MultiFab > &mapfac_m, std::unique_ptr< MultiFab > &mapfac_u, std::unique_ptr< MultiFab > &mapfac_v, amrex::EBFArrayBoxFactory const &ebfact, YAFluxRegister *fr_as_crse, YAFluxRegister *fr_as_fine)
Definition: ERF_SlowRhsPost.cpp:47
void erf_slow_rhs_pre(int level, int finest_level, int nrk, Real dt, Vector< MultiFab > &S_rhs, Vector< MultiFab > &S_old, Vector< MultiFab > &S_data, const MultiFab &S_prim, Vector< MultiFab > &S_scratch, 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 *zmom_crse_rhs, MultiFab *Tau11, MultiFab *Tau22, MultiFab *Tau33, MultiFab *Tau12, MultiFab *Tau13, MultiFab *Tau21, MultiFab *Tau23, MultiFab *Tau31, MultiFab *Tau32, MultiFab *SmnSmn, MultiFab *eddyDiffs, MultiFab *Hfx1, MultiFab *Hfx2, MultiFab *Hfx3, MultiFab *Q1fx1, MultiFab *Q1fx2, MultiFab *Q1fx3, MultiFab *Q2fx3, MultiFab *Diss, const Geometry geom, const SolverChoice &solverChoice, std::unique_ptr< ABLMost > &most, const Gpu::DeviceVector< BCRec > &domain_bcs_type_d, const Vector< BCRec > &domain_bcs_type_h, std::unique_ptr< MultiFab > &z_phys_nd, std::unique_ptr< MultiFab > &ax, std::unique_ptr< MultiFab > &ay, std::unique_ptr< MultiFab > &az, std::unique_ptr< MultiFab > &detJ, Gpu::DeviceVector< Real > &stretched_dz_d, const MultiFab *p0, const MultiFab &pp_inc, std::unique_ptr< MultiFab > &mapfac_m, std::unique_ptr< MultiFab > &mapfac_u, std::unique_ptr< MultiFab > &mapfac_v, EBFArrayBoxFactory const &ebfact, YAFluxRegister *fr_as_crse, YAFluxRegister *fr_as_fine)
Definition: ERF_SlowRhsPre.cpp:68
auto slow_rhs_fun_inc
Definition: ERF_TI_slow_rhs_fun.H:416
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:325
auto apply_bcs
Definition: ERF_TI_utils.H:50
auto cons_to_prim
Definition: ERF_TI_utils.H:4
void make_areas(const Geometry &geom, MultiFab &z_phys_nd, MultiFab &ax, MultiFab &ay, MultiFab &az)
Definition: ERF_TerrainMetrics.cpp:558
void make_terrain_fitted_coords(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:46
void make_J(const Geometry &geom, MultiFab &z_phys_nd, MultiFab &detJ_cc)
Definition: ERF_TerrainMetrics.cpp:520
@ pi0_comp
Definition: ERF_IndexDefines.H:65
@ p0_comp
Definition: ERF_IndexDefines.H:64
@ th0_comp
Definition: ERF_IndexDefines.H:66
@ r0_comp
Definition: ERF_IndexDefines.H:63
@ cons
Definition: ERF_IndexDefines.H:150
@ xmom
Definition: ERF_IndexDefines.H:151