Skip to content

Commit ae16849

Browse files
committed
fix: protect HLLC xi-factor denominators from division by zero with sgm_eps
1 parent ab8ae6c commit ae16849

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

src/simulation/m_riemann_solvers.fpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2040,8 +2040,8 @@ contains
20402040
s_M = min(0._wp, s_L); s_P = max(0._wp, s_R)
20412041

20422042
! goes with q_star_L/R = xi_L/R * (variable) xi_L/R = ( ( s_L/R - u_L/R )/(s_L/R - s_star) )
2043-
xi_L = (s_L - vel_L(dir_idx(1)))/(s_L - s_S)
2044-
xi_R = (s_R - vel_R(dir_idx(1)))/(s_R - s_S)
2043+
xi_L = (s_L - vel_L(dir_idx(1)))/min(s_L - s_S, -sgm_eps)
2044+
xi_R = (s_R - vel_R(dir_idx(1)))/max(s_R - s_S, sgm_eps)
20452045

20462046
! goes with numerical star velocity in x/y/z directions xi_P/M = 0.5 +/m sgn(0.5,s_star)
20472047
xi_M = (5.e-1_wp + sign(0.5_wp, s_S))
@@ -2331,8 +2331,8 @@ contains
23312331
s_M = min(0._wp, s_L); s_P = max(0._wp, s_R)
23322332

23332333
! goes with q_star_L/R = xi_L/R * (variable) xi_L/R = ( ( s_L/R - u_L/R )/(s_L/R - s_star) )
2334-
xi_L = (s_L - vel_L(dir_idx(1)))/(s_L - s_S)
2335-
xi_R = (s_R - vel_R(dir_idx(1)))/(s_R - s_S)
2334+
xi_L = (s_L - vel_L(dir_idx(1)))/min(s_L - s_S, -sgm_eps)
2335+
xi_R = (s_R - vel_R(dir_idx(1)))/max(s_R - s_S, sgm_eps)
23362336

23372337
! goes with numerical velocity in x/y/z directions xi_P/M = 0.5 +/m sgn(0.5,s_star)
23382338
xi_M = (5.e-1_wp + sign(5.e-1_wp, s_S))
@@ -2688,8 +2688,8 @@ contains
26882688
s_M = min(0._wp, s_L); s_P = max(0._wp, s_R)
26892689

26902690
! goes with q_star_L/R = xi_L/R * (variable) xi_L/R = ( ( s_L/R - u_L/R )/(s_L/R - s_star) )
2691-
xi_L = (s_L - vel_L(dir_idx(1)))/(s_L - s_S)
2692-
xi_R = (s_R - vel_R(dir_idx(1)))/(s_R - s_S)
2691+
xi_L = (s_L - vel_L(dir_idx(1)))/min(s_L - s_S, -sgm_eps)
2692+
xi_R = (s_R - vel_R(dir_idx(1)))/max(s_R - s_S, sgm_eps)
26932693

26942694
! goes with numerical velocity in x/y/z directions xi_P/M = 0.5 +/m sgn(0.5,s_star)
26952695
xi_M = (5.e-1_wp + sign(5.e-1_wp, s_S))
@@ -3127,8 +3127,8 @@ contains
31273127
s_M = min(0._wp, s_L); s_P = max(0._wp, s_R)
31283128

31293129
! goes with q_star_L/R = xi_L/R * (variable) xi_L/R = ( ( s_L/R - u_L/R )/(s_L/R - s_star) )
3130-
xi_L = (s_L - vel_L(dir_idx(1)))/(s_L - s_S)
3131-
xi_R = (s_R - vel_R(dir_idx(1)))/(s_R - s_S)
3130+
xi_L = (s_L - vel_L(dir_idx(1)))/min(s_L - s_S, -sgm_eps)
3131+
xi_R = (s_R - vel_R(dir_idx(1)))/max(s_R - s_S, sgm_eps)
31323132

31333133
! goes with numerical velocity in x/y/z directions xi_P/M = 0.5 +/m sgn(0.5,s_star)
31343134
xi_M = (5.e-1_wp + sign(5.e-1_wp, s_S))

0 commit comments

Comments
 (0)