90 auto dx = geom.CellSizeArray();
91 auto ProbHiArr = geom.ProbHiArray();
92 auto ProbLoArr = geom.ProbLoArray();
95 const amrex::Box& domain = geom.Domain();
96 int domlo_x = domain.smallEnd(0);
97 int domhi_x = domain.bigEnd(0) + 1;
98 int domlo_y = domain.smallEnd(1);
99 int domhi_y = domain.bigEnd(1) + 1;
100 int domlo_z = domain.smallEnd(2);
101 int domhi_z = domain.bigEnd(2) + 1;
105 Real *sum_area = ∑
108 mf_vars_fitch.setVal(0.0);
110 for ( MFIter mfi(cons_in,TilingIfNotGPU()); mfi.isValid(); ++mfi) {
112 const Box& bx = mfi.tilebox();
113 const Box& gbx = mfi.growntilebox(1);
114 auto cons_array = cons_in.array(mfi);
115 auto fitch_array = mf_vars_fitch.array(mfi);
116 auto Nturb_array = mf_Nturb.array(mfi);
117 auto u_vel = U_old.array(mfi);
118 auto v_vel = V_old.array(mfi);
119 auto w_vel = W_old.array(mfi);
121 amrex::IntVect lo = bx.smallEnd();
123 ParallelFor(gbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
124 int ii = amrex::min(amrex::max(i, domlo_x), domhi_x);
125 int jj = amrex::min(amrex::max(j, domlo_y), domhi_y);
126 int kk = amrex::min(amrex::max(k, domlo_z), domhi_z);
129 Real
x = (ii+0.5) * dx[0];
130 Real
y = (jj+0.5) * dx[1];
131 Real
z = (kk+0.5) * dx[2];
134 Real z_kp1 = (kk+1)*dx[2];
140 Real Vabs = std::pow(u_vel(i,j,k)*u_vel(i,j,k) +
141 v_vel(i,j,k)*v_vel(i,j,k) +
142 w_vel(i,j,kk)*w_vel(i,j,kk), 0.5);
144 fitch_array(i,j,k,0) = Vabs;
145 fitch_array(i,j,k,1) = -0.5*Nturb_array(i,j,k)/(dx[0]*dx[1])*
C_T*Vabs*Vabs*A_ijk/(z_kp1 - z_k);
146 fitch_array(i,j,k,2) = u_vel(i,j,k)/Vabs*fitch_array(i,j,k,1);
147 fitch_array(i,j,k,3) = v_vel(i,j,k)/Vabs*fitch_array(i,j,k,1);
148 fitch_array(i,j,k,4) = 0.5*Nturb_array(i,j,k)/(dx[0]*dx[1])*
C_TKE*std::pow(Vabs,3)*A_ijk/(z_kp1 - z_k);
Real C_T
Definition: AdvanceFitch.cpp:7
Real C_TKE
Definition: AdvanceFitch.cpp:7
Real compute_Aijk(Real z_k, Real z_kp1)
Definition: AdvanceFitch.cpp:20