60 auto dx = geom.CellSizeArray();
61 auto ProbHiArr = geom.ProbHiArray();
62 auto ProbLoArr = geom.ProbLoArray();
65 const amrex::Box& domain = geom.Domain();
66 int domlo_x = domain.smallEnd(0);
67 int domhi_x = domain.bigEnd(0) + 1;
68 int domlo_y = domain.smallEnd(1);
69 int domhi_y = domain.bigEnd(1) + 1;
70 int domlo_z = domain.smallEnd(2);
71 int domhi_z = domain.bigEnd(2) + 1;
74 mf_vars_ewp.setVal(0.0);
76 for ( MFIter mfi(cons_in,TilingIfNotGPU()); mfi.isValid(); ++mfi) {
78 const Box& bx = mfi.tilebox();
79 const Box& gbx = mfi.growntilebox(1);
80 auto cons_array = cons_in.array(mfi);
81 auto ewp_array = mf_vars_ewp.array(mfi);
82 auto Nturb_array = mf_Nturb.array(mfi);
83 auto u_vel = U_old.array(mfi);
84 auto v_vel = V_old.array(mfi);
85 auto w_vel = W_old.array(mfi);
87 amrex::IntVect lo = bx.smallEnd();
89 ParallelFor(gbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept {
90 int ii = amrex::min(amrex::max(i, domlo_x), domhi_x);
91 int jj = amrex::min(amrex::max(j, domlo_y), domhi_y);
92 int kk = amrex::min(amrex::max(k, domlo_z), domhi_z);
95 Real
x = ProbLoArr[0] + (ii+0.5) * dx[0];
96 Real
y = ProbLoArr[1] + (jj+0.5) * dx[1];
97 Real
z = ProbLoArr[2] + (kk+0.5) * dx[2];
101 Real Vabs = std::pow(u_vel(i,j,k)*u_vel(i,j,k) +
102 v_vel(i,j,k)*v_vel(i,j,k) +
103 w_vel(i,j,kk)*w_vel(i,j,kk), 0.5);
105 Real L_wake = std::pow(dx[0]*dx[1],0.5);
108 Real sigma_e = Vabs/(3.0*K_turb*L_wake)*(std::pow(2.0*K_turb*L_wake/Vabs + std::pow(sigma_0,2),3.0/2.0) - std::pow(sigma_0,3));
110 Real phi = std::atan2(v_vel(i,j,k),u_vel(i,j,k));
111 Real fac = -std::pow(M_PI/8.0,0.5)*
C_T_ewp*std::pow(
R_ewp,2)*std::pow(Vabs,2)/(dx[0]*dx[1]*sigma_e)*std::exp(-0.5*std::pow((z -
z_c_ewp)/sigma_e,2));
112 ewp_array(i,j,k,0) = fac*std::cos(phi)*Nturb_array(i,j,k);
113 ewp_array(i,j,k,1) = fac*std::sin(phi)*Nturb_array(i,j,k);
114 ewp_array(i,j,k,2) = 0.0;
Real C_T_ewp
Definition: AdvanceEWP.cpp:7
Real R_ewp
Definition: AdvanceEWP.cpp:5
Real z_c_ewp
Definition: AdvanceEWP.cpp:6