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# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
425# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
430 do i = 1, eqn_idx%cont%end
431 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
432 alpha_rho_r(i) = qr_prim_rsx_vf(j + 1, k, l, i)
437 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
438 vel%R(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%cont%end +
dir_idx(i))
441 vel_rms%L = sum(vel%L**2._wp)
442 vel_rms%R = sum(vel%R**2._wp)
445 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
446 alpha_r(i) = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E + i)
449 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
450 pres%R = qr_prim_rsx_vf(j + 1, k, l, eqn_idx%E)
455 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
456 & eqn_idx%B%beg + 1)]
457 b%R = [bx0, qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg), qr_prim_rsx_vf(j + 1, k, l, &
458 & eqn_idx%B%beg + 1)]
460 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
461 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
462 & eqn_idx%B%beg +
dir_idx(3) - 1)]
463 b%R = [qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), &
464 & qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(2) - 1), &
465 & qr_prim_rsx_vf(j + 1, k, l, eqn_idx%B%beg +
dir_idx(3) - 1)]
470 rho%L = 0._wp; gamma%L = 0._wp; pi_inf%L = 0._wp; qv%L = 0._wp
471 rho%R = 0._wp; gamma%R = 0._wp; pi_inf%R = 0._wp; qv%R = 0._wp
473# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
474#if defined(MFC_OpenACC)
475# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
477# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
478#elif defined(MFC_OpenMP)
479# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
481# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
484 rho%L = rho%L + alpha_rho_l(i)
485 gamma%L = gamma%L + alpha_l(i)*gammas(i)
486 pi_inf%L = pi_inf%L + alpha_l(i)*pi_infs(i)
487 qv%L = qv%L + alpha_rho_l(i)*qvs(i)
489 rho%R = rho%R + alpha_rho_r(i)
490 gamma%R = gamma%R + alpha_r(i)*gammas(i)
491 pi_inf%R = pi_inf%R + alpha_r(i)*pi_infs(i)
492 qv%R = qv%R + alpha_rho_r(i)*qvs(i)
495 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
496 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
497 e%L = gamma%L*pres%L + pi_inf%L + 0.5_wp*rho%L*vel_rms%L + qv%L + pres_mag%L
498 e%R = gamma%R*pres%R + pi_inf%R + 0.5_wp*rho%R*vel_rms%R + qv%R + pres_mag%R
499 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
501 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
512 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
513 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
515 ptot_l = pres%L + pres_mag%L
516 ptot_r = pres%R + pres_mag%R
518 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 &
519 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
522 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
523 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
524 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
525 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
526 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
529 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
530 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
531 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
532 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
536 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
537 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
538 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
539 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))
542 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
543 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
544 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
545 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))
547 f_starl = f_l + s_l*(u_starl - u_l)
548 f_starr = f_r + s_r*(u_starr - u_r)
550 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
551 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
553 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
554 vl_star = vel%L(2); wl_star = vel%L(3)
555 vr_star = vel%R(2); wr_star = vel%R(3)
558 denom_ds = sqrt_rhol_star + sqrt_rhor_star
559 sign_bx = sign(1._wp, b%L(1))
560 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
561 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
562 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
563 & - vl_star)*sign_bx)/denom_ds
564 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
565 & - wl_star)*sign_bx)/denom_ds
567 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
568 & + w_double*bz_double))*sign_bx
569 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
570 & + w_double*bz_double))*sign_bx
571 e_double = 0.5_wp*(e_doublel + e_doubler)
573 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
575 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
579 if (0.0_wp <= s_l)
then
581 else if (0.0_wp <= s_starl)
then
582 f_hlld = f_l + s_l*(u_starl - u_l)
583 else if (0.0_wp <= s_m)
then
584 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
585 else if (0.0_wp <= s_starr)
then
586 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
587 else if (0.0_wp <= s_r)
then
588 f_hlld = f_r + s_r*(u_starr - u_r)
602 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
612# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
613#if defined(MFC_OpenACC)
614# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
616# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
617#elif defined(MFC_OpenMP)
618# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
620# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
622 do i = eqn_idx%adv%beg, eqn_idx%adv%end
631# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
632#if defined(MFC_OpenACC)
633# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
635# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
636#elif defined(MFC_OpenMP)
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"
641# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
644# 73 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
645# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
646# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
647 if (norm_dir == 2)
then
649# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
651# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
652#if defined(MFC_OpenACC)
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"
659# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
660#elif defined(MFC_OpenMP)
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# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
675# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
677# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
682 do i = 1, eqn_idx%cont%end
683 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
684 alpha_rho_r(i) = qr_prim_rsx_vf(j, k + 1, l, i)
689 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
690 vel%R(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%cont%end +
dir_idx(i))
693 vel_rms%L = sum(vel%L**2._wp)
694 vel_rms%R = sum(vel%R**2._wp)
697 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
698 alpha_r(i) = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E + i)
701 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
702 pres%R = qr_prim_rsx_vf(j, k + 1, l, eqn_idx%E)
707 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
708 & eqn_idx%B%beg + 1)]
709 b%R = [bx0, qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg), qr_prim_rsx_vf(j, k + 1, l, &
710 & eqn_idx%B%beg + 1)]
712 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
713 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
714 & eqn_idx%B%beg +
dir_idx(3) - 1)]
715 b%R = [qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(1) - 1), &
716 & qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(2) - 1), &
717 & qr_prim_rsx_vf(j, k + 1, l, eqn_idx%B%beg +
dir_idx(3) - 1)]
722 rho%L = 0._wp; gamma%L = 0._wp; pi_inf%L = 0._wp; qv%L = 0._wp
723 rho%R = 0._wp; gamma%R = 0._wp; pi_inf%R = 0._wp; qv%R = 0._wp
725# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
726#if defined(MFC_OpenACC)
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"
730#elif defined(MFC_OpenMP)
731# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
733# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
736 rho%L = rho%L + alpha_rho_l(i)
737 gamma%L = gamma%L + alpha_l(i)*gammas(i)
738 pi_inf%L = pi_inf%L + alpha_l(i)*pi_infs(i)
739 qv%L = qv%L + alpha_rho_l(i)*qvs(i)
741 rho%R = rho%R + alpha_rho_r(i)
742 gamma%R = gamma%R + alpha_r(i)*gammas(i)
743 pi_inf%R = pi_inf%R + alpha_r(i)*pi_infs(i)
744 qv%R = qv%R + alpha_rho_r(i)*qvs(i)
747 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
748 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
749 e%L = gamma%L*pres%L + pi_inf%L + 0.5_wp*rho%L*vel_rms%L + qv%L + pres_mag%L
750 e%R = gamma%R*pres%R + pi_inf%R + 0.5_wp*rho%R*vel_rms%R + qv%R + pres_mag%R
751 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
753 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
764 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
765 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
767 ptot_l = pres%L + pres_mag%L
768 ptot_r = pres%R + pres_mag%R
770 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 &
771 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
774 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
775 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
776 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
777 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
778 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
781 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
782 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
783 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
784 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
788 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
789 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
790 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
791 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))
794 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
795 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
796 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
797 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))
799 f_starl = f_l + s_l*(u_starl - u_l)
800 f_starr = f_r + s_r*(u_starr - u_r)
802 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
803 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
805 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
806 vl_star = vel%L(2); wl_star = vel%L(3)
807 vr_star = vel%R(2); wr_star = vel%R(3)
810 denom_ds = sqrt_rhol_star + sqrt_rhor_star
811 sign_bx = sign(1._wp, b%L(1))
812 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
813 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
814 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
815 & - vl_star)*sign_bx)/denom_ds
816 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
817 & - wl_star)*sign_bx)/denom_ds
819 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
820 & + w_double*bz_double))*sign_bx
821 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
822 & + w_double*bz_double))*sign_bx
823 e_double = 0.5_wp*(e_doublel + e_doubler)
825 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
827 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
831 if (0.0_wp <= s_l)
then
833 else if (0.0_wp <= s_starl)
then
834 f_hlld = f_l + s_l*(u_starl - u_l)
835 else if (0.0_wp <= s_m)
then
836 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
837 else if (0.0_wp <= s_starr)
then
838 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
839 else if (0.0_wp <= s_r)
then
840 f_hlld = f_r + s_r*(u_starr - u_r)
854 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
864# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
865#if defined(MFC_OpenACC)
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"
869#elif defined(MFC_OpenMP)
870# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
872# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
874 do i = eqn_idx%adv%beg, eqn_idx%adv%end
883# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
884#if defined(MFC_OpenACC)
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"
888#elif defined(MFC_OpenMP)
889# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
891# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
893# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
896# 73 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
897# 74 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
898# 75 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
899 if (norm_dir == 3)
then
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"
904#if defined(MFC_OpenACC)
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"
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"
912#elif defined(MFC_OpenMP)
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# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
925# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
927# 76 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
929# 82 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
934 do i = 1, eqn_idx%cont%end
935 alpha_rho_l(i) = ql_prim_rsx_vf(j, k, l, i)
936 alpha_rho_r(i) = qr_prim_rsx_vf(j, k, l + 1, i)
941 vel%L(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%cont%end +
dir_idx(i))
942 vel%R(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%cont%end +
dir_idx(i))
945 vel_rms%L = sum(vel%L**2._wp)
946 vel_rms%R = sum(vel%R**2._wp)
949 alpha_l(i) = ql_prim_rsx_vf(j, k, l, eqn_idx%E + i)
950 alpha_r(i) = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E + i)
953 pres%L = ql_prim_rsx_vf(j, k, l, eqn_idx%E)
954 pres%R = qr_prim_rsx_vf(j, k, l + 1, eqn_idx%E)
959 b%L = [bx0, ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg), ql_prim_rsx_vf(j, k, l, &
960 & eqn_idx%B%beg + 1)]
961 b%R = [bx0, qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg), qr_prim_rsx_vf(j, k, l + 1, &
962 & eqn_idx%B%beg + 1)]
964 b%L = [ql_prim_rsx_vf(j, k, l, eqn_idx%B%beg +
dir_idx(1) - 1), ql_prim_rsx_vf(j, k, l, &
965 & eqn_idx%B%beg +
dir_idx(2) - 1), ql_prim_rsx_vf(j, k, l, &
966 & eqn_idx%B%beg +
dir_idx(3) - 1)]
967 b%R = [qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(1) - 1), &
968 & qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(2) - 1), &
969 & qr_prim_rsx_vf(j, k, l + 1, eqn_idx%B%beg +
dir_idx(3) - 1)]
974 rho%L = 0._wp; gamma%L = 0._wp; pi_inf%L = 0._wp; qv%L = 0._wp
975 rho%R = 0._wp; gamma%R = 0._wp; pi_inf%R = 0._wp; qv%R = 0._wp
977# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
978#if defined(MFC_OpenACC)
979# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
981# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
982#elif defined(MFC_OpenMP)
983# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
985# 128 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
988 rho%L = rho%L + alpha_rho_l(i)
989 gamma%L = gamma%L + alpha_l(i)*gammas(i)
990 pi_inf%L = pi_inf%L + alpha_l(i)*pi_infs(i)
991 qv%L = qv%L + alpha_rho_l(i)*qvs(i)
993 rho%R = rho%R + alpha_rho_r(i)
994 gamma%R = gamma%R + alpha_r(i)*gammas(i)
995 pi_inf%R = pi_inf%R + alpha_r(i)*pi_infs(i)
996 qv%R = qv%R + alpha_rho_r(i)*qvs(i)
999 pres_mag%L = 0.5_wp*sum(b%L**2._wp)
1000 pres_mag%R = 0.5_wp*sum(b%R**2._wp)
1001 e%L = gamma%L*pres%L + pi_inf%L + 0.5_wp*rho%L*vel_rms%L + qv%L + pres_mag%L
1002 e%R = gamma%R*pres%R + pi_inf%R + 0.5_wp*rho%R*vel_rms%R + qv%R + pres_mag%R
1003 h_no_mag%L = (e%L + pres%L - pres_mag%L)/rho%L
1005 h_no_mag%R = (e%R + pres%R - pres_mag%R)/rho%R
1016 s_l = min(vel%L(1) - c_fast%L, vel%R(1) - c_fast%R)
1017 s_r = max(vel%R(1) + c_fast%R, vel%L(1) + c_fast%L)
1019 ptot_l = pres%L + pres_mag%L
1020 ptot_r = pres%R + pres_mag%R
1022 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 &
1023 & - vel%R(1))*rho%R - (s_l - vel%L(1))*rho%L))
1026 rhol_star = rho%L*(s_l - vel%L(1))/(s_l - s_m)
1027 rhor_star = rho%R*(s_r - vel%R(1))/(s_r - s_m)
1028 p_star = ptot_l + rho%L*(s_l - vel%L(1))*(s_m - vel%L(1))/(s_l - s_m)
1029 e_starl = ((s_l - vel%L(1))*e%L - ptot_l*vel%L(1) + p_star*s_m)/(s_l - s_m)
1030 e_starr = ((s_r - vel%R(1))*e%R - ptot_r*vel%R(1) + p_star*s_m)/(s_r - s_m)
1033 u_l = [rho%L, rho%L*vel%L(1:3), b%L(2:3), e%L]
1034 u_starl = [rhol_star, rhol_star*s_m, rhol_star*vel%L(2:3), b%L(2:3), e_starl]
1035 u_r = [rho%R, rho%R*vel%R(1:3), b%R(2:3), e%R]
1036 u_starr = [rhor_star, rhor_star*s_m, rhor_star*vel%R(2:3), b%R(2:3), e_starr]
1040 f_l(2) = u_l(2)*vel%L(1) - b%L(1)*b%L(1) + ptot_l
1041 f_l(3:4) = u_l(2)*vel%L(2:3) - b%L(1)*b%L(2:3)
1042 f_l(5:6) = vel%L(1)*b%L(2:3) - vel%L(2:3)*b%L(1)
1043 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))
1046 f_r(2) = u_r(2)*vel%R(1) - b%R(1)*b%R(1) + ptot_r
1047 f_r(3:4) = u_r(2)*vel%R(2:3) - b%R(1)*b%R(2:3)
1048 f_r(5:6) = vel%R(1)*b%R(2:3) - vel%R(2:3)*b%R(1)
1049 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))
1051 f_starl = f_l + s_l*(u_starl - u_l)
1052 f_starr = f_r + s_r*(u_starr - u_r)
1054 s_starl = s_m - abs(b%L(1))/sqrt(rhol_star)
1055 s_starr = s_m + abs(b%L(1))/sqrt(rhor_star)
1057 sqrt_rhol_star = sqrt(rhol_star); sqrt_rhor_star = sqrt(rhor_star)
1058 vl_star = vel%L(2); wl_star = vel%L(3)
1059 vr_star = vel%R(2); wr_star = vel%R(3)
1062 denom_ds = sqrt_rhol_star + sqrt_rhor_star
1063 sign_bx = sign(1._wp, b%L(1))
1064 v_double = (sqrt_rhol_star*vl_star + sqrt_rhor_star*vr_star + (b%R(2) - b%L(2))*sign_bx)/denom_ds
1065 w_double = (sqrt_rhol_star*wl_star + sqrt_rhor_star*wr_star + (b%R(3) - b%L(3))*sign_bx)/denom_ds
1066 by_double = (sqrt_rhol_star*b%R(2) + sqrt_rhor_star*b%L(2) + sqrt_rhol_star*sqrt_rhor_star*(vr_star &
1067 & - vl_star)*sign_bx)/denom_ds
1068 bz_double = (sqrt_rhol_star*b%R(3) + sqrt_rhor_star*b%L(3) + sqrt_rhol_star*sqrt_rhor_star*(wr_star &
1069 & - wl_star)*sign_bx)/denom_ds
1071 e_doublel = e_starl - sqrt_rhol_star*((vl_star*b%L(2) + wl_star*b%L(3)) - (v_double*by_double &
1072 & + w_double*bz_double))*sign_bx
1073 e_doubler = e_starr + sqrt_rhor_star*((vr_star*b%R(2) + wr_star*b%R(3)) - (v_double*by_double &
1074 & + w_double*bz_double))*sign_bx
1075 e_double = 0.5_wp*(e_doublel + e_doubler)
1077 u_doublel = [rhol_star, rhol_star*s_m, rhol_star*v_double, rhol_star*w_double, by_double, bz_double, &
1079 u_doubler = [rhor_star, rhor_star*s_m, rhor_star*v_double, rhor_star*w_double, by_double, bz_double, &
1083 if (0.0_wp <= s_l)
then
1085 else if (0.0_wp <= s_starl)
then
1086 f_hlld = f_l + s_l*(u_starl - u_l)
1087 else if (0.0_wp <= s_m)
then
1088 f_hlld = f_starl + s_starl*(u_doublel - u_starl)
1089 else if (0.0_wp <= s_starr)
then
1090 f_hlld = f_starr + s_starr*(u_doubler - u_starr)
1091 else if (0.0_wp <= s_r)
then
1092 f_hlld = f_r + s_r*(u_starr - u_r)
1106 flux_rsx_vf(j, k, l, eqn_idx%B%beg + 1) = f_hlld(6)
1116# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1117#if defined(MFC_OpenACC)
1118# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1120# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1121#elif defined(MFC_OpenMP)
1122# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1124# 257 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1126 do i = eqn_idx%adv%beg, eqn_idx%adv%end
1135# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1136#if defined(MFC_OpenACC)
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"
1140#elif defined(MFC_OpenMP)
1141# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1143# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1145# 266 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"
1148# 269 "/home/runner/work/MFC/MFC/src/simulation/m_riemann_solver_hlld.fpp"