358 subroutine s_hlld_riemann_solver(qL_prim_rsx_vf, dqL_prim_dx_vf, dqL_prim_dy_vf, dqL_prim_dz_vf, qL_prim_vf, qR_prim_rsx_vf, &
359 & dqR_prim_dx_vf, dqR_prim_dy_vf, dqR_prim_dz_vf, qR_prim_vf, q_prim_vf, flux_vf, &
360 & flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
362 real(wp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:),
intent(inout) :: qL_prim_rsx_vf, qR_prim_rsx_vf
363 type(
scalar_field),
allocatable,
dimension(:),
intent(inout) :: dqL_prim_dx_vf, dqR_prim_dx_vf, dqL_prim_dy_vf, &
364 & dqR_prim_dy_vf, dqL_prim_dz_vf, dqR_prim_dz_vf
366 type(
scalar_field),
allocatable,
dimension(:),
intent(inout) :: qL_prim_vf, qR_prim_vf
367 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
368 type(
scalar_field),
dimension(sys_size),
intent(inout) :: flux_vf, flux_src_vf, flux_gsrc_vf
369 integer,
intent(in) :: norm_dir
374# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
375 real(wp),
dimension(num_fluids) :: alpha_L, alpha_R, alpha_rho_L, alpha_rho_R
376# 42 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
385 real(wp) :: s_L, s_R, s_M, s_starL, s_starR
386 real(wp) :: pTot_L, pTot_R, p_star, rhoL_star, rhoR_star, E_starL, E_starR
387 real(wp),
dimension(7) :: U_L, U_R, U_starL, U_starR, U_doubleL, U_doubleR
388 real(wp),
dimension(7) :: F_L, F_R, F_starL, F_starR, F_hlld
394 real(wp) :: sqrt_rhoL_star, sqrt_rhoR_star, denom_ds, sign_Bx
395 real(wp) :: vL_star, vR_star, wL_star, wR_star
396 real(wp) :: v_double, w_double, By_double, Bz_double, E_doubleL, E_doubleR, E_double
397 integer :: i, j, k, l
400 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, norm_dir, ix, iy, iz)
404# 73 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
405# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
406# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
407 if (norm_dir == 1)
then
409# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
411# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
412#if defined(MFC_OpenACC)
413# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
415# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
417# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
419# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
420#elif defined(MFC_OpenMP)
421# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
423# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
425# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
427# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
429# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
431# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
433# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
435# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
437# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
442 do i = 1, eqn_idx%cont%end
443 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
444 alpha_rho_r(i) = qr_prim_rsx_vf(j + 1, k, l, i)
449 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
450 vel%R(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%cont%end +
dir_idx(i))
453 vel_rms%L = sum(vel%L**2._wp)
454 vel_rms%R = sum(vel%R**2._wp)
457 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
458 alpha_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E + i)
461 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
462 pres%R = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E)
467 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
468 & eqn_idx%B%beg + 1)]
469 b%R = [bx0, qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg), qr_prim_rsx_vf(j + 1, k, l, &
470 & eqn_idx%B%beg + 1)]
472 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
473 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
474 & eqn_idx%B%beg +
dir_idx(3) - 1)]
475 b%R = [qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), &
476 & qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(2) - 1), &
477 & qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(3) - 1)]
484 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
485 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
487 e%L = e%L + pres_mag%L
489 e%R = e%R + pres_mag%R
490 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
492 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
501 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
502 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
504 ptot_l = pres%L + pres_mag%L
505 ptot_r = pres%R + pres_mag%R
507 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 &
508 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
511 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
512 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
513 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
514 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
515 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
518 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
519 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
520 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
521 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
525 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
526 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
527 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
528 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))
531 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
532 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
533 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
534 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))
536 f_starl = f_l + s_l*(u_starl - u_l)
537 f_starr = f_r + s_r*(u_starr - u_r)
539 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
540 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
542 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
543 vl_star = vel%L(2); wl_star = vel%L(3)
544 vr_star = vel%R(2); wr_star = vel%R(3)
547 denom_ds = sqrt_rhol_star + sqrt_rhor_star
548 sign_bx = sign(1._wp, b%L(1))
549 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
550 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
551 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
552 & - vl_star)*sign_bx)/denom_ds
553 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
554 & - wl_star)*sign_bx)/denom_ds
556 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
557 & + w_double*bz_double))*sign_bx
558 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
559 & + w_double*bz_double))*sign_bx
560 e_double = 0.5_wp*(e_doublel + e_doubler)
562 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
564 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
568 if (0.0_wp <= s_l)
then
570 else if (0.0_wp <= s_starl)
then
571 f_hlld = f_l + s_l*(u_starl - u_l)
572 else if (0.0_wp <= s_m)
then
573 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
574 else if (0.0_wp <= s_starr)
then
575 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
576 else if (0.0_wp <= s_r)
then
577 f_hlld = f_r + s_r*(u_starr - u_r)
591 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
601# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
602#if defined(MFC_OpenACC)
603# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
605# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
606#elif defined(MFC_OpenMP)
607# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
609# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
611 do i = eqn_idx%adv%beg, eqn_idx%adv%end
620# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
621#if defined(MFC_OpenACC)
622# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
624# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
625#elif defined(MFC_OpenMP)
626# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
628# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
630# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
633# 73 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
634# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
635# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
636 if (norm_dir == 2)
then
638# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
640# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
641#if defined(MFC_OpenACC)
642# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
644# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
646# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
648# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
649#elif defined(MFC_OpenMP)
650# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
652# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
654# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
656# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
658# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
660# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
662# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
664# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
666# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
671 do i = 1, eqn_idx%cont%end
672 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
673 alpha_rho_r(i) = qr_prim_rsx_vf(j, k + 1, l, i)
678 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
679 vel%R(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%cont%end +
dir_idx(i))
682 vel_rms%L = sum(vel%L**2._wp)
683 vel_rms%R = sum(vel%R**2._wp)
686 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
687 alpha_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E + i)
690 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
691 pres%R = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E)
696 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
697 & eqn_idx%B%beg + 1)]
698 b%R = [bx0, qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg), qr_prim_rsx_vf(j, k + 1, l, &
699 & eqn_idx%B%beg + 1)]
701 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
702 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
703 & eqn_idx%B%beg +
dir_idx(3) - 1)]
704 b%R = [qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(1) - 1), &
705 & qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(2) - 1), &
706 & qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(3) - 1)]
713 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
714 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
716 e%L = e%L + pres_mag%L
718 e%R = e%R + pres_mag%R
719 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
721 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
730 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
731 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
733 ptot_l = pres%L + pres_mag%L
734 ptot_r = pres%R + pres_mag%R
736 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 &
737 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
740 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
741 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
742 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
743 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
744 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
747 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
748 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
749 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
750 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
754 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
755 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
756 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
757 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))
760 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
761 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
762 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
763 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))
765 f_starl = f_l + s_l*(u_starl - u_l)
766 f_starr = f_r + s_r*(u_starr - u_r)
768 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
769 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
771 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
772 vl_star = vel%L(2); wl_star = vel%L(3)
773 vr_star = vel%R(2); wr_star = vel%R(3)
776 denom_ds = sqrt_rhol_star + sqrt_rhor_star
777 sign_bx = sign(1._wp, b%L(1))
778 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
779 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
780 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
781 & - vl_star)*sign_bx)/denom_ds
782 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
783 & - wl_star)*sign_bx)/denom_ds
785 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
786 & + w_double*bz_double))*sign_bx
787 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
788 & + w_double*bz_double))*sign_bx
789 e_double = 0.5_wp*(e_doublel + e_doubler)
791 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
793 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
797 if (0.0_wp <= s_l)
then
799 else if (0.0_wp <= s_starl)
then
800 f_hlld = f_l + s_l*(u_starl - u_l)
801 else if (0.0_wp <= s_m)
then
802 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
803 else if (0.0_wp <= s_starr)
then
804 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
805 else if (0.0_wp <= s_r)
then
806 f_hlld = f_r + s_r*(u_starr - u_r)
820 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
830# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
831#if defined(MFC_OpenACC)
832# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
834# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
835#elif defined(MFC_OpenMP)
836# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
838# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
840 do i = eqn_idx%adv%beg, eqn_idx%adv%end
849# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
850#if defined(MFC_OpenACC)
851# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
853# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
854#elif defined(MFC_OpenMP)
855# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
857# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
859# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
862# 73 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
863# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
864# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
865 if (norm_dir == 3)
then
867# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
869# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
870#if defined(MFC_OpenACC)
871# 76 "/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"
875# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
877# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
878#elif defined(MFC_OpenMP)
879# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
881# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
883# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
885# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
887# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
889# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
891# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
893# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
895# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
900 do i = 1, eqn_idx%cont%end
901 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
902 alpha_rho_r(i) = qr_prim_rsx_vf(j, k, l + 1, i)
907 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
908 vel%R(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%cont%end +
dir_idx(i))
911 vel_rms%L = sum(vel%L**2._wp)
912 vel_rms%R = sum(vel%R**2._wp)
915 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
916 alpha_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E + i)
919 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
920 pres%R = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E)
925 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
926 & eqn_idx%B%beg + 1)]
927 b%R = [bx0, qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg), qr_prim_rsx_vf(j, k, l + 1, &
928 & eqn_idx%B%beg + 1)]
930 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
931 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
932 & eqn_idx%B%beg +
dir_idx(3) - 1)]
933 b%R = [qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(1) - 1), &
934 & qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(2) - 1), &
935 & qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(3) - 1)]
942 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
943 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
945 e%L = e%L + pres_mag%L
947 e%R = e%R + pres_mag%R
948 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
950 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
959 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
960 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
962 ptot_l = pres%L + pres_mag%L
963 ptot_r = pres%R + pres_mag%R
965 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 &
966 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
969 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
970 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
971 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
972 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
973 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
976 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
977 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
978 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
979 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
983 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
984 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
985 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
986 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))
989 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
990 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
991 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
992 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))
994 f_starl = f_l + s_l*(u_starl - u_l)
995 f_starr = f_r + s_r*(u_starr - u_r)
997 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
998 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
1000 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
1001 vl_star = vel%L(2); wl_star = vel%L(3)
1002 vr_star = vel%R(2); wr_star = vel%R(3)
1005 denom_ds = sqrt_rhol_star + sqrt_rhor_star
1006 sign_bx = sign(1._wp, b%L(1))
1007 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
1008 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
1009 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
1010 & - vl_star)*sign_bx)/denom_ds
1011 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
1012 & - wl_star)*sign_bx)/denom_ds
1014 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
1015 & + w_double*bz_double))*sign_bx
1016 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
1017 & + w_double*bz_double))*sign_bx
1018 e_double = 0.5_wp*(e_doublel + e_doubler)
1020 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
1022 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
1026 if (0.0_wp <= s_l)
then
1028 else if (0.0_wp <= s_starl)
then
1029 f_hlld = f_l + s_l*(u_starl - u_l)
1030 else if (0.0_wp <= s_m)
then
1031 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
1032 else if (0.0_wp <= s_starr)
then
1033 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
1034 else if (0.0_wp <= s_r)
then
1035 f_hlld = f_r + s_r*(u_starr - u_r)
1049 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
1059# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1060#if defined(MFC_OpenACC)
1061# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1063# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1064#elif defined(MFC_OpenMP)
1065# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1067# 244 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1069 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1078# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1079#if defined(MFC_OpenACC)
1080# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1082# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1083#elif defined(MFC_OpenMP)
1084# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1086# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1088# 253 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1091# 256 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"