449 velx = velx_arr(i,j,k);
452 amrex::Real v_vfrac_sum = v_vfrac_arr(i,j,k) + v_vfrac_arr(i,j+1,k) +
453 v_vfrac_arr(i-1,j,k) + v_vfrac_arr(i-1,j+1,k);
454 vely = (v_vfrac_sum >
eps) ?
455 (vely_arr(i,j,k) * v_vfrac_arr(i,j,k) + vely_arr(i,j+1,k) * v_vfrac_arr(i,j+1,k) +
456 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))
457 / v_vfrac_sum :
zero;
460 amrex::Real w_vfrac_sum = w_vfrac_arr(i,j,k) + w_vfrac_arr(i,j,k+1) +
461 w_vfrac_arr(i-1,j,k) + w_vfrac_arr(i-1,j,k+1);
463 (velz_arr(i,j,k) * w_vfrac_arr(i,j,k) + velz_arr(i,j,k+1) * w_vfrac_arr(i,j,k+1) +
464 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))
465 / w_vfrac_sum :
zero;
474 velx_tangent = velx - v_dot_n * nx;
475 vely_tangent = vely - v_dot_n * ny;
478 amrex::Real cc_vfrac_sum = cc_vfrac_arr(i-1,j,k) + cc_vfrac_arr(i,j,k);
479 rho = (cc_vfrac_sum >
eps) ?
480 (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))
481 / cc_vfrac_sum :
zero;
484 bool low_valid = cc_flag_arr(i-1,j,k).isSingleValued();
485 bool high_valid = cc_flag_arr(i,j,k).isSingleValued();
487 if (low_valid && high_valid) {
488 ustar =
myhalf * (u_star_arr(i-1,j,k) + u_star_arr(i,j,k));
489 wsp_mean =
myhalf * (umm_arr(i-1,j,0) + umm_arr(i,j,0));
490 }
else if (low_valid) {
491 ustar = u_star_arr(i-1,j,k);
492 wsp_mean = umm_arr(i-1,j,0);
493 }
else if (high_valid) {
494 ustar = u_star_arr(i,j,k);
495 wsp_mean = umm_arr(i,j,0);
501 }
else if (idir == 1) {
503 vely = vely_arr(i,j,k);
506 amrex::Real u_vfrac_sum = u_vfrac_arr(i,j,k) + u_vfrac_arr(i+1,j,k) +
507 u_vfrac_arr(i,j-1,k) + u_vfrac_arr(i+1,j-1,k);
508 velx = (u_vfrac_sum >
eps) ?
509 (velx_arr(i,j,k) * u_vfrac_arr(i,j,k) + velx_arr(i+1,j,k) * u_vfrac_arr(i+1,j,k) +
510 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))
511 / u_vfrac_sum :
zero;
514 amrex::Real w_vfrac_sum = w_vfrac_arr(i,j,k) + w_vfrac_arr(i,j,k+1) +
515 w_vfrac_arr(i,j-1,k) + w_vfrac_arr(i,j-1,k+1);
517 (velz_arr(i,j,k) * w_vfrac_arr(i,j,k) + velz_arr(i,j,k+1) * w_vfrac_arr(i,j,k+1) +
518 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))
519 / w_vfrac_sum :
zero;
528 velx_tangent = velx - v_dot_n * nx;
529 vely_tangent = vely - v_dot_n * ny;
532 amrex::Real cc_vfrac_sum = cc_vfrac_arr(i,j-1,k) + cc_vfrac_arr(i,j,k);
533 rho = (cc_vfrac_sum >
eps) ?
534 (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))
535 / cc_vfrac_sum :
zero;
538 bool low_valid = cc_flag_arr(i,j-1,k).isSingleValued();
539 bool high_valid = cc_flag_arr(i,j,k).isSingleValued();
541 if (low_valid && high_valid) {
542 ustar =
myhalf * (u_star_arr(i,j-1,k) + u_star_arr(i,j,k));
543 wsp_mean =
myhalf * (umm_arr(i,j-1,0) + umm_arr(i,j,0));
544 }
else if (low_valid) {
545 ustar = u_star_arr(i,j-1,k);
546 wsp_mean = umm_arr(i,j-1,0);
547 }
else if (high_valid) {
548 ustar = u_star_arr(i,j,k);
549 wsp_mean = umm_arr(i,j,0);
558 amrex::Real u_vfrac_sum = u_vfrac_arr(i,j,k-1) + u_vfrac_arr(i+1,j,k-1) +
559 u_vfrac_arr(i,j,k) + u_vfrac_arr(i+1,j,k);
560 velx = (u_vfrac_sum >
eps) ?
561 (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) +
562 velx_arr(i,j,k) * u_vfrac_arr(i,j,k) + velx_arr(i+1,j,k) * u_vfrac_arr(i+1,j,k))
563 / u_vfrac_sum :
zero;
566 amrex::Real v_vfrac_sum = v_vfrac_arr(i,j,k-1) + v_vfrac_arr(i,j+1,k-1) +
567 v_vfrac_arr(i,j,k) + v_vfrac_arr(i,j+1,k);
568 vely = (v_vfrac_sum >
eps) ?
569 (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) +
570 vely_arr(i,j,k) * v_vfrac_arr(i,j,k) + vely_arr(i,j+1,k) * v_vfrac_arr(i,j+1,k))
571 / v_vfrac_sum :
zero;
583 velx_tangent = velx - v_dot_n * nx;
584 vely_tangent = vely - v_dot_n * ny;
587 amrex::Real cc_vfrac_sum = cc_vfrac_arr(i,j,k-1) + cc_vfrac_arr(i,j,k);
588 rho = (cc_vfrac_sum >
eps) ?
589 (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))
590 / cc_vfrac_sum :
zero;
593 bool low_valid = cc_flag_arr(i,j,k-1).isSingleValued();
594 bool high_valid = cc_flag_arr(i,j,k).isSingleValued();
596 if (low_valid && high_valid) {
597 ustar =
myhalf * (u_star_arr(i,j,k-1) + u_star_arr(i,j,k));
598 wsp_mean =
myhalf * (umm_arr(i,j,0) + umm_arr(i,j,0));
599 }
else if (low_valid) {
600 ustar = u_star_arr(i,j,k-1);
601 wsp_mean = umm_arr(i,j,0);
602 }
else if (high_valid) {
603 ustar = u_star_arr(i,j,k);
604 wsp_mean = umm_arr(i,j,0);
611 wsp_mean = std::max(wsp_mean,
WSMIN);
618 amrex::Real wsp = std::sqrt(velx_tangent*velx_tangent+vely_tangent*vely_tangent);
620 amrex::Real num2 = wsp_mean * (velx_tangent-umean);
623 amrex::Real stressx = -
rho*ustar*ustar * (num1+num2)/(wsp_mean*wsp_mean);
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:13