485 int nlev = vars_new.size();
488 bool interpolate =
true;
491 for (
int iplane(0); iplane<nplane; ++iplane) {
492 int dir =
m_dir[iplane];
493 amrex::RealBox bnd_rbx =
m_bnd_rbx[iplane];
494 amrex::Real point = bnd_rbx.lo(dir);
497 for (
int ilev(nlev-1); ilev>=0; --ilev) {
500 amrex::MultiFab mf_cc_vel;
501 auto ba = vars_new[ilev][
Vars::cons].boxArray();
502 auto dm = vars_new[ilev][
Vars::cons].DistributionMap();
503 mf_cc_vel.define(ba, dm, AMREX_SPACEDIM, amrex::IntVect(1,1,1));
504 average_face_to_cellcenter(mf_cc_vel,0,
505 amrex::Array<const amrex::MultiFab*,3>{&vars_new[ilev][
Vars::xvel],
510 amrex::MultiFab mf_cc_data;
511 mf_cc_data.define(ba, dm, ncomp, 1);
513 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
515 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
516 const amrex::Box& tbx = mfi.tilebox();
517 auto const& dfab = mf_cc_data.array(mfi);
518 auto const& tfab = vars_new[ilev][
Vars::cons].array(mfi);
519 auto const& wfab = mf_cc_vel.array(mfi);
520 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
522 dfab(i,j,k,0) = tfab(i,j,k,1)/tfab(i,j,k,0);
523 dfab(i,j,k,1) = std::sqrt(wfab(i,j,k,0)*wfab(i,j,k,0)
524 + wfab(i,j,k,1)*wfab(i,j,k,1)
525 + wfab(i,j,k,2)*wfab(i,j,k,2)) ;
530 m_lev[iplane] = ilev;
531 m_ps_mf[iplane] = get_slice_data(dir, point, mf_cc_data, geom[ilev],
532 0, ncomp, interpolate, bnd_rbx);
535 auto min_bnd_bx =
m_ps_mf[iplane]->boxArray().minimalBox();
536 amrex::Box bnd_bx =
getIndexBox(bnd_rbx, geom[ilev]);
537 if (bnd_bx == min_bnd_bx) {
continue; }
@ xvel
Definition: ERF_IndexDefines.H:141
@ cons
Definition: ERF_IndexDefines.H:140
@ zvel
Definition: ERF_IndexDefines.H:143
@ yvel
Definition: ERF_IndexDefines.H:142
amrex::Box getIndexBox(const amrex::RealBox &real_box, const amrex::Geometry &geom)
Definition: ERF_SampleData.H:466