Function for computing the scalar RHS for diffusion operator without terrain.
73 amrex::ignore_unused(use_most);
75 const Real dx_inv = cellSizeInv[0];
76 const Real dy_inv = cellSizeInv[1];
77 const Real dz_inv = cellSizeInv[2];
79 const auto& dom_lo = lbound(domain);
80 const auto& dom_hi = ubound(domain);
82 Real l_inv_theta0 = 1.0 / turbChoice.
theta_ref;
83 Real l_abs_g = std::abs(grav_gpu[2]);
85 bool l_use_keqn = ( (turbChoice.
les_type == LESType::Deardorff) ||
86 (turbChoice.
rans_type == RANSType::kEqn) );
87 bool l_use_mynn = ( (turbChoice.
pbl_type == PBLType::MYNN25) || (turbChoice.
pbl_type == PBLType::MYNNEDMF) ) ;
90 bool l_turb = ( (turbChoice.
les_type == LESType::Smagorinsky) ||
91 (turbChoice.
les_type == LESType::Deardorff ) ||
92 (turbChoice.
rans_type == RANSType::kEqn ) ||
93 (turbChoice.
pbl_type == PBLType::MYNN25 ) ||
94 (turbChoice.
pbl_type == PBLType::MYNNEDMF ) ||
95 (turbChoice.
pbl_type == PBLType::YSU ) );
97 const Box xbx = surroundingNodes(bx,0);
98 const Box ybx = surroundingNodes(bx,1);
99 const Box zbx = surroundingNodes(bx,2);
101 const int end_comp = start_comp + num_comp - 1;
182 Gpu::AsyncVector<Real> alpha_eff_d;
183 Gpu::AsyncVector<int> eddy_diff_idx_d,eddy_diff_idy_d,eddy_diff_idz_d;
184 alpha_eff_d.resize(alpha_eff.size());
185 eddy_diff_idx_d.resize(eddy_diff_idx.size());
186 eddy_diff_idy_d.resize(eddy_diff_idy.size());
187 eddy_diff_idz_d.resize(eddy_diff_idz.size());
189 Gpu::copy(Gpu::hostToDevice, alpha_eff.begin() , alpha_eff.end() , alpha_eff_d.begin());
190 Gpu::copy(Gpu::hostToDevice, eddy_diff_idx.begin(), eddy_diff_idx.end(), eddy_diff_idx_d.begin());
191 Gpu::copy(Gpu::hostToDevice, eddy_diff_idy.begin(), eddy_diff_idy.end(), eddy_diff_idy_d.begin());
192 Gpu::copy(Gpu::hostToDevice, eddy_diff_idz.begin(), eddy_diff_idz.end(), eddy_diff_idz_d.begin());
195 Real* d_alpha_eff = alpha_eff_d.data();
196 int* d_eddy_diff_idx = eddy_diff_idx_d.data();
197 int* d_eddy_diff_idy = eddy_diff_idy_d.data();
198 int* d_eddy_diff_idz = eddy_diff_idz_d.data();
201 if (l_consA && l_turb) {
202 ParallelFor(xbx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
204 const int qty_index = start_comp + n;
205 const int prim_index = qty_index - 1;
207 const int prim_scal_index = prim_index;
216 ext_dir_on_xlo &= (i == dom_lo.x);
221 ext_dir_on_xlo &= (i == dom_hi.x+1);
223 Real rhoFace = 0.5 * ( cell_data(i, j, k,
Rho_comp) + cell_data(i-1, j, k,
Rho_comp) );
224 Real rhoAlpha = rhoFace * d_alpha_eff[prim_scal_index];
225 rhoAlpha += 0.5 * ( mu_turb(i , j, k, d_eddy_diff_idx[prim_scal_index])
226 + mu_turb(i-1, j, k, d_eddy_diff_idx[prim_scal_index]) );
228 if (ext_dir_on_xlo) {
229 xflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i-1, j, k, prim_index)
230 + 3. * cell_prim(i , j, k, prim_index)
231 - (1./3.) * cell_prim(i+1, j, k, prim_index) ) * dx_inv;
232 }
else if (ext_dir_on_xhi) {
233 xflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i , j, k, prim_index)
234 - 3. * cell_prim(i-1, j, k, prim_index)
235 + (1./3.) * cell_prim(i-2, j, k, prim_index) ) * dx_inv;
237 xflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) -
238 cell_prim(i-1, j, k, prim_index)) * dx_inv * mf_u(i,j,0);
241 ParallelFor(ybx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
243 const int qty_index = start_comp + n;
244 const int prim_index = qty_index - 1;
246 const int prim_scal_index = prim_index;
254 ext_dir_on_ylo &= (j == dom_lo.y);
258 ext_dir_on_yhi &= (j == dom_hi.y+1);
260 Real rhoFace = 0.5 * ( cell_data(i, j, k,
Rho_comp) + cell_data(i, j-1, k,
Rho_comp) );
261 Real rhoAlpha = rhoFace * d_alpha_eff[prim_scal_index];
262 rhoAlpha += 0.5 * ( mu_turb(i, j , k, d_eddy_diff_idy[prim_scal_index])
263 + mu_turb(i, j-1, k, d_eddy_diff_idy[prim_scal_index]) );
265 if (ext_dir_on_ylo) {
266 yflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i, j-1, k, prim_index)
267 + 3. * cell_prim(i, j , k, prim_index)
268 - (1./3.) * cell_prim(i, j+1, k, prim_index) ) * dy_inv;
269 }
else if (ext_dir_on_yhi) {
270 yflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i, j , k, prim_index)
271 - 3. * cell_prim(i, j-1, k, prim_index)
272 + (1./3.) * cell_prim(i, j-2, k, prim_index) ) * dy_inv;
274 yflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i, j-1, k, prim_index)) * dy_inv * mf_v(i,j,0);
277 ParallelFor(zbx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
279 const int qty_index = start_comp + n;
280 const int prim_index = qty_index - 1;
282 const int prim_scal_index = prim_index;
284 Real rhoFace = 0.5 * ( cell_data(i, j, k,
Rho_comp) + cell_data(i, j, k-1,
Rho_comp) );
285 Real rhoAlpha = rhoFace * d_alpha_eff[prim_scal_index];
286 rhoAlpha += 0.5 * ( mu_turb(i, j, k , d_eddy_diff_idz[prim_scal_index])
287 + mu_turb(i, j, k-1, d_eddy_diff_idz[prim_scal_index]) );
299 bool most_on_zlo = ( use_most && exp_most &&
303 if (ext_dir_on_zlo) {
304 zflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i, j, k-1, prim_index)
305 + 3. * cell_prim(i, j, k , prim_index)
306 - (1./3.) * cell_prim(i, j, k+1, prim_index) ) * dz_inv;
307 }
else if (ext_dir_on_zhi) {
308 zflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i, j, k , prim_index)
309 - 3. * cell_prim(i, j, k-1, prim_index)
310 + (1./3.) * cell_prim(i, j, k-2, prim_index) ) * dz_inv;
312 zflux(i,j,k,qty_index) = hfx_z(i,j,0);
313 }
else if (most_on_zlo && (qty_index ==
RhoQ1_comp)) {
314 zflux(i,j,k,qty_index) = qfx1_z(i,j,0);
316 zflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i, j, k-1, prim_index)) * dz_inv;
321 hfx_z(i,j,k) = zflux(i,j,k,qty_index);
325 qfx1_z(i,j,k) = zflux(i,j,k,qty_index);
328 qfx2_z(i,j,k) = zflux(i,j,k,qty_index);
333 ParallelFor(xbx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
335 const int qty_index = start_comp + n;
336 const int prim_index = qty_index - 1;
345 ext_dir_on_xlo &= (i == dom_lo.x);
350 ext_dir_on_xhi &= (i == dom_hi.x+1);
352 Real rhoAlpha = d_alpha_eff[prim_index];
353 rhoAlpha += 0.5 * ( mu_turb(i , j, k, d_eddy_diff_idx[prim_index])
354 + mu_turb(i-1, j, k, d_eddy_diff_idx[prim_index]) );
356 if (ext_dir_on_xlo) {
357 xflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i-1, j, k, prim_index)
358 + 3. * cell_prim(i , j, k, prim_index)
359 - (1./3.) * cell_prim(i+1, j, k, prim_index) ) * dx_inv;
360 }
else if (ext_dir_on_xhi) {
361 xflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i , j, k, prim_index)
362 - 3. * cell_prim(i-1, j, k, prim_index)
363 + (1./3.) * cell_prim(i-2, j, k, prim_index) ) * dx_inv;
365 xflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i-1, j, k, prim_index)) * dx_inv * mf_u(i,j,0);
368 ParallelFor(ybx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
370 const int qty_index = start_comp + n;
371 const int prim_index = qty_index - 1;
380 ext_dir_on_ylo &= (j == dom_lo.y);
385 ext_dir_on_yhi &= (j == dom_hi.y+1);
387 Real rhoAlpha = d_alpha_eff[prim_index];
388 rhoAlpha += 0.5 * ( mu_turb(i, j , k, d_eddy_diff_idy[prim_index])
389 + mu_turb(i, j-1, k, d_eddy_diff_idy[prim_index]) );
391 if (ext_dir_on_ylo) {
392 yflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i, j-1, k, prim_index)
393 + 3. * cell_prim(i, j , k, prim_index)
394 - (1./3.) * cell_prim(i, j+1, k, prim_index) ) * dy_inv;
395 }
else if (ext_dir_on_yhi) {
396 yflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i, j , k, prim_index)
397 - 3. * cell_prim(i, j-1, k, prim_index)
398 + (1./3.) * cell_prim(i, j-2, k, prim_index) ) * dy_inv;
400 yflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i, j-1, k, prim_index)) * dy_inv * mf_v(i,j,0);
403 ParallelFor(zbx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
405 const int qty_index = start_comp + n;
406 const int prim_index = qty_index - 1;
408 Real rhoAlpha = d_alpha_eff[prim_index];
409 rhoAlpha += 0.5 * ( mu_turb(i, j, k , d_eddy_diff_idz[prim_index])
410 + mu_turb(i, j, k-1, d_eddy_diff_idz[prim_index]) );
421 bool most_on_zlo = ( use_most && exp_most &&
425 if (ext_dir_on_zlo) {
426 zflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i, j, k-1, prim_index)
427 + 3. * cell_prim(i, j, k , prim_index)
428 - (1./3.) * cell_prim(i, j, k+1, prim_index) ) * dz_inv;
429 }
else if (ext_dir_on_zhi) {
430 zflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i, j, k , prim_index)
431 - 3. * cell_prim(i, j, k-1, prim_index)
432 + (1./3.) * cell_prim(i, j, k-2, prim_index) ) * dz_inv;
434 zflux(i,j,k,qty_index) = hfx_z(i,j,0);
435 }
else if (most_on_zlo && (qty_index ==
RhoQ1_comp)) {
436 zflux(i,j,k,qty_index) = qfx1_z(i,j,0);
438 zflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i, j, k-1, prim_index)) * dz_inv;
443 hfx_z(i,j,k) = zflux(i,j,k,qty_index);
447 qfx1_z(i,j,k) = zflux(i,j,k,qty_index);
450 qfx2_z(i,j,k) = zflux(i,j,k,qty_index);
455 ParallelFor(xbx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
457 const int qty_index = start_comp + n;
458 const int prim_index = qty_index - 1;
467 ext_dir_on_xlo &= (i == dom_lo.x);
472 ext_dir_on_xhi &= (i == dom_hi.x+1);
474 Real rhoFace = 0.5 * ( cell_data(i, j, k,
Rho_comp) + cell_data(i-1, j, k,
Rho_comp) );
475 Real rhoAlpha = rhoFace * d_alpha_eff[prim_index];
477 if (ext_dir_on_xlo) {
478 xflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i-1, j, k, prim_index)
479 + 3. * cell_prim(i , j, k, prim_index)
480 - (1./3.) * cell_prim(i+1, j, k, prim_index) ) * dx_inv;
481 }
else if (ext_dir_on_xhi) {
482 xflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i , j, k, prim_index)
483 - 3. * cell_prim(i-1, j, k, prim_index)
484 + (1./3.) * cell_prim(i-2, j, k, prim_index) ) * dx_inv;
486 xflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i-1, j, k, prim_index)) * dx_inv * mf_u(i,j,0);
489 ParallelFor(ybx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
491 const int qty_index = start_comp + n;
492 const int prim_index = qty_index - 1;
501 ext_dir_on_ylo &= (j == dom_lo.y);
506 ext_dir_on_yhi &= (j == dom_hi.y+1);
508 Real rhoFace = 0.5 * ( cell_data(i, j, k,
Rho_comp) + cell_data(i, j-1, k,
Rho_comp) );
509 Real rhoAlpha = rhoFace * d_alpha_eff[prim_index];
511 if (ext_dir_on_ylo) {
512 yflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i, j-1, k, prim_index)
513 + 3. * cell_prim(i, j , k, prim_index)
514 - (1./3.) * cell_prim(i, j+1, k, prim_index) ) * dy_inv;
515 }
else if (ext_dir_on_yhi) {
516 yflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i, j , k, prim_index)
517 - 3. * cell_prim(i, j-1, k, prim_index)
518 + (1./3.) * cell_prim(i, j-2, k, prim_index) ) * dy_inv;
520 yflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i, j-1, k, prim_index)) * dy_inv * mf_v(i,j,0);
523 ParallelFor(zbx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
525 const int qty_index = start_comp + n;
526 const int prim_index = qty_index - 1;
528 Real rhoFace = 0.5 * ( cell_data(i, j, k,
Rho_comp) + cell_data(i, j, k-1,
Rho_comp) );
529 Real rhoAlpha = rhoFace * d_alpha_eff[prim_index];
540 bool most_on_zlo = ( use_most && exp_most &&
544 if (ext_dir_on_zlo) {
545 zflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i, j, k-1, prim_index)
546 + 3. * cell_prim(i, j, k , prim_index)
547 - (1./3.) * cell_prim(i, j, k+1, prim_index) ) * dz_inv;
548 }
else if (ext_dir_on_zhi) {
549 zflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i, j, k , prim_index)
550 - 3. * cell_prim(i, j, k-1, prim_index)
551 + (1./3.) * cell_prim(i, j, k-2, prim_index) ) * dz_inv;
553 zflux(i,j,k,qty_index) = hfx_z(i,j,0);
554 }
else if (most_on_zlo && (qty_index ==
RhoQ1_comp)) {
555 zflux(i,j,k,qty_index) = qfx1_z(i,j,0);
557 zflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i, j, k-1, prim_index)) * dz_inv;
562 hfx_z(i,j,k) = zflux(i,j,k,qty_index);
566 qfx1_z(i,j,k) = zflux(i,j,k,qty_index);
569 qfx2_z(i,j,k) = zflux(i,j,k,qty_index);
575 ParallelFor(xbx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
577 const int qty_index = start_comp + n;
578 const int prim_index = qty_index - 1;
587 ext_dir_on_xlo &= (i == dom_lo.x);
592 ext_dir_on_xhi &= (i == dom_hi.x+1);
594 Real rhoAlpha = d_alpha_eff[prim_index];
596 if (ext_dir_on_xlo) {
597 xflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i-1, j, k, prim_index)
598 + 3. * cell_prim(i , j, k, prim_index)
599 - (1./3.) * cell_prim(i+1, j, k, prim_index) ) * dx_inv;
600 }
else if (ext_dir_on_xhi) {
601 xflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i , j, k, prim_index)
602 - 3. * cell_prim(i-1, j, k, prim_index)
603 + (1./3.) * cell_prim(i-2, j, k, prim_index) ) * dx_inv;
605 xflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i-1, j, k, prim_index)) * dx_inv * mf_u(i,j,0);
608 ParallelFor(ybx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
610 const int qty_index = start_comp + n;
611 const int prim_index = qty_index - 1;
620 ext_dir_on_ylo &= (j == dom_lo.y);
625 ext_dir_on_yhi &= (j == dom_hi.y+1);
627 Real rhoAlpha = d_alpha_eff[prim_index];
629 if (ext_dir_on_ylo) {
630 yflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i, j-1, k, prim_index)
631 + 3. * cell_prim(i, j , k, prim_index)
632 - (1./3.) * cell_prim(i, j+1, k, prim_index) ) * dy_inv;
633 }
else if (ext_dir_on_yhi) {
634 yflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i, j , k, prim_index)
635 - 3. * cell_prim(i, j-1, k, prim_index)
636 + (1./3.) * cell_prim(i, j-2, k, prim_index) ) * dy_inv;
638 yflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i, j-1, k, prim_index)) * dy_inv * mf_v(i,j,0);
641 ParallelFor(zbx, num_comp,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
643 const int qty_index = start_comp + n;
644 const int prim_index = qty_index - 1;
646 Real rhoAlpha = d_alpha_eff[prim_index];
657 bool most_on_zlo = ( use_most && exp_most &&
661 if (ext_dir_on_zlo) {
662 zflux(i,j,k,qty_index) = -rhoAlpha * ( -(8./3.) * cell_prim(i, j, k-1, prim_index)
663 + 3. * cell_prim(i, j, k , prim_index)
664 - (1./3.) * cell_prim(i, j, k+1, prim_index) ) * dz_inv;
665 }
else if (ext_dir_on_zhi) {
666 zflux(i,j,k,qty_index) = -rhoAlpha * ( (8./3.) * cell_prim(i, j, k , prim_index)
667 - 3. * cell_prim(i, j, k-1, prim_index)
668 + (1./3.) * cell_prim(i, j, k-2, prim_index) ) * dz_inv;
670 zflux(i,j,k,qty_index) = hfx_z(i,j,0);
671 }
else if (most_on_zlo && (qty_index ==
RhoQ1_comp)) {
672 zflux(i,j,k,qty_index) = qfx1_z(i,j,0);
674 zflux(i,j,k,qty_index) = -rhoAlpha * (cell_prim(i, j, k, prim_index) - cell_prim(i, j, k-1, prim_index)) * dz_inv;
679 hfx_z(i,j,k) = zflux(i,j,k,qty_index);
683 qfx1_z(i,j,k) = zflux(i,j,k,qty_index);
686 qfx2_z(i,j,k) = zflux(i,j,k,qty_index);
692 for (
int n(0); n < num_comp; ++n)
694 int qty_index = start_comp + n;
695 ParallelFor(bx,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
698 cell_rhs(i,j,k,qty_index) -= (xflux(i+1,j ,k ,qty_index) - xflux(i, j, k, qty_index)) * dx_inv * mf_m(i,j,0)
699 +(yflux(i ,j+1,k ,qty_index) - yflux(i, j, k, qty_index)) * dy_inv * mf_m(i,j,0)
700 +(zflux(i ,j ,k+1,qty_index) - zflux(i, j, k, qty_index)) * dz_inv;
719 ParallelFor(bx,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
732 cell_rhs(i,j,k,qty_index) += l_abs_g * l_inv_theta0 * hfx_z(i,j,k);
738 cell_rhs(i,j,k,qty_index) += 2.0*mu_turb(i,j,k,
EddyDiff::Mom_v) * SmnSmn_a(i,j,k);
741 cell_rhs(i,j,k,qty_index) -= diss(i,j,k);
746 if (l_use_mynn && start_comp <= RhoKE_comp && end_comp >=
RhoKE_comp) {
750 const int rhoqv_comp = solverChoice.
RhoQv_comp;
751 const int rhoqc_comp = solverChoice.
RhoQc_comp;
752 const int rhoqr_comp = solverChoice.
RhoQr_comp;
754 ParallelFor(bx,[=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
764 cell_rhs(i, j, k, qty_index) +=
ComputeQKESourceTerms(i,j,k,u,v,cell_data,cell_prim,
765 mu_turb,cellSizeInv,domain,
766 pbl_mynn_B1_l,tm_arr(i,j,0),
767 rhoqv_comp, rhoqc_comp, rhoqr_comp,
768 c_ext_dir_on_zlo, c_ext_dir_on_zhi,
769 u_ext_dir_on_zlo, u_ext_dir_on_zhi,
770 v_ext_dir_on_zlo, v_ext_dir_on_zhi,
void DiffusionSrcForState_N(const Box &bx, const Box &domain, int start_comp, int num_comp, const bool &exp_most, const Array4< const Real > &u, const Array4< const Real > &v, const Array4< const Real > &cell_data, const Array4< const Real > &cell_prim, const Array4< Real > &cell_rhs, const Array4< Real > &xflux, const Array4< Real > &yflux, const Array4< Real > &zflux, const GpuArray< Real, AMREX_SPACEDIM > &cellSizeInv, const Array4< const Real > &SmnSmn_a, const Array4< const Real > &mf_m, const Array4< const Real > &mf_u, const Array4< const Real > &mf_v, Array4< Real > &hfx_z, Array4< Real > &qfx1_z, Array4< Real > &qfx2_z, Array4< Real > &diss, const Array4< const Real > &mu_turb, const SolverChoice &solverChoice, const int level, const Array4< const Real > &tm_arr, const GpuArray< Real, AMREX_SPACEDIM > grav_gpu, const BCRec *bc_ptr, const bool use_most)
Definition: ERF_DiffusionSrcForState_N.cpp:40
#define RhoScalar_comp
Definition: ERF_IndexDefines.H:40
#define PrimQ1_comp
Definition: ERF_IndexDefines.H:53
#define NPRIMVAR_max
Definition: ERF_IndexDefines.H:33
#define PrimQ2_comp
Definition: ERF_IndexDefines.H:54
#define Rho_comp
Definition: ERF_IndexDefines.H:36
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:37
#define PrimQ4_comp
Definition: ERF_IndexDefines.H:56
#define RhoQ2_comp
Definition: ERF_IndexDefines.H:43
#define PrimQ6_comp
Definition: ERF_IndexDefines.H:58
#define NSCALARS
Definition: ERF_IndexDefines.H:16
#define PrimQ5_comp
Definition: ERF_IndexDefines.H:57
#define PrimTheta_comp
Definition: ERF_IndexDefines.H:50
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:42
#define PrimScalar_comp
Definition: ERF_IndexDefines.H:52
#define PrimQ3_comp
Definition: ERF_IndexDefines.H:55
#define RhoKE_comp
Definition: ERF_IndexDefines.H:38
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real ComputeQKESourceTerms(int i, int j, int k, const amrex::Array4< const amrex::Real > &uvel, const amrex::Array4< const amrex::Real > &vvel, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< const amrex::Real > &K_turb, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Box &domain, amrex::Real pbl_mynn_B1_l, const amrex::Real theta_mean, const int RhoQv_comp, const int RhoQc_comp, const int RhoQr_comp, bool c_ext_dir_on_zlo, bool c_ext_dir_on_zhi, bool u_ext_dir_on_zlo, bool u_ext_dir_on_zhi, bool v_ext_dir_on_zlo, bool v_ext_dir_on_zhi, const bool use_most=false, const amrex::Real met_h_zeta=1.0)
Definition: ERF_PBLModels.H:197
@ RhoScalar_bc_comp
Definition: ERF_IndexDefines.H:80
@ yvel_bc
Definition: ERF_IndexDefines.H:88
@ cons_bc
Definition: ERF_IndexDefines.H:76
@ xvel_bc
Definition: ERF_IndexDefines.H:87
@ foextrap
Definition: ERF_IndexDefines.H:190
@ ext_dir
Definition: ERF_IndexDefines.H:191
@ ext_dir_prim
Definition: ERF_IndexDefines.H:193
@ ext_dir_upwind
Definition: ERF_IndexDefines.H:199
@ Theta_v
Definition: ERF_IndexDefines.H:168
@ Scalar_v
Definition: ERF_IndexDefines.H:170
@ Q_v
Definition: ERF_IndexDefines.H:171
@ Q_h
Definition: ERF_IndexDefines.H:166
@ Mom_v
Definition: ERF_IndexDefines.H:167
@ Scalar_h
Definition: ERF_IndexDefines.H:165
@ KE_v
Definition: ERF_IndexDefines.H:169
@ Theta_h
Definition: ERF_IndexDefines.H:163
@ KE_h
Definition: ERF_IndexDefines.H:164
Definition: ERF_DiffStruct.H:19
amrex::Real rhoAlpha_C
Definition: ERF_DiffStruct.H:92
amrex::Real rhoAlpha_T
Definition: ERF_DiffStruct.H:91
amrex::Real alpha_T
Definition: ERF_DiffStruct.H:84
amrex::Real alpha_C
Definition: ERF_DiffStruct.H:85
MolecDiffType molec_diff_type
Definition: ERF_DiffStruct.H:81
amrex::Real B1
Definition: ERF_MYNNStruct.H:43
int RhoQr_comp
Definition: ERF_DataStruct.H:783
DiffChoice diffChoice
Definition: ERF_DataStruct.H:674
int RhoQc_comp
Definition: ERF_DataStruct.H:777
int RhoQv_comp
Definition: ERF_DataStruct.H:776
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:676
Definition: ERF_TurbStruct.H:31
MYNNLevel25 pbl_mynn
Definition: ERF_TurbStruct.H:242
PBLType pbl_type
Definition: ERF_TurbStruct.H:240
RANSType rans_type
Definition: ERF_TurbStruct.H:237
LESType les_type
Definition: ERF_TurbStruct.H:204
amrex::Real theta_ref
Definition: ERF_TurbStruct.H:234