279 int nlev =
static_cast<int>(vars_new.size());
280 int nline =
static_cast<int>(
m_bnd_bx.size());
281 int ncomp =
static_cast<int>(
m_varnames.size());
286 for (
int iline(0); iline<nline; ++iline) {
287 int dir =
m_dir[iline];
290 for (
int ilev(nlev-1); ilev>=0; --ilev) {
294 amrex::IntVect cell = bnd_bx.smallEnd();
297 amrex::MultiFab mf_cc_vel;
298 auto ba = vars_new[ilev][
Vars::cons].boxArray();
299 auto dm = vars_new[ilev][
Vars::cons].DistributionMap();
300 mf_cc_vel.define(ba, dm, AMREX_SPACEDIM, amrex::IntVect(1,1,1));
301 average_face_to_cellcenter(mf_cc_vel,0,
302 amrex::Array<const amrex::MultiFab*,3>{&vars_new[ilev][
Vars::xvel],
307 amrex::MultiFab mf_cc_data;
308 mf_cc_data.define(ba, dm, ncomp, 1);
313 amrex::MultiFab::Copy(mf_cc_data, vars_new[ilev][
Vars::cons],
Rho_comp, mf_comp, 1, 0);
318 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 0, mf_comp, 1, 0);
322 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 1, mf_comp, 1, 0);
326 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 2, mf_comp, 1, 0);
332 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
334 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
335 const amrex::Box& tbx = mfi.tilebox();
336 auto const& dfab = mf_cc_data.array(mfi);
337 auto const& vfab = mf_cc_vel.array(mfi);
341 dfab(i,j,k,mf_comp) = std::sqrt(vfab(i,j,k,0)*vfab(i,j,k,0)
342 + vfab(i,j,k,1)*vfab(i,j,k,1)
343 + vfab(i,j,k,2)*vfab(i,j,k,2)) ;
351 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
353 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
354 const amrex::Box& tbx = mfi.tilebox();
355 auto const& dfab = mf_cc_data.array(mfi);
356 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
368 "qv sampling requested but moisture components not present in state");
372 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
374 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
375 const amrex::Box& tbx = mfi.tilebox();
376 auto const& dfab = mf_cc_data.array(mfi);
377 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
388 "qc sampling requested but moisture components not present in state");
390 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
392 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
393 const amrex::Box& tbx = mfi.tilebox();
394 auto const& dfab = mf_cc_data.array(mfi);
395 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
409 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
411 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
412 const amrex::Box& tbx = mfi.tilebox();
413 auto const& dfab = mf_cc_data.array(mfi);
414 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
418 amrex::Real qv_val = (qv_comp >= 0) ? dfab(i,j,k,qv_comp)
426 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
428 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
429 const amrex::Box& tbx = mfi.tilebox();
430 auto const& dfab = mf_cc_data.array(mfi);
431 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
443 m_ls_mf[iline] = get_line_data(mf_cc_data, dir, cell, bnd_bx);
446 auto min_bnd_bx =
m_ls_mf[iline].boxArray().minimalBox();
447 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:207