@@ -2998,7 +2998,7 @@ contains
29982998
29992999 ! Local variables:
30003000 real(wp), dimension(num_fluids) :: alpha_L, alpha_R, alpha_rho_L, alpha_rho_R
3001- type(riemann_states), dimension(num_vels ) :: vel
3001+ type(riemann_states_vec3 ) :: vel
30023002 type(riemann_states) :: rho, pres, E, H_no_mag
30033003 type(riemann_states) :: gamma, pi_inf, qv
30043004 type(riemann_states) :: vel_rms
@@ -3051,16 +3051,12 @@ contains
30513051
30523052 ! NOTE: unlike HLL & HLLC, vel_L here is permutated by dir_idx for simpler logic
30533053 do i = 1, num_vels
3054- vel(i)%L = qL_prim_rs${XYZ}$_vf(j, k, l, contxe + dir_idx(i))
3055- vel(i)%R = qR_prim_rs${XYZ}$_vf(j + 1, k, l, contxe + dir_idx(i))
3054+ vel%L (i) = qL_prim_rs${XYZ}$_vf(j, k, l, contxe + dir_idx(i))
3055+ vel%R (i) = qR_prim_rs${XYZ}$_vf(j + 1, k, l, contxe + dir_idx(i))
30563056 end do
30573057
3058- vel_rms%L = 0._wp; vel_rms%R = 0._wp
3059-
3060- do i = 1, num_vels
3061- vel_rms%L = vel_rms%L + vel(i)%L**2._wp
3062- vel_rms%R = vel_rms%R + vel(i)%R**2._wp
3063- end do
3058+ vel_rms%L = sum(vel%L**2._wp)
3059+ vel_rms%R = sum(vel%R**2._wp)
30643060
30653061 do i = 1, num_fluids
30663062 alpha_L(i) = qL_prim_rs${XYZ}$_vf(j, k, l, E_idx + i)
@@ -3119,73 +3115,73 @@ contains
31193115 call s_compute_fast_magnetosonic_speed(rho%R, c%R, B%R, norm_dir, c_fast%R, H_no_mag%R)
31203116
31213117 ! (3) Compute contact speed s_M [Miyoshi Equ. (38)]
3122- s_L = min(vel(1)%L - c_fast%L, vel(1)%R - c_fast%R)
3123- s_R = max(vel(1)%R + c_fast%R, vel(1)%L + c_fast%L)
3118+ s_L = min(vel%L (1) - c_fast%L, vel%R (1) - c_fast%R)
3119+ s_R = max(vel%R (1) + c_fast%R, vel%L (1) + c_fast%L)
31243120
31253121 pTot_L = pres%L + pres_mag%L
31263122 pTot_R = pres%R + pres_mag%R
31273123
3128- s_M = (((s_R - vel(1)%R )*rho%R*vel(1)%R - &
3129- (s_L - vel(1)%L )*rho%L*vel(1)%L - pTot_R + pTot_L)/ &
3130- ((s_R - vel(1)%R )*rho%R - (s_L - vel(1)%L )*rho%L))
3124+ s_M = (((s_R - vel%R (1))*rho%R*vel%R (1) - &
3125+ (s_L - vel%L (1))*rho%L*vel%L (1) - pTot_R + pTot_L)/ &
3126+ ((s_R - vel%R (1))*rho%R - (s_L - vel%L (1))*rho%L))
31313127
31323128 ! (4) Compute star state variables
3133- rhoL_star = rho%L*(s_L - vel(1)%L )/(s_L - s_M)
3134- rhoR_star = rho%R*(s_R - vel(1)%R )/(s_R - s_M)
3135- p_star = pTot_L + rho%L*(s_L - vel(1)%L )*(s_M - vel(1)%L )/(s_L - s_M)
3136- E_starL = ((s_L - vel(1)%L )*E%L - pTot_L*vel(1)%L + p_star*s_M)/(s_L - s_M)
3137- E_starR = ((s_R - vel(1)%R )*E%R - pTot_R*vel(1)%R + p_star*s_M)/(s_R - s_M)
3129+ rhoL_star = rho%L*(s_L - vel%L (1))/(s_L - s_M)
3130+ rhoR_star = rho%R*(s_R - vel%R (1))/(s_R - s_M)
3131+ p_star = pTot_L + rho%L*(s_L - vel%L (1))*(s_M - vel%L (1))/(s_L - s_M)
3132+ E_starL = ((s_L - vel%L (1))*E%L - pTot_L*vel%L (1) + p_star*s_M)/(s_L - s_M)
3133+ E_starR = ((s_R - vel%R (1))*E%R - pTot_R*vel%R (1) + p_star*s_M)/(s_R - s_M)
31383134
31393135 ! (5) Compute the left/right conserved state vectors
31403136 U_L(1) = rho%L
3141- U_L(2) = rho%L*vel(1)%L
3142- U_L(3) = rho%L*vel(2)%L
3143- U_L(4) = rho%L*vel(3)%L
3137+ U_L(2) = rho%L*vel%L (1)
3138+ U_L(3) = rho%L*vel%L (2)
3139+ U_L(4) = rho%L*vel%L (3)
31443140 U_L(5) = B%L(2)
31453141 U_L(6) = B%L(3)
31463142 U_L(7) = E%L
31473143
31483144 U_R(1) = rho%R
3149- U_R(2) = rho%R*vel(1)%R
3150- U_R(3) = rho%R*vel(2)%R
3151- U_R(4) = rho%R*vel(3)%R
3145+ U_R(2) = rho%R*vel%R (1)
3146+ U_R(3) = rho%R*vel%R (2)
3147+ U_R(4) = rho%R*vel%R (3)
31523148 U_R(5) = B%R(2)
31533149 U_R(6) = B%R(3)
31543150 U_R(7) = E%R
31553151
31563152 ! (6) Compute the left/right star state vectors
31573153 U_starL(1) = rhoL_star
31583154 U_starL(2) = rhoL_star*s_M
3159- U_starL(3) = rhoL_star*vel(2)%L
3160- U_starL(4) = rhoL_star*vel(3)%L
3155+ U_starL(3) = rhoL_star*vel%L (2)
3156+ U_starL(4) = rhoL_star*vel%L (3)
31613157 U_starL(5) = B%L(2)
31623158 U_starL(6) = B%L(3)
31633159 U_starL(7) = E_starL
31643160
31653161 U_starR(1) = rhoR_star
31663162 U_starR(2) = rhoR_star*s_M
3167- U_starR(3) = rhoR_star*vel(2)%R
3168- U_starR(4) = rhoR_star*vel(3)%R
3163+ U_starR(3) = rhoR_star*vel%R (2)
3164+ U_starR(4) = rhoR_star*vel%R (3)
31693165 U_starR(5) = B%R(2)
31703166 U_starR(6) = B%R(3)
31713167 U_starR(7) = E_starR
31723168
31733169 ! (7) Compute the left/right fluxes
3174- F_L(1) = rho%L*vel(1)%L
3175- F_L(2) = rho%L*vel(1)%L *vel(1)%L - B%L(1)*B%L(1) + pTot_L
3176- F_L(3) = rho%L*vel(1)%L *vel(2)%L - B%L(1)*B%L(2)
3177- F_L(4) = rho%L*vel(1)%L *vel(3)%L - B%L(1)*B%L(3)
3178- F_L(5) = vel(1)%L *B%L(2) - vel(2)%L *B%L(1)
3179- F_L(6) = vel(1)%L *B%L(3) - vel(3)%L *B%L(1)
3180- F_L(7) = (E%L + pTot_L)*vel(1)%L - B%L(1)*(vel(1)%L *B%L(1) + vel(2)%L *B%L(2) + vel(3)%L *B%L(3))
3181-
3182- F_R(1) = rho%R*vel(1)%R
3183- F_R(2) = rho%R*vel(1)%R *vel(1)%R - B%R(1)*B%R(1) + pTot_R
3184- F_R(3) = rho%R*vel(1)%R *vel(2)%R - B%R(1)*B%R(2)
3185- F_R(4) = rho%R*vel(1)%R *vel(3)%R - B%R(1)*B%R(3)
3186- F_R(5) = vel(1)%R *B%R(2) - vel(2)%R *B%R(1)
3187- F_R(6) = vel(1)%R *B%R(3) - vel(3)%R *B%R(1)
3188- F_R(7) = (E%R + pTot_R)*vel(1)%R - B%R(1)*(vel(1)%R *B%R(1) + vel(2)%R *B%R(2) + vel(3)%R *B%R(3))
3170+ F_L(1) = rho%L*vel%L (1)
3171+ F_L(2) = rho%L*vel%L (1)*vel%L (1) - B%L(1)*B%L(1) + pTot_L
3172+ F_L(3) = rho%L*vel%L (1)*vel%L (2) - B%L(1)*B%L(2)
3173+ F_L(4) = rho%L*vel%L (1)*vel%L (3) - B%L(1)*B%L(3)
3174+ F_L(5) = vel%L (1)*B%L(2) - vel%L (2)*B%L(1)
3175+ F_L(6) = vel%L (1)*B%L(3) - vel%L (3)*B%L(1)
3176+ 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))
3177+
3178+ F_R(1) = rho%R*vel%R (1)
3179+ F_R(2) = rho%R*vel%R (1)*vel%R (1) - B%R(1)*B%R(1) + pTot_R
3180+ F_R(3) = rho%R*vel%R (1)*vel%R (2) - B%R(1)*B%R(2)
3181+ F_R(4) = rho%R*vel%R (1)*vel%R (3) - B%R(1)*B%R(3)
3182+ F_R(5) = vel%R (1)*B%R(2) - vel%R (2)*B%R(1)
3183+ F_R(6) = vel%R (1)*B%R(3) - vel%R (3)*B%R(1)
3184+ 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))
31893185
31903186 ! (8) Compute the left/right star fluxes (note array operations)
31913187 F_starL = F_L + s_L*(U_starL - U_L)
@@ -3200,10 +3196,10 @@ contains
32003196 sqrt_rhoR_star = sqrt(rhoR_star)
32013197 denom_ds = sqrt_rhoL_star + sqrt_rhoR_star
32023198 sign_Bx = sign(1._wp, B%L(1))
3203- vL_star = vel(2)%L
3204- wL_star = vel(3)%L
3205- vR_star = vel(2)%R
3206- wR_star = vel(3)%R
3199+ vL_star = vel%L (2)
3200+ wL_star = vel%L (3)
3201+ vR_star = vel%R (2)
3202+ wR_star = vel%R (3)
32073203 v_double = (sqrt_rhoL_star*vL_star + sqrt_rhoR_star*vR_star + (B%R(2) - B%L(2))*sign_Bx)/denom_ds
32083204 w_double = (sqrt_rhoL_star*wL_star + sqrt_rhoR_star*wR_star + (B%R(3) - B%L(3))*sign_Bx)/denom_ds
32093205 By_double = (sqrt_rhoL_star*B%R(2) + sqrt_rhoR_star*B%L(2) + sqrt_rhoL_star*sqrt_rhoR_star*(vR_star - vL_star)*sign_Bx)/denom_ds
0 commit comments