1 #ifndef ERF_INTERPOLATE_H_
2 #define ERF_INTERPOLATE_H_
33 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(
35 "interpolatedVal only supports Centered_2nd, Upwind_3rd, Centered_4th, Upwind_5th, and Centered_6th");
39 myInterpolatedVal =
myhalf * avg1;
50 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(
52 "interpolatedVal only supports Centered_2nd, Upwind_3rd, Centered_4th, Upwind_5th, and Centered_6th");
54 return myInterpolatedVal;
60 InterpolateInX (
int i,
int j,
int k,
const amrex::Array4<const amrex::Real>& qty,
65 return myhalf * (qty(i,j,k,qty_index) + qty(i-1,j,k,qty_index));
75 avg1 = (qty(i, j, k, qty_index) + qty(i-1, j, k, qty_index));
76 diff1 = (qty(i, j, k, qty_index) - qty(i-1, j, k, qty_index));
77 avg2 = (qty(i+1, j, k, qty_index) + qty(i-2, j, k, qty_index));
78 diff2 = (qty(i+1, j, k, qty_index) - qty(i-2, j, k, qty_index));
81 avg3 = (qty(i+2, j, k, qty_index) + qty(i-3, j, k, qty_index));
82 diff3 = (qty(i+2, j, k, qty_index) - qty(i-3, j, k, qty_index));
84 return interpolatedVal(avg1,avg2,avg3,diff1,diff2,diff3,scaled_upw,adv_type);
91 InterpolateInY (
int i,
int j,
int k,
const amrex::Array4<const amrex::Real>& qty,
95 return myhalf * (qty(i,j,k,qty_index) + qty(i,j-1,k,qty_index));
105 avg1 = (qty(i, j , k, qty_index) + qty(i, j-1, k, qty_index));
106 diff1 = (qty(i, j , k, qty_index) - qty(i, j-1, k, qty_index));
107 avg2 = (qty(i, j+1, k, qty_index) + qty(i, j-2, k, qty_index));
108 diff2 = (qty(i, j+1, k, qty_index) - qty(i, j-2, k, qty_index));
111 avg3 = (qty(i, j+2, k, qty_index) + qty(i, j-3, k, qty_index));
112 diff3 = (qty(i, j+2, k, qty_index) - qty(i, j-3, k, qty_index));
114 return interpolatedVal(avg1,avg2,avg3,diff1,diff2,diff3,scaled_upw,adv_type);
121 InterpolateInZ (
int i,
int j,
int k,
const amrex::Array4<const amrex::Real>& qty,
125 return myhalf * (qty(i,j,k,qty_index) + qty(i,j,k-1,qty_index));
134 avg1 = (qty(i, j, k , qty_index) + qty(i, j, k-1, qty_index));
135 diff1 = (qty(i, j, k , qty_index) - qty(i, j, k-1, qty_index));
136 avg2 = (qty(i, j, k+1, qty_index) + qty(i, j, k-2, qty_index));
137 diff2 = (qty(i, j, k+1, qty_index) - qty(i, j, k-2, qty_index));
140 avg3 = (qty(i, j, k+2, qty_index) + qty(i, j, k-3, qty_index));
141 diff3 = (qty(i, j, k+2, qty_index) - qty(i, j, k-3, qty_index));
143 return interpolatedVal(avg1,avg2,avg3,diff1,diff2,diff3,scaled_upw,adv_type);
151 const amrex::Array4<const amrex::Real>& qty,
153 const AdvType adv_type,
const amrex::Array4<const amrex::Real>& r0_arr)
165 avg1 = (qty(i , j, k, qty_index) + qty(i-1, j, k, qty_index));
166 avg1 -= (r0_arr(i,j,k) + r0_arr(i-1,j,k));
167 diff1 = (qty(i , j, k, qty_index) - qty(i-1, j, k, qty_index));
168 diff1 -= (r0_arr(i,j,k) - r0_arr(i-1,j,k));
171 avg2 = (qty(i+1, j, k, qty_index) + qty(i-2, j, k, qty_index));
172 avg2 -= (r0_arr(i+1,j,k) + r0_arr(i-2,j,k));
173 diff2 = (qty(i+1, j, k, qty_index) - qty(i-2, j, k, qty_index));
174 diff2 -= (r0_arr(i+1,j,k) - r0_arr(i-2,j,k));
178 avg3 = (qty(i+2, j, k, qty_index) + qty(i-3, j, k, qty_index));
179 avg3 -= (r0_arr(i+2,j,k) + r0_arr(i-3,j,k));
180 diff3 = (qty(i+2, j, k, qty_index) - qty(i-3, j, k, qty_index));
181 diff3 -= (r0_arr(i+2,j,k) - r0_arr(i-3,j,k));
184 avg1 = (qty(i, j , k, qty_index) + qty(i, j-1, k, qty_index));
185 avg1 -= (r0_arr(i,j,k) + r0_arr(i,j-1,k));
186 diff1 = (qty(i, j , k, qty_index) - qty(i, j-1, k, qty_index));
187 diff1 -= (r0_arr(i,j,k) - r0_arr(i,j-1,k));
190 avg2 = (qty(i, j+1, k, qty_index) + qty(i, j-2, k, qty_index));
191 avg2 -= (r0_arr(i,j+1,k) + r0_arr(i,j-2,k));
192 diff2 = (qty(i, j+1, k, qty_index) - qty(i, j-2, k, qty_index));
193 diff2 -= (r0_arr(i,j+1,k) - r0_arr(i,j-2,k));
197 avg3 = (qty(i, j+2, k, qty_index) + qty(i, j-3, k, qty_index));
198 avg3 -= (r0_arr(i,j+2,k) + r0_arr(i,j-3,k));
199 diff3 = (qty(i, j+2, k, qty_index) - qty(i, j-3, k, qty_index));
200 diff3 -= (r0_arr(i,j+2,k) - r0_arr(i,j-3,k));
203 avg1 = (qty(i, j, k , qty_index) + qty(i, j, k-1, qty_index));
204 diff1 = (qty(i, j, k , qty_index) - qty(i, j, k-1, qty_index));
205 avg1 -= (r0_arr(i,j,k) + r0_arr(i,j,k-1));
206 diff1 -= (r0_arr(i,j,k) - r0_arr(i,j,k-1));
210 avg2 = (qty(i, j, k+1, qty_index) + qty(i, j, k-2, qty_index));
211 diff2 = (qty(i, j, k+1, qty_index) - qty(i, j, k-2, qty_index));
212 avg2 -= (r0_arr(i,j,k+1) + r0_arr(i,j,k-2));
213 diff2 -= (r0_arr(i,j,k+1) - r0_arr(i,j,k-2));
217 avg3 = (qty(i, j, k+2, qty_index) + qty(i, j, k-3, qty_index));
218 diff3 = (qty(i, j, k+2, qty_index) - qty(i, j, k-3, qty_index));
219 avg3 -= (r0_arr(i,j,k+2) + r0_arr(i,j,k-3));
220 diff3 -= (r0_arr(i,j,k+2) - r0_arr(i,j,k-3));
224 return interpolatedVal(avg1,avg2,avg3,diff1,diff2,diff3,scaled_upw,adv_type);
232 const amrex::Array4<const amrex::Real>& r0_arr)
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:11
Coord
Definition: ERF_DataStruct.H:92
#define Rho_comp
Definition: ERF_IndexDefines.H:36
AdvType
Definition: ERF_IndexDefines.H:255
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real InterpolateInZ(int i, int j, int k, const amrex::Array4< const amrex::Real > &qty, int qty_index, amrex::Real upw, const AdvType adv_type)
Definition: ERF_Interpolation.H:121
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool isSupportedInterpolationAdvType(const AdvType adv_type) noexcept
Definition: ERF_Interpolation.H:17
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real InterpolatePertFromCell(int i, int j, int k, const amrex::Array4< const amrex::Real > &qty, int qty_index, amrex::Real upw, Coord coordDir, const AdvType adv_type, const amrex::Array4< const amrex::Real > &r0_arr)
Definition: ERF_Interpolation.H:150
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real InterpolateDensityPertFromCellToFace(int i, int j, int k, const amrex::Array4< const amrex::Real > &cons_in, amrex::Real upw, Coord coordDir, const AdvType adv_type, const amrex::Array4< const amrex::Real > &r0_arr)
Definition: ERF_Interpolation.H:230
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real interpolatedVal(amrex::Real avg1, amrex::Real avg2, amrex::Real avg3, amrex::Real diff1, amrex::Real diff2, amrex::Real diff3, amrex::Real scaled_upw, const AdvType adv_type)
Definition: ERF_Interpolation.H:29
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real InterpolateInY(int i, int j, int k, const amrex::Array4< const amrex::Real > &qty, int qty_index, amrex::Real upw, const AdvType adv_type)
Definition: ERF_Interpolation.H:91
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real InterpolateInX(int i, int j, int k, const amrex::Array4< const amrex::Real > &qty, int qty_index, amrex::Real upw, const AdvType adv_type)
Definition: ERF_Interpolation.H:60
amrex::Real Real
Definition: ERF_ShocInterface.H:19