Skip to content

Commit dbd1bbb

Browse files
sbryngelsonclaude
andcommitted
Guard THINC density ratio computation against divide-by-zero
When advxb approaches 0 or 1 at an interface, rho_b and rho_e could divide by zero. Guard with sgm_eps (1e-16) using the same pattern already used for C = (aC - qmin + sgm_eps)/(qmax + sgm_eps). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1866dff commit dbd1bbb

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

src/simulation/m_muscl.fpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,10 @@ contains
280280
A = (B/cosh(ic_beta) - 1._wp)/tanh(ic_beta)
281281

282282
! Save original density ratios before THINC overwrites them
283-
rho_b = vL_rs_vf_${XYZ}$ (j, k, l, contxb)/vL_rs_vf_${XYZ}$ (j, k, l, advxb)
284-
rho_e = vL_rs_vf_${XYZ}$ (j, k, l, contxe)/(1._wp - vL_rs_vf_${XYZ}$ (j, k, l, advxb))
283+
rho_b = vL_rs_vf_${XYZ}$ (j, k, l, contxb)/ &
284+
max(vL_rs_vf_${XYZ}$ (j, k, l, advxb), sgm_eps)
285+
rho_e = vL_rs_vf_${XYZ}$ (j, k, l, contxe)/ &
286+
max(1._wp - vL_rs_vf_${XYZ}$ (j, k, l, advxb), sgm_eps)
285287

286288
! Left reconstruction
287289
aTHINC = qmin + 5e-1_wp*qmax*(1._wp + sign*A)

0 commit comments

Comments
 (0)