1 #ifndef ERF_INTERPOLATION_UTILS_H
2 #define ERF_INTERPOLATION_UTILS_H
4 #include <AMReX_FArrayBox.H>
5 #include <AMReX_GpuContainers.H>
6 #include <AMReX_REAL.H>
7 #include <AMReX_Array4.H>
16 namespace Interpolation {
35 template <
typename ParticleType>
36 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
38 const ParticleType&
p,
39 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& plo,
40 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxi,
41 const amrex::Array4<const amrex::Real>* field_arrays,
42 amrex::ParticleReal* result_values,
44 int is_periodic_z = 1,
45 const amrex::Array4<amrex::Real>* zheight =
nullptr
48 for (
int i = 0; i < num_fields; ++i) {
49 if (is_periodic_z != 0) {
50 cic_interpolate(
p, plo, dxi, field_arrays[i], &result_values[i], 1);
52 cic_interpolate_mapped_z(
p, plo, dxi, field_arrays[i], *zheight, &result_values[i], 1);
Real * p
Definition: ERF_InitCustomPert_SquallLine.H:61
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void interpolateFields(const ParticleType &p, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &plo, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxi, const amrex::Array4< const amrex::Real > *field_arrays, amrex::ParticleReal *result_values, int num_fields, int is_periodic_z=1, const amrex::Array4< amrex::Real > *zheight=nullptr)
Helper function to interpolate multiple field values at a particle position.
Definition: ERF_InterpolationUtils.H:37
Definition: ERF_InterpolationUtils.H:15