Problem
In the resistive (RPEC / gal-resistive) path, the reconstructed perturbed field b^ψ blows up at the rational surfaces. Because b^ψ ∝ (m − nq)·ξ^ψ and the outer Newcomb solution near a Mercier-stable surface carries a large solution ~|x|^{1/2−√(−D_I)}, the resonant component cusps (and for D_I < −1/4 diverges) right where we want to read the penetrated resonant field. The same cusp is visible in the Fortran output and in the paper figures — it is physical structure of the outer solution, not a bug, but it makes the on-surface field ill-defined.
We currently estimate the penetrated field by sampling the outer solution pointwise at a small fixed offset from the surface (SingularCoupling.jl, spot_psi = 5e-4/(|n|·|q′|)). This muddles the meaning of the metric: at low resistivity the sampled value pins to the regular background ("numerical floor") and cannot resolve the true (smaller, differing) penetration; the value also depends on the arbitrary offset.
Why this is a child of #230
#230 proposes getting Δ_mn directly from the Frobenius/asymptotic structure instead of numerically differentiating the perturbed B field across the surface, and already notes the resistive case "must be treated very carefully." This issue is that resistive special case for the penetrated field quantity: stop reading a numerical field at the singular surface; get the resonant amplitude from the matched asymptotic coefficients instead.
Proposed direction — use the inner-layer solution
The reconnected/penetrated flux is well-defined and cusp-free inside the resistive layer, where the GGJ inner equations regularize the (m − nq) factor. The Fortran rmatch already does exactly this: match_output_solution (rmatch/match.f) never reads the penetrated field off the cusped outer solution — it builds the inner-region field intotsol_b from the Ψ-component of the GGJ inner solution at the layer center, weighted by the inner matching coefficients cin, and scales it by chi1·i·n·q′·x0 (x0 = S^(−1/3)). At x = 0 that value is finite and smooth — it is the reconnected flux.
Concretely, per rational surface i and drive column j:
b_pen_inner[i,j] = (v1/x0)^(1/2+p1) · chi1 · i · n · q′ · x0
· [ Ψ₀(parity1)·cin[2i, j] + Ψ₀(parity2)·cin[2i−1, j] ]
with Ψ₀ = inner Ψ at x = 0, p1 = √(−D_I). The Julia inner solver already exposes the needed pieces (InnerLayer.GGJ.solve_inner_profile returns the inner Ψ profile; gal_match_rpec has cin).
A throwaway diagnostic (behind GAL_DUMP_INNER in GalerkinMatch.jl, used by benchmarks/resistive_resmets/) confirms the inner-layer value is finite, smooth, and monotonic in resistivity, resolving penetration well below the pointwise "floor" that the current method saturates at.
Scope of work
References
- Fortran:
rmatch/match.f match_output_solution (intotsol_b build), rmatch/deltac.f deltac_output_solution/deltac_get_solution (inner Ψ reconstruction + rescale).
- Julia:
src/InnerLayer/GGJ/Galerkin.jl (solve_inner_profile), src/ForceFreeStates/Galerkin/GalerkinMatch.jl (cin), src/PerturbedEquilibrium/SingularCoupling.jl (current pointwise b_pen).
- Glasser, Wang & Park, Computation of resistive instabilities by matched asymptotic expansions, Phys. Plasmas 23, 112506 (2016); Wang et al., Phys. Plasmas 27, 122509 (2020).
Problem
In the resistive (RPEC / gal-resistive) path, the reconstructed perturbed field
b^ψblows up at the rational surfaces. Becauseb^ψ ∝ (m − nq)·ξ^ψand the outer Newcomb solution near a Mercier-stable surface carries a large solution~|x|^{1/2−√(−D_I)}, the resonant component cusps (and forD_I < −1/4diverges) right where we want to read the penetrated resonant field. The same cusp is visible in the Fortran output and in the paper figures — it is physical structure of the outer solution, not a bug, but it makes the on-surface field ill-defined.We currently estimate the penetrated field by sampling the outer solution pointwise at a small fixed offset from the surface (
SingularCoupling.jl,spot_psi = 5e-4/(|n|·|q′|)). This muddles the meaning of the metric: at low resistivity the sampled value pins to the regular background ("numerical floor") and cannot resolve the true (smaller, differing) penetration; the value also depends on the arbitrary offset.Why this is a child of #230
#230 proposes getting
Δ_mndirectly from the Frobenius/asymptotic structure instead of numerically differentiating the perturbed B field across the surface, and already notes the resistive case "must be treated very carefully." This issue is that resistive special case for the penetrated field quantity: stop reading a numerical field at the singular surface; get the resonant amplitude from the matched asymptotic coefficients instead.Proposed direction — use the inner-layer solution
The reconnected/penetrated flux is well-defined and cusp-free inside the resistive layer, where the GGJ inner equations regularize the
(m − nq)factor. The Fortran rmatch already does exactly this:match_output_solution(rmatch/match.f) never reads the penetrated field off the cusped outer solution — it builds the inner-region fieldintotsol_bfrom the Ψ-component of the GGJ inner solution at the layer center, weighted by the inner matching coefficientscin, and scales it bychi1·i·n·q′·x0(x0 = S^(−1/3)). Atx = 0that value is finite and smooth — it is the reconnected flux.Concretely, per rational surface
iand drive columnj:with
Ψ₀ = inner Ψ at x = 0,p1 = √(−D_I). The Julia inner solver already exposes the needed pieces (InnerLayer.GGJ.solve_inner_profilereturns the inner Ψ profile;gal_match_rpechascin).A throwaway diagnostic (behind
GAL_DUMP_INNERinGalerkinMatch.jl, used bybenchmarks/resistive_resmets/) confirms the inner-layer value is finite, smooth, and monotonic in resistivity, resolving penetration well below the pointwise "floor" that the current method saturates at.Scope of work
PerturbedEquilibriumsingular-coupling path (replace / supplement the pointwise-offsetb_peninSingularCoupling.jl).intotsol_bconventions (component = Ψ, parity ordering,cinpairing, the(v1/x0)^(1/2+p1)rescale andchi1·i·n·q′·x0scaling).Δ_mn/ shielded-flux metrics should likewise come from the asymptotic coefficients (ties back to Create asymptotics matrix for direct Delta_mn calculation #230).References
rmatch/match.fmatch_output_solution(intotsol_b build),rmatch/deltac.fdeltac_output_solution/deltac_get_solution(inner Ψ reconstruction + rescale).src/InnerLayer/GGJ/Galerkin.jl(solve_inner_profile),src/ForceFreeStates/Galerkin/GalerkinMatch.jl(cin),src/PerturbedEquilibrium/SingularCoupling.jl(current pointwiseb_pen).