ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_ComputeStress_EB.cpp File Reference
#include <ERF_Diffusion.H>
Include dependency graph for ERF_ComputeStress_EB.cpp:

Functions

void ComputeStressConsVisc_EB (Box bxcc, Box tbxxy, Box tbxxz, Box tbxyz, Real mu_eff, const Array4< const Real > &cell_data, Array4< Real > &tau11, Array4< Real > &tau22, Array4< Real > &tau33, Array4< Real > &tau12, Array4< Real > &tau13, Array4< Real > &tau23, const Array4< const Real > &er_arr, Array4< const Real > &vfrac, Array4< Real > &tau13i, Array4< Real > &tau23i, Array4< Real > &tau33i)
 
void ComputeStressVarVisc_EB (Box bxcc, Box tbxxy, Box tbxxz, Box tbxyz, Real mu_eff, const Array4< const Real > &mu_turb, const Array4< const Real > &cell_data, Array4< Real > &tau11, Array4< Real > &tau22, Array4< Real > &tau33, Array4< Real > &tau12, Array4< Real > &tau13, Array4< Real > &tau23, const Array4< const Real > &er_arr, Array4< const Real > &vfrac, Array4< Real > &tau13i, Array4< Real > &tau23i, Array4< Real > &tau33i)
 

Function Documentation

◆ ComputeStressConsVisc_EB()

void ComputeStressConsVisc_EB ( Box  bxcc,
Box  tbxxy,
Box  tbxxz,
Box  tbxyz,
Real  mu_eff,
const Array4< const Real > &  cell_data,
Array4< Real > &  tau11,
Array4< Real > &  tau22,
Array4< Real > &  tau33,
Array4< Real > &  tau12,
Array4< Real > &  tau13,
Array4< Real > &  tau23,
const Array4< const Real > &  er_arr,
Array4< const Real > &  vfrac,
Array4< Real > &  tau13i,
Array4< Real > &  tau23i,
Array4< Real > &  tau33i 
)

Function for computing the stress with constant viscosity for EB.

Parameters
[in]bxcccell center box for tau_ii
[in]tbxxynodal xy box for tau_12
[in]tbxxznodal xz box for tau_13
[in]tbxyznodal yz box for tau_23
[in]mu_effconstant molecular viscosity
[in]cell_datato access rho if ConstantAlpha
[in,out]tau1111 strain -> stress
[in,out]tau2222 strain -> stress
[in,out]tau3333 strain -> stress
[in,out]tau1212 strain -> stress
[in,out]tau1313 strain -> stress
[in,out]tau2323 strain -> stress
[in]er_arrexpansion rate
[in]vfracvolume fractions
[in,out]tau13icontribution to stress from du/dz
[in,out]tau23icontribution to stress from dv/dz
[in,out]tau33icontribution to stress from dw/dz
36 {
37  Real OneThird = (one/three);
38 
39  // NOTE: mu_eff includes factor of 2
40 
41  if (cell_data)
42  // constant alpha (stored in mu_eff)
43  {
44  // Cell centered strains
45  ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
46  {
47  if (vfrac(i,j,k) > zero) {
48  Real rhoAlpha = cell_data(i, j, k, Rho_comp) * mu_eff;
49  if (tau33i) tau33i(i,j,k) = -rhoAlpha * tau33(i,j,k);
50  tau11(i,j,k) = -rhoAlpha * ( tau11(i,j,k) - OneThird*er_arr(i,j,k) );
51  tau22(i,j,k) = -rhoAlpha * ( tau22(i,j,k) - OneThird*er_arr(i,j,k) );
52  tau33(i,j,k) = -rhoAlpha * ( tau33(i,j,k) - OneThird*er_arr(i,j,k) );
53  } else {
54  if (tau33i) tau33i(i,j,k) = zero;
55  tau11(i,j,k) = zero;
56  tau22(i,j,k) = zero;
57  tau33(i,j,k) = zero;
58  }
59  });
60 
61  // Off-diagonal strains
62  ParallelFor(tbxxy,tbxxz,tbxyz,
63  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
64  Real vf_im1j = vfrac(i-1,j,k);
65  Real vf_ij = vfrac(i,j,k);
66  Real vf_im1jm1 = vfrac(i-1,j-1,k);
67  Real vf_ijm1 = vfrac(i,j-1,k);
68  Real vol_sum = vf_im1j + vf_ij + vf_im1jm1 + vf_ijm1;
69  Real rho_bar = zero;
70  if (vol_sum >= four) {
71  rho_bar = fourth*( cell_data(i-1, j , k, Rho_comp) + cell_data(i , j , k, Rho_comp)
72  + cell_data(i-1, j-1, k, Rho_comp) + cell_data(i , j-1, k, Rho_comp) );
73  } else if (vol_sum > zero) {
74  rho_bar = ( (vf_im1j > zero ? vf_im1j * cell_data(i-1, j , k, Rho_comp) : zero)
75  + (vf_ij > zero ? vf_ij * cell_data(i , j , k, Rho_comp) : zero)
76  + (vf_im1jm1 > zero ? vf_im1jm1 * cell_data(i-1, j-1, k, Rho_comp) : zero)
77  + (vf_ijm1 > zero ? vf_ijm1 * cell_data(i , j-1, k, Rho_comp) : zero) ) / vol_sum;
78  }
79  tau12(i,j,k) *= -rho_bar * mu_eff;
80  },
81  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
82  Real vf_im1jk = vfrac(i-1,j,k);
83  Real vf_ijk = vfrac(i,j,k);
84  Real vf_im1jkm1 = vfrac(i-1,j,k-1);
85  Real vf_ijkm1 = vfrac(i,j,k-1);
86  Real vol_sum = vf_im1jk + vf_ijk + vf_im1jkm1 + vf_ijkm1;
87  Real rho_bar = zero;
88  if (vol_sum >= four) {
89  rho_bar = fourth*( cell_data(i-1, j, k , Rho_comp) + cell_data(i , j, k , Rho_comp)
90  + cell_data(i-1, j, k-1, Rho_comp) + cell_data(i , j, k-1, Rho_comp) );
91  } else if (vol_sum > zero) {
92  rho_bar = ( (vf_im1jk > zero ? vf_im1jk * cell_data(i-1, j, k , Rho_comp) : zero)
93  + (vf_ijk > zero ? vf_ijk * cell_data(i , j, k , Rho_comp) : zero)
94  + (vf_im1jkm1 > zero ? vf_im1jkm1 * cell_data(i-1, j, k-1, Rho_comp) : zero)
95  + (vf_ijkm1 > zero ? vf_ijkm1 * cell_data(i , j, k-1, Rho_comp) : zero) ) / vol_sum;
96  }
97  tau13(i,j,k) *= -rho_bar * mu_eff;
98 
99  if (tau13i) tau13i(i,j,k) *= -rho_bar * mu_eff;
100  },
101  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
102  Real vf_ijm1k = vfrac(i,j-1,k);
103  Real vf_ijk = vfrac(i,j,k);
104  Real vf_ijm1km1 = vfrac(i,j-1,k-1);
105  Real vf_ijkm1 = vfrac(i,j,k-1);
106  Real vol_sum = vf_ijm1k + vf_ijk + vf_ijm1km1 + vf_ijkm1;
107  Real rho_bar = zero;
108  if (vol_sum >= four) {
109  rho_bar = fourth*( cell_data(i, j-1, k , Rho_comp) + cell_data(i, j , k , Rho_comp)
110  + cell_data(i, j-1, k-1, Rho_comp) + cell_data(i, j , k-1, Rho_comp) );
111  } else if (vol_sum > zero) {
112  rho_bar = ( (vf_ijm1k > zero ? vf_ijm1k * cell_data(i, j-1, k , Rho_comp) : zero)
113  + (vf_ijk > zero ? vf_ijk * cell_data(i, j , k , Rho_comp) : zero)
114  + (vf_ijm1km1 > zero ? vf_ijm1km1 * cell_data(i, j-1, k-1, Rho_comp) : zero)
115  + (vf_ijkm1 > zero ? vf_ijkm1 * cell_data(i, j , k-1, Rho_comp) : zero) ) / vol_sum;
116  }
117  tau23(i,j,k) *= -rho_bar * mu_eff;
118 
119  if (tau23i) tau23i(i,j,k) *= -rho_bar * mu_eff;
120  });
121  }
122  else
123  // constant mu_eff
124  {
125  // Cell centered strains
126  ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
127  {
128  if (tau33i) tau33i(i,j,k) = -mu_eff * tau33(i,j,k);
129  tau11(i,j,k) = -mu_eff * ( tau11(i,j,k) - OneThird*er_arr(i,j,k) );
130  tau22(i,j,k) = -mu_eff * ( tau22(i,j,k) - OneThird*er_arr(i,j,k) );
131  tau33(i,j,k) = -mu_eff * ( tau33(i,j,k) - OneThird*er_arr(i,j,k) );
132  });
133 
134  // Off-diagonal strains
135  ParallelFor(tbxxy,tbxxz,tbxyz,
136  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
137  tau12(i,j,k) *= -mu_eff;
138  },
139  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
140  tau13(i,j,k) *= -mu_eff;
141 
142  if (tau13i) tau13i(i,j,k) *= -mu_eff;
143  },
144  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
145  tau23(i,j,k) *= -mu_eff;
146 
147  if (tau23i) tau23i(i,j,k) *= -mu_eff;
148  });
149  }
150 }
@ tau12
Definition: ERF_DataStruct.H:40
@ tau23
Definition: ERF_DataStruct.H:40
@ tau33
Definition: ERF_DataStruct.H:40
@ tau22
Definition: ERF_DataStruct.H:40
@ tau11
Definition: ERF_DataStruct.H:40
@ tau13
Definition: ERF_DataStruct.H:40
#define Rho_comp
Definition: ERF_IndexDefines.H:39
ParallelFor(fab_box, [=] AMREX_GPU_DEVICE(int i, int j, int k) { qrcuten_arr(i, j, k)=Real(0);qscuten_arr(i, j, k)=Real(0);qicuten_arr(i, j, k)=Real(0);})
constexpr amrex::Real three
Definition: ERF_NumericalConstants.H:32
constexpr amrex::Real four
Definition: ERF_NumericalConstants.H:33
constexpr amrex::Real one
Definition: ERF_NumericalConstants.H:30
constexpr amrex::Real fourth
Definition: ERF_NumericalConstants.H:35
constexpr amrex::Real zero
Definition: ERF_NumericalConstants.H:29
amrex::Real Real
Definition: ERF_ShocInterface.H:19

Referenced by erf_make_tau_terms().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputeStressVarVisc_EB()

void ComputeStressVarVisc_EB ( Box  bxcc,
Box  tbxxy,
Box  tbxxz,
Box  tbxyz,
Real  mu_eff,
const Array4< const Real > &  mu_turb,
const Array4< const Real > &  cell_data,
Array4< Real > &  tau11,
Array4< Real > &  tau22,
Array4< Real > &  tau33,
Array4< Real > &  tau12,
Array4< Real > &  tau13,
Array4< Real > &  tau23,
const Array4< const Real > &  er_arr,
Array4< const Real > &  vfrac,
Array4< Real > &  tau13i,
Array4< Real > &  tau23i,
Array4< Real > &  tau33i 
)

Function for computing the stress with variable viscosity for EB. rho_bar at off-diagonal locations uses vfrac-weighted averaging as in ComputeStressConsVisc_EB; mu_turb is averaged with the same vfrac weights.

Parameters
[in]bxcccell center box for tau_ii
[in]tbxxynodal xy box for tau_12
[in]tbxxznodal xz box for tau_13
[in]tbxyznodal yz box for tau_23
[in]mu_effconstant molecular viscosity
[in]mu_turbturbulent viscosity (cell-centered)
[in]cell_datato access rho if ConstantAlpha
[in,out]tau1111 strain -> stress
[in,out]tau2222 strain -> stress
[in,out]tau3333 strain -> stress
[in,out]tau1212 strain -> stress
[in,out]tau1313 strain -> stress
[in,out]tau2323 strain -> stress
[in]er_arrexpansion rate
[in]vfracvolume fractions
[in,out]tau13icontribution to stress from du/dz
[in,out]tau23icontribution to stress from dv/dz
[in,out]tau33icontribution to stress from dw/dz
187 {
188  Real OneThird = (one/three);
189 
190  // NOTE: mu_eff includes factor of 2
191 
192  if (cell_data)
193  // constant alpha (stored in mu_eff)
194  {
195  // Cell centered strains (no EB correction needed — cell-centered quantities)
196  ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
197  if (vfrac(i,j,k) > zero) {
198  Real rhoAlpha = cell_data(i, j, k, Rho_comp) * mu_eff;
199  Real mu_11 = rhoAlpha + two * mu_turb(i, j, k, EddyDiff::Mom_h);
200  Real mu_22 = mu_11;
201  Real mu_33 = rhoAlpha + two * mu_turb(i, j, k, EddyDiff::Mom_v);
202  if (tau33i) tau33i(i,j,k) = -mu_33 * tau33(i,j,k);
203  tau11(i,j,k) = -mu_11 * ( tau11(i,j,k) - OneThird*er_arr(i,j,k) );
204  tau22(i,j,k) = -mu_22 * ( tau22(i,j,k) - OneThird*er_arr(i,j,k) );
205  tau33(i,j,k) = -mu_33 * ( tau33(i,j,k) - OneThird*er_arr(i,j,k) );
206  } else {
207  if (tau33i) tau33i(i,j,k) = zero;
208  tau11(i,j,k) = zero;
209  tau22(i,j,k) = zero;
210  tau33(i,j,k) = zero;
211  }
212  });
213 
214  // Off-diagonal strains: vfrac-weighted rho_bar and mu_bar
215  ParallelFor(tbxxy,tbxxz,tbxyz,
216  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
217  Real vf_im1j = vfrac(i-1,j,k);
218  Real vf_ij = vfrac(i,j,k);
219  Real vf_im1jm1 = vfrac(i-1,j-1,k);
220  Real vf_ijm1 = vfrac(i,j-1,k);
221  Real vol_sum = vf_im1j + vf_ij + vf_im1jm1 + vf_ijm1;
222  Real rho_bar = zero, mu_bar = zero;
223  if (vol_sum >= four) {
224  rho_bar = fourth*( cell_data(i-1, j , k, Rho_comp) + cell_data(i , j , k, Rho_comp)
225  + cell_data(i-1, j-1, k, Rho_comp) + cell_data(i , j-1, k, Rho_comp) );
226  mu_bar = fourth*( mu_turb(i-1, j , k, EddyDiff::Mom_h) + mu_turb(i , j , k, EddyDiff::Mom_h)
227  + mu_turb(i-1, j-1, k, EddyDiff::Mom_h) + mu_turb(i , j-1, k, EddyDiff::Mom_h) );
228  } else if (vol_sum > zero) {
229  rho_bar = ( (vf_im1j > zero ? vf_im1j * cell_data(i-1, j , k, Rho_comp) : zero)
230  + (vf_ij > zero ? vf_ij * cell_data(i , j , k, Rho_comp) : zero)
231  + (vf_im1jm1 > zero ? vf_im1jm1 * cell_data(i-1, j-1, k, Rho_comp) : zero)
232  + (vf_ijm1 > zero ? vf_ijm1 * cell_data(i , j-1, k, Rho_comp) : zero) ) / vol_sum;
233  mu_bar = ( (vf_im1j > zero ? vf_im1j * mu_turb(i-1, j , k, EddyDiff::Mom_h) : zero)
234  + (vf_ij > zero ? vf_ij * mu_turb(i , j , k, EddyDiff::Mom_h) : zero)
235  + (vf_im1jm1 > zero ? vf_im1jm1 * mu_turb(i-1, j-1, k, EddyDiff::Mom_h) : zero)
236  + (vf_ijm1 > zero ? vf_ijm1 * mu_turb(i , j-1, k, EddyDiff::Mom_h) : zero) ) / vol_sum;
237  }
238  Real mu_12 = rho_bar*mu_eff + two*mu_bar;
239  tau12(i,j,k) *= -mu_12;
240  },
241  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
242  Real vf_im1jk = vfrac(i-1,j,k);
243  Real vf_ijk = vfrac(i,j,k);
244  Real vf_im1jkm1 = vfrac(i-1,j,k-1);
245  Real vf_ijkm1 = vfrac(i,j,k-1);
246  Real vol_sum = vf_im1jk + vf_ijk + vf_im1jkm1 + vf_ijkm1;
247  Real rho_bar = zero, mu_bar = zero;
248  if (vol_sum >= four) {
249  rho_bar = fourth*( cell_data(i-1, j, k , Rho_comp) + cell_data(i , j, k , Rho_comp)
250  + cell_data(i-1, j, k-1, Rho_comp) + cell_data(i , j, k-1, Rho_comp) );
251  mu_bar = fourth*( mu_turb(i-1, j, k , EddyDiff::Mom_v) + mu_turb(i , j, k , EddyDiff::Mom_v)
252  + mu_turb(i-1, j, k-1, EddyDiff::Mom_v) + mu_turb(i , j, k-1, EddyDiff::Mom_v) );
253  } else if (vol_sum > zero) {
254  rho_bar = ( (vf_im1jk > zero ? vf_im1jk * cell_data(i-1, j, k , Rho_comp) : zero)
255  + (vf_ijk > zero ? vf_ijk * cell_data(i , j, k , Rho_comp) : zero)
256  + (vf_im1jkm1 > zero ? vf_im1jkm1 * cell_data(i-1, j, k-1, Rho_comp) : zero)
257  + (vf_ijkm1 > zero ? vf_ijkm1 * cell_data(i , j, k-1, Rho_comp) : zero) ) / vol_sum;
258  mu_bar = ( (vf_im1jk > zero ? vf_im1jk * mu_turb(i-1, j, k , EddyDiff::Mom_v) : zero)
259  + (vf_ijk > zero ? vf_ijk * mu_turb(i , j, k , EddyDiff::Mom_v) : zero)
260  + (vf_im1jkm1 > zero ? vf_im1jkm1 * mu_turb(i-1, j, k-1, EddyDiff::Mom_v) : zero)
261  + (vf_ijkm1 > zero ? vf_ijkm1 * mu_turb(i , j, k-1, EddyDiff::Mom_v) : zero) ) / vol_sum;
262  }
263  Real mu_13 = rho_bar*mu_eff + two*mu_bar;
264  tau13(i,j,k) *= -mu_13;
265  if (tau13i) tau13i(i,j,k) *= -mu_13;
266  },
267  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
268  Real vf_ijm1k = vfrac(i,j-1,k);
269  Real vf_ijk = vfrac(i,j,k);
270  Real vf_ijm1km1 = vfrac(i,j-1,k-1);
271  Real vf_ijkm1 = vfrac(i,j,k-1);
272  Real vol_sum = vf_ijm1k + vf_ijk + vf_ijm1km1 + vf_ijkm1;
273  Real rho_bar = zero, mu_bar = zero;
274  if (vol_sum >= four) {
275  rho_bar = fourth*( cell_data(i, j-1, k , Rho_comp) + cell_data(i, j , k , Rho_comp)
276  + cell_data(i, j-1, k-1, Rho_comp) + cell_data(i, j , k-1, Rho_comp) );
277  mu_bar = fourth*( mu_turb(i, j-1, k , EddyDiff::Mom_v) + mu_turb(i, j , k , EddyDiff::Mom_v)
278  + mu_turb(i, j-1, k-1, EddyDiff::Mom_v) + mu_turb(i, j , k-1, EddyDiff::Mom_v) );
279  } else if (vol_sum > zero) {
280  rho_bar = ( (vf_ijm1k > zero ? vf_ijm1k * cell_data(i, j-1, k , Rho_comp) : zero)
281  + (vf_ijk > zero ? vf_ijk * cell_data(i, j , k , Rho_comp) : zero)
282  + (vf_ijm1km1 > zero ? vf_ijm1km1 * cell_data(i, j-1, k-1, Rho_comp) : zero)
283  + (vf_ijkm1 > zero ? vf_ijkm1 * cell_data(i, j , k-1, Rho_comp) : zero) ) / vol_sum;
284  mu_bar = ( (vf_ijm1k > zero ? vf_ijm1k * mu_turb(i, j-1, k , EddyDiff::Mom_v) : zero)
285  + (vf_ijk > zero ? vf_ijk * mu_turb(i, j , k , EddyDiff::Mom_v) : zero)
286  + (vf_ijm1km1 > zero ? vf_ijm1km1 * mu_turb(i, j-1, k-1, EddyDiff::Mom_v) : zero)
287  + (vf_ijkm1 > zero ? vf_ijkm1 * mu_turb(i, j , k-1, EddyDiff::Mom_v) : zero) ) / vol_sum;
288  }
289  Real mu_23 = rho_bar*mu_eff + two*mu_bar;
290  tau23(i,j,k) *= -mu_23;
291  if (tau23i) tau23i(i,j,k) *= -mu_23;
292  });
293  }
294  else
295  // constant mu_eff
296  {
297  // Cell centered strains
298  ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
299  if (vfrac(i,j,k) > zero) {
300  Real mu_11 = mu_eff + two * mu_turb(i, j, k, EddyDiff::Mom_h);
301  Real mu_22 = mu_11;
302  Real mu_33 = mu_eff + two * mu_turb(i, j, k, EddyDiff::Mom_v);
303  if (tau33i) tau33i(i,j,k) = -mu_33 * tau33(i,j,k);
304  tau11(i,j,k) = -mu_11 * ( tau11(i,j,k) - OneThird*er_arr(i,j,k) );
305  tau22(i,j,k) = -mu_22 * ( tau22(i,j,k) - OneThird*er_arr(i,j,k) );
306  tau33(i,j,k) = -mu_33 * ( tau33(i,j,k) - OneThird*er_arr(i,j,k) );
307  } else {
308  if (tau33i) tau33i(i,j,k) = zero;
309  tau11(i,j,k) = zero;
310  tau22(i,j,k) = zero;
311  tau33(i,j,k) = zero;
312  }
313  });
314 
315  // Off-diagonal strains: vfrac-weighted mu_bar
316  ParallelFor(tbxxy,tbxxz,tbxyz,
317  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
318  Real vf_im1j = vfrac(i-1,j,k);
319  Real vf_ij = vfrac(i,j,k);
320  Real vf_im1jm1 = vfrac(i-1,j-1,k);
321  Real vf_ijm1 = vfrac(i,j-1,k);
322  Real vol_sum = vf_im1j + vf_ij + vf_im1jm1 + vf_ijm1;
323  Real mu_bar = zero;
324  if (vol_sum >= four) {
325  mu_bar = fourth*( mu_turb(i-1, j , k, EddyDiff::Mom_h) + mu_turb(i , j , k, EddyDiff::Mom_h)
326  + mu_turb(i-1, j-1, k, EddyDiff::Mom_h) + mu_turb(i , j-1, k, EddyDiff::Mom_h) );
327  } else if (vol_sum > zero) {
328  mu_bar = ( (vf_im1j > zero ? vf_im1j * mu_turb(i-1, j , k, EddyDiff::Mom_h) : zero)
329  + (vf_ij > zero ? vf_ij * mu_turb(i , j , k, EddyDiff::Mom_h) : zero)
330  + (vf_im1jm1 > zero ? vf_im1jm1 * mu_turb(i-1, j-1, k, EddyDiff::Mom_h) : zero)
331  + (vf_ijm1 > zero ? vf_ijm1 * mu_turb(i , j-1, k, EddyDiff::Mom_h) : zero) ) / vol_sum;
332  }
333  Real mu_12 = mu_eff + two*mu_bar;
334  tau12(i,j,k) *= -mu_12;
335  },
336  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
337  Real vf_im1jk = vfrac(i-1,j,k);
338  Real vf_ijk = vfrac(i,j,k);
339  Real vf_im1jkm1 = vfrac(i-1,j,k-1);
340  Real vf_ijkm1 = vfrac(i,j,k-1);
341  Real vol_sum = vf_im1jk + vf_ijk + vf_im1jkm1 + vf_ijkm1;
342  Real mu_bar = zero;
343  if (vol_sum >= four) {
344  mu_bar = fourth*( mu_turb(i-1, j, k , EddyDiff::Mom_v) + mu_turb(i , j, k , EddyDiff::Mom_v)
345  + mu_turb(i-1, j, k-1, EddyDiff::Mom_v) + mu_turb(i , j, k-1, EddyDiff::Mom_v) );
346  } else if (vol_sum > zero) {
347  mu_bar = ( (vf_im1jk > zero ? vf_im1jk * mu_turb(i-1, j, k , EddyDiff::Mom_v) : zero)
348  + (vf_ijk > zero ? vf_ijk * mu_turb(i , j, k , EddyDiff::Mom_v) : zero)
349  + (vf_im1jkm1 > zero ? vf_im1jkm1 * mu_turb(i-1, j, k-1, EddyDiff::Mom_v) : zero)
350  + (vf_ijkm1 > zero ? vf_ijkm1 * mu_turb(i , j, k-1, EddyDiff::Mom_v) : zero) ) / vol_sum;
351  }
352  Real mu_13 = mu_eff + two*mu_bar;
353  tau13(i,j,k) *= -mu_13;
354  if (tau13i) tau13i(i,j,k) *= -mu_13;
355  },
356  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept {
357  Real vf_ijm1k = vfrac(i,j-1,k);
358  Real vf_ijk = vfrac(i,j,k);
359  Real vf_ijm1km1 = vfrac(i,j-1,k-1);
360  Real vf_ijkm1 = vfrac(i,j,k-1);
361  Real vol_sum = vf_ijm1k + vf_ijk + vf_ijm1km1 + vf_ijkm1;
362  Real mu_bar = zero;
363  if (vol_sum >= four) {
364  mu_bar = fourth*( mu_turb(i, j-1, k , EddyDiff::Mom_v) + mu_turb(i, j , k , EddyDiff::Mom_v)
365  + mu_turb(i, j-1, k-1, EddyDiff::Mom_v) + mu_turb(i, j , k-1, EddyDiff::Mom_v) );
366  } else if (vol_sum > zero) {
367  mu_bar = ( (vf_ijm1k > zero ? vf_ijm1k * mu_turb(i, j-1, k , EddyDiff::Mom_v) : zero)
368  + (vf_ijk > zero ? vf_ijk * mu_turb(i, j , k , EddyDiff::Mom_v) : zero)
369  + (vf_ijm1km1 > zero ? vf_ijm1km1 * mu_turb(i, j-1, k-1, EddyDiff::Mom_v) : zero)
370  + (vf_ijkm1 > zero ? vf_ijkm1 * mu_turb(i, j , k-1, EddyDiff::Mom_v) : zero) ) / vol_sum;
371  }
372  Real mu_23 = mu_eff + two*mu_bar;
373  tau23(i,j,k) *= -mu_23;
374  if (tau23i) tau23i(i,j,k) *= -mu_23;
375  });
376  }
377 }
constexpr amrex::Real two
Definition: ERF_NumericalConstants.H:31
Definition: ERF_IndexDefines.H:242
@ Mom_h
Definition: ERF_IndexDefines.H:244
@ Mom_v
Definition: ERF_IndexDefines.H:249

Referenced by erf_make_tau_terms().

Here is the call graph for this function:
Here is the caller graph for this function: