234 const int ncomp_mf = varnames.size();
238 if (ncomp_mf == 0)
return;
249 for (
int lev = 1; lev <= finest_level; ++lev) {
250 bool fillset =
false;
260 for (
int lev = 0; lev <= finest_level; ++lev) {
261 for (
int mvar(0); mvar<
qmoist[lev].size(); ++mvar) {
262 qmoist[lev][mvar] =
micro->Get_Qmoist_Ptr(lev,mvar);
267 Vector<MultiFab> mf(finest_level+1);
268 for (
int lev = 0; lev <= finest_level; ++lev) {
269 mf[lev].define(grids[lev], dmap[lev], ncomp_mf, 0);
273 Vector<MultiFab> mf_nd(finest_level+1);
275 for (
int lev = 0; lev <= finest_level; ++lev) {
276 BoxArray nodal_grids(grids[lev]); nodal_grids.surroundingNodes();
277 mf_nd[lev].define(nodal_grids, dmap[lev], 3, 0);
278 mf_nd[lev].setVal(0.);
283 Vector<MultiFab> mf_u(finest_level+1);
284 Vector<MultiFab> mf_v(finest_level+1);
285 Vector<MultiFab> mf_w(finest_level+1);
287 for (
int lev = 0; lev <= finest_level; ++lev) {
288 BoxArray grid_stag_u(grids[lev]); grid_stag_u.surroundingNodes(0);
289 BoxArray grid_stag_v(grids[lev]); grid_stag_v.surroundingNodes(1);
290 BoxArray grid_stag_w(grids[lev]); grid_stag_w.surroundingNodes(2);
291 mf_u[lev].define(grid_stag_u, dmap[lev], 1, 0);
292 mf_v[lev].define(grid_stag_v, dmap[lev], 1, 0);
293 mf_w[lev].define(grid_stag_w, dmap[lev], 1, 0);
301 Vector<MultiFab> mf_cc_vel(finest_level+1);
311 for (
int lev = 0; lev <= finest_level; ++lev) {
312 mf_cc_vel[lev].define(grids[lev], dmap[lev], AMREX_SPACEDIM, IntVect(1,1,1));
313 mf_cc_vel[lev].setVal(-1.e20);
314 average_face_to_cellcenter(mf_cc_vel[lev],0,
326 amrex::Interpolater* mapper = &cell_cons_interp;
327 for (
int lev = 1; lev <= finest_level; ++lev)
329 Vector<MultiFab*> fmf = {&(mf_cc_vel[lev]), &(mf_cc_vel[lev])};
330 Vector<Real> ftime = {
t_new[lev],
t_new[lev]};
331 Vector<MultiFab*> cmf = {&mf_cc_vel[lev-1], &mf_cc_vel[lev-1]};
332 Vector<Real> ctime = {
t_new[lev],
t_new[lev]};
337 FillPatchTwoLevels(mf_cc_vel[lev], mf_cc_vel[lev].nGrowVect(), IntVect(0,0,0),
338 t_new[lev], cmf, ctime, fmf, ftime,
339 0, 0, mf_cc_vel[lev].nComp(), geom[lev-1], geom[lev],
347 for (
int lev = 0; lev <= finest_level; ++lev)
361 MultiFab::Copy(mf[lev], mf_cc_vel[lev], 0, mf_comp, 1, 0);
365 MultiFab::Copy(mf[lev], mf_cc_vel[lev], 1, mf_comp, 1, 0);
369 MultiFab::Copy(mf[lev], mf_cc_vel[lev], 2, mf_comp, 1, 0);
375 auto calculate_derived = [&](
const std::string& der_name,
380 MultiFab dmf(mf[lev], make_alias, mf_comp, 1);
382 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
384 for (MFIter mfi(dmf, TilingIfNotGPU()); mfi.isValid(); ++mfi)
386 const Box& bx = mfi.tilebox();
387 auto& dfab = dmf[mfi];
388 auto& sfab = src_mf[mfi];
389 der_function(bx, dfab, 0, 1, sfab, Geom(lev),
t_new[0],
nullptr, lev);
415 MultiFab dmf(mf[lev], make_alias, mf_comp, 1);
416 Array<MultiFab const*, AMREX_SPACEDIM> u;
429 MultiFab::Copy(mf[lev],p_hse,0,mf_comp,1,0);
434 MultiFab::Copy(mf[lev],r_hse,0,mf_comp,1,0);
439 MultiFab::Copy(mf[lev],th_hse,0,mf_comp,1,0);
446 MultiFab::Copy(mf[lev], p_hse, 0, mf_comp, 1, 0);
449 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
452 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
454 const Box& bx = mfi.tilebox();
455 const Array4<Real >& derdat = mf[lev].array(mfi);
459 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
463 derdat(i, j, k, mf_comp) =
getPgivenRTh(rhotheta,qv_for_p);
473 MultiFab::Copy(mf[lev],
pp_inc[lev], 0, mf_comp, 1, 0);
476 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
479 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
481 const Box& bx = mfi.tilebox();
482 const Array4<Real>& derdat = mf[lev].array(mfi);
483 const Array4<Real const>& p0_arr = p_hse.const_array(mfi);
487 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
491 derdat(i, j, k, mf_comp) =
getPgivenRTh(rhotheta,qv_for_p) - p0_arr(i,j,k);
501 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
503 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
505 const Box& bx = mfi.tilebox();
506 const Array4<Real>& derdat = mf[lev].array(mfi);
508 const Array4<Real const>& r0_arr = r_hse.const_array(mfi);
509 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
510 derdat(i, j, k, mf_comp) = S_arr(i,j,k,
Rho_comp) - r0_arr(i,j,k);
519 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
521 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
523 const Box& bx = mfi.tilebox();
524 const Array4<Real>& derdat = mf[lev].array(mfi);
527 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
535 derdat(i, j, k, mf_comp) =
T*std::pow((pressure - pv)/
p_0, -
R_d/fac)*std::exp(
L_v*
qv/(fac*
T)) ;
544 MultiFab::Copy(mf[lev],*terrain_blank,0,mf_comp,1,0);
548 #ifdef ERF_USE_WINDFARM
553 MultiFab::Copy(mf[lev],Nturb[lev],0,mf_comp,1,0);
561 MultiFab::Copy(mf[lev],SMark[lev],0,mf_comp,1,0);
568 MultiFab::Copy(mf[lev],SMark[lev],1,mf_comp,1,0);
574 int klo = geom[lev].Domain().smallEnd(2);
575 int khi = geom[lev].Domain().bigEnd(2);
579 auto dxInv = geom[lev].InvCellSizeArray();
582 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
584 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
587 const Box& gbx = mfi.growntilebox(1);
588 const Array4<Real > & p_arr =
pres.array(mfi);
589 const Array4<Real const> & hse_arr =
base_state[lev].const_array(mfi);
592 ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
593 p_arr(i,j,k) = hse_arr(i,j,k,1);
596 ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
601 pres.FillBoundary(geom[lev].periodicity());
604 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
606 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
609 const Box& bx = mfi.tilebox();
610 const Array4<Real>& derdat = mf[lev].array(mfi);
611 const Array4<Real> & p_arr =
pres.array(mfi);
614 const Array4<Real const>& z_nd =
z_phys_nd[lev]->const_array(mfi);
615 const Array4<Real const>& z_cc =
z_phys_cc[lev]->const_array(mfi);
616 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
619 Real gpx_lo = dxInv[0] * (p_arr(i,j,k) - p_arr(i-1,j,k));
624 Real dz_phys_hi, dz_phys_lo;
627 dz_phys_hi = z_cc(i ,j,k+1) - z_cc(i ,j,k );
628 dz_phys_lo = z_cc(i-1,j,k+1) - z_cc(i-1,j,k );
629 gpz_hi = (p_arr(i ,j,k+1) - p_arr(i ,j,k )) / dz_phys_hi;
630 gpz_lo = (p_arr(i-1,j,k+1) - p_arr(i-1,j,k )) / dz_phys_lo;
632 dz_phys_hi = z_cc(i ,j,k ) - z_cc(i ,j,k-1);
633 dz_phys_lo = z_cc(i-1,j,k ) - z_cc(i-1,j,k-1);
634 gpz_hi = (p_arr(i ,j,k ) - p_arr(i ,j,k-1)) / dz_phys_hi;
635 gpz_lo = (p_arr(i-1,j,k ) - p_arr(i-1,j,k-1)) / dz_phys_lo;
637 dz_phys_hi = z_cc(i ,j,k+1) - z_cc(i ,j,k-1);
638 dz_phys_lo = z_cc(i-1,j,k+1) - z_cc(i-1,j,k-1);
639 gpz_hi = (p_arr(i ,j,k+1) - p_arr(i ,j,k-1)) / dz_phys_hi;
640 gpz_lo = (p_arr(i-1,j,k+1) - p_arr(i-1,j,k-1)) / dz_phys_lo;
642 Real gpx_metric = 0.5 * ( gpz_hi * met_h_xi_hi + gpz_lo * met_h_xi_lo );
643 gpx_lo -= gpx_metric;
646 Real gpx_hi = dxInv[0] * (p_arr(i+1,j,k) - p_arr(i,j,k));
652 dz_phys_hi = z_cc(i+1,j,k+1) - z_cc(i+1,j,k );
653 dz_phys_lo = z_cc(i ,j,k+1) - z_cc(i ,j,k );
654 gpz_hi = (p_arr(i+1,j,k+1) - p_arr(i+1,j,k )) / dz_phys_hi;
655 gpz_lo = (p_arr(i ,j,k+1) - p_arr(i ,j,k )) / dz_phys_lo;
657 dz_phys_hi = z_cc(i+1,j,k ) - z_cc(i+1,j,k-1);
658 dz_phys_lo = z_cc(i ,j,k ) - z_cc(i ,j,k-1);
659 gpz_hi = (p_arr(i+1,j,k ) - p_arr(i+1,j,k-1)) / dz_phys_hi;
660 gpz_lo = (p_arr(i ,j,k ) - p_arr(i ,j,k-1)) / dz_phys_lo;
662 dz_phys_hi = z_cc(i+1,j,k+1) - z_cc(i+1,j,k-1);
663 dz_phys_lo = z_cc(i ,j,k+1) - z_cc(i ,j,k-1);
664 gpz_hi = (p_arr(i+1,j,k+1) - p_arr(i+1,j,k-1)) / dz_phys_hi;
665 gpz_lo = (p_arr(i ,j,k+1) - p_arr(i ,j,k-1)) / dz_phys_lo;
667 gpx_metric = 0.5 * ( gpz_hi * met_h_xi_hi + gpz_lo * met_h_xi_lo );
668 gpx_hi -= gpx_metric;
671 derdat(i ,j ,k, mf_comp) = 0.5 * (gpx_hi + gpx_lo);
674 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
675 derdat(i ,j ,k, mf_comp) = 0.5 * (p_arr(i+1,j,k) - p_arr(i-1,j,k)) * dxInv[0];
684 auto dxInv = geom[lev].InvCellSizeArray();
688 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
690 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
693 const Box& gbx = mfi.growntilebox(1);
694 const Array4<Real > & p_arr =
pres.array(mfi);
695 const Array4<Real const> & hse_arr =
base_state[lev].const_array(mfi);
698 ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
699 p_arr(i,j,k) = hse_arr(i,j,k,1);
702 ParallelFor(gbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
707 pres.FillBoundary(geom[lev].periodicity());
710 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
712 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
715 const Box& bx = mfi.tilebox();
716 const Array4<Real>& derdat = mf[lev].array(mfi);
717 const Array4<Real> & p_arr =
pres.array(mfi);
720 const Array4<Real const>& z_nd =
z_phys_nd[lev]->const_array(mfi);
721 const Array4<Real const>& z_cc =
z_phys_cc[lev]->const_array(mfi);
722 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
725 Real gpy_lo = dxInv[1] * (p_arr(i,j,k) - p_arr(i,j-1,k));
730 Real dz_phys_hi, dz_phys_lo;
733 dz_phys_hi = z_cc(i,j ,k+1) - z_cc(i,j ,k );
734 dz_phys_lo = z_cc(i,j-1,k+1) - z_cc(i,j-1,k );
735 gpz_hi = (p_arr(i,j ,k+1) - p_arr(i,j ,k )) / dz_phys_hi;
736 gpz_lo = (p_arr(i,j-1,k+1) - p_arr(i,j-1,k )) / dz_phys_lo;
738 dz_phys_hi = z_cc(i,j ,k ) - z_cc(i,j ,k-1);
739 dz_phys_lo = z_cc(i,j-1,k ) - z_cc(i,j-1,k-1);
740 gpz_hi = (p_arr(i,j ,k ) - p_arr(i,j ,k-1)) / dz_phys_hi;
741 gpz_lo = (p_arr(i,j-1,k ) - p_arr(i,j-1,k-1)) / dz_phys_lo;
743 dz_phys_hi = z_cc(i,j ,k+1) - z_cc(i,j ,k-1);
744 dz_phys_lo = z_cc(i,j-1,k+1) - z_cc(i,j-1,k-1);
745 gpz_hi = (p_arr(i,j ,k+1) - p_arr(i,j ,k-1)) / dz_phys_hi;
746 gpz_lo = (p_arr(i,j-1,k+1) - p_arr(i,j-1,k-1)) / dz_phys_lo;
748 Real gpy_metric = 0.5 * ( gpz_hi * met_h_eta_hi + gpz_lo * met_h_eta_lo );
749 gpy_lo -= gpy_metric;
752 Real gpy_hi = dxInv[1] * (p_arr(i,j+1,k) - p_arr(i,j,k));
758 dz_phys_hi = z_cc(i,j+1,k+1) - z_cc(i,j+1,k );
759 dz_phys_lo = z_cc(i,j ,k+1) - z_cc(i,j ,k );
760 gpz_hi = (p_arr(i,j+1,k+1) - p_arr(i,j+1,k )) / dz_phys_hi;
761 gpz_lo = (p_arr(i,j ,k+1) - p_arr(i,j ,k )) / dz_phys_lo;
763 dz_phys_hi = z_cc(i,j+1,k ) - z_cc(i,j+1,k-1);
764 dz_phys_lo = z_cc(i,j ,k ) - z_cc(i,j ,k-1);
765 gpz_hi = (p_arr(i,j+1,k ) - p_arr(i,j+1,k-1)) / dz_phys_hi;
766 gpz_lo = (p_arr(i,j ,k ) - p_arr(i,j ,k-1)) / dz_phys_lo;
768 dz_phys_hi = z_cc(i,j+1,k+1) - z_cc(i,j+1,k-1);
769 dz_phys_lo = z_cc(i,j ,k+1) - z_cc(i,j ,k-1);
770 gpz_hi = (p_arr(i,j+1,k+1) - p_arr(i,j+1,k-1)) / dz_phys_hi;
771 gpz_lo = (p_arr(i,j ,k+1) - p_arr(i,j ,k-1)) / dz_phys_lo;
773 gpy_metric = 0.5 * ( gpz_hi * met_h_eta_hi + gpz_lo * met_h_eta_lo );
774 gpy_hi -= gpy_metric;
776 derdat(i ,j ,k, mf_comp) = 0.5 * (gpy_lo + gpy_hi);
779 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
780 derdat(i ,j ,k, mf_comp) = 0.5 * (p_arr(i,j+1,k) - p_arr(i,j-1,k)) * dxInv[1];
789 auto dxInv = geom[lev].InvCellSizeArray();
792 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
794 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
796 const Box& bx = mfi.tilebox();
797 const Array4<Real >& derdat = mf[lev].array(mfi);
798 const Array4<Real const>& p_arr = p_hse.const_array(mfi);
800 const Array4<Real const>& z_nd =
z_phys_nd[lev]->const_array(mfi);
802 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
805 Real gp_xi_lo = dxInv[0] * (p_arr(i,j,k) - p_arr(i-1,j,k));
806 Real gp_zeta_on_iface_lo;
808 gp_zeta_on_iface_lo = 0.5 * dxInv[2] * (
809 p_arr(i-1,j,k+1) + p_arr(i,j,k+1)
810 - p_arr(i-1,j,k ) - p_arr(i,j,k ) );
811 }
else if (k == khi) {
812 gp_zeta_on_iface_lo = 0.5 * dxInv[2] * (
813 p_arr(i-1,j,k ) + p_arr(i,j,k )
814 - p_arr(i-1,j,k-1) - p_arr(i,j,k-1) );
816 gp_zeta_on_iface_lo = 0.25 * dxInv[2] * (
817 p_arr(i-1,j,k+1) + p_arr(i,j,k+1)
818 - p_arr(i-1,j,k-1) - p_arr(i,j,k-1) );
820 Real gpx_lo = gp_xi_lo - (met_h_xi_lo/ met_h_zeta_lo) * gp_zeta_on_iface_lo;
824 Real gp_xi_hi = dxInv[0] * (p_arr(i+1,j,k) - p_arr(i,j,k));
825 Real gp_zeta_on_iface_hi;
827 gp_zeta_on_iface_hi = 0.5 * dxInv[2] * (
828 p_arr(i+1,j,k+1) + p_arr(i,j,k+1)
829 - p_arr(i+1,j,k ) - p_arr(i,j,k ) );
830 }
else if (k == khi) {
831 gp_zeta_on_iface_hi = 0.5 * dxInv[2] * (
832 p_arr(i+1,j,k ) + p_arr(i,j,k )
833 - p_arr(i+1,j,k-1) - p_arr(i,j,k-1) );
835 gp_zeta_on_iface_hi = 0.25 * dxInv[2] * (
836 p_arr(i+1,j,k+1) + p_arr(i,j,k+1)
837 - p_arr(i+1,j,k-1) - p_arr(i,j,k-1) );
839 Real gpx_hi = gp_xi_hi - (met_h_xi_hi/ met_h_zeta_hi) * gp_zeta_on_iface_hi;
841 derdat(i ,j ,k, mf_comp) = 0.5 * (gpx_lo + gpx_hi);
845 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
847 const Box& bx = mfi.tilebox();
848 const Array4<Real >& derdat = mf[lev].array(mfi);
849 const Array4<Real const>& p_arr = p_hse.const_array(mfi);
850 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
851 derdat(i ,j ,k, mf_comp) = 0.5 * (p_arr(i+1,j,k) - p_arr(i-1,j,k)) * dxInv[0];
860 auto dxInv = geom[lev].InvCellSizeArray();
863 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
865 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
867 const Box& bx = mfi.tilebox();
868 const Array4<Real >& derdat = mf[lev].array(mfi);
869 const Array4<Real const>& p_arr = p_hse.const_array(mfi);
870 const Array4<Real const>& z_nd =
z_phys_nd[lev]->const_array(mfi);
871 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
874 Real gp_eta_lo = dxInv[1] * (p_arr(i,j,k) - p_arr(i,j-1,k));
875 Real gp_zeta_on_jface_lo;
877 gp_zeta_on_jface_lo = 0.5 * dxInv[2] * (
878 p_arr(i,j,k+1) + p_arr(i,j-1,k+1)
879 - p_arr(i,j,k ) - p_arr(i,j-1,k ) );
880 }
else if (k == khi) {
881 gp_zeta_on_jface_lo = 0.5 * dxInv[2] * (
882 p_arr(i,j,k ) + p_arr(i,j-1,k )
883 - p_arr(i,j,k-1) - p_arr(i,j-1,k-1) );
885 gp_zeta_on_jface_lo = 0.25 * dxInv[2] * (
886 p_arr(i,j,k+1) + p_arr(i,j-1,k+1)
887 - p_arr(i,j,k-1) - p_arr(i,j-1,k-1) );
889 Real gpy_lo = gp_eta_lo - (met_h_eta_lo / met_h_zeta_lo) * gp_zeta_on_jface_lo;
893 Real gp_eta_hi = dxInv[1] * (p_arr(i,j+1,k) - p_arr(i,j,k));
894 Real gp_zeta_on_jface_hi;
896 gp_zeta_on_jface_hi = 0.5 * dxInv[2] * (
897 p_arr(i,j+1,k+1) + p_arr(i,j,k+1)
898 - p_arr(i,j+1,k ) - p_arr(i,j,k ) );
899 }
else if (k == khi) {
900 gp_zeta_on_jface_hi = 0.5 * dxInv[2] * (
901 p_arr(i,j+1,k ) + p_arr(i,j,k )
902 - p_arr(i,j+1,k-1) - p_arr(i,j,k-1) );
904 gp_zeta_on_jface_hi = 0.25 * dxInv[2] * (
905 p_arr(i,j+1,k+1) + p_arr(i,j,k+1)
906 - p_arr(i,j+1,k-1) - p_arr(i,j,k-1) );
908 Real gpy_hi = gp_eta_hi - (met_h_eta_hi / met_h_zeta_hi) * gp_zeta_on_jface_hi;
910 derdat(i ,j ,k, mf_comp) = 0.5 * (gpy_lo + gpy_hi);
914 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
916 const Box& bx = mfi.tilebox();
917 const Array4<Real >& derdat = mf[lev].array(mfi);
918 const Array4<Real const>& p_arr = p_hse.const_array(mfi);
919 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
920 derdat(i ,j ,k, mf_comp) = 0.5 * (p_arr(i,j+1,k) - p_arr(i,j-1,k)) * dxInv[1];
930 MultiFab::Copy(mf[lev],*
z_phys_cc[lev],0,mf_comp,1,0);
936 MultiFab::Copy(mf[lev],*
detJ_cc[lev],0,mf_comp,1,0);
943 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
945 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
947 const Box& bx = mfi.tilebox();
948 const Array4<Real>& derdat = mf[lev].array(mfi);
949 const Array4<Real>& mf_m =
mapfac_m[lev]->array(mfi);
950 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
951 derdat(i ,j ,k, mf_comp) = mf_m(i,j,0);
957 #ifdef ERF_USE_NETCDF
961 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
963 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
965 const Box& bx = mfi.tilebox();
966 const Array4<Real>& derdat = mf[lev].array(mfi);
967 const Array4<Real>& data = lat_m[lev]->array(mfi);
968 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
969 derdat(i, j, k, mf_comp) = data(i,j,0);
976 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
978 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
980 const Box& bx = mfi.tilebox();
981 const Array4<Real>& derdat = mf[lev].array(mfi);
982 const Array4<Real>& data = lon_m[lev]->array(mfi);
983 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
984 derdat(i, j, k, mf_comp) = data(i,j,0);
996 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
998 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
1000 const Box& bx = mfi.tilebox();
1001 const Array4<Real>& derdat = mf[lev].array(mfi);
1002 const Array4<Real>& data =
vel_t_avg[lev]->array(mfi);
1004 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
1006 derdat(i ,j ,k, mf_comp) = data(i,j,k,0) / norm;
1014 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
1016 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
1018 const Box& bx = mfi.tilebox();
1019 const Array4<Real>& derdat = mf[lev].array(mfi);
1020 const Array4<Real>& data =
vel_t_avg[lev]->array(mfi);
1022 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
1024 derdat(i ,j ,k, mf_comp) = data(i,j,k,1) / norm;
1032 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
1034 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
1036 const Box& bx = mfi.tilebox();
1037 const Array4<Real>& derdat = mf[lev].array(mfi);
1038 const Array4<Real>& data =
vel_t_avg[lev]->array(mfi);
1040 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
1042 derdat(i ,j ,k, mf_comp) = data(i,j,k,2) / norm;
1050 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
1052 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
1054 const Box& bx = mfi.tilebox();
1055 const Array4<Real>& derdat = mf[lev].array(mfi);
1056 const Array4<Real>& data =
vel_t_avg[lev]->array(mfi);
1058 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
1060 derdat(i ,j ,k, mf_comp) = data(i,j,k,3) / norm;
1068 MultiFab dmf(mf[lev], make_alias, mf_comp, 1);
1071 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
1073 for (MFIter mfi(dmf, TilingIfNotGPU()); mfi.isValid(); ++mfi)
1075 const Box& bx = mfi.tilebox();
1076 auto prim = dmf[mfi].array();
1077 auto const cons = cmf[mfi].const_array();
1079 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
1083 prim(i,j,k) = Kmv /
rho;
1111 MultiFab::Copy(mf[lev],*
walldist[lev],0,mf_comp,1,0);
1115 MultiFab::Copy(mf[lev],*
SFS_diss_lev[lev],0,mf_comp,1,0);
1128 int n_qstate =
micro->Get_Qstate_Size();
1137 for (
int n_comp(n_start); n_comp <= n_end; ++n_comp) {
1151 for (
int n_comp(n_start+1); n_comp <= n_end; ++n_comp) {
1184 int n_end = ncomp_cons - 1;
1186 for (
int n_comp(n_start+1); n_comp <= n_end; ++n_comp) {
1218 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
1220 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
1222 const Box& bx = mfi.tilebox();
1223 const Array4<Real>& derdat = mf[lev].array(mfi);
1225 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
1230 erf_qsatw(
T, pressure, derdat(i,j,k,mf_comp));
1243 MultiFab::Copy(mf[lev],*(
qmoist[lev][
offset]),0,mf_comp,1,0);
1253 MultiFab::Copy(mf[lev],*(
qmoist[lev][
offset]),0,mf_comp,1,0);
1258 MultiFab::Copy(mf[lev],*(
qmoist[lev][
offset+1]),0,mf_comp,1,0);
1263 MultiFab::Copy(mf[lev],*(
qmoist[lev][
offset+2]),0,mf_comp,1,0);
1269 #ifdef ERF_USE_PARTICLES
1270 const auto& particles_namelist( particleData.getNames() );
1271 for (ParticlesNamesVector::size_type i = 0; i < particles_namelist.size(); i++) {
1273 MultiFab temp_dat(mf[lev].boxArray(), mf[lev].DistributionMap(), 1, 0);
1275 particleData[particles_namelist[i]]->Increment(temp_dat, lev);
1276 MultiFab::Copy(mf[lev], temp_dat, 0, mf_comp, 1, 0);
1281 Vector<std::string> particle_mesh_plot_names(0);
1282 particleData.GetMeshPlotVarNames( particle_mesh_plot_names );
1283 for (
int i = 0; i < particle_mesh_plot_names.size(); i++) {
1284 std::string plot_var_name(particle_mesh_plot_names[i]);
1286 MultiFab temp_dat(mf[lev].boxArray(), mf[lev].DistributionMap(), 1, 1);
1288 particleData.GetMeshPlotVar(plot_var_name, temp_dat, lev);
1289 MultiFab::Copy(mf[lev], temp_dat, 0, mf_comp, 1, 0);
1299 MultiFab::Copy(mf[lev],
EBFactory(lev).getVolFrac(), 0, mf_comp, 1, 0);
1301 mf[lev].setVal(1.0, mf_comp, 1, 0);
1306 #ifdef ERF_COMPUTE_ERROR
1315 Real H = geom[lev].ProbHi()[2];
1317 Real wavelength = 100.;
1318 Real kp = 2. *
PI / wavelength;
1320 Real
omega = std::sqrt(
g * kp);
1323 const auto dx = geom[lev].CellSizeArray();
1326 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
1328 for (MFIter mfi(mf[lev], TilingIfNotGPU()); mfi.isValid(); ++mfi)
1330 const Box& bx = mfi.validbox();
1331 Box xbx(bx); xbx.surroundingNodes(0);
1335 const Array4<Real const>& z_nd =
z_phys_nd[lev]->const_array(mfi);
1337 ParallelFor(xbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k)
1340 Real
z = 0.25 * (z_nd(i,j,k) + z_nd(i,j+1,k) + z_nd(i,j,k+1) + z_nd(i,j+1,k+1));
1342 Real z_base = Ampl * std::sin(kp *
x - omega_t);
1345 Real fac = std::cosh( kp * (
z - H) ) / std::sinh(kp * H);
1347 xvel_arr(i,j,k) -= -Ampl *
omega * fac * std::sin(kp *
x - omega_t);
1350 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k)
1352 Real
x = (i + 0.5) * dx[0];
1353 Real
z = 0.25 * ( z_nd(i,j,k) + z_nd(i+1,j,k) + z_nd(i,j+1,k) + z_nd(i+1,j+1,k));
1355 Real z_base = Ampl * std::sin(kp *
x - omega_t);
1358 Real fac = std::sinh( kp * (
z - H) ) / std::sinh(kp * H);
1360 zvel_arr(i,j,k) -= Ampl *
omega * fac * std::cos(kp *
x - omega_t);
1364 MultiFab temp_mf(mf[lev].boxArray(), mf[lev].DistributionMap(), AMREX_SPACEDIM, 0);
1365 average_face_to_cellcenter(temp_mf,0,
1369 MultiFab::Copy(mf[lev],temp_mf,0,mf_comp,1,0);
1373 MultiFab::Copy(mf[lev],temp_mf,1,mf_comp,1,0);
1377 MultiFab::Copy(mf[lev],temp_mf,2,mf_comp,1,0);
1383 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
1385 for (MFIter mfi(mf[lev], TilingIfNotGPU()); mfi.isValid(); ++mfi)
1387 const Box& bx = mfi.validbox();
1388 Box xbx(bx); xbx.surroundingNodes(0);
1393 const Array4<Real const>& z_nd =
z_phys_nd[lev]->const_array(mfi);
1395 ParallelFor(xbx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k)
1398 Real
z = 0.25 * (z_nd(i,j,k) + z_nd(i,j+1,k) + z_nd(i,j,k+1) + z_nd(i,j+1,k+1));
1399 Real z_base = Ampl * std::sin(kp *
x - omega_t);
1403 Real fac = std::cosh( kp * (
z - H) ) / std::sinh(kp * H);
1404 xvel_arr(i,j,k) += -Ampl *
omega * fac * std::sin(kp *
x - omega_t);
1406 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k)
1408 Real
x = (i + 0.5) * dx[0];
1409 Real
z = 0.25 * ( z_nd(i,j,k) + z_nd(i+1,j,k) + z_nd(i,j+1,k) + z_nd(i+1,j+1,k));
1410 Real z_base = Ampl * std::sin(kp *
x - omega_t);
1413 Real fac = std::sinh( kp * (
z - H) ) / std::sinh(kp * H);
1415 zvel_arr(i,j,k) += Ampl *
omega * fac * std::cos(kp *
x - omega_t);
1424 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
1426 for ( MFIter mfi(mf[lev],TilingIfNotGPU()); mfi.isValid(); ++mfi)
1428 const Box& bx = mfi.tilebox();
1429 const Array4<Real>& derdat = mf[lev].array(mfi);
1430 const Array4<Real const>& p0_arr = p_hse.const_array(mfi);
1433 const auto dx = geom[lev].CellSizeArray();
1434 const Array4<Real const>& z_nd =
z_phys_nd[lev]->const_array(mfi);
1435 const Array4<Real const>& r0_arr = r_hse.const_array(mfi);
1437 Real H = geom[lev].ProbHi()[2];
1439 Real wavelength = 100.;
1440 Real kp = 2. *
PI / wavelength;
1442 Real
omega = std::sqrt(
g * kp);
1445 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
1448 derdat(i, j, k, mf_comp) =
getPgivenRTh(rhotheta) - p0_arr(i,j,k);
1450 Real rho_hse = r0_arr(i,j,k);
1452 Real
x = (i + 0.5) * dx[0];
1453 Real
z = 0.125 * ( z_nd(i,j,k ) + z_nd(i+1,j,k ) + z_nd(i,j+1,k ) + z_nd(i+1,j+1,k )
1454 +z_nd(i,j,k+1) + z_nd(i+1,j,k+1) + z_nd(i,j+1,k+1) + z_nd(i+1,j+1,k+1) );
1455 Real z_base = Ampl * std::sin(kp *
x - omega_t);
1458 Real fac = std::cosh( kp * (
z - H) ) / std::sinh(kp * H);
1459 Real pprime_exact = -(Ampl *
omega *
omega / kp) * fac *
1460 std::sin(kp *
x - omega_t) * r0_arr(i,j,k);
1462 derdat(i,j,k,mf_comp) -= pprime_exact;
1469 #ifdef ERF_USE_RRTMGP
1471 MultiFab::Copy(mf[lev], *(qheating_rates[lev]), 0, mf_comp, 1, 0);
1475 MultiFab::Copy(mf[lev], *(qheating_rates[lev]), 1, mf_comp, 1, 0);
1483 for (
int lev = 0; lev <= finest_level; ++lev) {
1484 EB_set_covered(mf[lev], 0.0);
1490 for (
int lev(0); lev <= finest_level; ++lev) {
1491 MultiFab::Copy(mf_nd[lev],*
z_phys_nd[lev],0,2,1,0);
1492 Real dz = Geom()[lev].CellSizeArray()[2];
1493 for (MFIter mfi(mf_nd[lev], TilingIfNotGPU()); mfi.isValid(); ++mfi) {
1494 const Box& bx = mfi.tilebox();
1495 Array4<Real> mf_arr = mf_nd[lev].array(mfi);
1496 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k)
1498 mf_arr(i,j,k,2) -= k * dz;
1504 std::string plotfilename;
1505 std::string plotfilenameU;
1506 std::string plotfilenameV;
1507 std::string plotfilenameW;
1513 }
else if (which == 2) {
1525 #ifdef ERF_USE_RRTMGP
1536 if (finest_level == 0)
1538 if (plotfile_type == PlotFileType::Amrex)
1540 Print() <<
"Writing native plotfile " << plotfilename <<
"\n";
1543 GetVecOfConstPtrs(mf),
1544 GetVecOfConstPtrs(mf_nd),
1548 WriteMultiLevelPlotfile(plotfilename, finest_level+1,
1549 GetVecOfConstPtrs(mf),
1556 Print() <<
"Writing face velocities" << std::endl;
1557 WriteMultiLevelPlotfile(plotfilenameU, finest_level+1,
1558 GetVecOfConstPtrs(mf_u),
1559 {
"x_velocity_stag"},
1561 WriteMultiLevelPlotfile(plotfilenameV, finest_level+1,
1562 GetVecOfConstPtrs(mf_v),
1563 {
"y_velocity_stag"},
1565 WriteMultiLevelPlotfile(plotfilenameW, finest_level+1,
1566 GetVecOfConstPtrs(mf_w),
1567 {
"z_velocity_stag"},
1571 #ifdef ERF_USE_PARTICLES
1572 particleData.writePlotFile(plotfilename);
1574 #ifdef ERF_USE_NETCDF
1575 }
else if (plotfile_type == PlotFileType::Netcdf) {
1578 writeNCPlotFile(lev, l_which, plotfilename, GetVecOfConstPtrs(mf), varnames,
istep,
t_new[0]);
1582 Print() <<
"Writing no plotfile since plotfile_type is none" << std::endl;
1587 if (plotfile_type == PlotFileType::Amrex) {
1590 int desired_ratio = std::max(std::max(ref_ratio[lev0][0],ref_ratio[lev0][1]),ref_ratio[lev0][2]);
1591 bool any_ratio_one = ( ( (ref_ratio[lev0][0] == 1) || (ref_ratio[lev0][1] == 1) ) ||
1592 (ref_ratio[lev0][2] == 1) );
1593 for (
int lev = 1; lev < finest_level; lev++) {
1594 any_ratio_one = any_ratio_one ||
1595 ( ( (ref_ratio[lev][0] == 1) || (ref_ratio[lev][1] == 1) ) ||
1596 (ref_ratio[lev][2] == 1) );
1601 Vector<IntVect> r2(finest_level);
1602 Vector<Geometry> g2(finest_level+1);
1603 Vector<MultiFab> mf2(finest_level+1);
1605 mf2[0].define(grids[0], dmap[0], ncomp_mf, 0);
1608 MultiFab::Copy(mf2[0],mf[0],0,0,mf[0].nComp(),0);
1611 Array<int,AMREX_SPACEDIM> periodicity =
1612 {Geom()[lev0].isPeriodic(0),Geom()[lev0].isPeriodic(1),Geom()[lev0].isPeriodic(2)};
1613 g2[lev0].define(Geom()[lev0].Domain(),&(Geom()[lev0].ProbDomain()),0,periodicity.data());
1615 r2[0] = IntVect(desired_ratio/ref_ratio[lev0][0],
1616 desired_ratio/ref_ratio[lev0][1],
1617 desired_ratio/ref_ratio[lev0][2]);
1619 for (
int lev = 1; lev <= finest_level; ++lev) {
1621 r2[lev-1][0] = r2[lev-2][0] * desired_ratio / ref_ratio[lev-1][0];
1622 r2[lev-1][1] = r2[lev-2][1] * desired_ratio / ref_ratio[lev-1][1];
1623 r2[lev-1][2] = r2[lev-2][2] * desired_ratio / ref_ratio[lev-1][2];
1626 mf2[lev].define(refine(grids[lev],r2[lev-1]), dmap[lev], ncomp_mf, 0);
1629 Box d2(Geom()[lev].Domain());
1630 d2.refine(r2[lev-1]);
1632 g2[lev].define(d2,&(Geom()[lev].ProbDomain()),0,periodicity.data());
1640 Vector<BCRec> temp_domain_bcs_type;
1641 temp_domain_bcs_type.resize(ncomp_mf);
1646 for (
int lev = 1; lev <= finest_level; ++lev) {
1647 Interpolater* mapper_c = &pc_interp;
1648 InterpFromCoarseLevel(mf2[lev],
t_new[lev], mf[lev],
1652 r2[lev-1], mapper_c, temp_domain_bcs_type, 0);
1656 Vector<IntVect>
rr(finest_level);
1657 for (
int lev = 0; lev < finest_level; ++lev) {
1658 rr[lev] = IntVect(desired_ratio);
1661 Print() <<
"Writing plotfile " << plotfilename <<
"\n";
1664 GetVecOfConstPtrs(mf2),
1665 GetVecOfConstPtrs(mf_nd),
1669 WriteMultiLevelPlotfile(plotfilename, finest_level+1,
1670 GetVecOfConstPtrs(mf2), varnames,
1677 GetVecOfConstPtrs(mf),
1678 GetVecOfConstPtrs(mf_nd),
1682 WriteMultiLevelPlotfile(plotfilename, finest_level+1,
1683 GetVecOfConstPtrs(mf), varnames,
1687 Print() <<
"Writing face velocities" << std::endl;
1688 WriteMultiLevelPlotfile(plotfilenameU, finest_level+1,
1689 GetVecOfConstPtrs(mf_u),
1690 {
"x_velocity_stag"},
1692 WriteMultiLevelPlotfile(plotfilenameV, finest_level+1,
1693 GetVecOfConstPtrs(mf_v),
1694 {
"y_velocity_stag"},
1696 WriteMultiLevelPlotfile(plotfilenameW, finest_level+1,
1697 GetVecOfConstPtrs(mf_w),
1698 {
"z_velocity_stag"},
1705 #ifdef ERF_USE_PARTICLES
1706 particleData.writePlotFile(plotfilename);
1709 #ifdef ERF_USE_NETCDF
1710 }
else if (plotfile_type == PlotFileType::Netcdf) {
1711 for (
int lev = 0; lev <= finest_level; ++lev) {
1713 writeNCPlotFile(lev, which_box, plotfilename, GetVecOfConstPtrs(mf), varnames,
istep,
t_new[0]);
constexpr amrex::Real PI
Definition: ERF_Constants.H:6
constexpr amrex::Real Cp_l
Definition: ERF_Constants.H:14
#define RhoQ4_comp
Definition: ERF_IndexDefines.H:45
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_esatw(amrex::Real t)
Definition: ERF_MicrophysicsUtils.H:64
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void erf_qsatw(amrex::Real t, amrex::Real p, amrex::Real &qsatw)
Definition: ERF_MicrophysicsUtils.H:158
PhysBCFunctNoOp null_bc_for_fill
Definition: ERF_Plotfile.cpp:10
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtIface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:110
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtCellCenter(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:77
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtIface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:96
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtJface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:139
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtCellCenter(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:62
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtJface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:167
static amrex::Vector< std::string > PlotFileVarNames(amrex::Vector< std::string > plot_var_names)
Definition: ERF_Plotfile.cpp:219
void WriteMultiLevelPlotfileWithTerrain(const std::string &plotfilename, int nlevels, const amrex::Vector< const amrex::MultiFab * > &mf, const amrex::Vector< const amrex::MultiFab * > &mf_nd, const amrex::Vector< std::string > &varnames, const amrex::Vector< amrex::Geometry > &my_geom, amrex::Real time, const amrex::Vector< int > &level_steps, const amrex::Vector< amrex::IntVect > &my_ref_ratio, const std::string &versionName="HyperCLaw-V1.1", const std::string &levelPrefix="Level_", const std::string &mfPrefix="Cell", const amrex::Vector< std::string > &extra_dirs=amrex::Vector< std::string >()) const
Definition: ERF_Plotfile.cpp:1722
void writeJobInfo(const std::string &dir) const
Definition: ERF_WriteJobInfo.cpp:9
void Plot_Lsm_Data(amrex::Real time, const amrex::Vector< int > &level_steps, const amrex::Vector< amrex::IntVect > &ref_ratio)
Definition: ERF_LandSurface.H:98
@ Turb_lengthscale
Definition: ERF_IndexDefines.H:172
@ Mom_h
Definition: ERF_IndexDefines.H:162
@ Theta_h
Definition: ERF_IndexDefines.H:163
void erf_dervortx(const amrex::Box &bx, amrex::FArrayBox &derfab, int dcomp, int ncomp, const amrex::FArrayBox &datfab, const amrex::Geometry &geomdata, amrex::Real, const int *, const int)
Definition: ERF_Derive.cpp:200
void erf_dervorty(const amrex::Box &bx, amrex::FArrayBox &derfab, int dcomp, int ncomp, const amrex::FArrayBox &datfab, const amrex::Geometry &geomdata, amrex::Real, const int *, const int)
Definition: ERF_Derive.cpp:228
void erf_dermagvel(const amrex::Box &bx, amrex::FArrayBox &derfab, int dcomp, int ncomp, const amrex::FArrayBox &datfab, const amrex::Geometry &, amrex::Real, const int *, const int)
Definition: ERF_Derive.cpp:319
void erf_dernull(const Box &, FArrayBox &, int, int, const FArrayBox &, const Geometry &, Real, const int *, const int)
Definition: ERF_Derive.cpp:39
void erf_dertemp(const Box &bx, FArrayBox &derfab, int, int, const FArrayBox &datfab, const Geometry &, Real, const int *, const int)
Definition: ERF_Derive.cpp:91
void erf_derKE(const Box &bx, FArrayBox &derfab, int, int, const FArrayBox &datfab, const Geometry &, Real, const int *, const int)
Definition: ERF_Derive.cpp:186
void erf_dermoisttemp(const Box &bx, FArrayBox &derfab, int, int, const FArrayBox &datfab, const Geometry &, Real, const int *, const int)
Definition: ERF_Derive.cpp:113
void erf_dersoundspeed(const Box &bx, FArrayBox &derfab, int, int, const FArrayBox &datfab, const Geometry &, Real, const int *, const int)
Definition: ERF_Derive.cpp:58
real(c_double), parameter g
Definition: ERF_module_model_constants.F90:19