205 int nlev =
static_cast<int>(vars_new.size());
206 int nline =
static_cast<int>(
m_bnd_bx.size());
207 int ncomp =
static_cast<int>(
m_varnames.size());
212 for (
int iline(0); iline<nline; ++iline) {
213 int dir =
m_dir[iline];
214 amrex::Box bnd_bx =
m_bnd_bx[iline];
215 amrex::IntVect cell = bnd_bx.smallEnd();
218 for (
int ilev(nlev-1); ilev>=0; --ilev) {
221 amrex::MultiFab mf_cc_vel;
222 auto ba = vars_new[ilev][
Vars::cons].boxArray();
223 auto dm = vars_new[ilev][
Vars::cons].DistributionMap();
224 mf_cc_vel.define(ba, dm, AMREX_SPACEDIM, amrex::IntVect(1,1,1));
225 average_face_to_cellcenter(mf_cc_vel,0,
226 amrex::Array<const amrex::MultiFab*,3>{&vars_new[ilev][
Vars::xvel],
231 amrex::MultiFab mf_cc_data;
232 mf_cc_data.define(ba, dm, ncomp, 1);
237 amrex::MultiFab::Copy(mf_cc_data, vars_new[ilev][
Vars::cons],
Rho_comp, mf_comp, 1, 0);
242 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 0, mf_comp, 1, 0);
246 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 1, mf_comp, 1, 0);
250 amrex::MultiFab::Copy(mf_cc_data, mf_cc_vel, 2, mf_comp, 1, 0);
256 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
258 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
259 const amrex::Box& tbx = mfi.tilebox();
260 auto const& dfab = mf_cc_data.array(mfi);
261 auto const& vfab = mf_cc_vel.array(mfi);
263 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
265 dfab(i,j,k,mf_comp) = std::sqrt(vfab(i,j,k,0)*vfab(i,j,k,0)
266 + vfab(i,j,k,1)*vfab(i,j,k,1)
267 + vfab(i,j,k,2)*vfab(i,j,k,2)) ;
275 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
277 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
278 const amrex::Box& tbx = mfi.tilebox();
279 auto const& dfab = mf_cc_data.array(mfi);
280 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
282 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
292 if (qv_comp >= 0) AMREX_ALWAYS_ASSERT(qv_comp == mf_comp);
295 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
297 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
298 const amrex::Box& tbx = mfi.tilebox();
299 auto const& dfab = mf_cc_data.array(mfi);
300 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
302 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
311 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
313 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
314 const amrex::Box& tbx = mfi.tilebox();
315 auto const& dfab = mf_cc_data.array(mfi);
316 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
318 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
329 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
331 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
332 const amrex::Box& tbx = mfi.tilebox();
333 auto const& dfab = mf_cc_data.array(mfi);
334 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
336 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
339 dfab(i,j,k,qv_comp));
347 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
349 for (amrex::MFIter mfi(mf_cc_data, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) {
350 const amrex::Box& tbx = mfi.tilebox();
351 auto const& dfab = mf_cc_data.array(mfi);
352 auto const& cfab = vars_new[ilev][
Vars::cons].array(mfi);
354 amrex::ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
363 m_ls_mf[iline] = get_line_data(mf_cc_data, dir, cell, bnd_bx);
366 auto min_bnd_bx =
m_ls_mf[iline].boxArray().minimalBox();
367 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