34 BL_PROFILE_REGION(
"erf_make_tau_terms()");
36 const BCRec* bc_ptr_h = domain_bcs_type_h.data();
41 const bool l_use_terrain_fitted_coords = (solverChoice.
mesh_type != MeshType::ConstantDz);
42 const bool l_moving_terrain = (solverChoice.
terrain_type == TerrainType::MovingFittedMesh);
48 const bool l_use_turb = ( tc.
les_type == LESType::Smagorinsky ||
58 const bool need_SmnSmn = (tc.
les_type == LESType::Deardorff ||
66 const Box& domain = geom.Domain();
67 const int domlo_z = domain.smallEnd(2);
68 const int domhi_z = domain.bigEnd(2);
70 const GpuArray<Real, AMREX_SPACEDIM>
dxInv = geom.InvCellSizeArray();
76 const DistributionMapping& dm = S_data[
IntVars::cons].DistributionMap();
78 std::unique_ptr<MultiFab> expr;
81 expr = std::make_unique<MultiFab>(ba, dm, 1, IntVect(1,1,1));
89 auto dz_ptr = stretched_dz_d.data();
92 #pragma omp parallel if (Gpu::notInLaunchRegion())
96 const Box& valid_bx = mfi.validbox();
99 const Array4<const Real> & u =
xvel.array(mfi);
100 const Array4<const Real> & v =
yvel.array(mfi);
101 const Array4<const Real> &
w =
zvel.array(mfi);
104 const Array4<const Real>& mf_mx = mapfac[
MapFacType::m_x]->const_array(mfi);
105 const Array4<const Real>& mf_ux = mapfac[
MapFacType::u_x]->const_array(mfi);
106 const Array4<const Real>& mf_vx = mapfac[
MapFacType::v_x]->const_array(mfi);
107 const Array4<const Real>& mf_my = mapfac[
MapFacType::m_y]->const_array(mfi);
108 const Array4<const Real>& mf_uy = mapfac[
MapFacType::u_y]->const_array(mfi);
109 const Array4<const Real>& mf_vy = mapfac[
MapFacType::v_y]->const_array(mfi);
112 const Array4<Real const>& mu_turb = l_use_turb ? eddyDiffs->const_array(mfi) :
113 Array4<const Real>{};
114 const Array4<Real const>& cell_data = l_use_constAlpha ? S_data[
IntVars::cons].const_array(mfi) :
115 Array4<const Real>{};
118 const Array4<const Real>& z_nd = z_phys_nd.const_array(mfi);
119 const Array4<const Real>& detJ_arr = detJ.const_array(mfi);
122 Array4<const EBCellFlag> cflag{};
123 Array4<const Real> vfrac{};
124 Array4<const Real> apx{};
125 Array4<const Real> apy{};
126 Array4<const Real> apz{};
129 EBCellFlagFab
const& cflag_fab = eb_factory->getMultiEBCellFlagFab()[mfi];
130 cflag = cflag_fab.const_array();
131 vfrac = eb_factory->getVolFrac().const_array(mfi);
132 if (cflag_fab.getType(valid_bx) == FabType::singlevalued) {
133 apx = eb_factory->getAreaFrac()[0]->const_array(mfi);
134 apy = eb_factory->getAreaFrac()[1]->const_array(mfi);
135 apz = eb_factory->getAreaFrac()[2]->const_array(mfi);
137 apx = ax.const_array(mfi);
138 apy = ay.const_array(mfi);
139 apz = az.const_array(mfi);
160 Box bx = mfi.tilebox();
161 Box bxcc = mfi.tilebox();
162 Box tbxxy = mfi.tilebox(IntVect(1,1,0));
163 Box tbxxz = mfi.tilebox(IntVect(1,0,1));
164 Box tbxyz = mfi.tilebox(IntVect(0,1,1));
167 bxcc.grow(IntVect(1,1,0));
168 tbxxy.grow(IntVect(1,1,0));
169 tbxxz.grow(IntVect(1,1,0));
170 tbxyz.grow(IntVect(1,1,0));
172 if (bxcc.smallEnd(2) != domain.smallEnd(2)) {
179 if (bxcc.bigEnd(2) != domain.bigEnd(2)) {
187 Array4<Real> er_arr = expr->array(mfi);
190 FArrayBox S11,S22,S33;
191 FArrayBox S12,S13,S23;
194 S11.resize( bxcc,1,The_Async_Arena()); S22.resize( bxcc,1,The_Async_Arena()); S33.resize( bxcc,1,The_Async_Arena());
195 S12.resize(tbxxy,1,The_Async_Arena()); S13.resize(tbxxz,1,The_Async_Arena()); S23.resize(tbxyz,1,The_Async_Arena());
196 Array4<Real> s11 = S11.array(); Array4<Real> s22 = S22.array(); Array4<Real> s33 = S33.array();
197 Array4<Real> s12 = S12.array(); Array4<Real> s13 = S13.array(); Array4<Real> s23 = S23.array();
207 FArrayBox S13_for_impl, S23_for_impl;
208 S13_for_impl.resize(tbxxz,1,The_Async_Arena());
209 S23_for_impl.resize(tbxyz,1,The_Async_Arena());
210 Array4<Real> s13_corr = (do_implicit) ? S13_for_impl.array() : Array4<Real>{};
211 Array4<Real> s23_corr = (do_implicit) ? S23_for_impl.array() : Array4<Real>{};
212 Array4<Real> tau13_corr = (do_implicit) ? Tau_corr_lev[0]->array(mfi) : Array4<Real>{};
213 Array4<Real> tau23_corr = (do_implicit) ? Tau_corr_lev[1]->array(mfi) : Array4<Real>{};
219 Array4<Real> SmnSmn_a = ((nrk==0) && need_SmnSmn) ? SmnSmn->array(mfi) : Array4<Real>{};
246 if (solverChoice.
mesh_type == MeshType::StretchedDz) {
248 FArrayBox S21,S31,S32;
249 S21.resize(tbxxy,1,The_Async_Arena()); S31.resize(tbxxz,1,The_Async_Arena()); S32.resize(tbxyz,1,The_Async_Arena());
250 Array4<Real> s21 = S21.array(); Array4<Real> s31 = S31.array(); Array4<Real> s32 = S32.array();
259 BL_PROFILE(
"slow_rhs_making_er_S");
260 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
262 Real mfsq = mf_mx(i,j,0)*mf_my(i,j,0);
263 er_arr(i,j,k) = (u(i+1, j , k )/mf_uy(i+1,j,0) - u(i, j, k)/mf_uy(i,j,0))*
dxInv[0] * mfsq +
264 (v(i , j+1, k )/mf_vx(i,j+1,0) - v(i, j, k)/mf_vx(i,j,0))*
dxInv[1] * mfsq +
265 (
w(i , j , k+1) -
w(i, j, k) )/dz_ptr[k];
273 BL_PROFILE(
"slow_rhs_making_strain_S");
280 stretched_dz_d,
dxInv,
282 mf_my, mf_uy, mf_vy, bc_ptr_h,
287 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
299 BL_PROFILE(
"slow_rhs_making_stress_T");
302 tbxxy.grow(IntVect(-1,-1,0));
303 tbxxz.grow(IntVect(-1,-1,0));
304 tbxyz.grow(IntVect(-1,-1,0));
331 bxcc.grow(IntVect(-1,-1,0));
332 if (bxcc.smallEnd(0) == valid_bx.smallEnd(0)) bxcc.growLo(0, 1);
333 if (bxcc.bigEnd(0) == valid_bx.bigEnd(0)) bxcc.growHi(0, 1);
334 if (bxcc.smallEnd(1) == valid_bx.smallEnd(1)) bxcc.growLo(1, 1);
335 if (bxcc.bigEnd(1) == valid_bx.bigEnd(1)) bxcc.growHi(1, 1);
339 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
340 tau11(i,j,k) = s11(i,j,k);
341 tau22(i,j,k) = s22(i,j,k);
342 tau33(i,j,k) = s33(i,j,k);
346 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
347 tau12(i,j,k) = s12(i,j,k);
348 tau21(i,j,k) = s21(i,j,k);
350 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
351 tau13(i,j,k) = s13(i,j,k);
352 tau31(i,j,k) = s31(i,j,k);
353 if (tau13_corr) tau13_corr(i,j,k) = s13_corr(i,j,k);
355 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
356 tau23(i,j,k) = s23(i,j,k);
357 tau32(i,j,k) = s32(i,j,k);
358 if (tau23_corr) tau23_corr(i,j,k) = s23_corr(i,j,k);
362 }
else if (l_use_terrain_fitted_coords) {
365 FArrayBox S21,S31,S32;
366 S21.resize(tbxxy,1,The_Async_Arena()); S31.resize(tbxxz,1,The_Async_Arena()); S32.resize(tbxyz,1,The_Async_Arena());
367 Array4<Real> s21 = S21.array(); Array4<Real> s31 = S31.array(); Array4<Real> s32 = S32.array();
377 BL_PROFILE(
"slow_rhs_making_er_T");
378 Box gbxo = surroundingNodes(bxcc,2);
383 Omega.resize(gbxo,1,The_Async_Arena());
386 Array4<Real> omega_arr = Omega.array();
387 ParallelFor(gbxo, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
389 omega_arr(i,j,k) = (k == 0) ?
zero :
OmegaFromW(i,j,k,
w(i,j,k),u,v,
390 mf_ux,mf_vy,z_nd,
dxInv);
393 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
402 Real Omega_hi = omega_arr(i,j,k+1);
403 Real Omega_lo = omega_arr(i,j,k );
405 Real mfsq = mf_mx(i,j,0)*mf_my(i,j,0);
407 Real expansionRate = (u(i+1,j ,k)/mf_uy(i+1,j,0)*met_u_h_zeta_hi - u(i,j,k)/mf_uy(i,j,0)*met_u_h_zeta_lo)*
dxInv[0]*mfsq +
408 (v(i ,j+1,k)/mf_vx(i,j+1,0)*met_v_h_zeta_hi - v(i,j,k)/mf_vx(i,j,0)*met_v_h_zeta_lo)*
dxInv[1]*mfsq +
409 (Omega_hi - Omega_lo)*
dxInv[2];
411 er_arr(i,j,k) = expansionRate / detJ_arr(i,j,k);
426 BL_PROFILE(
"slow_rhs_making_strain_T");
433 z_nd, detJ_arr,
dxInv,
435 mf_my, mf_uy, mf_vy, bc_ptr_h,
440 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
452 BL_PROFILE(
"slow_rhs_making_stress_T");
455 tbxxy.grow(IntVect(-1,-1,0));
456 tbxxz.grow(IntVect(-1,-1,0));
457 tbxyz.grow(IntVect(-1,-1,0));
466 er_arr, z_nd, detJ_arr,
dxInv,
478 er_arr, z_nd, detJ_arr,
dxInv,
486 bxcc.grow(IntVect(-1,-1,0));
487 if (bxcc.smallEnd(0) == valid_bx.smallEnd(0)) bxcc.growLo(0, 1);
488 if (bxcc.bigEnd(0) == valid_bx.bigEnd(0)) bxcc.growHi(0, 1);
489 if (bxcc.smallEnd(1) == valid_bx.smallEnd(1)) bxcc.growLo(1, 1);
490 if (bxcc.bigEnd(1) == valid_bx.bigEnd(1)) bxcc.growHi(1, 1);
494 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
495 tau11(i,j,k) = s11(i,j,k);
496 tau22(i,j,k) = s22(i,j,k);
497 tau33(i,j,k) = s33(i,j,k);
501 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
502 tau12(i,j,k) = s12(i,j,k);
503 tau21(i,j,k) = s21(i,j,k);
505 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
506 tau13(i,j,k) = s13(i,j,k);
507 tau31(i,j,k) = s31(i,j,k);
508 if(tau13_corr) tau13_corr(i,j,k) = s13_corr(i,j,k);
510 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
511 tau23(i,j,k) = s23(i,j,k);
512 tau32(i,j,k) = s32(i,j,k);
513 if(tau23_corr) tau23_corr(i,j,k) = s23_corr(i,j,k);
523 BL_PROFILE(
"slow_rhs_making_er_N");
525 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
526 Real mfsq = mf_mx(i,j,0)*mf_my(i,j,0);
527 er_arr(i,j,k) = (u(i+1, j , k )/mf_uy(i+1,j,0) - u(i, j, k)/mf_uy(i,j,0))*
dxInv[0]*mfsq +
528 (v(i , j+1, k )/mf_vx(i,j+1,0) - v(i, j, k)/mf_vx(i,j,0))*
dxInv[1]*mfsq +
529 (
w(i , j , k+1) -
w(i, j, k))*
dxInv[2];
532 ParallelFor(bxcc, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
533 if (cflag(i,j,k).isSingleValued()) {
534 er_arr(i,j,k) = (
one/vfrac(i,j,k)) * (
535 dxInv[0] * ( apx(i+1,j,k)*u(i+1,j,k) - apx(i,j,k)*u(i,j,k) )
536 +
dxInv[1] * ( apy(i,j+1,k)*v(i,j+1,k) - apy(i,j,k)*v(i,j,k) )
537 +
dxInv[2] * ( apz(i,j,k+1)*
w(i,j,k+1) - apz(i,j,k)*
w(i,j,k) ) );
538 }
else if (cflag(i,j,k).isRegular()) {
539 er_arr(i,j,k) = (u(i+1, j , k ) - u(i, j, k))*
dxInv[0] +
540 (v(i , j+1, k ) - v(i, j, k))*
dxInv[1] +
541 (
w(i , j , k+1) -
w(i, j, k))*
dxInv[2];
543 er_arr(i,j,k) =
zero;
553 BL_PROFILE(
"slow_rhs_making_strain_N");
561 mf_my, mf_uy, mf_vy, bc_ptr_h,
583 if (ib_wall_face13 && ib_wall_face23) {
584 auto const m13 = ib_wall_face13->const_array(mfi);
585 auto const m23 = ib_wall_face23->const_array(mfi);
586 Box xz = tbxxz & ib_wall_face13->fabbox(mfi.index()); xz.growHi(2, -1);
587 Box yz = tbxyz & ib_wall_face23->fabbox(mfi.index()); yz.growHi(2, -1);
588 const Box xz_all = tbxxz & ib_wall_face13->fabbox(mfi.index());
589 const Box yz_all = tbxyz & ib_wall_face23->fabbox(mfi.index());
591 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
592 if (m13(i,j,k) ==
zero) {
593 s13(i,j,k) = s13(i,j,k+1);
594 if (s13_corr) s13_corr(i,j,k) = s13_corr(i,j,k+1);
597 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
598 if (m23(i,j,k) ==
zero) {
599 s23(i,j,k) = s23(i,j,k+1);
600 if (s23_corr) s23_corr(i,j,k) = s23_corr(i,j,k+1);
604 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
605 if (m13(i,j,k) !=
zero) {
606 s13(i,j,k) *= m13(i,j,k);
607 if (s13_corr) s13_corr(i,j,k) *= m13(i,j,k);
610 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
611 if (m23(i,j,k) !=
zero) {
612 s23(i,j,k) *= m23(i,j,k);
613 if (s23_corr) s23_corr(i,j,k) *= m23(i,j,k);
619 ParallelFor(bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
631 BL_PROFILE(
"slow_rhs_making_stress_N");
634 tbxxy.grow(IntVect(-1,-1,0));
635 tbxxz.grow(IntVect(-1,-1,0));
636 tbxyz.grow(IntVect(-1,-1,0));
637 if (tbxxy.smallEnd(2) > domlo_z) {
642 if (tbxxy.bigEnd(2) < domhi_z) {
685 bxcc.grow(IntVect(-1,-1,0));
686 if (bxcc.smallEnd(0) == valid_bx.smallEnd(0)) bxcc.growLo(0, 1);
687 if (bxcc.bigEnd(0) == valid_bx.bigEnd(0)) bxcc.growHi(0, 1);
688 if (bxcc.smallEnd(1) == valid_bx.smallEnd(1)) bxcc.growLo(1, 1);
689 if (bxcc.bigEnd(1) == valid_bx.bigEnd(1)) bxcc.growHi(1, 1);
693 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
694 tau11(i,j,k) = s11(i,j,k);
695 tau22(i,j,k) = s22(i,j,k);
696 tau33(i,j,k) = s33(i,j,k);
699 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
700 tau12(i,j,k) = s12(i,j,k);
702 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
703 tau13(i,j,k) = s13(i,j,k);
704 if (tau13_corr) tau13_corr(i,j,k) = s13_corr(i,j,k);
706 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
707 tau23(i,j,k) = s23(i,j,k);
708 if (tau23_corr) tau23_corr(i,j,k) = s23_corr(i,j,k);
713 if (ib_wall_face13 && ib_wall_face23) {
714 auto const m13 = ib_wall_face13->const_array(mfi);
715 auto const m23 = ib_wall_face23->const_array(mfi);
716 const Box xz = tbxxz & ib_wall_face13->fabbox(mfi.index());
717 const Box yz = tbxyz & ib_wall_face23->fabbox(mfi.index());
719 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
721 if (m13(i,j,k) ==
zero) {
723 if (tau13_corr) tau13_corr(i,j,k) =
zero;
726 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept {
727 if (m23(i,j,k) ==
zero) {
729 if (tau23_corr) tau23_corr(i,j,k) =
zero;
void ComputeStrain_EB(const MFIter &mfi, Box bxcc, Box tbxxy, Box tbxxz, Box tbxyz, Box domain, const Array4< const Real > &u, const Array4< const Real > &v, const Array4< const Real > &w, Array4< Real > &tau11, Array4< Real > &tau22, Array4< Real > &tau33, Array4< Real > &tau12, Array4< Real > &tau13, Array4< Real > &tau23, const GpuArray< Real, AMREX_SPACEDIM > &dxInv, const BCRec *bc_ptr, const eb_ &ebfact, Array4< Real > &tau13i, Array4< Real > &tau23i)
Definition: ERF_ComputeStrain_EB.cpp:31
void ComputeStrain_N(Box bxcc, Box tbxxy, Box tbxxz, Box tbxyz, Box domain, const Array4< const Real > &u, const Array4< const Real > &v, const Array4< const Real > &w, Array4< Real > &tau11, Array4< Real > &tau22, Array4< Real > &tau33, Array4< Real > &tau12, Array4< Real > &tau13, Array4< Real > &tau23, const GpuArray< Real, AMREX_SPACEDIM > &dxInv, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_ux, const Array4< const Real > &mf_vx, const Array4< const Real > &mf_my, const Array4< const Real > &mf_uy, const Array4< const Real > &mf_vy, const BCRec *bc_ptr, Array4< Real > &tau13i, Array4< Real > &tau23i)
Definition: ERF_ComputeStrain_N.cpp:35
void ComputeStrain_S(Box bxcc, Box tbxxy, Box tbxxz, Box tbxyz, Box domain, const Array4< const Real > &u, const Array4< const Real > &v, const Array4< const Real > &w, Array4< Real > &tau11, Array4< Real > &tau22, Array4< Real > &tau33, Array4< Real > &tau12, Array4< Real > &tau21, Array4< Real > &tau13, Array4< Real > &tau31, Array4< Real > &tau23, Array4< Real > &tau32, const Gpu::DeviceVector< Real > &stretched_dz_d, const GpuArray< Real, AMREX_SPACEDIM > &dxInv, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_ux, const Array4< const Real > &mf_vx, const Array4< const Real > &mf_my, const Array4< const Real > &mf_uy, const Array4< const Real > &mf_vy, const BCRec *bc_ptr, Array4< Real > &tau13i, Array4< Real > &tau23i)
Definition: ERF_ComputeStrain_S.cpp:40
void ComputeStrain_T(Box bxcc, Box tbxxy, Box tbxxz, Box tbxyz, Box domain, const Array4< const Real > &u, const Array4< const Real > &v, const Array4< const Real > &w, Array4< Real > &tau11, Array4< Real > &tau22, Array4< Real > &tau33, Array4< Real > &tau12, Array4< Real > &tau21, Array4< Real > &tau13, Array4< Real > &tau31, Array4< Real > &tau23, Array4< Real > &tau32, const Array4< const Real > &z_nd, const Array4< const Real > &detJ, const GpuArray< Real, AMREX_SPACEDIM > &dxInv, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_ux, const Array4< const Real > &mf_vx, const Array4< const Real > &mf_my, const Array4< const Real > &mf_uy, const Array4< const Real > &mf_vy, const BCRec *bc_ptr, Array4< Real > &tau13i, Array4< Real > &tau23i)
Definition: ERF_ComputeStrain_T.cpp:41
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)
Definition: ERF_ComputeStress_EB.cpp:26
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)
Definition: ERF_ComputeStress_EB.cpp:177
void ComputeStressVarVisc_N(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< Real > &tau13i, Array4< Real > &tau23i)
Definition: ERF_ComputeStress_N.cpp:121
void ComputeStressConsVisc_N(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< Real > &tau13i, Array4< Real > &tau23i)
Definition: ERF_ComputeStress_N.cpp:25
void ComputeStressConsVisc_S(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 > &tau21, Array4< Real > &tau13, Array4< Real > &tau31, Array4< Real > &tau23, Array4< Real > &tau32, const Array4< const Real > &er_arr, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_ux, const Array4< const Real > &mf_vx, const Array4< const Real > &mf_my, const Array4< const Real > &mf_uy, const Array4< const Real > &mf_vy, Array4< Real > &tau13i, Array4< Real > &tau23i)
Definition: ERF_ComputeStress_S.cpp:35
void ComputeStressVarVisc_S(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 > &tau21, Array4< Real > &tau13, Array4< Real > &tau31, Array4< Real > &tau23, Array4< Real > &tau32, const Array4< const Real > &er_arr, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_ux, const Array4< const Real > &mf_vx, const Array4< const Real > &mf_my, const Array4< const Real > &mf_uy, const Array4< const Real > &mf_vy, Array4< Real > &tau13i, Array4< Real > &tau23i)
Definition: ERF_ComputeStress_S.cpp:166
void ComputeStressVarVisc_T(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 > &tau21, Array4< Real > &tau13, Array4< Real > &tau31, Array4< Real > &tau23, Array4< Real > &tau32, const Array4< const Real > &er_arr, const Array4< const Real > &z_nd, const Array4< const Real > &detJ, const GpuArray< Real, AMREX_SPACEDIM > &dxInv, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_ux, const Array4< const Real > &mf_vx, const Array4< const Real > &mf_my, const Array4< const Real > &mf_uy, const Array4< const Real > &mf_vy, Array4< Real > &tau13i, Array4< Real > &tau23i, const bool implicit_metric)
Definition: ERF_ComputeStress_T.cpp:402
void ComputeStressConsVisc_T(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 > &tau21, Array4< Real > &tau13, Array4< Real > &tau31, Array4< Real > &tau23, Array4< Real > &tau32, const Array4< const Real > &er_arr, const Array4< const Real > &z_nd, const Array4< const Real > &detJ, const GpuArray< Real, AMREX_SPACEDIM > &dxInv, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_ux, const Array4< const Real > &mf_vx, const Array4< const Real > &mf_my, const Array4< const Real > &mf_uy, const Array4< const Real > &mf_vy, Array4< Real > &tau13i, Array4< Real > &tau23i, const bool implicit_metric)
Definition: ERF_ComputeStress_T.cpp:41
@ tau12
Definition: ERF_DataStruct.H:49
@ tau33
Definition: ERF_DataStruct.H:49
@ tau22
Definition: ERF_DataStruct.H:49
@ tau32
Definition: ERF_DataStruct.H:49
@ tau31
Definition: ERF_DataStruct.H:49
@ tau21
Definition: ERF_DataStruct.H:49
@ v_x
Definition: ERF_DataStruct.H:38
@ u_y
Definition: ERF_DataStruct.H:39
@ v_y
Definition: ERF_DataStruct.H:39
@ m_y
Definition: ERF_DataStruct.H:39
@ u_x
Definition: ERF_DataStruct.H:38
@ m_x
Definition: ERF_DataStruct.H:38
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:133
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
constexpr amrex::Real two
Definition: ERF_NumericalConstants.H:38
constexpr amrex::Real one
Definition: ERF_NumericalConstants.H:37
constexpr amrex::Real zero
Definition: ERF_NumericalConstants.H:36
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:23
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real OmegaFromW(int &i, int &j, int &k, amrex::Real w, const amrex::Array4< const amrex::Real > &u_arr, const amrex::Array4< const amrex::Real > &v_arr, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, const amrex::Array4< const amrex::Real > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv)
Definition: ERF_TerrainMetrics.H:802
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtIface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:280
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtJface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:350
const std::unique_ptr< amrex::EBFArrayBoxFactory > & get_const_factory() const noexcept
Return the cell-centered EB factory.
Definition: ERF_EB.H:124
@ cons
Definition: ERF_IndexDefines.H:272
@ xvel
Definition: ERF_IndexDefines.H:255
@ zvel
Definition: ERF_IndexDefines.H:257
@ yvel
Definition: ERF_IndexDefines.H:256
Definition: ERF_DiffStruct.H:24
MolecDiffType molec_diff_type
Selected molecular transport model.
Definition: ERF_DiffStruct.H:96
amrex::Real dynamic_viscosity
Dynamic viscosity for momentum diffusion [kg/(m-s)].
Definition: ERF_DiffStruct.H:108
amrex::Real rho0_trans
Reference density used to compute dynamic diffusion coefficients [kg/m3].
Definition: ERF_DiffStruct.H:103
amrex::Vector< TurbChoice > turbChoice
Turbulence options for each AMR level.
Definition: ERF_DataStruct.H:2620
static MeshType mesh_type
Vertical mesh representation.
Definition: ERF_DataStruct.H:2604
amrex::Vector< amrex::Vector< amrex::Real > > vert_implicit_fac
Per-level, per-stage implicit vertical diffusion factors.
Definition: ERF_DataStruct.H:2657
bool implicit_terrain_metric
Whether the compact terrain-metric part of the vertical diffusion is solved implicitly.
Definition: ERF_DataStruct.H:2667
static TerrainType terrain_type
Terrain or immersed-boundary representation.
Definition: ERF_DataStruct.H:2589
DiffChoice diffChoice
Diffusion-related options.
Definition: ERF_DataStruct.H:2617
bool implicit_momentum_diffusion
Whether implicit vertical momentum diffusion is included.
Definition: ERF_DataStruct.H:2663
Definition: ERF_TurbStruct.H:119
RANSType rans_type
Selected RANS closure.
Definition: ERF_TurbStruct.H:877
LESType les_type
Selected LES closure.
Definition: ERF_TurbStruct.H:826
bool use_kturb
Whether any turbulence model is active.
Definition: ERF_TurbStruct.H:977
PBLType pbl_type
Selected PBL closure.
Definition: ERF_TurbStruct.H:909