Function for computing the strain rates without terrain.
52 Box domain_xy = convert(domain, tbxxy.ixType());
53 Box domain_xz = convert(domain, tbxxz.ixType());
54 Box domain_yz = convert(domain, tbxyz.ixType());
56 const auto&
dom_lo = lbound(domain);
57 const auto&
dom_hi = ubound(domain);
63 xl_v_dir = ( xl_v_dir && (tbxxy.smallEnd(0) == domain_xy.smallEnd(0)) );
68 xh_v_dir = ( xh_v_dir && (tbxxy.bigEnd(0) == domain_xy.bigEnd(0)) );
73 xl_w_dir = ( xl_w_dir && (tbxxz.smallEnd(0) == domain_xz.smallEnd(0)) );
78 xh_w_dir = ( xh_w_dir && (tbxxz.bigEnd(0) == domain_xz.bigEnd(0)) );
84 yl_u_dir = ( yl_u_dir && (tbxxy.smallEnd(1) == domain_xy.smallEnd(1)) );
89 yh_u_dir = ( yh_u_dir && (tbxxy.bigEnd(1) == domain_xy.bigEnd(1)) );
94 yl_w_dir = ( yl_w_dir && (tbxyz.smallEnd(1) == domain_yz.smallEnd(1)) );
99 yh_w_dir = ( yh_w_dir && (tbxyz.bigEnd(1) == domain_yz.bigEnd(1)) );
104 zl_u_dir = ( zl_u_dir && (tbxxz.smallEnd(2) == domain_xz.smallEnd(2)) );
108 zh_u_dir = ( zh_u_dir && (tbxxz.bigEnd(2) == domain_xz.bigEnd(2)) );
112 zl_v_dir = ( zl_v_dir && (tbxyz.smallEnd(2) == domain_yz.smallEnd(2)) );
116 zh_v_dir = ( zh_v_dir && (tbxyz.bigEnd(2) == domain_yz.bigEnd(2)) );
122 Box planexy = tbxxy; planexy.setBig(0, planexy.smallEnd(0) );
126 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
127 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
128 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
129 if (!need_to_test || u(
dom_lo.x,j,k) >=
zero) {
134 (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx );
140 Box planexy = tbxxy; planexy.setSmall(0, planexy.bigEnd(0) );
144 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
145 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
146 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
147 if (!need_to_test || u(
dom_hi.x+1,j,k) <=
zero) {
152 (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx );
158 Box planexz = tbxxz; planexz.setBig(0, planexz.smallEnd(0) );
162 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
163 Real mfx = mf_ux(i,j,0);
165 Real du_dz = (u(i, j, k) - u(i, j, k-1))*
dxInv[2];
166 if (!need_to_test || u(
dom_lo.x,j,k) >=
zero) {
171 + (w(i, j, k) - w(i-1, j, k))*
dxInv[0]*mfx );
174 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
179 Box planexz = tbxxz; planexz.setSmall(0, planexz.bigEnd(0) );
183 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
184 Real mfx = mf_ux(i,j,0);
185 Real du_dz = (u(i, j, k) - u(i, j, k-1))*
dxInv[2];
186 if (!need_to_test || u(
dom_hi.x+1,j,k) <=
zero) {
191 + (w(i, j, k) - w(i-1, j, k))*
dxInv[0]*mfx );
194 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
202 Box planexy = tbxxy; planexy.setBig(1, planexy.smallEnd(1) );
206 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
207 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
208 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
209 if (!need_to_test || v(i,
dom_lo.y,k) >=
zero) {
211 + (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx );
214 + (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx );
220 Box planexy = tbxxy; planexy.setSmall(1, planexy.bigEnd(1) );
224 ParallelFor(planexy,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
225 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
226 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
227 if (!need_to_test || v(i,
dom_hi.y+1,k) <=
zero) {
229 + (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx );
232 + (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx );
238 Box planeyz = tbxyz; planeyz.setBig(1, planeyz.smallEnd(1) );
242 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
243 Real mfy = mf_vy(i,j,0);
245 Real dv_dz = (v(i, j, k) - v(i, j, k-1))*
dxInv[2];
246 if (!need_to_test || v(i,
dom_lo.y,k) >=
zero) {
251 + (w(i, j, k) - w(i, j-1, k))*
dxInv[1]*mfy );
254 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
259 Box planeyz = tbxyz; planeyz.setSmall(1, planeyz.bigEnd(1) );
263 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
264 Real mfy = mf_vy(i,j,0);
266 Real dv_dz = (v(i, j, k) - v(i, j, k-1))*
dxInv[2];
267 if (!need_to_test || v(i,
dom_hi.y+1,k) <=
zero) {
272 + (w(i, j, k) - w(i, j-1, k))*
dxInv[1]*mfy );
275 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
283 Box planexz = tbxxz; planexz.setBig(2, planexz.smallEnd(2) );
286 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
287 Real mfx = mf_ux(i,j,0);
291 + (w(i, j, k) - w(i-1, j, k))*
dxInv[0]*mfx );
293 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
298 Box planexz = tbxxz; planexz.setSmall(2, planexz.bigEnd(2) );
301 ParallelFor(planexz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
302 Real mfx = mf_ux(i,j,0);
306 + (w(i, j, k) - w(i-1, j, k))*
dxInv[0]*mfx );
308 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
313 Box planeyz = tbxyz; planeyz.setBig(2, planeyz.smallEnd(2) );
316 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
317 Real mfy = mf_vy(i,j,0);
321 + (w(i, j, k) - w(i, j-1, k))*
dxInv[1]*mfy );
323 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
328 Box planeyz = tbxyz; planeyz.setSmall(2, planeyz.bigEnd(2) );
331 ParallelFor(planeyz,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
332 Real mfy = mf_vy(i,j,0);
336 + (w(i, j, k) - w(i, j-1, k))*
dxInv[1]*mfy );
338 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
345 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
346 Real mfx = mf_mx(i,j,0);
347 Real mfy = mf_my(i,j,0);
348 tau11(i,j,k) = (u(i+1, j , k ) - u(i, j, k))*
dxInv[0]*mfx;
349 tau22(i,j,k) = (v(i , j+1, k ) - v(i, j, k))*
dxInv[1]*mfy;
350 tau33(i,j,k) = (w(i , j , k+1) - w(i, j, k))*
dxInv[2];
355 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
356 Real mfy =
myhalf * (mf_uy(i,j,0) + mf_uy(i ,j-1,0));
357 Real mfx =
myhalf * (mf_vx(i,j,0) + mf_vx(i-1,j ,0));
359 + (v(i, j, k) - v(i-1, j, k))*
dxInv[0]*mfx );
361 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
362 Real mfx = mf_ux(i,j,0);
364 Real du_dz = (u(i, j, k) - u(i, j, k-1))*
dxInv[2];
366 + (w(i, j, k) - w(i-1, j, k))*
dxInv[0]*mfx );
368 if (tau13i) tau13i(i,j,k) =
myhalf * du_dz;
370 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
371 Real mfy = mf_vy(i,j,0);
373 Real dv_dz = (v(i, j, k) - v(i, j, k-1))*
dxInv[2];
375 + (w(i, j, k) - w(i, j-1, k))*
dxInv[1]*mfy );
377 if (tau23i) tau23i(i,j,k) =
myhalf * dv_dz;
constexpr amrex::Real three
Definition: ERF_Constants.H:9
constexpr amrex::Real eightthirds
Definition: ERF_Constants.H:14
constexpr amrex::Real zero
Definition: ERF_Constants.H:6
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:11
constexpr amrex::Real third
Definition: ERF_Constants.H:13
@ tau12
Definition: ERF_DataStruct.H:32
@ tau23
Definition: ERF_DataStruct.H:32
@ tau33
Definition: ERF_DataStruct.H:32
@ tau22
Definition: ERF_DataStruct.H:32
@ tau11
Definition: ERF_DataStruct.H:32
@ tau13
Definition: ERF_DataStruct.H:32
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
ParallelFor(bx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { const auto prob_lo=geomdata.ProbLo();const auto dx=geomdata.CellSize();const Real x=(prob_lo[0]+(i+myhalf) *dx[0])/mf_m(i, j, 0);const Real z=z_cc(i, j, k);Real L=std::sqrt(std::pow((x - x_c)/x_r, 2)+std::pow((z - z_c)/z_r, 2));if(L<=one) { Real dT=T_pert *(std::cos(PI *L)+one)/two;Real Tbar_hse=p_hse(i, j, k)/(R_d *r_hse(i, j, k));Real theta_perturbed=(Tbar_hse+dT) *std::pow(p_0/p_hse(i, j, k), rdOcp);Real theta_0=(Tbar_hse) *std::pow(p_0/p_hse(i, j, k), rdOcp);if(const_rho) { state_pert(i, j, k, RhoTheta_comp)=r_hse(i, j, k) *(theta_perturbed - theta_0);} else { state_pert(i, j, k, Rho_comp)=getRhoThetagivenP(p_hse(i, j, k))/theta_perturbed - r_hse(i, j, k);} } })
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:230
@ ext_dir
Definition: ERF_IndexDefines.H:227
@ ext_dir_upwind
Definition: ERF_IndexDefines.H:235