282 int nlev =
static_cast<int>(vars_new.size());
283 int nline =
static_cast<int>(
m_bnd_bx.size());
284 int ncomp =
static_cast<int>(
m_varnames.size());
289 for (
int iline(0); iline<nline; ++iline) {
290 int dir =
m_dir[iline];
293 for (
int ilev(nlev-1); ilev>=0; --ilev) {
297 amrex::IntVect cell = bnd_bx.smallEnd();
300 amrex::MultiFab mf_cc_vel;
301 auto ba = vars_new[ilev][
Vars::cons].boxArray();
302 auto dm = vars_new[ilev][
Vars::cons].DistributionMap();
303 mf_cc_vel.define(ba, dm, AMREX_SPACEDIM, amrex::IntVect(1,1,1));
304 average_face_to_cellcenter(mf_cc_vel,0,
305 amrex::Array<const amrex::MultiFab*,3>{&vars_new[ilev][
Vars::xvel],
310 amrex::MultiFab mf_cc_data;
311 mf_cc_data.define(ba, dm, ncomp, 1);
316 amrex::MultiFab::Copy(mf_cc_data, vars_new[ilev][
Vars::cons],
Rho_comp, mf_comp, 1, 0);
321 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 0, mf_comp, 1, 0);
325 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 1, mf_comp, 1, 0);
329 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 2, mf_comp, 1, 0);
335 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
337 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
338 const amrex::Box& tbx = mfi.tilebox();
339 auto const& dfab = mf_cc_data.array(mfi);
340 auto const& vfab = mf_cc_vel.array(mfi);
344 dfab(i,j,k,mf_comp) = std::sqrt(vfab(i,j,k,0)*vfab(i,j,k,0)
345 + vfab(i,j,k,1)*vfab(i,j,k,1)
346 + vfab(i,j,k,2)*vfab(i,j,k,2)) ;
354 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
356 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
357 const amrex::Box& tbx = mfi.tilebox();
358 auto const& dfab = mf_cc_data.array(mfi);
359 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
371 "qv sampling requested but moisture components not present in state");
375 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
377 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
378 const amrex::Box& tbx = mfi.tilebox();
379 auto const& dfab = mf_cc_data.array(mfi);
380 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
391 "qc sampling requested but moisture components not present in state");
393 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
395 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
396 const amrex::Box& tbx = mfi.tilebox();
397 auto const& dfab = mf_cc_data.array(mfi);
398 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
412 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
414 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
415 const amrex::Box& tbx = mfi.tilebox();
416 auto const& dfab = mf_cc_data.array(mfi);
417 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
421 amrex::Real qv_val = (qv_comp >= 0) ? dfab(i,j,k,qv_comp)
429 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
431 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
432 const amrex::Box& tbx = mfi.tilebox();
433 auto const& dfab = mf_cc_data.array(mfi);
434 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
446 m_ls_mf[iline] = get_line_data(mf_cc_data, dir, cell, bnd_bx);
449 auto min_bnd_bx =
m_ls_mf[iline].boxArray().minimalBox();
450 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
AMREX_ALWAYS_ASSERT_WITH_MESSAGE(m_cloud_chamber_config.active, "Cloud Chamber: initializer reached without a parsed configuration")
ParallelFor(fab_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:177
@ cons
Definition: ERF_IndexDefines.H:176
@ zvel
Definition: ERF_IndexDefines.H:179
@ yvel
Definition: ERF_IndexDefines.H:178
amrex::Box getIndexBox(const amrex::RealBox &real_box, const amrex::Geometry &geom)
Definition: ERF_SampleData.H:210