@@ -1724,7 +1724,7 @@ contains
17241724 subroutine s_compute_wave_speed (wave_speeds , vel_L , vel_R , pres_L , pres_R , rho_L , rho_R , rho_avg , &
17251725 c_L , c_R , c_avg , c_fast_L , c_fast_R , G_L , G_R , &
17261726 tau_e_L , tau_e_R , gamma_L , gamma_R , pi_inf_L , pi_inf_R , &
1727- s_L , s_R , s_S , s_M , s_P )
1727+ s_L , s_R , s_S , s_M , s_P , idx , idx_tau )
17281728
17291729 ! Computes the wave speeds for the Riemann solver
17301730#ifdef _CRAYFTN
@@ -1735,6 +1735,7 @@ contains
17351735
17361736 ! Input parameters
17371737 integer , intent (in ) :: wave_speeds
1738+ integer , intent (in ) :: idx, idx_tau
17381739 real (wp), intent (in ) :: rho_L, rho_R
17391740 real (wp), dimension (:), intent (in ) :: vel_L, vel_R, tau_e_L, tau_e_R
17401741 real (wp), intent (in ) :: pres_L, pres_R, c_L, c_R
@@ -1751,41 +1752,41 @@ contains
17511752
17521753 if (wave_speeds == 1 ) then
17531754 if (mhd) then
1754- s_L = min (vel_L(dir_idx( 1 )) - c_fast_L, vel_R(dir_idx( 1 ) ) - c_fast_R)
1755- s_R = max (vel_R(dir_idx( 1 )) + c_fast_R, vel_L(dir_idx( 1 ) ) + c_fast_L)
1755+ s_L = min (vel_L(idx) - c_fast_L, vel_R(idx ) - c_fast_R)
1756+ s_R = max (vel_R(idx) + c_fast_R, vel_L(idx ) + c_fast_L)
17561757 elseif (hypoelasticity .or. elasticity) then
1757- s_L = min (vel_L(dir_idx( 1 ) ) - sqrt (c_L* c_L + (((4._wp * G_L)/ 3._wp ) + &
1758- tau_e_L(dir_idx_tau( 1 ) ))/ rho_L) &
1759- , vel_R(dir_idx( 1 ) ) - sqrt (c_R* c_R + (((4._wp * G_R)/ 3._wp ) + &
1760- tau_e_R(dir_idx_tau( 1 ) ))/ rho_R))
1761- s_R = max (vel_R(dir_idx( 1 ) ) + sqrt (c_R* c_R + (((4._wp * G_R)/ 3._wp ) + &
1762- tau_e_R(dir_idx_tau( 1 ) ))/ rho_R) &
1763- , vel_L(dir_idx( 1 ) ) + sqrt (c_L* c_L + (((4._wp * G_L)/ 3._wp ) + &
1764- tau_e_L(dir_idx_tau( 1 ) ))/ rho_L))
1758+ s_L = min (vel_L(idx ) - sqrt (c_L* c_L + (((4._wp * G_L)/ 3._wp ) + &
1759+ tau_e_L(idx_tau ))/ rho_L) &
1760+ , vel_R(idx ) - sqrt (c_R* c_R + (((4._wp * G_R)/ 3._wp ) + &
1761+ tau_e_R(idx_tau ))/ rho_R))
1762+ s_R = max (vel_R(idx ) + sqrt (c_R* c_R + (((4._wp * G_R)/ 3._wp ) + &
1763+ tau_e_R(idx_tau ))/ rho_R) &
1764+ , vel_L(idx ) + sqrt (c_L* c_L + (((4._wp * G_L)/ 3._wp ) + &
1765+ tau_e_L(idx_tau ))/ rho_L))
17651766 else if (hyperelasticity) then
1766- s_L = min (vel_L(dir_idx( 1 ) ) - sqrt (c_L* c_L + (4._wp * G_L/ 3._wp )/ rho_L) &
1767- , vel_R(dir_idx( 1 ) ) - sqrt (c_R* c_R + (4._wp * G_R/ 3._wp )/ rho_R))
1768- s_R = max (vel_R(dir_idx( 1 ) ) + sqrt (c_R* c_R + (4._wp * G_R/ 3._wp )/ rho_R) &
1769- , vel_L(dir_idx( 1 ) ) + sqrt (c_L* c_L + (4._wp * G_L/ 3._wp )/ rho_L))
1767+ s_L = min (vel_L(idx ) - sqrt (c_L* c_L + (4._wp * G_L/ 3._wp )/ rho_L) &
1768+ , vel_R(idx ) - sqrt (c_R* c_R + (4._wp * G_R/ 3._wp )/ rho_R))
1769+ s_R = max (vel_R(idx ) + sqrt (c_R* c_R + (4._wp * G_R/ 3._wp )/ rho_R) &
1770+ , vel_L(idx ) + sqrt (c_L* c_L + (4._wp * G_L/ 3._wp )/ rho_L))
17701771 else
1771- s_L = min (vel_L(dir_idx( 1 )) - c_L, vel_R(dir_idx( 1 ) ) - c_R)
1772- s_R = max (vel_R(dir_idx( 1 )) + c_R, vel_L(dir_idx( 1 ) ) + c_L)
1772+ s_L = min (vel_L(idx) - c_L, vel_R(idx ) - c_R)
1773+ s_R = max (vel_R(idx) + c_R, vel_L(idx ) + c_L)
17731774 end if
1774- s_S = (pres_R - pres_L + rho_L* vel_L(dir_idx( 1 ) )* &
1775- (s_L - vel_L(dir_idx( 1 ))) - rho_R* vel_R(dir_idx( 1 )) * (s_R - vel_R(dir_idx( 1 ) ))) &
1776- / (rho_L* (s_L - vel_L(dir_idx( 1 ))) - rho_R* (s_R - vel_R(dir_idx( 1 ) )))
1775+ s_S = (pres_R - pres_L + rho_L* vel_L(idx )* &
1776+ (s_L - vel_L(idx)) - rho_R* vel_R(idx) * (s_R - vel_R(idx ))) &
1777+ / (rho_L* (s_L - vel_L(idx)) - rho_R* (s_R - vel_R(idx )))
17771778 elseif (wave_speeds == 2 ) then
1778- pres_SL = 5e-1_wp * (pres_L + pres_R + rho_avg* c_avg* (vel_L(dir_idx( 1 )) - vel_R(dir_idx( 1 ) )))
1779+ pres_SL = 5e-1_wp * (pres_L + pres_R + rho_avg* c_avg* (vel_L(idx) - vel_R(idx )))
17791780 pres_SR = pres_SL
17801781 Ms_L = max (1._wp , sqrt (1._wp + ((5e-1_wp + gamma_L)/ (1._wp + gamma_L))* &
17811782 (pres_SL/ pres_L - 1._wp )* pres_L/ &
17821783 ((pres_L + pi_inf_L/ (1._wp + gamma_L)))))
17831784 Ms_R = max (1._wp , sqrt (1._wp + ((5e-1_wp + gamma_R)/ (1._wp + gamma_R))* &
17841785 (pres_SR/ pres_R - 1._wp )* pres_R/ &
17851786 ((pres_R + pi_inf_R/ (1._wp + gamma_R)))))
1786- s_L = vel_L(dir_idx( 1 ) ) - c_L* Ms_L
1787- s_R = vel_R(dir_idx( 1 ) ) + c_R* Ms_R
1788- s_S = 5e-1_wp * ((vel_L(dir_idx( 1 )) + vel_R(dir_idx( 1 ) )) + (pres_L - pres_R)/ (rho_avg* c_avg))
1787+ s_L = vel_L(idx ) - c_L* Ms_L
1788+ s_R = vel_R(idx ) + c_R* Ms_R
1789+ s_S = 5e-1_wp * ((vel_L(idx) + vel_R(idx )) + (pres_L - pres_R)/ (rho_avg* c_avg))
17891790 end if
17901791
17911792 ! ! follows Einfeldt et al.
@@ -1798,7 +1799,7 @@ contains
17981799 if (s_R <= s_L) then
17991800 print * , ' WARNING: Wave speed issue detected in s_compute_wave_speed'
18001801 print * , ' Left wave speed >= Right wave speed:' , s_L, s_R
1801- print * , ' Input velocities :' , vel_L(dir_idx( 1 )) , vel_R(dir_idx( 1 ) )
1802+ print * , ' Input velocities :' , vel_L(idx) , vel_R(idx )
18021803 print * , ' Sound speeds:' , c_L, c_R
18031804 print * , ' Densities:' , rho_L, rho_R
18041805 print * , ' Pressures:' , pres_L, pres_R
0 commit comments