1 #ifndef ERF_INTERPOLATE_BILINEAR_H_
2 #define ERF_INTERPOLATE_BILINEAR_H_
17 int si = k*nx*ny + j*nx + i;
25 const int nx,
const int ny,
const int nz,
30 int iloc=-1, jloc=-1, kloc=-1;
31 for(
int k=0;k<nz;k++){
36 else if (zvec[k] ==
z) {
42 iloc =
static_cast<int>(std::floor((
x - xvec[0]) / dxvec));
43 jloc =
static_cast<int>(std::floor((
y - yvec[0]) / dyvec));
45 if(iloc > nx-1 or iloc < 0 or
46 jloc > ny-1 or iloc < 0 or
47 kloc > nz-1 or kloc < 0){
67 tmp_var = (1-w_x)*(1-w_y)*(1-w_z)*varvec[ind0] + w_x*(1-w_y)*(1-w_z)*varvec[ind1] +
68 w_x*w_y*(1-w_z)*varvec[ind2] + (1-w_x)*w_y*(1-w_z)*varvec[ind3] +
69 (1-w_x)*(1-w_y)*w_z*varvec[ind4] + w_x*(1-w_y)*w_z*varvec[ind5] +
70 w_x*w_y*w_z*varvec[ind6] + (1-w_x)*w_y*w_z*varvec[ind7];
84 amrex::Real ic_real = (
x - prob_lo_crse[0]) / dx_crse[0];
85 amrex::Real jc_real = (
y - prob_lo_crse[1]) / dx_crse[1];
86 amrex::Real kc_real = (
z - prob_lo_crse[2]) / dx_crse[2];
88 int ic =
static_cast<int>(amrex::Math::floor(ic_real));
89 int jc =
static_cast<int>(amrex::Math::floor(jc_real));
90 int kc =
static_cast<int>(amrex::Math::floor(kc_real));
104 amrex::Real v111 = crse(ic + 1, jc + 1, kc + 1, n);
106 amrex::Real v = v000 * (1 - dx) * (1 - dy) * (1 - dz) +
107 v100 * dx * (1 - dy) * (1 - dz) +
108 v010 * (1 - dx) * dy * (1 - dz) +
109 v110 * dx * dy * (1 - dz) +
110 v001 * (1 - dx) * (1 - dy) * dz +
111 v101 * dx * (1 - dy) * dz +
112 v011 * (1 - dx) * dy * dz +
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE int get_single_index(int i, int j, int k, int nx, int ny)
Definition: ERF_Interpolation_Bilinear.H:13
AMREX_GPU_DEVICE amrex::Real interpolate_from_coarse(const amrex::Array4< const amrex::Real > &crse, int n, amrex::Real x, amrex::Real y, amrex::Real z, const amrex::Real *prob_lo_crse, const amrex::Real *dx_crse)
Definition: ERF_Interpolation_Bilinear.H:77
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void bilinear_interpolation(const amrex::Real *xvec, const amrex::Real *yvec, const amrex::Real *zvec, const amrex::Real dxvec, const amrex::Real dyvec, const int nx, const int ny, const int nz, const amrex::Real x, const amrex::Real y, const amrex::Real z, const amrex::Real *varvec, amrex::Real &tmp_var)
Definition: ERF_Interpolation_Bilinear.H:23
amrex::Real Real
Definition: ERF_ShocInterface.H:16