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);
371 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
373 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
374 const amrex::Box& tbx = mfi.tilebox();
375 auto const& dfab = mf_cc_data.array(mfi);
376 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
387 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
389 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
390 const amrex::Box& tbx = mfi.tilebox();
391 auto const& dfab = mf_cc_data.array(mfi);
392 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
405 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
407 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
408 const amrex::Box& tbx = mfi.tilebox();
409 auto const& dfab = mf_cc_data.array(mfi);
410 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
415 dfab(i,j,k,qv_comp));
423 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
425 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
426 const amrex::Box& tbx = mfi.tilebox();
427 auto const& dfab = mf_cc_data.array(mfi);
428 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
439 m_ls_mf[iline] = get_line_data(mf_cc_data, dir, cell, bnd_bx);
442 auto min_bnd_bx =
m_ls_mf[iline].boxArray().minimalBox();
443 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(bx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { const Real *dx=geomdata.CellSize();const Real x=(i+0.5) *dx[0];const Real y=(j+0.5) *dx[1];const Real Omg=erf_vortex_Gaussian(x, y, xc, yc, R, beta, sigma);const Real deltaT=-(gamma - 1.0)/(2.0 *sigma *sigma) *Omg *Omg;const Real rho_norm=std::pow(1.0+deltaT, inv_gm1);const Real T=(1.0+deltaT) *T_inf;const Real p=std::pow(rho_norm, Gamma)/Gamma *rho_0 *a_inf *a_inf;const Real rho_theta=rho_0 *rho_norm *(T *std::pow(p_0/p, rdOcp));state_pert(i, j, k, RhoTheta_comp)=rho_theta - getRhoThetagivenP(p_hse(i, j, k));const Real r2d_xy=std::sqrt((x-xc) *(x-xc)+(y-yc) *(y-yc));state_pert(i, j, k, RhoScalar_comp)=0.25 *(1.0+std::cos(PI *std::min(r2d_xy, R)/R));})
@ xvel
Definition: ERF_IndexDefines.H:159
@ cons
Definition: ERF_IndexDefines.H:158
@ zvel
Definition: ERF_IndexDefines.H:161
@ yvel
Definition: ERF_IndexDefines.H:160
amrex::Box getIndexBox(const amrex::RealBox &real_box, const amrex::Geometry &geom)
Definition: ERF_SampleData.H:207