ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ERF_DiffusionSrcForMom_T.cpp File Reference
#include <AMReX.H>
#include <ERF_Diffusion.H>
#include <ERF_IndexDefines.H>
Include dependency graph for ERF_DiffusionSrcForMom_T.cpp:

Functions

void DiffusionSrcForMom_T (const Box &bxx, const Box &bxy, const Box &bxz, const Array4< Real > &rho_u_rhs, const Array4< Real > &rho_v_rhs, const Array4< Real > &rho_w_rhs, const Array4< const Real > &tau11, const Array4< const Real > &tau22, const Array4< const Real > &tau33, const Array4< const Real > &tau12, const Array4< const Real > &tau21, const Array4< const Real > &tau13, const Array4< const Real > &tau31, const Array4< const Real > &tau23, const Array4< const Real > &tau32, const Array4< const Real > &detJ, const GpuArray< Real, AMREX_SPACEDIM > &dxInv, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_my)
 

Function Documentation

◆ DiffusionSrcForMom_T()

void DiffusionSrcForMom_T ( const Box &  bxx,
const Box &  bxy,
const Box &  bxz,
const Array4< Real > &  rho_u_rhs,
const Array4< Real > &  rho_v_rhs,
const Array4< Real > &  rho_w_rhs,
const Array4< const Real > &  tau11,
const Array4< const Real > &  tau22,
const Array4< const Real > &  tau33,
const Array4< const Real > &  tau12,
const Array4< const Real > &  tau21,
const Array4< const Real > &  tau13,
const Array4< const Real > &  tau31,
const Array4< const Real > &  tau23,
const Array4< const Real > &  tau32,
const Array4< const Real > &  detJ,
const GpuArray< Real, AMREX_SPACEDIM > &  dxInv,
const Array4< const Real > &  mf_mx,
const Array4< const Real > &  mf_my 
)

Function for computing the momentum RHS for diffusion operator with terrain.

Parameters
[in]bxxnodal x box for x-mom
[in]bxynodal y box for y-mom
[in]bxznodal z box for z-mom
[out]rho_u_rhsRHS for x-mom
[out]rho_v_rhsRHS for y-mom
[out]rho_w_rhsRHS for z-mom
[in]tau1111 stress
[in]tau2222 stress
[in]tau3333 stress
[in]tau1212 stress
[in]tau1313 stress
[in]tau2121 stress
[in]tau2323 stress
[in]tau3131 stress
[in]tau3232 stress
[in]detJJacobian determinant
[in]differChoicecontainer with diffusion parameters
[in]dxInvinverse cell size array
[in]mf_mmap factor at cell center
45 {
46  BL_PROFILE_VAR("DiffusionSrcForMom_T()",DiffusionSrcForMom_T);
47 
48  auto dxinv = dxInv[0], dyinv = dxInv[1], dzinv = dxInv[2];
49 
50  ParallelFor(bxx, bxy, bxz,
51  [=] AMREX_GPU_DEVICE (int i, int j, int k)
52  {
53  Real mfx = mf_mx(i,j,0);
54  Real mfy = mf_my(i,j,0);
55 
56  Real diffContrib = ( (tau11(i , j , k ) - tau11(i-1, j ,k )) * dxinv * mfx // Contribution to x-mom eqn from diffusive flux in x-dir
57  + (tau12(i , j+1, k ) - tau12(i , j ,k )) * dyinv * mfy // Contribution to x-mom eqn from diffusive flux in y-dir
58  + (tau13(i , j , k+1) - tau13(i , j ,k )) * dzinv ); // Contribution to x-mom eqn from diffusive flux in z-dir;
59  diffContrib /= 0.5*(detJ(i,j,k) + detJ(i-1,j,k));
60  rho_u_rhs(i,j,k) -= diffContrib;
61  },
62  [=] AMREX_GPU_DEVICE (int i, int j, int k)
63  {
64  Real mfx = mf_mx(i,j,0);
65  Real mfy = mf_my(i,j,0);
66 
67  Real diffContrib = ( (tau21(i+1, j , k ) - tau21(i , j , k )) * dxinv * mfx // Contribution to y-mom eqn from diffusive flux in x-dir
68  + (tau22(i , j , k ) - tau22(i , j-1, k )) * dyinv * mfy // Contribution to y-mom eqn from diffusive flux in y-dir
69  + (tau23(i , j , k+1) - tau23(i , j , k )) * dzinv ); // Contribution to y-mom eqn from diffusive flux in z-dir;
70  diffContrib /= 0.5*(detJ(i,j,k) + detJ(i,j-1,k));
71  rho_v_rhs(i,j,k) -= diffContrib;
72  },
73  [=] AMREX_GPU_DEVICE (int i, int j, int k)
74  {
75  Real mfx = mf_mx(i,j,0);
76  Real mfy = mf_my(i,j,0);
77 
78  Real diffContrib = ( (tau31(i+1, j , k ) - tau31(i , j , k )) * dxinv * mfx // Contribution to z-mom eqn from diffusive flux in x-dir
79  + (tau32(i , j+1, k ) - tau32(i , j , k )) * dyinv * mfy // Contribution to z-mom eqn from diffusive flux in y-dir
80  + (tau33(i , j , k ) - tau33(i , j , k-1)) * dzinv ); // Contribution to z-mom eqn from diffusive flux in z-dir;
81  diffContrib /= 0.5*(detJ(i,j,k) + detJ(i,j,k-1));
82  rho_w_rhs(i,j,k) -= diffContrib;
83  });
84 }
@ tau12
Definition: ERF_DataStruct.H:26
@ tau23
Definition: ERF_DataStruct.H:26
@ tau33
Definition: ERF_DataStruct.H:26
@ tau22
Definition: ERF_DataStruct.H:26
@ tau11
Definition: ERF_DataStruct.H:26
@ tau32
Definition: ERF_DataStruct.H:26
@ tau31
Definition: ERF_DataStruct.H:26
@ tau21
Definition: ERF_DataStruct.H:26
@ tau13
Definition: ERF_DataStruct.H:26
void DiffusionSrcForMom_T(const Box &bxx, const Box &bxy, const Box &bxz, const Array4< Real > &rho_u_rhs, const Array4< Real > &rho_v_rhs, const Array4< Real > &rho_w_rhs, const Array4< const Real > &tau11, const Array4< const Real > &tau22, const Array4< const Real > &tau33, const Array4< const Real > &tau12, const Array4< const Real > &tau21, const Array4< const Real > &tau13, const Array4< const Real > &tau31, const Array4< const Real > &tau23, const Array4< const Real > &tau32, const Array4< const Real > &detJ, const GpuArray< Real, AMREX_SPACEDIM > &dxInv, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_my)
Definition: ERF_DiffusionSrcForMom_T.cpp:31