From df833235c80dc8fc97a0e4804cdebb1e5ca705d8 Mon Sep 17 00:00:00 2001 From: Nuwan Yapa Date: Mon, 25 Nov 2024 12:43:25 -0500 Subject: [PATCH] Relaxed shooting discontinuity check --- dirac.jl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dirac.jl b/dirac.jl index d8765df..731a864 100644 --- a/dirac.jl +++ b/dirac.jl @@ -43,10 +43,12 @@ function solveWf(κ, p, E, Φ0, W0, B0, A0, r_max, divs; shooting=true, normaliz wf = hcat(sol.u...) if shooting # join two segments - rescale_factor = wf[1, end] / wf_right[1, 1] - rescale_factor ≈ wf[2, end] / wf_right[2, 1] || @warn "Shooting method joint has a discontinuity" - rescale_factor = isfinite(rescale_factor) ? rescale_factor : 1 - wf = hcat(wf[:, 1:(end - 1)], wf_right .* rescale_factor) + rescale_factor_g = wf[1, end] / wf_right[1, 1] + rescale_factor_f = wf[2, end] / wf_right[2, 1] + @assert isfinite(rescale_factor_g) && isfinite(rescale_factor_f) "Cannot rescale the right partition" + isapprox(rescale_factor_g, rescale_factor_f; rtol=0.03) || @warn "Discontinuity between two partitions" + wf_right_rescaled = wf_right .* ((rescale_factor_g + rescale_factor_f) / 2) + wf = hcat(wf[:, 1:(end - 1)], wf_right_rescaled) end if normalize