Skip to content

Commit af240e6

Browse files
committed
merge mhd gpu case-opt fix
1 parent aebdec9 commit af240e6

File tree

1 file changed

+44
-48
lines changed

1 file changed

+44
-48
lines changed

src/simulation/m_riemann_solvers.fpp

Lines changed: 44 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)