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,
36 int iloc=-1, jloc=-1, kloc=-1;
37 for(
int k=0;k<nz;k++){
42 else if (zvec[k] ==
z) {
47 iloc =
static_cast<int>(std::floor((
x - xvec[0]) / dxvec));
48 jloc =
static_cast<int>(std::floor((
y - yvec[0]) / dyvec));
50 if(iloc > nx-1 or iloc < 0 or
51 jloc > ny-1 or iloc < 0 or
52 kloc > nz-1 or kloc < 0){
53 printf(
"There is a problem inside here %d %d %d %d %d %d\n", iloc, jloc, kloc, nx-1, ny-1, nz-1);
54 for(
int k=0;k<nz;k++){
55 printf(
"Value of z is %d %0.15g %0.15g\n", k, zvec[k],
z);
76 tmp_var = (1-w_x)*(1-w_y)*(1-w_z)*varvec[ind0] + w_x*(1-w_y)*(1-w_z)*varvec[ind1] +
77 w_x*w_y*(1-w_z)*varvec[ind2] + (1-w_x)*w_y*(1-w_z)*varvec[ind3] +
78 (1-w_x)*(1-w_y)*w_z*varvec[ind4] + w_x*(1-w_y)*w_z*varvec[ind5] +
79 w_x*w_y*w_z*varvec[ind6] + (1-w_x)*w_y*w_z*varvec[ind7];
93 amrex::Real ic_real = (
x - prob_lo_crse[0]) / dx_crse[0];
94 amrex::Real jc_real = (
y - prob_lo_crse[1]) / dx_crse[1];
95 amrex::Real kc_real = (
z - prob_lo_crse[2]) / dx_crse[2];
97 int ic =
static_cast<int>(amrex::Math::floor(ic_real));
98 int jc =
static_cast<int>(amrex::Math::floor(jc_real));
99 int kc =
static_cast<int>(amrex::Math::floor(kc_real));
113 amrex::Real v111 = crse(ic + 1, jc + 1, kc + 1, n);
115 amrex::Real v = v000 * (1 - dx) * (1 - dy) * (1 - dz) +
116 v100 * dx * (1 - dy) * (1 - dz) +
117 v010 * (1 - dx) * dy * (1 - dz) +
118 v110 * dx * dy * (1 - dz) +
119 v001 * (1 - dx) * (1 - dy) * dz +
120 v101 * dx * (1 - dy) * dz +
121 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:86
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:19