704 int nlev =
static_cast<int>(vars_new.size());
705 int nplane =
static_cast<int>(
m_bnd_rbx.size());
706 int ncomp =
static_cast<int>(
m_varnames.size());
707 bool interpolate =
true;
712 for (
int iplane(0); iplane<nplane; ++iplane) {
713 int dir =
m_dir[iplane];
714 amrex::RealBox bnd_rbx =
m_bnd_rbx[iplane];
718 for (
int ilev(nlev-1); ilev>=0; --ilev) {
721 amrex::MultiFab mf_cc_vel;
722 auto ba = vars_new[ilev][
Vars::cons].boxArray();
723 auto dm = vars_new[ilev][
Vars::cons].DistributionMap();
724 mf_cc_vel.define(ba, dm, AMREX_SPACEDIM, amrex::IntVect(1,1,1));
725 average_face_to_cellcenter(mf_cc_vel,0,
726 amrex::Array<const amrex::MultiFab*,3>{&vars_new[ilev][
Vars::xvel],
731 amrex::MultiFab mf_cc_data;
732 mf_cc_data.define(ba, dm, ncomp, 1);
737 amrex::MultiFab::Copy(mf_cc_data, vars_new[ilev][
Vars::cons],
Rho_comp, mf_comp, 1, 0);
742 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 0, mf_comp, 1, 0);
746 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 1, mf_comp, 1, 0);
750 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 2, mf_comp, 1, 0);
756 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
758 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
759 const amrex::Box& tbx = mfi.tilebox();
760 auto const& dfab = mf_cc_data.array(mfi);
761 auto const& vfab = mf_cc_vel.array(mfi);
765 dfab(i,j,k,mf_comp) = std::sqrt(vfab(i,j,k,0)*vfab(i,j,k,0)
766 + vfab(i,j,k,1)*vfab(i,j,k,1)
767 + vfab(i,j,k,2)*vfab(i,j,k,2));
775 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
777 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
778 const amrex::Box& tbx = mfi.tilebox();
779 auto const& dfab = mf_cc_data.array(mfi);
780 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
792 "qv sampling requested but moisture components not present in state");
796 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
798 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
799 const amrex::Box& tbx = mfi.tilebox();
800 auto const& dfab = mf_cc_data.array(mfi);
801 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
812 "qc sampling requested but moisture components not present in state");
814 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
816 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
817 const amrex::Box& tbx = mfi.tilebox();
818 auto const& dfab = mf_cc_data.array(mfi);
819 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
833 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
835 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
836 const amrex::Box& tbx = mfi.tilebox();
837 auto const& dfab = mf_cc_data.array(mfi);
838 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
842 amrex::Real qv_val = (qv_comp >= 0) ? dfab(i,j,k,qv_comp)
850 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
852 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
853 const amrex::Box& tbx = mfi.tilebox();
854 auto const& dfab = mf_cc_data.array(mfi);
855 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
866 m_lev[iplane] = ilev;
867 m_ps_mf[iplane] = get_slice_data(dir, point, mf_cc_data, geom[ilev],
868 0, ncomp, interpolate, bnd_rbx);
871 auto min_bnd_bx =
m_ps_mf[iplane]->boxArray().minimalBox();
872 amrex::Box bnd_bx =
getIndexBox(bnd_rbx, geom[ilev]);
873 if (bnd_bx == min_bnd_bx) {
break; }
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
#define Rho_comp
Definition: ERF_IndexDefines.H:36
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:37
#define RhoQ2_comp
Definition: ERF_IndexDefines.H:43
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:42
ParallelFor(grown_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);})
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ xvel
Definition: ERF_IndexDefines.H:175
@ cons
Definition: ERF_IndexDefines.H:174
@ zvel
Definition: ERF_IndexDefines.H:177
@ yvel
Definition: ERF_IndexDefines.H:176
amrex::Box getIndexBox(const amrex::RealBox &real_box, const amrex::Geometry &geom)
Definition: ERF_SampleData.H:685