204 int nlev =
static_cast<int>(vars_new.size());
205 int nline =
static_cast<int>(
m_bnd_bx.size());
206 int ncomp =
static_cast<int>(
m_varnames.size());
211 for (
int iline(0); iline<nline; ++iline) {
212 int dir =
m_dir[iline];
213 amrex::Box bnd_bx =
m_bnd_bx[iline];
214 amrex::IntVect cell = bnd_bx.smallEnd();
217 for (
int ilev(nlev-1); ilev>=0; --ilev) {
220 amrex::MultiFab mf_cc_vel;
221 auto ba = vars_new[ilev][
Vars::cons].boxArray();
222 auto dm = vars_new[ilev][
Vars::cons].DistributionMap();
223 mf_cc_vel.define(ba, dm, AMREX_SPACEDIM, amrex::IntVect(1,1,1));
224 average_face_to_cellcenter(mf_cc_vel,0,
225 amrex::Array<const amrex::MultiFab*,3>{&vars_new[ilev][
Vars::xvel],
230 amrex::MultiFab mf_cc_data;
231 mf_cc_data.define(ba, dm, ncomp, 1);
236 amrex::MultiFab::Copy(mf_cc_data, vars_new[ilev][
Vars::cons],
Rho_comp, mf_comp, 1, 0);
241 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 0, mf_comp, 1, 0);
245 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 1, mf_comp, 1, 0);
249 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 2, mf_comp, 1, 0);
255 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
257 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
258 const amrex::Box& tbx = mfi.tilebox();
259 auto const& dfab = mf_cc_data.array(mfi);
260 auto const& vfab = mf_cc_vel.array(mfi);
262 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
264 dfab(i,j,k,mf_comp) = std::sqrt(vfab(i,j,k,0)*vfab(i,j,k,0)
265 + vfab(i,j,k,1)*vfab(i,j,k,1)
266 + vfab(i,j,k,2)*vfab(i,j,k,2)) ;
274 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
276 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
277 const amrex::Box& tbx = mfi.tilebox();
278 auto const& dfab = mf_cc_data.array(mfi);
279 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
281 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
291 if (qv_comp >= 0) AMREX_ALWAYS_ASSERT(qv_comp == mf_comp);
294 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
296 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
297 const amrex::Box& tbx = mfi.tilebox();
298 auto const& dfab = mf_cc_data.array(mfi);
299 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
301 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
310 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
312 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
313 const amrex::Box& tbx = mfi.tilebox();
314 auto const& dfab = mf_cc_data.array(mfi);
315 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
317 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
328 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
330 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
331 const amrex::Box& tbx = mfi.tilebox();
332 auto const& dfab = mf_cc_data.array(mfi);
333 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
335 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
338 dfab(i,j,k,qv_comp));
346 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
348 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
349 const amrex::Box& tbx = mfi.tilebox();
350 auto const& dfab = mf_cc_data.array(mfi);
351 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
353 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
362 m_ls_mf[iline] = get_line_data(mf_cc_data, dir, cell, bnd_bx);
365 auto min_bnd_bx =
m_ls_mf[iline].boxArray().minimalBox();
366 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=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
@ xvel
Definition: ERF_IndexDefines.H:141
@ cons
Definition: ERF_IndexDefines.H:140
@ zvel
Definition: ERF_IndexDefines.H:143
@ yvel
Definition: ERF_IndexDefines.H:142