25 const int domlo_z = geom.Domain().smallEnd(2);
26 const int domhi_z = geom.Domain().bigEnd(2);
28 if (domhi_z > 255) amrex::Abort(
"1D Arrays are hard-wired to only 256 high");
34 for ( amrex::MFIter mfi(rho_hse,
TileNoZ()); mfi.isValid(); ++mfi )
36 amrex::Array4<amrex::Real > rho_arr = rho_hse.array(mfi);
37 amrex::Array4<amrex::Real const> z_cc_arr = z_phys_cc->const_array(mfi);
40 const amrex::Box& tbz = mfi.nodaltilebox(2);
42 b2d.grow(0,1); b2d.grow(1,1);
45 const int ilo = tbz.smallEnd(0);
46 const int jlo = tbz.smallEnd(1);
47 const int klo = tbz.smallEnd(2);
48 const int khi = tbz.bigEnd(2)-1;
52 rho_local_sfc = rho_sfc;
54 rho_local_sfc = rho_arr(ilo,jlo,
klo-1);
59 amrex::Array1D<amrex::Real,0,255> r;
60 amrex::Array1D<amrex::Real,0,255> p;
63 for (
int k =
klo; k <=
khi; k++) {
64 rho_arr(i,j,k) = r(k);
69 rho_arr(i,j,domlo_z-1) = rho_arr(i,j,domlo_z);
72 rho_arr(i,j,domhi_z+1) = rho_arr(i,j,domhi_z);
82 const int klo = geom.Domain().smallEnd(2);
83 const int khi = geom.Domain().bigEnd(2);
86 amrex::Vector<amrex::Real> h_r(
khi+2);
87 amrex::Vector<amrex::Real> h_p(
khi+2);
89 amrex::Gpu::DeviceVector<amrex::Real> d_r(
khi+2);
90 amrex::Gpu::DeviceVector<amrex::Real> d_p(
khi+2);
94 amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, h_r.begin(), h_r.end(), d_r.begin());
95 amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, h_p.begin(), h_p.end(), d_p.begin());
100 #pragma omp parallel if (amrex::Gpu::notInLaunchRegion())
102 for ( amrex::MFIter mfi(rho_hse, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi )
104 const amrex::Box& bx = mfi.growntilebox(1);
105 const amrex::Array4<amrex::Real> rho_hse_arr = rho_hse[mfi].array();
108 int kk = std::max(k,0);
109 rho_hse_arr(i,j,k) = r[kk];
constexpr amrex::Real p_0
Definition: ERF_Constants.H:18
constexpr amrex::Real R_d
Definition: ERF_Constants.H:10
const int klo
Definition: ERF_InitCustomPertVels_ParticleTests.H:4
const bool use_terrain
Definition: ERF_InitCustomPertVels_Terrain3DHemisphere.H:26
const int khi
Definition: ERF_InitCustomPert_ParticleTests.H:11
AMREX_FORCE_INLINE amrex::IntVect TileNoZ()
Definition: ERF_TileNoZ.H:11
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void init_isentropic_hse_terrain(int i, int j, const amrex::Real &r_sfc, const amrex::Real &theta, amrex::Real *r, amrex::Real *p, const amrex::Array4< amrex::Real const > z_cc, const int &klo, const int &khi)
Definition: ERF_HSEUtils.H:205
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void init_isentropic_hse(const amrex::Real &r_sfc, const amrex::Real &theta, amrex::Real *r, amrex::Real *p, const amrex::Real &dz, const int klo, const int khi)
Definition: ERF_HSEUtils.H:93