diff --git a/src/Equilibrium/AnalyticEquilibrium.jl b/src/Equilibrium/AnalyticEquilibrium.jl index 176968b4f..6e7abbc5c 100644 --- a/src/Equilibrium/AnalyticEquilibrium.jl +++ b/src/Equilibrium/AnalyticEquilibrium.jl @@ -809,8 +809,8 @@ function sol_run(equil_inputs::EquilibriumConfig, sol_inputs::SolovevConfig) zmax = 1.5 * e * a zmin = -zmax - # Compute 1D data and spline - sqfs = Array{Float64}(undef, ma + 1, 4) + # zeros, not undef: only columns 1-3 are filled, so column 4 must stay a deterministic 0. + sqfs = zeros(ma + 1, 4) psis = [(ia / (ma + 1))^2 for ia in 1:(ma+1)] sqfs[:, 1] .= f0 .* f0fac sqfs[:, 2] .= pfac .* (1 .* p0fac .- psis) diff --git a/src/Equilibrium/DirectEquilibrium.jl b/src/Equilibrium/DirectEquilibrium.jl index 8dc58c7a4..20ab818e7 100644 --- a/src/Equilibrium/DirectEquilibrium.jl +++ b/src/Equilibrium/DirectEquilibrium.jl @@ -413,14 +413,16 @@ function _estimate_mid_spacing(sq_in, psi_split_core, psi_split_edge, tau) psi_samp = range(psi_split_core, psi_split_edge; length=n_samp) h_samp = step(psi_samp) h_min = Inf - buf = zeros(4) + # Size the buffer to the actual profile count, not a hardcoded 4 (cf. InverseEquilibrium.jl). + nq = size(sq_in.y, 2) + buf = zeros(nq) all_vals = [ begin sq_in(buf, ψ) copy(buf) end for ψ in psi_samp ] - for k in 1:4 + for k in 1:nq vals = [all_vals[i][k] for i in 1:n_samp] f_scale = max(maximum(abs.(vals)), 1e-12) d2_max = 0.0