1 #ifndef ERF_INTERPOLATE_H_
2 #define ERF_INTERPOLATE_H_
17 amrex::Real diff1, amrex::Real diff2, amrex::Real diff3,
18 amrex::Real scaled_upw,
const AdvType adv_type)
20 amrex::Real myInterpolatedVal(0.);
22 myInterpolatedVal = 0.5 * avg1;
24 myInterpolatedVal = (7.0/12.0)*avg1 -(1.0/12.0)*avg2 + (scaled_upw/12.0)*(diff2 - 3.0*diff1);
26 myInterpolatedVal = (7.0/12.0)*avg1 -(1.0/12.0)*avg2;
28 myInterpolatedVal = (37.0/60.0)*avg1 -(2.0/15.0)*avg2 +(1.0/60.0)*avg3
29 -(scaled_upw/60.0)*(diff3 - 5.0*diff2 + 10.0*diff1);
31 myInterpolatedVal = (37.0/60.0)*avg1 -(2.0/15.0)*avg2 +(1.0/60.0)*avg3;
33 return myInterpolatedVal;
39 InterpolateInX (
int i,
int j,
int k,
const amrex::Array4<const amrex::Real>& qty,
40 int qty_index, amrex::Real upw,
const AdvType adv_type)
44 return 0.5 * (qty(i,j,k,qty_index) + qty(i-1,j,k,qty_index));
47 amrex::Real avg1 = 0.; amrex::Real avg2 = 0.; amrex::Real avg3 = 0.;
48 amrex::Real diff1 = 0.; amrex::Real diff2 = 0.; amrex::Real diff3 = 0.;
49 amrex::Real scaled_upw = 0.;
53 scaled_upw = (upw > 0) ? 1. : -1.;
55 avg1 = (qty(i, j, k, qty_index) + qty(i-1, j, k, qty_index));
56 diff1 = (qty(i, j, k, qty_index) - qty(i-1, j, k, qty_index));
57 avg2 = (qty(i+1, j, k, qty_index) + qty(i-2, j, k, qty_index));
58 diff2 = (qty(i+1, j, k, qty_index) - qty(i-2, j, k, qty_index));
61 avg3 = (qty(i+2, j, k, qty_index) + qty(i-3, j, k, qty_index));
62 diff3 = (qty(i+2, j, k, qty_index) - qty(i-3, j, k, qty_index));
64 return interpolatedVal(avg1,avg2,avg3,diff1,diff2,diff3,scaled_upw,adv_type);
71 InterpolateInY (
int i,
int j,
int k,
const amrex::Array4<const amrex::Real>& qty,
72 int qty_index, amrex::Real upw,
const AdvType adv_type)
75 return 0.5 * (qty(i,j,k,qty_index) + qty(i,j-1,k,qty_index));
78 amrex::Real avg1; amrex::Real avg2; amrex::Real avg3 = 0.;
79 amrex::Real diff1; amrex::Real diff2; amrex::Real diff3 = 0.;
80 amrex::Real scaled_upw = 0.;
84 scaled_upw = (upw > 0) ? 1. : -1.;
86 avg1 = (qty(i, j , k, qty_index) + qty(i, j-1, k, qty_index));
87 diff1 = (qty(i, j , k, qty_index) - qty(i, j-1, k, qty_index));
88 avg2 = (qty(i, j+1, k, qty_index) + qty(i, j-2, k, qty_index));
89 diff2 = (qty(i, j+1, k, qty_index) - qty(i, j-2, k, qty_index));
92 avg3 = (qty(i, j+2, k, qty_index) + qty(i, j-3, k, qty_index));
93 diff3 = (qty(i, j+2, k, qty_index) - qty(i, j-3, k, qty_index));
95 return interpolatedVal(avg1,avg2,avg3,diff1,diff2,diff3,scaled_upw,adv_type);
102 InterpolateInZ (
int i,
int j,
int k,
const amrex::Array4<const amrex::Real>& qty,
103 int qty_index, amrex::Real upw,
const AdvType adv_type)
106 return 0.5 * (qty(i,j,k,qty_index) + qty(i,j,k-1,qty_index));
109 amrex::Real avg1 = 0.; amrex::Real avg2 = 0.; amrex::Real avg3 = 0.;
110 amrex::Real diff1 = 0.; amrex::Real diff2 = 0.; amrex::Real diff3 = 0.;
111 amrex::Real scaled_upw = 0.;
114 scaled_upw = (upw > 0) ? 1. : -1.;
116 avg1 = (qty(i, j, k , qty_index) + qty(i, j, k-1, qty_index));
117 diff1 = (qty(i, j, k , qty_index) - qty(i, j, k-1, qty_index));
118 avg2 = (qty(i, j, k+1, qty_index) + qty(i, j, k-2, qty_index));
119 diff2 = (qty(i, j, k+1, qty_index) - qty(i, j, k-2, qty_index));
122 avg3 = (qty(i, j, k+2, qty_index) + qty(i, j, k-3, qty_index));
123 diff3 = (qty(i, j, k+2, qty_index) - qty(i, j, k-3, qty_index));
125 return interpolatedVal(avg1,avg2,avg3,diff1,diff2,diff3,scaled_upw,adv_type);
133 const amrex::Array4<const amrex::Real>& qty,
134 int qty_index, amrex::Real upw,
Coord coordDir,
135 const AdvType adv_type,
const amrex::Array4<const amrex::Real>& r0_arr)
137 amrex::Real avg1 = 0.; amrex::Real avg2 = 0.; amrex::Real avg3 = 0.;
138 amrex::Real diff1 = 0.; amrex::Real diff2 = 0.; amrex::Real diff3 = 0.;
139 amrex::Real scaled_upw = 0.;
143 scaled_upw = upw / std::abs(upw);
146 avg1 = (qty(i , j, k, qty_index) + qty(i-1, j, k, qty_index));
147 avg1 -= (r0_arr(i,j,k) + r0_arr(i-1,j,k));
148 diff1 = (qty(i , j, k, qty_index) - qty(i-1, j, k, qty_index));
151 avg2 = (qty(i+1, j, k, qty_index) + qty(i-2, j, k, qty_index));
152 avg2 -= (r0_arr(i+1,j,k) + r0_arr(i-2,j,k));
153 diff2 = (qty(i+1, j, k, qty_index) - qty(i-2, j, k, qty_index));
157 avg3 = (qty(i+2, j, k, qty_index) + qty(i-3, j, k, qty_index));
158 avg3 -= (r0_arr(i+2,j,k) + r0_arr(i-3,j,k));
159 diff3 = (qty(i+2, j, k, qty_index) - qty(i-3, j, k, qty_index));
162 avg1 = (qty(i, j , k, qty_index) + qty(i, j-1, k, qty_index));
163 avg1 -= (r0_arr(i,j,k) + r0_arr(i,j-1,k));
164 diff1 = (qty(i, j , k, qty_index) - qty(i, j-1, k, qty_index));
167 avg2 = (qty(i, j+1, k, qty_index) + qty(i, j-2, k, qty_index));
168 avg2 -= (r0_arr(i,j+1,k) + r0_arr(i,j-2,k));
169 diff2 = (qty(i, j+1, k, qty_index) - qty(i, j-2, k, qty_index));
173 avg3 = (qty(i, j+2, k, qty_index) + qty(i, j-3, k, qty_index));
174 avg3 -= (r0_arr(i,j+2,k) + r0_arr(i,j-3,k));
175 diff3 = (qty(i, j+2, k, qty_index) - qty(i, j-3, k, qty_index));
178 avg1 = (qty(i, j, k , qty_index) + qty(i, j, k-1, qty_index));
179 diff1 = (qty(i, j, k , qty_index) - qty(i, j, k-1, qty_index));
180 avg1 -= (r0_arr(i,j,k) + r0_arr(i,j,k-1));
181 diff1 -= (r0_arr(i,j,k) - r0_arr(i,j,k-1));
185 avg2 = (qty(i, j, k+1, qty_index) + qty(i, j, k-2, qty_index));
186 diff2 = (qty(i, j, k+1, qty_index) - qty(i, j, k-2, qty_index));
187 avg2 -= (r0_arr(i,j,k+1) + r0_arr(i,j,k-2));
188 diff2 -= (r0_arr(i,j,k+1) - r0_arr(i,j,k-2));
192 avg3 = (qty(i, j, k+2, qty_index) + qty(i, j, k-3, qty_index));
193 diff3 = (qty(i, j, k+2, qty_index) - qty(i, j, k-3, qty_index));
194 avg3 -= (r0_arr(i,j,k+2) + r0_arr(i,j,k-3));
195 diff3 -= (r0_arr(i,j,k+2) - r0_arr(i,j,k-3));
199 return interpolatedVal(avg1,avg2,avg3,diff1,diff2,diff3,scaled_upw,adv_type);
206 amrex::Real upw,
Coord coordDir,
const AdvType adv_type,
207 const amrex::Array4<const amrex::Real>& r0_arr)
Coord
Definition: ERF_DataStruct.H:60
#define Rho_comp
Definition: ERF_IndexDefines.H:36
AdvType
Definition: ERF_IndexDefines.H:191
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:102
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:132
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:205
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:16
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:71
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:39