ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_InterpolationUtils.H
Go to the documentation of this file.
1 #ifndef ERF_INTERPOLATION_UTILS_H
2 #define ERF_INTERPOLATION_UTILS_H
3 
4 #include <AMReX_FArrayBox.H>
5 #include <AMReX_GpuContainers.H>
6 #include <AMReX_REAL.H>
7 #include <AMReX_Array4.H>
8 #include "ERF_Constants.H"
10 
11 /**
12  * @file ERF_InterpolationUtils.H
13  * @brief Utility functions for field interpolation at particle positions
14  */
15 
16 namespace ERF {
17 namespace Interpolation {
18 
19 /**
20  * @brief Interpolate multiple field values at a particle position using CIC.
21  */
22 template <typename ParticleType>
23 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
25  const ParticleType& p,
26  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& plo,
27  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxi,
28  const amrex::Array4<const amrex::Real>* field_arrays,
29  amrex::ParticleReal* result_values,
30  int num_fields
31 ) {
32  for (int i = 0; i < num_fields; ++i) {
33  cic_interpolate(p, plo, dxi, field_arrays[i], &result_values[i], 1);
34  }
35 }
36 
37 } // namespace Interpolation
38 } // namespace ERF
39 
40 #endif // ERF_INTERPOLATION_UTILS_H
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)
Interpolate multiple field values at a particle position using CIC.
Definition: ERF_InterpolationUtils.H:24
Definition: ERF_InterpolationUtils.H:16