447 velx = velx_arr(i,j,k);
450 amrex::Real v_vfrac_sum = v_vfrac_arr(i,j,k) + v_vfrac_arr(i,j+1,k) +
451 v_vfrac_arr(i-1,j,k) + v_vfrac_arr(i-1,j+1,k);
452 vely = (v_vfrac_sum >
eps) ?
453 (vely_arr(i,j,k) * v_vfrac_arr(i,j,k) + vely_arr(i,j+1,k) * v_vfrac_arr(i,j+1,k) +
454 vely_arr(i-1,j,k) * v_vfrac_arr(i-1,j,k) + vely_arr(i-1,j+1,k) * v_vfrac_arr(i-1,j+1,k))
455 / v_vfrac_sum :
zero;
458 amrex::Real w_vfrac_sum = w_vfrac_arr(i,j,k) + w_vfrac_arr(i,j,k+1) +
459 w_vfrac_arr(i-1,j,k) + w_vfrac_arr(i-1,j,k+1);
461 (velz_arr(i,j,k) * w_vfrac_arr(i,j,k) + velz_arr(i,j,k+1) * w_vfrac_arr(i,j,k+1) +
462 velz_arr(i-1,j,k) * w_vfrac_arr(i-1,j,k) + velz_arr(i-1,j,k+1) * w_vfrac_arr(i-1,j,k+1))
463 / w_vfrac_sum :
zero;
472 velx_tangent = velx - v_dot_n * nx;
473 vely_tangent = vely - v_dot_n * ny;
476 amrex::Real cc_vfrac_sum = cc_vfrac_arr(i-1,j,k) + cc_vfrac_arr(i,j,k);
477 rho = (cc_vfrac_sum >
eps) ?
478 (cons_arr(i-1,j,k,
Rho_comp) * cc_vfrac_arr(i-1,j,k) + cons_arr(i,j,k,
Rho_comp) * cc_vfrac_arr(i,j,k))
479 / cc_vfrac_sum :
zero;
482 bool low_valid = cc_flag_arr(i-1,j,k).isSingleValued();
483 bool high_valid = cc_flag_arr(i,j,k).isSingleValued();
485 if (low_valid && high_valid) {
486 ustar =
myhalf * (u_star_arr(i-1,j,k) + u_star_arr(i,j,k));
487 wsp_mean =
myhalf * (umm_arr(i-1,j,0) + umm_arr(i,j,0));
488 }
else if (low_valid) {
489 ustar = u_star_arr(i-1,j,k);
490 wsp_mean = umm_arr(i-1,j,0);
491 }
else if (high_valid) {
492 ustar = u_star_arr(i,j,k);
493 wsp_mean = umm_arr(i,j,0);
499 }
else if (idir == 1) {
501 vely = vely_arr(i,j,k);
504 amrex::Real u_vfrac_sum = u_vfrac_arr(i,j,k) + u_vfrac_arr(i+1,j,k) +
505 u_vfrac_arr(i,j-1,k) + u_vfrac_arr(i+1,j-1,k);
506 velx = (u_vfrac_sum >
eps) ?
507 (velx_arr(i,j,k) * u_vfrac_arr(i,j,k) + velx_arr(i+1,j,k) * u_vfrac_arr(i+1,j,k) +
508 velx_arr(i,j-1,k) * u_vfrac_arr(i,j-1,k) + velx_arr(i+1,j-1,k) * u_vfrac_arr(i+1,j-1,k))
509 / u_vfrac_sum :
zero;
512 amrex::Real w_vfrac_sum = w_vfrac_arr(i,j,k) + w_vfrac_arr(i,j,k+1) +
513 w_vfrac_arr(i,j-1,k) + w_vfrac_arr(i,j-1,k+1);
515 (velz_arr(i,j,k) * w_vfrac_arr(i,j,k) + velz_arr(i,j,k+1) * w_vfrac_arr(i,j,k+1) +
516 velz_arr(i,j-1,k) * w_vfrac_arr(i,j-1,k) + velz_arr(i,j-1,k+1) * w_vfrac_arr(i,j-1,k+1))
517 / w_vfrac_sum :
zero;
526 velx_tangent = velx - v_dot_n * nx;
527 vely_tangent = vely - v_dot_n * ny;
530 amrex::Real cc_vfrac_sum = cc_vfrac_arr(i,j-1,k) + cc_vfrac_arr(i,j,k);
531 rho = (cc_vfrac_sum >
eps) ?
532 (cons_arr(i,j-1,k,
Rho_comp) * cc_vfrac_arr(i,j-1,k) + cons_arr(i,j,k,
Rho_comp) * cc_vfrac_arr(i,j,k))
533 / cc_vfrac_sum :
zero;
536 bool low_valid = cc_flag_arr(i,j-1,k).isSingleValued();
537 bool high_valid = cc_flag_arr(i,j,k).isSingleValued();
539 if (low_valid && high_valid) {
540 ustar =
myhalf * (u_star_arr(i,j-1,k) + u_star_arr(i,j,k));
541 wsp_mean =
myhalf * (umm_arr(i,j-1,0) + umm_arr(i,j,0));
542 }
else if (low_valid) {
543 ustar = u_star_arr(i,j-1,k);
544 wsp_mean = umm_arr(i,j-1,0);
545 }
else if (high_valid) {
546 ustar = u_star_arr(i,j,k);
547 wsp_mean = umm_arr(i,j,0);
556 amrex::Real u_vfrac_sum = u_vfrac_arr(i,j,k-1) + u_vfrac_arr(i+1,j,k-1) +
557 u_vfrac_arr(i,j,k) + u_vfrac_arr(i+1,j,k);
558 velx = (u_vfrac_sum >
eps) ?
559 (velx_arr(i,j,k-1) * u_vfrac_arr(i,j,k-1) + velx_arr(i+1,j,k-1) * u_vfrac_arr(i+1,j,k-1) +
560 velx_arr(i,j,k) * u_vfrac_arr(i,j,k) + velx_arr(i+1,j,k) * u_vfrac_arr(i+1,j,k))
561 / u_vfrac_sum :
zero;
564 amrex::Real v_vfrac_sum = v_vfrac_arr(i,j,k-1) + v_vfrac_arr(i,j+1,k-1) +
565 v_vfrac_arr(i,j,k) + v_vfrac_arr(i,j+1,k);
566 vely = (v_vfrac_sum >
eps) ?
567 (vely_arr(i,j,k-1) * v_vfrac_arr(i,j,k-1) + vely_arr(i,j+1,k-1) * v_vfrac_arr(i,j+1,k-1) +
568 vely_arr(i,j,k) * v_vfrac_arr(i,j,k) + vely_arr(i,j+1,k) * v_vfrac_arr(i,j+1,k))
569 / v_vfrac_sum :
zero;
581 velx_tangent = velx - v_dot_n * nx;
582 vely_tangent = vely - v_dot_n * ny;
585 amrex::Real cc_vfrac_sum = cc_vfrac_arr(i,j,k-1) + cc_vfrac_arr(i,j,k);
586 rho = (cc_vfrac_sum >
eps) ?
587 (cons_arr(i,j,k-1,
Rho_comp) * cc_vfrac_arr(i,j,k-1) + cons_arr(i,j,k,
Rho_comp) * cc_vfrac_arr(i,j,k))
588 / cc_vfrac_sum :
zero;
591 bool low_valid = cc_flag_arr(i,j,k-1).isSingleValued();
592 bool high_valid = cc_flag_arr(i,j,k).isSingleValued();
594 if (low_valid && high_valid) {
595 ustar =
myhalf * (u_star_arr(i,j,k-1) + u_star_arr(i,j,k));
596 wsp_mean =
myhalf * (umm_arr(i,j,0) + umm_arr(i,j,0));
597 }
else if (low_valid) {
598 ustar = u_star_arr(i,j,k-1);
599 wsp_mean = umm_arr(i,j,0);
600 }
else if (high_valid) {
601 ustar = u_star_arr(i,j,k);
602 wsp_mean = umm_arr(i,j,0);
609 wsp_mean = std::max(wsp_mean,
WSMIN);
616 amrex::Real wsp = sqrt(velx_tangent*velx_tangent+vely_tangent*vely_tangent);
618 amrex::Real num2 = wsp_mean * (velx_tangent-umean);
621 amrex::Real stressx = -
rho*ustar*ustar * (num1+num2)/(wsp_mean*wsp_mean);
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:11