346 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, &
347 & dqR_prim_dx_vf, dqR_prim_dy_vf, dqR_prim_dz_vf, qR_prim_vf, q_prim_vf, flux_vf, &
348 & flux_src_vf, flux_gsrc_vf, norm_dir, ix, iy, iz)
350 real(wp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:),
intent(inout) :: qL_prim_rsx_vf, qR_prim_rsx_vf
351 type(
scalar_field),
allocatable,
dimension(:),
intent(inout) :: dqL_prim_dx_vf, dqR_prim_dx_vf, dqL_prim_dy_vf, &
352 & dqR_prim_dy_vf, dqL_prim_dz_vf, dqR_prim_dz_vf
354 type(
scalar_field),
allocatable,
dimension(:),
intent(inout) :: qL_prim_vf, qR_prim_vf
355 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
356 type(
scalar_field),
dimension(sys_size),
intent(inout) :: flux_vf, flux_src_vf, flux_gsrc_vf
357 integer,
intent(in) :: norm_dir
362# 40 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
363 real(wp),
dimension(num_fluids) :: alpha_L, alpha_R, alpha_rho_L, alpha_rho_R
364# 42 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
373 real(wp) :: s_L, s_R, s_M, s_starL, s_starR
374 real(wp) :: pTot_L, pTot_R, p_star, rhoL_star, rhoR_star, E_starL, E_starR
375 real(wp),
dimension(7) :: U_L, U_R, U_starL, U_starR, U_doubleL, U_doubleR
376 real(wp),
dimension(7) :: F_L, F_R, F_starL, F_starR, F_hlld
382 real(wp) :: sqrt_rhoL_star, sqrt_rhoR_star, denom_ds, sign_Bx
383 real(wp) :: vL_star, vR_star, wL_star, wR_star
384 real(wp) :: v_double, w_double, By_double, Bz_double, E_doubleL, E_doubleR, E_double
385 integer :: i, j, k, l
388 & qr_prim_rsx_vf, dqr_prim_dx_vf, dqr_prim_dy_vf, dqr_prim_dz_vf, norm_dir, ix, iy, iz)
392# 73 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
393# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
394# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
395 if (norm_dir == 1)
then
397# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
399# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
400#if defined(MFC_OpenACC)
401# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
403# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
405# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
407# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
408#elif defined(MFC_OpenMP)
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"
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"
421# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
423# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
428 do i = 1, eqn_idx%cont%end
429 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
430 alpha_rho_r(i) = qr_prim_rsx_vf(j + 1, k, l, i)
435 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
436 vel%R(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%cont%end +
dir_idx(i))
439 vel_rms%L = sum(vel%L**2._wp)
440 vel_rms%R = sum(vel%R**2._wp)
443 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
444 alpha_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E + i)
447 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
448 pres%R = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E)
453 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
454 & eqn_idx%B%beg + 1)]
455 b%R = [bx0, qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg), qr_prim_rsx_vf(j + 1, k, l, &
456 & eqn_idx%B%beg + 1)]
458 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
459 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
460 & eqn_idx%B%beg +
dir_idx(3) - 1)]
461 b%R = [qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), &
462 & qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(2) - 1), &
463 & qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(3) - 1)]
468 rho%L = 0._wp; gamma%L = 0._wp; pi_inf%L = 0._wp; qv%L = 0._wp
469 rho%R = 0._wp; gamma%R = 0._wp; pi_inf%R = 0._wp; qv%R = 0._wp
471# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
472#if defined(MFC_OpenACC)
473# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
475# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
476#elif defined(MFC_OpenMP)
477# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
479# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
482 rho%L = rho%L + alpha_rho_l(i)
483 gamma%L = gamma%L + alpha_l(i)*
gammas(i)
484 pi_inf%L = pi_inf%L + alpha_l(i)*
pi_infs(i)
485 qv%L = qv%L + alpha_rho_l(i)*
qvs(i)
487 rho%R = rho%R + alpha_rho_r(i)
488 gamma%R = gamma%R + alpha_r(i)*
gammas(i)
489 pi_inf%R = pi_inf%R + alpha_r(i)*
pi_infs(i)
490 qv%R = qv%R + alpha_rho_r(i)*
qvs(i)
493 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
494 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
495 e%L = gamma%L*pres%L + pi_inf%L + 0.5_wp*rho%L*vel_rms%L + qv%L + pres_mag%L
496 e%R = gamma%R*pres%R + pi_inf%R + 0.5_wp*rho%R*vel_rms%R + qv%R + pres_mag%R
497 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
499 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
510 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
511 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
513 ptot_l = pres%L + pres_mag%L
514 ptot_r = pres%R + pres_mag%R
516 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 &
517 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
520 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
521 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
522 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
523 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
524 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
527 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
528 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
529 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
530 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
534 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
535 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
536 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
537 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))
540 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
541 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
542 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
543 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))
545 f_starl = f_l + s_l*(u_starl - u_l)
546 f_starr = f_r + s_r*(u_starr - u_r)
548 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
549 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
551 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
552 vl_star = vel%L(2); wl_star = vel%L(3)
553 vr_star = vel%R(2); wr_star = vel%R(3)
556 denom_ds = sqrt_rhol_star + sqrt_rhor_star
557 sign_bx = sign(1._wp, b%L(1))
558 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
559 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
560 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
561 & - vl_star)*sign_bx)/denom_ds
562 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
563 & - wl_star)*sign_bx)/denom_ds
565 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
566 & + w_double*bz_double))*sign_bx
567 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
568 & + w_double*bz_double))*sign_bx
569 e_double = 0.5_wp*(e_doublel + e_doubler)
571 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
573 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
577 if (0.0_wp <= s_l)
then
579 else if (0.0_wp <= s_starl)
then
580 f_hlld = f_l + s_l*(u_starl - u_l)
581 else if (0.0_wp <= s_m)
then
582 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
583 else if (0.0_wp <= s_starr)
then
584 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
585 else if (0.0_wp <= s_r)
then
586 f_hlld = f_r + s_r*(u_starr - u_r)
600 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
610# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
611#if defined(MFC_OpenACC)
612# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
614# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
615#elif defined(MFC_OpenMP)
616# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
618# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
620 do i = eqn_idx%adv%beg, eqn_idx%adv%end
629# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
630#if defined(MFC_OpenACC)
631# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
633# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
634#elif defined(MFC_OpenMP)
635# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
637# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
639# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
642# 73 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
643# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
644# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
645 if (norm_dir == 2)
then
647# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
649# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
650#if defined(MFC_OpenACC)
651# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
653# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
655# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
657# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
658#elif defined(MFC_OpenMP)
659# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
661# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
663# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
665# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
667# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
669# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
671# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
673# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
678 do i = 1, eqn_idx%cont%end
679 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
680 alpha_rho_r(i) = qr_prim_rsx_vf(j, k + 1, l, i)
685 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
686 vel%R(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%cont%end +
dir_idx(i))
689 vel_rms%L = sum(vel%L**2._wp)
690 vel_rms%R = sum(vel%R**2._wp)
693 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
694 alpha_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E + i)
697 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
698 pres%R = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E)
703 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
704 & eqn_idx%B%beg + 1)]
705 b%R = [bx0, qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg), qr_prim_rsx_vf(j, k + 1, l, &
706 & eqn_idx%B%beg + 1)]
708 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
709 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
710 & eqn_idx%B%beg +
dir_idx(3) - 1)]
711 b%R = [qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(1) - 1), &
712 & qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(2) - 1), &
713 & qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(3) - 1)]
718 rho%L = 0._wp; gamma%L = 0._wp; pi_inf%L = 0._wp; qv%L = 0._wp
719 rho%R = 0._wp; gamma%R = 0._wp; pi_inf%R = 0._wp; qv%R = 0._wp
721# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
722#if defined(MFC_OpenACC)
723# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
725# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
726#elif defined(MFC_OpenMP)
727# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
729# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
732 rho%L = rho%L + alpha_rho_l(i)
733 gamma%L = gamma%L + alpha_l(i)*
gammas(i)
734 pi_inf%L = pi_inf%L + alpha_l(i)*
pi_infs(i)
735 qv%L = qv%L + alpha_rho_l(i)*
qvs(i)
737 rho%R = rho%R + alpha_rho_r(i)
738 gamma%R = gamma%R + alpha_r(i)*
gammas(i)
739 pi_inf%R = pi_inf%R + alpha_r(i)*
pi_infs(i)
740 qv%R = qv%R + alpha_rho_r(i)*
qvs(i)
743 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
744 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
745 e%L = gamma%L*pres%L + pi_inf%L + 0.5_wp*rho%L*vel_rms%L + qv%L + pres_mag%L
746 e%R = gamma%R*pres%R + pi_inf%R + 0.5_wp*rho%R*vel_rms%R + qv%R + pres_mag%R
747 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
749 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
760 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
761 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
763 ptot_l = pres%L + pres_mag%L
764 ptot_r = pres%R + pres_mag%R
766 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 &
767 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
770 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
771 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
772 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
773 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
774 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
777 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
778 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
779 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
780 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
784 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
785 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
786 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
787 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))
790 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
791 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
792 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
793 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))
795 f_starl = f_l + s_l*(u_starl - u_l)
796 f_starr = f_r + s_r*(u_starr - u_r)
798 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
799 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
801 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
802 vl_star = vel%L(2); wl_star = vel%L(3)
803 vr_star = vel%R(2); wr_star = vel%R(3)
806 denom_ds = sqrt_rhol_star + sqrt_rhor_star
807 sign_bx = sign(1._wp, b%L(1))
808 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
809 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
810 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
811 & - vl_star)*sign_bx)/denom_ds
812 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
813 & - wl_star)*sign_bx)/denom_ds
815 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
816 & + w_double*bz_double))*sign_bx
817 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
818 & + w_double*bz_double))*sign_bx
819 e_double = 0.5_wp*(e_doublel + e_doubler)
821 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
823 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
827 if (0.0_wp <= s_l)
then
829 else if (0.0_wp <= s_starl)
then
830 f_hlld = f_l + s_l*(u_starl - u_l)
831 else if (0.0_wp <= s_m)
then
832 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
833 else if (0.0_wp <= s_starr)
then
834 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
835 else if (0.0_wp <= s_r)
then
836 f_hlld = f_r + s_r*(u_starr - u_r)
850 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
860# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
861#if defined(MFC_OpenACC)
862# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
864# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
865#elif defined(MFC_OpenMP)
866# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
868# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
870 do i = eqn_idx%adv%beg, eqn_idx%adv%end
879# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
880#if defined(MFC_OpenACC)
881# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
883# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
884#elif defined(MFC_OpenMP)
885# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
887# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
889# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
892# 73 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
893# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
894# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
895 if (norm_dir == 3)
then
897# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
899# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
900#if defined(MFC_OpenACC)
901# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
903# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
905# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
907# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
908#elif defined(MFC_OpenMP)
909# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
911# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
913# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
915# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
917# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
919# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
921# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
923# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
928 do i = 1, eqn_idx%cont%end
929 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
930 alpha_rho_r(i) = qr_prim_rsx_vf(j, k, l + 1, i)
935 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
936 vel%R(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%cont%end +
dir_idx(i))
939 vel_rms%L = sum(vel%L**2._wp)
940 vel_rms%R = sum(vel%R**2._wp)
943 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
944 alpha_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E + i)
947 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
948 pres%R = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E)
953 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
954 & eqn_idx%B%beg + 1)]
955 b%R = [bx0, qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg), qr_prim_rsx_vf(j, k, l + 1, &
956 & eqn_idx%B%beg + 1)]
958 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
959 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
960 & eqn_idx%B%beg +
dir_idx(3) - 1)]
961 b%R = [qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(1) - 1), &
962 & qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(2) - 1), &
963 & qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(3) - 1)]
968 rho%L = 0._wp; gamma%L = 0._wp; pi_inf%L = 0._wp; qv%L = 0._wp
969 rho%R = 0._wp; gamma%R = 0._wp; pi_inf%R = 0._wp; qv%R = 0._wp
971# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
972#if defined(MFC_OpenACC)
973# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
975# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
976#elif defined(MFC_OpenMP)
977# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
979# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
982 rho%L = rho%L + alpha_rho_l(i)
983 gamma%L = gamma%L + alpha_l(i)*
gammas(i)
984 pi_inf%L = pi_inf%L + alpha_l(i)*
pi_infs(i)
985 qv%L = qv%L + alpha_rho_l(i)*
qvs(i)
987 rho%R = rho%R + alpha_rho_r(i)
988 gamma%R = gamma%R + alpha_r(i)*
gammas(i)
989 pi_inf%R = pi_inf%R + alpha_r(i)*
pi_infs(i)
990 qv%R = qv%R + alpha_rho_r(i)*
qvs(i)
993 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
994 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
995 e%L = gamma%L*pres%L + pi_inf%L + 0.5_wp*rho%L*vel_rms%L + qv%L + pres_mag%L
996 e%R = gamma%R*pres%R + pi_inf%R + 0.5_wp*rho%R*vel_rms%R + qv%R + pres_mag%R
997 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
999 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
1010 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
1011 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
1013 ptot_l = pres%L + pres_mag%L
1014 ptot_r = pres%R + pres_mag%R
1016 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 &
1017 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
1020 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
1021 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
1022 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
1023 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
1024 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
1027 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
1028 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
1029 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
1030 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
1034 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
1035 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
1036 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
1037 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))
1040 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
1041 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
1042 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
1043 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))
1045 f_starl = f_l + s_l*(u_starl - u_l)
1046 f_starr = f_r + s_r*(u_starr - u_r)
1048 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
1049 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
1051 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
1052 vl_star = vel%L(2); wl_star = vel%L(3)
1053 vr_star = vel%R(2); wr_star = vel%R(3)
1056 denom_ds = sqrt_rhol_star + sqrt_rhor_star
1057 sign_bx = sign(1._wp, b%L(1))
1058 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
1059 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
1060 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
1061 & - vl_star)*sign_bx)/denom_ds
1062 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
1063 & - wl_star)*sign_bx)/denom_ds
1065 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
1066 & + w_double*bz_double))*sign_bx
1067 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
1068 & + w_double*bz_double))*sign_bx
1069 e_double = 0.5_wp*(e_doublel + e_doubler)
1071 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
1073 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
1077 if (0.0_wp <= s_l)
then
1079 else if (0.0_wp <= s_starl)
then
1080 f_hlld = f_l + s_l*(u_starl - u_l)
1081 else if (0.0_wp <= s_m)
then
1082 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
1083 else if (0.0_wp <= s_starr)
then
1084 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
1085 else if (0.0_wp <= s_r)
then
1086 f_hlld = f_r + s_r*(u_starr - u_r)
1100 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
1110# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1111#if defined(MFC_OpenACC)
1112# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1114# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1115#elif defined(MFC_OpenMP)
1116# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1118# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1120 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1129# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1130#if defined(MFC_OpenACC)
1131# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1133# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1134#elif defined(MFC_OpenMP)
1135# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1137# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1139# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1142# 269 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"