Block-Structured AMR Software Framework
AMReX_TracerParticle_mod_K.H File Reference
#include <AMReX_Config.H>
#include <AMReX_FArrayBox.H>
#include <AMReX_Box.H>
#include <AMReX_Gpu.H>
#include <AMReX_Geometry.H>
#include <AMReX_REAL.H>
#include <AMReX_IntVect.H>
#include <AMReX_TracerParticles.H>
#include <cmath>

Go to the source code of this file.

Namespaces

 amrex
 

Functions

template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::cic_interpolate (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, const amrex::Array4< amrex::Real const > &data_arr, amrex::ParticleReal *val, int M=AMREX_SPACEDIM)
 Linearly interpolates the mesh data to the particle position from cell-centered data. More...
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::cic_interpolate_cc (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, const amrex::Array4< amrex::Real const > &data_arr, amrex::ParticleReal *val, int M=AMREX_SPACEDIM)
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::cic_interpolate_nd (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, const amrex::Array4< amrex::Real const > &data_arr, amrex::ParticleReal *val, int M=AMREX_SPACEDIM)
 Linearly interpolates the mesh data to the particle position from node-centered data. More...
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::mac_interpolate (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, amrex::GpuArray< amrex::Array4< amrex::Real const >, AMREX_SPACEDIM > const &data_arr, amrex::ParticleReal *val)
 Linearly interpolates the mesh data to the particle position from face-centered data. The nth component of the data_arr array is nodal in the nth direction, and cell-centered in the others. More...
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void amrex::linear_interpolate_to_particle (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, const Array4< amrex::Real const > *data_arr, amrex::ParticleReal *val, const IntVect *is_nodal, int start_comp, int ncomp, int num_arrays)
 Linearly interpolates the mesh data to the particle position from mesh data. This general form can handle an arbitrary number of Array4s, each with different staggerings. More...
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void cic_interpolate_mapped_z (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, const amrex::Array4< amrex::Real const > &data_arr, const amrex::Array4< amrex::Real const > &height_arr, amrex::ParticleReal *val, int M=AMREX_SPACEDIM)
 Linearly interpolates the mesh data to the particle position from cell-centered data on a terrain-fitted grid. More...
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void cic_interpolate_cc_mapped_z (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, const amrex::Array4< amrex::Real const > &data_arr, const amrex::Array4< amrex::Real const > &height_arr, amrex::ParticleReal *val, int M=AMREX_SPACEDIM)
 Linearly interpolates the mesh data to the particle position from cell-centered data on a terrain-fitted grid. More...
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void cic_interpolate_nd_mapped_z (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, const amrex::Array4< amrex::Real const > &data_arr, const amrex::Array4< amrex::Real const > &height_arr, amrex::ParticleReal *val, int M=AMREX_SPACEDIM)
 Linearly interpolates the mesh data to the particle position from node-centered data. on a terrain-fitted grid. More...
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mac_interpolate_mapped_z (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, amrex::GpuArray< amrex::Array4< amrex::Real const >, AMREX_SPACEDIM > const &data_arr, const amrex::Array4< amrex::Real const > &height_arr, amrex::ParticleReal *val)
 Linearly interpolates the mesh data to the particle position from face-centered data on a terrain-fitted grid. The nth component of the data_arr array is nodal in the nth direction, and cell-centered in the others. More...
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void linear_interpolate_to_particle_z (const P &p, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &plo, amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &dxi, const Array4< amrex::Real const > *data_arr, const amrex::Array4< amrex::Real const > &height_arr, amrex::ParticleReal *val, const IntVect *is_nodal, int start_comp, int ncomp, int num_arrays)
 Linearly interpolates the mesh data to the particle position from mesh data. This general form can handle an arbitrary number of Array4s, each with different staggerings on a terrain-fitted grid. More...
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void particle_interp_decomp (Array2D< Real, 1, 7, 1, 7 > &a, Array1D< int, 1, 7 > &ip, int neq)
 Helper functions for 3D interpolation from values on nodes/vertices of arbitrary hexahedra to particle location. More...
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void particle_interp_solve (Array2D< Real, 1, 7, 1, 7 > &a, Array1D< Real, 1, 7 > &b, Array1D< int, 1, 7 > &ip, int neq)
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void cic_interpolate_nd_mapped (const P &p, const amrex::Array4< amrex::Real const > &data_arr, const amrex::Array4< amrex::Real const > &loc_arr, amrex::ParticleReal *val, int M=AMREX_SPACEDIM)
 Linearly interpolates the mesh data to the particle position from node-centered data on a general mapped grid. More...
 
template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void linear_interpolate_to_particle_mapped (const P &p, const Array4< amrex::Real const > *data_arr, const amrex::Array4< amrex::Real const > &loc_arr, amrex::ParticleReal *val, const IntVect *is_nodal, int start_comp, int ncomp, int num_arrays)
 Linearly interpolates the mesh data to the particle position on a general mapped grid. Note that currently only node-centered data interpolation is supported in 2D and 3D. More...
 

Function Documentation

◆ cic_interpolate_cc_mapped_z()

template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void cic_interpolate_cc_mapped_z ( const P &  p,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  plo,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  dxi,
const amrex::Array4< amrex::Real const > &  data_arr,
const amrex::Array4< amrex::Real const > &  height_arr,
amrex::ParticleReal *  val,
int  M = AMREX_SPACEDIM 
)

Linearly interpolates the mesh data to the particle position from cell-centered data on a terrain-fitted grid.

◆ cic_interpolate_mapped_z()

template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void cic_interpolate_mapped_z ( const P &  p,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  plo,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  dxi,
const amrex::Array4< amrex::Real const > &  data_arr,
const amrex::Array4< amrex::Real const > &  height_arr,
amrex::ParticleReal *  val,
int  M = AMREX_SPACEDIM 
)

Linearly interpolates the mesh data to the particle position from cell-centered data on a terrain-fitted grid.

◆ cic_interpolate_nd_mapped()

template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void cic_interpolate_nd_mapped ( const P &  p,
const amrex::Array4< amrex::Real const > &  data_arr,
const amrex::Array4< amrex::Real const > &  loc_arr,
amrex::ParticleReal *  val,
int  M = AMREX_SPACEDIM 
)

Linearly interpolates the mesh data to the particle position from node-centered data on a general mapped grid.

◆ cic_interpolate_nd_mapped_z()

template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void cic_interpolate_nd_mapped_z ( const P &  p,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  plo,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  dxi,
const amrex::Array4< amrex::Real const > &  data_arr,
const amrex::Array4< amrex::Real const > &  height_arr,
amrex::ParticleReal *  val,
int  M = AMREX_SPACEDIM 
)

Linearly interpolates the mesh data to the particle position from node-centered data. on a terrain-fitted grid.

◆ linear_interpolate_to_particle_mapped()

template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void linear_interpolate_to_particle_mapped ( const P &  p,
const Array4< amrex::Real const > *  data_arr,
const amrex::Array4< amrex::Real const > &  loc_arr,
amrex::ParticleReal *  val,
const IntVect *  is_nodal,
int  start_comp,
int  ncomp,
int  num_arrays 
)

Linearly interpolates the mesh data to the particle position on a general mapped grid. Note that currently only node-centered data interpolation is supported in 2D and 3D.

◆ linear_interpolate_to_particle_z()

template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void linear_interpolate_to_particle_z ( const P &  p,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  plo,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  dxi,
const Array4< amrex::Real const > *  data_arr,
const amrex::Array4< amrex::Real const > &  height_arr,
amrex::ParticleReal *  val,
const IntVect *  is_nodal,
int  start_comp,
int  ncomp,
int  num_arrays 
)

Linearly interpolates the mesh data to the particle position from mesh data. This general form can handle an arbitrary number of Array4s, each with different staggerings on a terrain-fitted grid.

◆ mac_interpolate_mapped_z()

template<typename P >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mac_interpolate_mapped_z ( const P &  p,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  plo,
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > const &  dxi,
amrex::GpuArray< amrex::Array4< amrex::Real const >, AMREX_SPACEDIM > const &  data_arr,
const amrex::Array4< amrex::Real const > &  height_arr,
amrex::ParticleReal *  val 
)

Linearly interpolates the mesh data to the particle position from face-centered data on a terrain-fitted grid. The nth component of the data_arr array is nodal in the nth direction, and cell-centered in the others.

◆ particle_interp_decomp()

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void particle_interp_decomp ( Array2D< Real, 1, 7, 1, 7 > &  a,
Array1D< int, 1, 7 > &  ip,
int  neq 
)

Helper functions for 3D interpolation from values on nodes/vertices of arbitrary hexahedra to particle location.

◆ particle_interp_solve()

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void particle_interp_solve ( Array2D< Real, 1, 7, 1, 7 > &  a,
Array1D< Real, 1, 7 > &  b,
Array1D< int, 1, 7 > &  ip,
int  neq 
)