342 & dqL_prim_dz_vf, qL_prim_vf, qR_prim_rsx_vf, dqR_prim_dx_vf, dqR_prim_dy_vf, dqR_prim_dz_vf, qR_prim_vf, q_prim_vf, &
343 & flux_vf, flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
345 real(wp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:),
intent(inout) :: qL_prim_rsx_vf, qR_prim_rsx_vf
346 type(
scalar_field),
allocatable,
dimension(:),
intent(inout) :: dqL_prim_dx_vf, dqR_prim_dx_vf, dqL_prim_dy_vf, &
347 & dqR_prim_dy_vf, dqL_prim_dz_vf, dqR_prim_dz_vf
349 type(
scalar_field),
allocatable,
dimension(:),
intent(inout) :: qL_prim_vf, qR_prim_vf
350 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
351 type(
scalar_field),
dimension(sys_size),
intent(inout) :: flux_vf, flux_src_vf, flux_gsrc_vf
352 integer,
intent(in) :: norm_dir
357# 41 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
358 real(wp),
dimension(num_fluids) :: alpha_L, alpha_R, alpha_rho_L, alpha_rho_R
359# 43 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
368 real(wp) :: s_L, s_R, s_M, s_starL, s_starR
369 real(wp) :: pTot_L, pTot_R, p_star, rhoL_star, rhoR_star, E_starL, E_starR
370 real(wp),
dimension(7) :: U_L, U_R, U_starL, U_starR, U_doubleL, U_doubleR
371 real(wp),
dimension(7) :: F_L, F_R, F_starL, F_starR, F_hlld
377 real(wp) :: sqrt_rhoL_star, sqrt_rhoR_star, denom_ds, sign_Bx
378 real(wp) :: vL_star, vR_star, wL_star, wR_star
379 real(wp) :: v_double, w_double, By_double, Bz_double, E_doubleL, E_doubleR, E_double
380 integer :: i, j, k, l
383 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, norm_dir, ix, iy, iz)
387# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
388# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
389# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
390 if (norm_dir == 1)
then
392# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
394# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
395#if defined(MFC_OpenACC)
396# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
398# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
399#elif defined(MFC_OpenMP)
400# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
402# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
404# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
406# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
408# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
410# 83 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
415 do i = 1, eqn_idx%cont%end
416 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
417 alpha_rho_r(i) = qr_prim_rsx_vf(j + 1, k, l, i)
422 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
423 vel%R(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%cont%end +
dir_idx(i))
426 vel_rms%L = sum(vel%L**2._wp)
427 vel_rms%R = sum(vel%R**2._wp)
430 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
431 alpha_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E + i)
434 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
435 pres%R = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E)
440 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
441 & eqn_idx%B%beg + 1)]
442 b%R = [bx0, qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg), qr_prim_rsx_vf(j + 1, k, l, &
443 & eqn_idx%B%beg + 1)]
445 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
446 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
447 & eqn_idx%B%beg +
dir_idx(3) - 1)]
448 b%R = [qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), &
449 & qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(2) - 1), &
450 & qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(3) - 1)]
455 rho%L = 0._wp; gamma%L = 0._wp; pi_inf%L = 0._wp; qv%L = 0._wp
456 rho%R = 0._wp; gamma%R = 0._wp; pi_inf%R = 0._wp; qv%R = 0._wp
458# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
459#if defined(MFC_OpenACC)
460# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
462# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
463#elif defined(MFC_OpenMP)
464# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
466# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
469 rho%L = rho%L + alpha_rho_l(i)
470 gamma%L = gamma%L + alpha_l(i)*
gammas(i)
471 pi_inf%L = pi_inf%L + alpha_l(i)*
pi_infs(i)
472 qv%L = qv%L + alpha_rho_l(i)*
qvs(i)
474 rho%R = rho%R + alpha_rho_r(i)
475 gamma%R = gamma%R + alpha_r(i)*
gammas(i)
476 pi_inf%R = pi_inf%R + alpha_r(i)*
pi_infs(i)
477 qv%R = qv%R + alpha_rho_r(i)*
qvs(i)
480 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
481 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
482 e%L = gamma%L*pres%L + pi_inf%L + 0.5_wp*rho%L*vel_rms%L + qv%L + pres_mag%L
483 e%R = gamma%R*pres%R + pi_inf%R + 0.5_wp*rho%R*vel_rms%R + qv%R + pres_mag%R
484 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
486 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
497 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
498 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
500 ptot_l = pres%L + pres_mag%L
501 ptot_r = pres%R + pres_mag%R
503 s_m = (((s_r - vel%R(1))*rho%R*vel%R(1) - (s_l - vel%L(1))*rho%L*vel%L(1) - ptot_r + ptot_l)/((s_r &
504 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
507 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
508 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
509 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
510 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
511 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
514 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
515 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
516 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
517 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
521 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
522 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
523 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
524 f_l(7) = (e%L + ptot_l)*vel%L(1) - b%L(1)*(vel%L(1)*b%L(1) + vel%L(2)*b%L(2) + vel%L(3)*b%L(3))
527 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
528 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
529 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
530 f_r(7) = (e%R + ptot_r)*vel%R(1) - b%R(1)*(vel%R(1)*b%R(1) + vel%R(2)*b%R(2) + vel%R(3)*b%R(3))
532 f_starl = f_l + s_l*(u_starl - u_l)
533 f_starr = f_r + s_r*(u_starr - u_r)
535 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
536 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
538 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
539 vl_star = vel%L(2); wl_star = vel%L(3)
540 vr_star = vel%R(2); wr_star = vel%R(3)
543 denom_ds = sqrt_rhol_star + sqrt_rhor_star
544 sign_bx = sign(1._wp, b%L(1))
545 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
546 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
547 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
548 & - vl_star)*sign_bx)/denom_ds
549 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
550 & - wl_star)*sign_bx)/denom_ds
552 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
553 & + w_double*bz_double))*sign_bx
554 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
555 & + w_double*bz_double))*sign_bx
556 e_double = 0.5_wp*(e_doublel + e_doubler)
558 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
560 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
564 if (0.0_wp <= s_l)
then
566 else if (0.0_wp <= s_starl)
then
567 f_hlld = f_l + s_l*(u_starl - u_l)
568 else if (0.0_wp <= s_m)
then
569 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
570 else if (0.0_wp <= s_starr)
then
571 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
572 else if (0.0_wp <= s_r)
then
573 f_hlld = f_r + s_r*(u_starr - u_r)
587 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
597# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
598#if defined(MFC_OpenACC)
599# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
601# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
602#elif defined(MFC_OpenMP)
603# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
605# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
607 do i = eqn_idx%adv%beg, eqn_idx%adv%end
616# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
617#if defined(MFC_OpenACC)
618# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
620# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
621#elif defined(MFC_OpenMP)
622# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
624# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
626# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
629# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
630# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
631# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
632 if (norm_dir == 2)
then
634# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
636# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
637#if defined(MFC_OpenACC)
638# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
640# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
641#elif defined(MFC_OpenMP)
642# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
644# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
646# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
648# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
650# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
652# 83 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
657 do i = 1, eqn_idx%cont%end
658 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
659 alpha_rho_r(i) = qr_prim_rsx_vf(j, k + 1, l, i)
664 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
665 vel%R(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%cont%end +
dir_idx(i))
668 vel_rms%L = sum(vel%L**2._wp)
669 vel_rms%R = sum(vel%R**2._wp)
672 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
673 alpha_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E + i)
676 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
677 pres%R = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E)
682 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
683 & eqn_idx%B%beg + 1)]
684 b%R = [bx0, qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg), qr_prim_rsx_vf(j, k + 1, l, &
685 & eqn_idx%B%beg + 1)]
687 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
688 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
689 & eqn_idx%B%beg +
dir_idx(3) - 1)]
690 b%R = [qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(1) - 1), &
691 & qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(2) - 1), &
692 & qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(3) - 1)]
697 rho%L = 0._wp; gamma%L = 0._wp; pi_inf%L = 0._wp; qv%L = 0._wp
698 rho%R = 0._wp; gamma%R = 0._wp; pi_inf%R = 0._wp; qv%R = 0._wp
700# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
701#if defined(MFC_OpenACC)
702# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
704# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
705#elif defined(MFC_OpenMP)
706# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
708# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
711 rho%L = rho%L + alpha_rho_l(i)
712 gamma%L = gamma%L + alpha_l(i)*
gammas(i)
713 pi_inf%L = pi_inf%L + alpha_l(i)*
pi_infs(i)
714 qv%L = qv%L + alpha_rho_l(i)*
qvs(i)
716 rho%R = rho%R + alpha_rho_r(i)
717 gamma%R = gamma%R + alpha_r(i)*
gammas(i)
718 pi_inf%R = pi_inf%R + alpha_r(i)*
pi_infs(i)
719 qv%R = qv%R + alpha_rho_r(i)*
qvs(i)
722 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
723 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
724 e%L = gamma%L*pres%L + pi_inf%L + 0.5_wp*rho%L*vel_rms%L + qv%L + pres_mag%L
725 e%R = gamma%R*pres%R + pi_inf%R + 0.5_wp*rho%R*vel_rms%R + qv%R + pres_mag%R
726 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
728 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
739 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
740 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
742 ptot_l = pres%L + pres_mag%L
743 ptot_r = pres%R + pres_mag%R
745 s_m = (((s_r - vel%R(1))*rho%R*vel%R(1) - (s_l - vel%L(1))*rho%L*vel%L(1) - ptot_r + ptot_l)/((s_r &
746 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
749 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
750 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
751 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
752 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
753 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
756 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
757 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
758 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
759 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
763 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
764 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
765 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
766 f_l(7) = (e%L + ptot_l)*vel%L(1) - b%L(1)*(vel%L(1)*b%L(1) + vel%L(2)*b%L(2) + vel%L(3)*b%L(3))
769 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
770 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
771 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
772 f_r(7) = (e%R + ptot_r)*vel%R(1) - b%R(1)*(vel%R(1)*b%R(1) + vel%R(2)*b%R(2) + vel%R(3)*b%R(3))
774 f_starl = f_l + s_l*(u_starl - u_l)
775 f_starr = f_r + s_r*(u_starr - u_r)
777 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
778 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
780 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
781 vl_star = vel%L(2); wl_star = vel%L(3)
782 vr_star = vel%R(2); wr_star = vel%R(3)
785 denom_ds = sqrt_rhol_star + sqrt_rhor_star
786 sign_bx = sign(1._wp, b%L(1))
787 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
788 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
789 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
790 & - vl_star)*sign_bx)/denom_ds
791 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
792 & - wl_star)*sign_bx)/denom_ds
794 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
795 & + w_double*bz_double))*sign_bx
796 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
797 & + w_double*bz_double))*sign_bx
798 e_double = 0.5_wp*(e_doublel + e_doubler)
800 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
802 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
806 if (0.0_wp <= s_l)
then
808 else if (0.0_wp <= s_starl)
then
809 f_hlld = f_l + s_l*(u_starl - u_l)
810 else if (0.0_wp <= s_m)
then
811 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
812 else if (0.0_wp <= s_starr)
then
813 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
814 else if (0.0_wp <= s_r)
then
815 f_hlld = f_r + s_r*(u_starr - u_r)
829 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
839# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
840#if defined(MFC_OpenACC)
841# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
843# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
844#elif defined(MFC_OpenMP)
845# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
847# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
849 do i = eqn_idx%adv%beg, eqn_idx%adv%end
858# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
859#if defined(MFC_OpenACC)
860# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
862# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
863#elif defined(MFC_OpenMP)
864# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
866# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
868# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
871# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
872# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
873# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
874 if (norm_dir == 3)
then
876# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
878# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
879#if defined(MFC_OpenACC)
880# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
882# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
883#elif defined(MFC_OpenMP)
884# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
886# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
888# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
890# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
892# 77 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
894# 83 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
899 do i = 1, eqn_idx%cont%end
900 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
901 alpha_rho_r(i) = qr_prim_rsx_vf(j, k, l + 1, i)
906 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
907 vel%R(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%cont%end +
dir_idx(i))
910 vel_rms%L = sum(vel%L**2._wp)
911 vel_rms%R = sum(vel%R**2._wp)
914 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
915 alpha_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E + i)
918 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
919 pres%R = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E)
924 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
925 & eqn_idx%B%beg + 1)]
926 b%R = [bx0, qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg), qr_prim_rsx_vf(j, k, l + 1, &
927 & eqn_idx%B%beg + 1)]
929 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
930 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
931 & eqn_idx%B%beg +
dir_idx(3) - 1)]
932 b%R = [qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(1) - 1), &
933 & qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(2) - 1), &
934 & qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(3) - 1)]
939 rho%L = 0._wp; gamma%L = 0._wp; pi_inf%L = 0._wp; qv%L = 0._wp
940 rho%R = 0._wp; gamma%R = 0._wp; pi_inf%R = 0._wp; qv%R = 0._wp
942# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
943#if defined(MFC_OpenACC)
944# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
946# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
947#elif defined(MFC_OpenMP)
948# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
950# 129 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
953 rho%L = rho%L + alpha_rho_l(i)
954 gamma%L = gamma%L + alpha_l(i)*
gammas(i)
955 pi_inf%L = pi_inf%L + alpha_l(i)*
pi_infs(i)
956 qv%L = qv%L + alpha_rho_l(i)*
qvs(i)
958 rho%R = rho%R + alpha_rho_r(i)
959 gamma%R = gamma%R + alpha_r(i)*
gammas(i)
960 pi_inf%R = pi_inf%R + alpha_r(i)*
pi_infs(i)
961 qv%R = qv%R + alpha_rho_r(i)*
qvs(i)
964 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
965 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
966 e%L = gamma%L*pres%L + pi_inf%L + 0.5_wp*rho%L*vel_rms%L + qv%L + pres_mag%L
967 e%R = gamma%R*pres%R + pi_inf%R + 0.5_wp*rho%R*vel_rms%R + qv%R + pres_mag%R
968 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
970 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
981 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
982 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
984 ptot_l = pres%L + pres_mag%L
985 ptot_r = pres%R + pres_mag%R
987 s_m = (((s_r - vel%R(1))*rho%R*vel%R(1) - (s_l - vel%L(1))*rho%L*vel%L(1) - ptot_r + ptot_l)/((s_r &
988 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
991 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
992 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
993 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
994 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
995 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
998 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
999 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
1000 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
1001 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
1005 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
1006 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
1007 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
1008 f_l(7) = (e%L + ptot_l)*vel%L(1) - b%L(1)*(vel%L(1)*b%L(1) + vel%L(2)*b%L(2) + vel%L(3)*b%L(3))
1011 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
1012 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
1013 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
1014 f_r(7) = (e%R + ptot_r)*vel%R(1) - b%R(1)*(vel%R(1)*b%R(1) + vel%R(2)*b%R(2) + vel%R(3)*b%R(3))
1016 f_starl = f_l + s_l*(u_starl - u_l)
1017 f_starr = f_r + s_r*(u_starr - u_r)
1019 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
1020 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
1022 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
1023 vl_star = vel%L(2); wl_star = vel%L(3)
1024 vr_star = vel%R(2); wr_star = vel%R(3)
1027 denom_ds = sqrt_rhol_star + sqrt_rhor_star
1028 sign_bx = sign(1._wp, b%L(1))
1029 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
1030 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
1031 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
1032 & - vl_star)*sign_bx)/denom_ds
1033 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
1034 & - wl_star)*sign_bx)/denom_ds
1036 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
1037 & + w_double*bz_double))*sign_bx
1038 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
1039 & + w_double*bz_double))*sign_bx
1040 e_double = 0.5_wp*(e_doublel + e_doubler)
1042 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
1044 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
1048 if (0.0_wp <= s_l)
then
1050 else if (0.0_wp <= s_starl)
then
1051 f_hlld = f_l + s_l*(u_starl - u_l)
1052 else if (0.0_wp <= s_m)
then
1053 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
1054 else if (0.0_wp <= s_starr)
then
1055 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
1056 else if (0.0_wp <= s_r)
then
1057 f_hlld = f_r + s_r*(u_starr - u_r)
1071 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
1081# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1082#if defined(MFC_OpenACC)
1083# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1085# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1086#elif defined(MFC_OpenMP)
1087# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1089# 258 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1091 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1100# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1101#if defined(MFC_OpenACC)
1102# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1104# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1105#elif defined(MFC_OpenMP)
1106# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1108# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1110# 267 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1113# 270 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"