20 const Array4<Real >& phi,
21 const Array4<Real const>& Hz,
22 const Array4<Real const>& Dphi_avg1,
23 const Array4<Real >& DC,
24 const Array4<Real >& CF,
25 const Array4<Real const>& pm_or_pn,
26 const Array4<Real const>& msk,
27 const int nnew,
const int N)
29 BL_PROFILE(
"REMORA::vert_mean_3d()");
31 ParallelFor(makeSlab(phi_bx,2,0),
32 [=] AMREX_GPU_DEVICE (
int i,
int j,
int )
34 Real Hzk_on_face = 0.5_rt*(Hz(i-ioff,j-joff,0)+Hz(i,j,0));
35 CF(i,j,-1) = Hzk_on_face;
36 DC(i,j,-1) = phi(i,j,0,nnew)*Hzk_on_face;
38 for (
int k=1; k<=N; k++) {
39 Hzk_on_face = 0.5_rt*(Hz(i-ioff,j-joff,k)+Hz(i,j,k));
40 CF(i,j,-1) += Hzk_on_face;
41 DC(i,j,-1) += phi(i,j,k,nnew)*Hzk_on_face;
45 ParallelFor(makeSlab(phi_bx,2,0), [=] AMREX_GPU_DEVICE (
int i,
int j,
int )
47 Real on_u_or_om_v = 2.0_rt / (pm_or_pn(i-ioff,j-joff,0) + pm_or_pn(i,j,0));
48 Real cff1=1.0_rt/(CF(i,j,-1)*(on_u_or_om_v));
49 DC(i,j,-1) = (DC(i,j,-1)*(on_u_or_om_v) - Dphi_avg1(i,j,0))*cff1;
52 ParallelFor(phi_bx, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k)
54 phi(i,j,k) -= DC(i,j,-1);
55 phi(i,j,k) *= msk(i,j,0);
void vert_mean_3d(const amrex::Box &bx, const int ioff, const int joff, const amrex::Array4< amrex::Real > &phi, const amrex::Array4< amrex::Real const > &Hz, const amrex::Array4< amrex::Real const > &Dphi_avg1, const amrex::Array4< amrex::Real > &DC, const amrex::Array4< amrex::Real > &CF, const amrex::Array4< amrex::Real const > &pm_or_pn, const amrex::Array4< amrex::Real const > &msk, const int nnew, const int N)
Adjust 3D momentum variables based on vertical mean momentum.