Function for computing the strain rates without terrain.
54 Box domain_xy = convert(domain, tbxxy.ixType());
55 Box domain_xz = convert(domain, tbxxz.ixType());
56 Box domain_yz = convert(domain, tbxyz.ixType());
58 const auto&
dom_lo = lbound(domain);
59 const auto&
dom_hi = ubound(domain);
65 xl_v_dir = ( xl_v_dir && (tbxxy.smallEnd(0) == domain_xy.smallEnd(0)) );
70 xh_v_dir = ( xh_v_dir && (tbxxy.bigEnd(0) == domain_xy.bigEnd(0)) );
75 xl_w_dir = ( xl_w_dir && (tbxxz.smallEnd(0) == domain_xz.smallEnd(0)) );
80 xh_w_dir = ( xh_w_dir && (tbxxz.bigEnd(0) == domain_xz.bigEnd(0)) );
86 yl_u_dir = ( yl_u_dir && (tbxxy.smallEnd(1) == domain_xy.smallEnd(1)) );
91 yh_u_dir = ( yh_u_dir && (tbxxy.bigEnd(1) == domain_xy.bigEnd(1)) );
96 yl_w_dir = ( yl_w_dir && (tbxyz.smallEnd(1) == domain_yz.smallEnd(1)) );
101 yh_w_dir = ( yh_w_dir && (tbxyz.bigEnd(1) == domain_yz.bigEnd(1)) );
106 zl_u_dir = ( zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) );
110 zh_u_dir = ( zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2)) );
114 zl_v_dir = ( zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2)) );
118 zh_v_dir = ( zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2)) );
124 Box planexy = tbxxy; planexy.setBig(0, planexy.smallEnd(0) );
128 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
129 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
130 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
131 if (!need_to_test || u(
dom_lo.x,j,k) >= 0.) {
132 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]*mfy
133 + (-(8./3.) * v(i-1,j,k) + 3. * v(i,j,k) - (1./3.) * v(i+1,j,k))*dxInv[0]*mfx );
135 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]*mfy +
136 (v(i, j, k) - v(i-1, j, k))*dxInv[0]*mfx );
142 Box planexy = tbxxy; planexy.setSmall(0, planexy.bigEnd(0) );
146 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
147 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
148 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
149 if (!need_to_test || u(
dom_hi.x+1,j,k) <= 0.) {
150 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]*mfy
151 - (-(8./3.) * v(i,j,k) + 3. * v(i-1,j,k) - (1./3.) * v(i-2,j,k))*dxInv[0]*mfx );
153 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]*mfy +
154 (v(i, j, k) - v(i-1, j, k))*dxInv[0]*mfx );
160 Box planexz = tbxxz; planexz.setBig(0, planexz.smallEnd(0) );
164 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
165 Real mfx = mf_ux(i,j,0);
166 if (!need_to_test || u(
dom_lo.x,j,k) >= 0.) {
167 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j, k-1))*dxInv[2]
168 + (-(8./3.) * w(i-1,j,k) + 3. * w(i,j,k) - (1./3.) * w(i+1,j,k))*dxInv[0]*mfx );
170 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j, k-1))*dxInv[2]
171 + (w(i, j, k) - w(i-1, j, k))*dxInv[0]*mfx );
177 Box planexz = tbxxz; planexz.setSmall(0, planexz.bigEnd(0) );
181 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
182 Real mfx = mf_ux(i,j,0);
183 if (!need_to_test || u(
dom_hi.x+1,j,k) <= 0.) {
184 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j, k-1))*dxInv[2]
185 - (-(8./3.) * w(i,j,k) + 3. * w(i-1,j,k) - (1./3.) * w(i-2,j,k))*dxInv[0]*mfx );
187 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j, k-1))*dxInv[2]
188 + (w(i, j, k) - w(i-1, j, k))*dxInv[0]*mfx );
197 Box planexy = tbxxy; planexy.setBig(1, planexy.smallEnd(1) );
201 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
202 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
203 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
204 if (!need_to_test || v(i,
dom_lo.y,k) >= 0.) {
205 tau12(i,j,k) = 0.5 * ( (-(8./3.) * u(i,j-1,k) + 3. * u(i,j,k) - (1./3.) * u(i,j+1,k))*dxInv[1]*mfy
206 + (v(i, j, k) - v(i-1, j, k))*dxInv[0]*mfx );
208 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]*mfy
209 + (v(i, j, k) - v(i-1, j, k))*dxInv[0]*mfx );
215 Box planexy = tbxxy; planexy.setSmall(1, planexy.bigEnd(1) );
219 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
220 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
221 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
222 if (!need_to_test || v(i,
dom_hi.y+1,k) <= 0.) {
223 tau12(i,j,k) = 0.5 * ( -(-(8./3.) * u(i,j,k) + 3. * u(i,j-1,k) - (1./3.) * u(i,j-2,k))*dxInv[1]*mfy
224 + (v(i, j, k) - v(i-1, j, k))*dxInv[0]*mfx );
226 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]*mfy
227 + (v(i, j, k) - v(i-1, j, k))*dxInv[0]*mfx );
233 Box planeyz = tbxyz; planeyz.setBig(1, planeyz.smallEnd(1) );
237 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
238 Real mfy = mf_vy(i,j,0);
239 if (!need_to_test || v(i,
dom_lo.y,k) >= 0.) {
240 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j, k-1))*dxInv[2]
241 + (-(8./3.) * w(i,j-1,k) + 3. * w(i,j ,k) - (1./3.) * w(i,j+1,k))*dxInv[1]*mfy );
243 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j, k-1))*dxInv[2]
244 + (w(i, j, k) - w(i, j-1, k))*dxInv[1]*mfy );
250 Box planeyz = tbxyz; planeyz.setSmall(1, planeyz.bigEnd(1) );
254 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
255 Real mfy = mf_vy(i,j,0);
256 if (!need_to_test || v(i,
dom_hi.y+1,k) <= 0.) {
257 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j, k-1))*dxInv[2]
258 - (-(8./3.) * w(i,j ,k) + 3. * w(i,j-1,k) - (1./3.) * w(i,j-2,k))*dxInv[1]*mfy );
260 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j, k-1))*dxInv[2]
261 + (w(i, j, k) - w(i, j-1, k))*dxInv[1]*mfy );
270 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2) );
273 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
274 Real mfx = mf_ux(i,j,0);
275 tau13(i,j,k) = 0.5 * ( (-(8./3.) * u(i,j,k-1) + 3. * u(i,j,k) - (1./3.) * u(i,j,k+1))*dxInv[2]
276 + (w(i, j, k) - w(i-1, j, k))*dxInv[0]*mfx );
281 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
284 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
285 Real mfx = mf_ux(i,j,0);
286 tau13(i,j,k) = 0.5 * ( -(-(8./3.) * u(i,j,k) + 3. * u(i,j,k-1) - (1./3.) * u(i,j,k-2))*dxInv[2]
287 + (w(i, j, k) - w(i-1, j, k))*dxInv[0]*mfx );
292 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
295 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
296 Real mfy = mf_vy(i,j,0);
297 tau23(i,j,k) = 0.5 * ( (-(8./3.) * v(i,j,k-1) + 3. * v(i,j,k ) - (1./3.) * v(i,j,k+1))*dxInv[2]
298 + (w(i, j, k) - w(i, j-1, k))*dxInv[1]*mfy );
303 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
306 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
307 Real mfy = mf_vy(i,j,0);
308 tau23(i,j,k) = 0.5 * ( -(-(8./3.) * v(i,j,k ) + 3. * v(i,j,k-1) - (1./3.) * v(i,j,k-2))*dxInv[2]
309 + (w(i, j, k) - w(i, j-1, k))*dxInv[1]*mfy );
316 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
317 Real mfx = mf_mx(i,j,0);
318 Real mfy = mf_my(i,j,0);
319 tau11(i,j,k) = (u(i+1, j , k ) - u(i, j, k))*dxInv[0]*mfx;
320 tau22(i,j,k) = (v(i , j+1, k ) - v(i, j, k))*dxInv[1]*mfy;
321 tau33(i,j,k) = (w(i , j , k+1) - w(i, j, k))*dxInv[2];
325 ParallelFor(tbxxy,tbxxz,tbxyz,
326 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
327 Real mfy = 0.5 * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
328 Real mfx = 0.5 * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
329 tau12(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j-1, k))*dxInv[1]*mfy
330 + (v(i, j, k) - v(i-1, j, k))*dxInv[0]*mfx );
332 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
333 Real mfx = mf_ux(i,j,0);
334 tau13(i,j,k) = 0.5 * ( (u(i, j, k) - u(i, j, k-1))*dxInv[2]
335 + (w(i, j, k) - w(i-1, j, k))*dxInv[0]*mfx );
337 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
338 Real mfy = mf_vy(i,j,0);
339 tau23(i,j,k) = 0.5 * ( (v(i, j, k) - v(i, j, k-1))*dxInv[2]
340 + (w(i, j, k) - w(i, j-1, k))*dxInv[1]*mfy );
344 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
@ tau12
Definition: ERF_DataStruct.H:30
@ tau23
Definition: ERF_DataStruct.H:30
@ tau33
Definition: ERF_DataStruct.H:30
@ tau22
Definition: ERF_DataStruct.H:30
@ tau11
Definition: ERF_DataStruct.H:30
@ tau13
Definition: ERF_DataStruct.H:30
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real ComputeSmnSmn(int &i, int &j, int &k, const amrex::Array4< amrex::Real const > &tau11, const amrex::Array4< amrex::Real const > &tau22, const amrex::Array4< amrex::Real const > &tau33, const amrex::Array4< amrex::Real const > &tau12, const amrex::Array4< amrex::Real const > &tau13, const amrex::Array4< amrex::Real const > &tau23)
Definition: ERF_EddyViscosity.H:63
const auto & dom_hi
Definition: ERF_SetupVertDiff.H:2
const auto & dom_lo
Definition: ERF_SetupVertDiff.H:1
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ zvel_bc
Definition: ERF_IndexDefines.H:89
@ yvel_bc
Definition: ERF_IndexDefines.H:88
@ xvel_bc
Definition: ERF_IndexDefines.H:87
@ ext_dir_ingested
Definition: ERF_IndexDefines.H:212
@ ext_dir
Definition: ERF_IndexDefines.H:209
@ ext_dir_upwind
Definition: ERF_IndexDefines.H:217