1 #ifndef ERF_TERRAIN_CONVERSION_H_
2 #define ERF_TERRAIN_CONVERSION_H_
4 #include <AMReX_Array.H>
5 #include <AMReX_Array4.H>
6 #include <AMReX_GpuQualifiers.H>
7 #include <AMReX_REAL.H>
20 namespace ParticlePos {
24 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
27 amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>
const& plo,
28 amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>
const& dxi,
29 amrex::Array4<amrex::Real const>
const& height_arr) noexcept
33 const int ix =
static_cast<int>(amrex::Math::floor(lx));
34 const int iy =
static_cast<int>(amrex::Math::floor(ly));
38 + height_arr(ix+1, iy , k_face) * fx * (
amrex::Real(1) - fy)
39 + height_arr(ix , iy+1, k_face) * (
amrex::Real(1) - fx) * fy
40 + height_arr(ix+1, iy+1, k_face) * fx * fy;
49 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
52 amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>
const& plo,
53 amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>
const& dxi,
54 amrex::Array4<amrex::Real const>
const& height_arr) noexcept
59 const amrex::Real lz = (zeta - plo[AMREX_SPACEDIM-1]) * dxi[AMREX_SPACEDIM-1];
60 const int k =
static_cast<int>(amrex::Math::floor(lz));
73 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
76 amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>
const& plo,
77 amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>
const& dxi,
78 amrex::Array4<amrex::Real const>
const& height_arr,
84 const int k_lo = amrex::max(0, height_arr.begin[2]);
85 const int k_hi = amrex::min(k_max, height_arr.end[2] - 2);
89 if (
z < z_hi) {
break; }
95 ? (
z - z_lo) / (z_hi - z_lo)
97 return plo[AMREX_SPACEDIM-1]
98 + (
static_cast<amrex::Real>(k) + fz) / dxi[AMREX_SPACEDIM-1];
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real z_from_zeta(amrex::Real x, amrex::Real y, amrex::Real zeta, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, amrex::Array4< amrex::Real const > const &height_arr) noexcept
Definition: ERF_TerrainConversion.H:51
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real zeta_from_z(amrex::Real x, amrex::Real y, amrex::Real z, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, amrex::Array4< amrex::Real const > const &height_arr, int k_max) noexcept
Definition: ERF_TerrainConversion.H:75
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real z_face_at_xy(amrex::Real x, amrex::Real y, int k_face, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, amrex::Array4< amrex::Real const > const &height_arr) noexcept
Definition: ERF_TerrainConversion.H:26
Definition: ERF_InterpolationUtils.H:16