From a09f6bf34824f468f96e6e7b44313d2a7094a4f5 Mon Sep 17 00:00:00 2001 From: d-burg Date: Wed, 9 Sep 2026 14:04:36 -0400 Subject: [PATCH 1/4] ForceFreeStates - PERF! - Default to Vern7 with an explicit absolute tolerance and pin BLAS in the sweep MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A brute-force comparison of 20 OrdinaryDiffEq solvers on the Euler-Lagrange propagator chunks (shipped DIII-D-like case plus ten IDA_run geqdsks) showed that error control was dominated by the OrdinaryDiffEq default abstol of 1e-6, and that once a real absolute tolerance is set Vern9 rejects two of every three steps near the rational surfaces while fifth-to-seventh-order methods reach the same accuracy for about half the RHS evaluations. - Add `ode_solver` (default "Vern7") and `ode_abstol` (default 1e-8) to ForceFreeStatesControl and use them at every Euler-Lagrange solve site. On the corpus Vern7 is 1.5-4.7x faster than Vern9 at equal tolerances, with Δ′ closer to the converged solution in every case; the shipped case's Force-Free States stage is ~13 % faster than before while its eigenvalue and Δ′ errors against a 1e-13/1e-15 reference drop from 5e-8/1e-4 to 2e-9/1.5e-5. - Pin BLAS to one thread inside the sweep and the Δ′ BVP: the mpert×mpert blocks lose more to BLAS synchronization than they gain (RHS cost 263 → 73 µs at mpert=35). - Add the benchmark scripts used for the comparison: a chunk-level work-precision harness, a whole-stage driver that scores δW and Δ′ against a converged reference, and a cold/warm stage profiler. Co-Authored-By: Claude Fable 5.1 --- benchmarks/benchmark_integrators.jl | 338 +++++++++++++++++++ benchmarks/benchmark_integrators_pipeline.jl | 223 ++++++++++++ benchmarks/profile_ffs_stages.jl | 114 +++++++ examples/DIIID-like_ideal_example/gpec.toml | 2 + src/ForceFreeStates/CoreTypes.jl | 4 + src/ForceFreeStates/EulerLagrange.jl | 106 +++--- src/ForceFreeStates/ForceFreeStates.jl | 11 + src/ForceFreeStates/Riccati/DeltaPrimeBVP.jl | 207 ++++++------ src/ForceFreeStates/Riccati/Propagators.jl | 65 ++-- 9 files changed, 881 insertions(+), 189 deletions(-) create mode 100644 benchmarks/benchmark_integrators.jl create mode 100644 benchmarks/benchmark_integrators_pipeline.jl create mode 100644 benchmarks/profile_ffs_stages.jl diff --git a/benchmarks/benchmark_integrators.jl b/benchmarks/benchmark_integrators.jl new file mode 100644 index 000000000..23718974f --- /dev/null +++ b/benchmarks/benchmark_integrators.jl @@ -0,0 +1,338 @@ +# Work-precision comparison of OrdinaryDiffEq integrators on the STRIDE-equivalent step of +# julia_GPEC: the fundamental-matrix (FM) propagator chunks of the Euler-Lagrange ODE. +# +# A chunk propagator is the fundamental matrix Φ(ψ₂,ψ₁) of the Euler-Lagrange system over one +# sub-interval of the outer region, obtained by integrating from the two identity-block initial +# conditions (I,0) and (0,I) [Glasser 2018 Phys. Plasmas 25, 032507]. Assembling the chunk +# propagators serially with periodic renormalization is what makes the chunked BVP well +# conditioned, and it is where essentially all of the Riccati solver's ODE time is spent. +# +# Accuracy criterion: each candidate is compared against a Vern9 reference at reltol=1e-13, +# abstol=1e-15 through the relative Frobenius error of the end-state blocks, maxed over the two +# initial conditions. The row `Vern9` at the case's own `eulerlagrange_tolerance` is the +# production setting and is the accuracy floor every candidate must be judged against — an +# integrator is only a drop-in replacement if it is at least as accurate as that row. +# +# Usage: +# julia --project=. -t 1 benchmarks/benchmark_integrators.jl --case [options] +# +# --case case directory containing eq.geqdsk and gpec.toml (required) +# --algs comma-separated OrdinaryDiffEq algorithm names +# --rtols comma-separated relative tolerances (default 1e-6,1e-8,1e-10) +# --reps timed repetitions, minimum is kept (default 3) +# --out CSV output path (default benchmarks/integrator_results/.csv) +# --quick smoke test: 3 chunks, Vern9/Tsit5/VCABM, rtol 1e-8, 1 rep +# --include-outer also time the serial outer-plasma Riccati solve with its callback + +using LinearAlgebra, Printf, TOML +using GeneralizedPerturbedEquilibrium +using OrdinaryDiffEq + +const GPE = GeneralizedPerturbedEquilibrium +const FFS = GeneralizedPerturbedEquilibrium.ForceFreeStates + +# Absolute tolerance for candidate solves; `nothing` keeps the production default (OrdinaryDiffEq 1e-6). +const CANDIDATE_ABSTOL = Ref{Union{Nothing,Float64}}(nothing) + +const DEFAULT_ALGS = ["Tsit5", "BS5", "DP5", "Vern6", "Vern7", "Vern8", "Vern9", "DP8", "TanYam7", "TsitPap8", + "Feagin10", "Feagin12", "Feagin14", "VCAB4", "VCAB5", "VCABM3", "VCABM4", "VCABM5", "VCABM", "AN5"] + +# ---------------------------------------------------------------- CLI + +function parse_args(args) + opts = Dict{String,Any}("case" => nothing, "algs" => DEFAULT_ALGS, "rtols" => [1e-6, 1e-8, 1e-10], + "reps" => 3, "out" => nothing, "quick" => false, "include_outer" => false, "blas" => nothing, "abstol" => nothing) + i = 1 + while i <= length(args) + a = args[i] + if a == "--case" + opts["case"] = args[i+1] + i += 2 + elseif a == "--algs" + opts["algs"] = String.(split(args[i+1], ",")) + i += 2 + elseif a == "--rtols" + opts["rtols"] = parse.(Float64, split(args[i+1], ",")) + i += 2 + elseif a == "--reps" + opts["reps"] = parse(Int, args[i+1]) + i += 2 + elseif a == "--out" + opts["out"] = args[i+1] + i += 2 + elseif a == "--quick" + opts["quick"] = true + i += 1 + elseif a == "--include-outer" + opts["include_outer"] = true + i += 1 + elseif a == "--blas-threads" + opts["blas"] = parse(Int, args[i+1]) + i += 2 + elseif a == "--abstol" + opts["abstol"] = parse(Float64, args[i+1]) + i += 2 + else + error("Unknown argument: $a") + end + end + opts["case"] === nothing && error("--case is required") + if opts["quick"] + opts["algs"] = ["Vern9", "Tsit5", "VCABM"] + opts["rtols"] = [1e-8] + opts["reps"] = 1 + end + return opts +end + +# ---------------------------------------------------------------- case setup + +# Build (ctrl, equil, mats, intr) exactly as the production pipeline does: mode space from +# resolve_mode_space!, the two-pass auto grid re-formed once, matrices from prepare_force_free_states!. +function setup_case(dir::AbstractString) + inputs = TOML.parsefile(joinpath(dir, "gpec.toml")) + inputs["ForceFreeStates"]["verbose"] = false + inputs["ForceFreeStates"]["write_outputs_to_HDF5"] = false + inputs["ForceFreeStates"]["integrator"] = "riccati" + ctrl = FFS.ForceFreeStatesControl(; (Symbol(k) => v for (k, v) in inputs["ForceFreeStates"])...) + eq_config = GPE.Equilibrium.EquilibriumConfig(inputs["Equilibrium"], dir) + intr = FFS.ForceFreeStatesInternal(; dir_path=dir) + intr.wall_settings = GPE.Vacuum.WallShapeSettings(; (Symbol(k) => v for (k, v) in inputs["Wall"])...) + GPE.resolve_mode_space!(intr, ctrl) + equil = GPE.Equilibrium.setup_equilibrium(eq_config, nothing) + equil = GPE.maybe_reform_equilibrium(equil, eq_config, nothing, intr, ctrl, nothing) + metric, mats = GPE.prepare_force_free_states!(intr, ctrl, equil, GPE.KineticForces.KineticForcesControl(), nothing) + return ctrl, equil, mats, intr +end + +# ---------------------------------------------------------------- one chunk + +# Reproduces integrate_propagator_chunk! standalone: two identity-block ICs, hints reset before +# each solve, tspan reversed for backward (direction=-1) chunks. +function solve_chunk(chunk, alg, ctrl, equil, mats, intr, proxy; reltol, abstol=nothing) + N = intr.numpert_total + tspan = chunk.direction == 1 ? (chunk.psi_start, chunk.psi_end) : (chunk.psi_end, chunk.psi_start) + params = (ctrl, equil, mats, intr, proxy, chunk) + blocks = Vector{Array{ComplexF64,3}}(undef, 2) + nf = naccept = nreject = 0 + for (ic, slot) in ((1, 1), (2, 2)) + u0 = zeros(ComplexF64, N, N, 2) + for i in 1:N + u0[i, i, ic] = 1 + end + proxy.spline_hint[] = 1 + proxy.mats_hint[] = 1 + prob = ODEProblem(FFS.sing_der!, u0, tspan, params) + atol = abstol === nothing ? CANDIDATE_ABSTOL[] : abstol + sol = + atol === nothing ? solve(prob, alg; reltol=reltol, save_everystep=false, save_end=true) : + solve(prob, alg; reltol=reltol, abstol=atol, save_everystep=false, save_end=true) + blocks[slot] = sol.u[end] + nf += sol.stats.nf + naccept += sol.stats.naccept + nreject += sol.stats.nreject + end + return blocks, nf, naccept, nreject +end + +relerr(a, b) = norm(a .- b) / norm(b) +chunk_error(blocks, ref) = max(relerr(blocks[1], ref[1]), relerr(blocks[2], ref[2])) + +# ---------------------------------------------------------------- sweep + +function sweep(algname, rtol, chunks, ctrl, equil, mats, intr, refs, reps) + N = intr.numpert_total + proxy = FFS.OdeState(N, 1, 1, 0) + alg = try + getfield(OrdinaryDiffEq, Symbol(algname))() + catch err + @warn "construction failed for $algname: $(sprint(showerror, err))" + return nothing + end + try + solve_chunk(chunks[1], alg, ctrl, equil, mats, intr, proxy; reltol=rtol) # JIT warm-up, untimed + catch err + @warn "first solve failed for $algname @ rtol=$rtol: $(sprint(showerror, err))" + return nothing + end + best = Inf + nf = naccept = nreject = 0 + held = Vector{Vector{Array{ComplexF64,3}}}(undef, length(chunks)) + per_naccept = zeros(Int, length(chunks)) + for _ in 1:reps + nf_r = naccept_r = nreject_r = 0 + t = @elapsed for (i, ch) in enumerate(chunks) + blocks, a, b, c = solve_chunk(ch, alg, ctrl, equil, mats, intr, proxy; reltol=rtol) + held[i] = blocks + per_naccept[i] = b + nf_r += a + naccept_r += b + nreject_r += c + end + if t < best + best = t + nf, naccept, nreject = nf_r, naccept_r, nreject_r + end + end + errs = [chunk_error(held[i], refs[i]) for i in eachindex(chunks)] + return (; wall=best, nf=nf, naccept=naccept, nreject=nreject, errs=errs, per_naccept=per_naccept) +end + +# Serial outer-plasma Riccati solve (axis to the first crossing) with its DiscreteCallback. +# Only the first chunk is run: it is the representative callback-carrying solve and needs no +# singular-surface crossing machinery. +function sweep_outer(algname, rtol, ctrl, equil, mats, intr, reps) + alg = try + getfield(OrdinaryDiffEq, Symbol(algname))() + catch err + @warn "construction failed for $algname (outer): $(sprint(showerror, err))" + return nothing + end + saved = FFS.EL_ODE_ALGORITHM[] + FFS.EL_ODE_ALGORITHM[] = alg + ctrl_local = ctrl + best = Inf + ustate = nothing + try + for r in 0:reps + odet = FFS._initialize_parallel_odet(ctrl_local, equil, mats, intr) + serial = FFS.chunk_el_integration_bounds(odet, ctrl_local, intr; bidirectional=false) + t = @elapsed FFS.riccati_integrate_chunk!(odet, ctrl_local, equil, mats, intr, serial[1]) + r == 0 && continue # warm-up + best = min(best, t) + ustate = copy(odet.u) + end + catch err + @warn "outer solve failed for $algname @ rtol=$rtol: $(sprint(showerror, err))" + FFS.EL_ODE_ALGORITHM[] = saved + return nothing + end + FFS.EL_ODE_ALGORITHM[] = saved + return (; wall=best, u=ustate) +end + +# ---------------------------------------------------------------- driver + +function main(args) + opts = parse_args(args) + casedir = abspath(opts["case"]) + casename = basename(rstrip(casedir, '/')) + outpath = opts["out"] === nothing ? joinpath(@__DIR__, "integrator_results", casename * ".csv") : abspath(opts["out"]) + mkpath(dirname(outpath)) + chunkpath = replace(outpath, r"\.csv$" => "") * "_chunks.csv" + + opts["blas"] !== nothing && BLAS.set_num_threads(opts["blas"]) + CANDIDATE_ABSTOL[] = opts["abstol"] + ctrl, equil, mats, intr = setup_case(casedir) + N = intr.numpert_total + odet = FFS._initialize_parallel_odet(ctrl, equil, mats, intr) + chunks, _, _ = FFS._setup_parallel_chunks_and_proxies(odet, ctrl, intr) + opts["quick"] && (chunks = chunks[1:min(3, length(chunks))]) + + @printf("\ncase %s\n", casename) + @printf("N (numpert_total) %d\n", N) + @printf("BLAS threads %d\n", BLAS.get_num_threads()) + @printf("candidate abstol %s\n", CANDIDATE_ABSTOL[] === nothing ? "default (1e-6)" : string(CANDIDATE_ABSTOL[])) + @printf("msing %d\n", intr.msing) + @printf("nchunks %d\n", length(chunks)) + @printf("psi range [%.6f, %.6f] over %d chunk boundaries\n", + minimum(c.psi_start for c in chunks), maximum(c.psi_end for c in chunks), length(chunks) + 1) + @printf("production rtol %.1e (eulerlagrange_tolerance, Vern9)\n\n", ctrl.eulerlagrange_tolerance) + + println("computing Vern9 reference (reltol=1e-13, abstol=1e-15) ...") + refproxy = FFS.OdeState(N, 1, 1, 0) + refs = [solve_chunk(ch, Vern9(), ctrl, equil, mats, intr, refproxy; reltol=1e-13, abstol=1e-15)[1] for ch in chunks] + println("reference done.\n") + + rows = Any[] + chunkrows = Dict{Tuple{String,Float64},Any}() + # The production setting first: it defines the accuracy floor the candidates are judged against. + prod_rtol = ctrl.eulerlagrange_tolerance + pairs = [("Vern9", prod_rtol)] + for rtol in opts["rtols"], a in opts["algs"] + (a, rtol) in pairs || push!(pairs, (a, rtol)) + end + + for (algname, rtol) in pairs + res = sweep(algname, rtol, chunks, ctrl, equil, mats, intr, refs, opts["reps"]) + if res === nothing + push!(rows, (casename, algname, rtol, "failed", length(chunks), N, intr.msing, NaN, 0, 0, 0, NaN, NaN)) + continue + end + us_per_rhs = res.nf > 0 ? res.wall / res.nf * 1e6 : NaN + push!(rows, (casename, algname, rtol, "ok", length(chunks), N, intr.msing, res.wall, res.nf, + res.naccept, res.nreject, maximum(res.errs), median_of(res.errs))) + chunkrows[(algname, rtol)] = res + @printf(" %-10s rtol=%.0e %7.3f s nf=%-8d err_max=%.3e\n", algname, rtol, res.wall, res.nf, maximum(res.errs)) + end + + if opts["include_outer"] + for rtol in opts["rtols"], algname in opts["algs"] + r = sweep_outer(algname, rtol, ctrl, equil, mats, intr, opts["reps"]) + r === nothing && continue + push!(rows, (casename, algname * "+outer", rtol, "ok", 1, N, intr.msing, r.wall, 0, 0, 0, NaN, NaN)) + end + end + + write_csv(outpath, rows) + write_chunk_csv(chunkpath, casename, chunks, chunkrows, rows) + print_table(rows, prod_rtol) + @printf("\nwrote %s\n %s\n", outpath, chunkpath) + return nothing +end + +function median_of(v) + isempty(v) && return NaN + s = sort(v) + n = length(s) + return isodd(n) ? s[(n+1)÷2] : 0.5 * (s[n÷2] + s[n÷2+1]) +end + +const HEADER = "case,alg,rtol,status,nchunks,N,msing,wall_s_min,nf,naccept,nreject,us_per_rhs,err_max,err_median" + +function write_csv(path, rows) + open(path, "w") do io + println(io, HEADER) + for r in rows + us = r[9] > 0 ? r[8] / r[9] * 1e6 : NaN + @printf(io, "%s,%s,%.3e,%s,%d,%d,%d,%.6f,%d,%d,%d,%.4f,%.6e,%.6e\n", + r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], r[11], us, r[12], r[13]) + end + end +end + +# Per-chunk detail for the three fastest algorithms, so step concentration is visible. +function write_chunk_csv(path, casename, chunks, chunkrows, rows) + ok = filter(r -> r[4] == "ok" && !occursin("+outer", r[2]), rows) + ranked = sort(unique(r[2] for r in ok); by=a -> minimum(r[8] for r in ok if r[2] == a)) + best3 = ranked[1:min(3, length(ranked))] + open(path, "w") do io + println(io, "case,alg,rtol,chunk,psi_start,psi_end,direction,naccept,err") + for ((algname, rtol), res) in sort(collect(chunkrows); by=kv -> (kv[1][1], kv[1][2])) + algname in best3 || continue + for (i, ch) in enumerate(chunks) + @printf(io, "%s,%s,%.3e,%d,%.8f,%.8f,%d,%d,%.6e\n", + casename, algname, rtol, i, ch.psi_start, ch.psi_end, ch.direction, res.per_naccept[i], res.errs[i]) + end + end + end +end + +function print_table(rows, prod_rtol) + println("\n", "="^108) + @printf("%-12s %-9s %-7s %10s %10s %9s %9s %10s %11s %11s\n", + "alg", "rtol", "status", "wall_s", "nf", "naccept", "nreject", "us/rhs", "err_max", "err_med") + println("="^108) + for rtol in sort(unique(r[3] for r in rows)) + sub = sort(filter(r -> r[3] == rtol, rows); by=r -> (r[4] == "ok" ? 0 : 1, isnan(r[8]) ? Inf : r[8])) + for r in sub + us = r[9] > 0 ? r[8] / r[9] * 1e6 : NaN + mark = (r[2] == "Vern9" && rtol == prod_rtol) ? " <- production" : "" + @printf("%-12s %-9.0e %-7s %10.3f %10d %9d %9d %10.4f %11.3e %11.3e%s\n", + r[2], r[3], r[4], r[8], r[9], r[10], r[11], us, r[12], r[13], mark) + end + println("-"^108) + end +end + +main(ARGS) diff --git a/benchmarks/benchmark_integrators_pipeline.jl b/benchmarks/benchmark_integrators_pipeline.jl new file mode 100644 index 000000000..55086ecf6 --- /dev/null +++ b/benchmarks/benchmark_integrators_pipeline.jl @@ -0,0 +1,223 @@ +#!/usr/bin/env julia +""" +benchmark_integrators_pipeline.jl - Whole-pipeline integrator comparison for the Euler-Lagrange sweep. + +Runs the Force-Free States stage of one case (equilibrium and matrix splines prepared once, untimed) +with every requested OrdinaryDiffEq algorithm and relative tolerance, selected through the +`ode_solver` / `ode_abstol` control fields. Times the Euler-Lagrange integration, the free-boundary energies and +the Δ′ BVP separately, and compares the products every downstream consumer reads — the free-boundary +energy eigenvalues `et` and the singular-surface Δ′ matrix — against two references: + + - `ref`: Vern9 at the case's shipped `eulerlagrange_tolerance` (today's production numbers), and + - `truth`: Vern9 at reltol 1e-13, the best answer this pipeline can produce. + +The acceptance rule is "no loss in accuracy": a candidate is only interesting if its distance from +`truth` is no larger than the production reference's own distance from `truth`. + +# Usage + +```bash +julia --project=. -t 1 benchmarks/benchmark_integrators_pipeline.jl --case [options] + + --case directory holding eq.geqdsk and gpec.toml (required) + --algs a,b,c OrdinaryDiffEq algorithm names (default: the explicit non-stiff set below) + --rtols 1e-8,1e-10 relative tolerances to sweep (default: the case's eulerlagrange_tolerance) + --reps timed repetitions per (alg, rtol); the minimum is reported (default 2) + --mode riccati|forward Euler-Lagrange formalism (default riccati, the STRIDE-equivalent path) + --blas-threads BLAS.set_num_threads(k) before timing (default: leave as started) + --abstol absolute tolerance for every candidate solve (default 1e-6, the OrdinaryDiffEq default) + --out output path (default benchmarks/integrator_results/_pipeline.csv) + --no-truth skip the reltol 1e-13 truth run +``` + +Inputs are read only from the case directory; outputs are written under `benchmarks/`. +""" + +using LinearAlgebra +using Printf +using Statistics +using TOML +using OrdinaryDiffEq +using GeneralizedPerturbedEquilibrium + +const GPE = GeneralizedPerturbedEquilibrium +const FFS = GPE.ForceFreeStates + +const DEFAULT_ALGS = ["Vern9", "Vern8", "Vern7", "Vern6", "Tsit5", "BS5", "DP5", "DP8", "TanYam7", "TsitPap8", + "Feagin10", "Feagin12", "Feagin14", "VCAB4", "VCAB5", "VCABM3", "VCABM4", "VCABM5", "VCABM", "AN5"] +const TRUTH_RTOL = 1e-13 +const TRUTH_ABSTOL = 1e-15 + +function parse_args(args) + opts = Dict{String,Any}("algs" => DEFAULT_ALGS, "rtols" => nothing, "reps" => 2, "mode" => "riccati", + "blas" => nothing, "out" => nothing, "truth" => true, "case" => nothing, "abstol" => 1e-6) + i = 1 + while i <= length(args) + a = args[i] + if a == "--case" + opts["case"] = abspath(args[i+1]) + i += 2 + elseif a == "--algs" + opts["algs"] = split(args[i+1], ",") + i += 2 + elseif a == "--rtols" + opts["rtols"] = parse.(Float64, split(args[i+1], ",")) + i += 2 + elseif a == "--reps" + opts["reps"] = parse(Int, args[i+1]) + i += 2 + elseif a == "--mode" + opts["mode"] = args[i+1] + i += 2 + elseif a == "--blas-threads" + opts["blas"] = parse(Int, args[i+1]) + i += 2 + elseif a == "--out" + opts["out"] = abspath(args[i+1]) + i += 2 + elseif a == "--abstol" + opts["abstol"] = parse(Float64, args[i+1]) + i += 2 + elseif a == "--no-truth" + opts["truth"] = false + i += 1 + else + error("unknown argument $a") + end + end + opts["case"] === nothing && error("--case is required") + opts["mode"] in ("riccati", "forward") || error("--mode must be riccati or forward") + return opts +end + +# Equilibrium, wall and control keywords from the case's gpec.toml; the two-pass auto grid is +# re-formed once here so every timed run integrates against the same equilibrium. +function prepare_case(case::String, mode::String) + inputs = TOML.parsefile(joinpath(case, "gpec.toml")) + eq_config = GPE.Equilibrium.EquilibriumConfig(inputs["Equilibrium"], case) + wall = GPE.Vacuum.WallShapeSettings(; (Symbol(k) => v for (k, v) in inputs["Wall"])...) + kw = Dict{Symbol,Any}(Symbol(k) => v for (k, v) in inputs["ForceFreeStates"]) + kw[:verbose] = false + kw[:write_outputs_to_HDF5] = false + kw[:integrator] = mode + ctrl = FFS.ForceFreeStatesControl(; kw...) + + intr = FFS.ForceFreeStatesInternal(; dir_path=case) + intr.wall_settings = wall + GPE.resolve_mode_space!(intr, ctrl) + equil = GPE.Equilibrium.setup_equilibrium(eq_config, nothing) + equil = GPE.maybe_reform_equilibrium(equil, eq_config, nothing, intr, ctrl, nothing) + kf_ctrl = GPE.KineticForces.KineticForcesControl() + t_prep = @elapsed metric, mats = GPE.prepare_force_free_states!(intr, ctrl, equil, kf_ctrl, nothing) + return (; equil, wall, kw, intr, metric, mats, t_prep) +end + +# One Force-Free States run mirroring run_force_free_states, with the three stages timed separately. +function run_once(prep, alg::AbstractString, rtol::Float64, case::String; abstol::Float64=1e-6) + kw = copy(prep.kw) + kw[:eulerlagrange_tolerance] = rtol + kw[:ode_solver] = String(alg) + kw[:ode_abstol] = abstol + ctrl = FFS.ForceFreeStatesControl(; kw...) + intr = deepcopy(prep.intr) + equil, mats, metric = prep.equil, prep.mats, prep.metric + + t_int = @elapsed odet, fm_propagators, fm_chunks, fm_S_left = FFS.eulerlagrange_integration(ctrl, equil, mats, intr) + free_energies = nothing + t_free = 0.0 + t_dp = 0.0 + if ctrl.vac_flag + t_free = @elapsed begin + free_energies = FFS.free_run(odet, ctrl, equil, mats, intr) + FFS.normalize_eigenfunctions!(odet, free_energies.wt, equil.psio) + end + if intr.msing > 0 && fm_propagators !== nothing + t_dp = @elapsed FFS.compute_delta_prime_matrix!(intr, fm_propagators, fm_chunks; + wv=free_energies.wv, psio=equil.psio, debug=false, S_at_surface_left=fm_S_left, ctrl=ctrl, equil=equil, mats=mats) + end + end + res = FFS.build_result(Symbol(ctrl.integrator), ctrl, equil, intr, metric, mats, odet, free_energies, nothing, nothing) + et = free_energies === nothing ? ComplexF64[] : free_energies.et + dp = res.delta_prime === nothing ? nothing : res.delta_prime.matrix + return (; t_int, t_free, t_dp, total_steps=odet.total_steps, nzero=odet.nzero, et, dp, nchunks=fm_chunks === nothing ? 0 : length(fm_chunks)) +end + +relerr(a, b) = norm(a - b) / max(norm(b), eps()) +et_err(r, ref) = (isempty(r.et) || isempty(ref.et)) ? NaN : relerr(r.et[1:min(5, end)], ref.et[1:min(5, end)]) +dp_err(r, ref) = (r.dp === nothing || ref.dp === nothing) ? NaN : relerr(r.dp, ref.dp) + +function main(args) + opts = parse_args(args) + case = opts["case"] + casename = basename(case) + opts["blas"] !== nothing && BLAS.set_num_threads(opts["blas"]) + out = something(opts["out"], joinpath(@__DIR__, "integrator_results", "$(casename)_pipeline.csv")) + mkpath(dirname(out)) + + @info "Preparing $casename (mode=$(opts["mode"]))" + prep = prepare_case(case, opts["mode"]) + rtol0 = Float64(prep.kw[:eulerlagrange_tolerance]) + rtols = something(opts["rtols"], [rtol0]) + N = prep.intr.numpert_total + @printf("case %s: N=%d msing=%d threads=%d blas=%d prep=%.2fs shipped rtol=%.1e abstol=%.1e\n", + casename, N, prep.intr.msing, Threads.nthreads(), BLAS.get_num_threads(), prep.t_prep, rtol0, opts["abstol"]) + + # JIT warm-up and the two references. + run_once(prep, "Vern9", rtol0, case) + ref = run_once(prep, "Vern9", rtol0, case) + truth = opts["truth"] ? run_once(prep, "Vern9", TRUTH_RTOL, case; abstol=TRUTH_ABSTOL) : ref + @printf("reference Vern9@%.0e: steps=%d t_int=%.2fs et1=%.6e | truth Vern9@%.0e/abstol 1e-15: steps=%d t_int=%.2fs et1=%.6e | ref-vs-truth et=%.2e dp=%.2e\n", + rtol0, ref.total_steps, ref.t_int, real(ref.et[1]), TRUTH_RTOL, truth.total_steps, truth.t_int, real(truth.et[1]), + et_err(ref, truth), dp_err(ref, truth)) + + header = + "case,alg,rtol,abstol,status,mode,nthreads,blas_threads,N,msing,nchunks,total_steps,t_int_s,t_free_s,t_dp_s,t_total_s," * + "et1_re,nzero,err_et_vs_ref,err_dp_vs_ref,err_et_vs_truth,err_dp_vs_truth" + rows = String[] + for rtol in rtols, name in opts["algs"] + if !isdefined(OrdinaryDiffEq, Symbol(name)) + @warn "unknown OrdinaryDiffEq algorithm $name" + push!( + rows, + "$casename,$name,$rtol,$(opts["abstol"]),failed,$(opts["mode"]),$(Threads.nthreads()),$(BLAS.get_num_threads()),$N,$(prep.intr.msing)," * join(fill("", 12), ",") + ) + continue + end + alg = name + best = nothing + status = "ok" + try + run_once(prep, alg, rtol, case; abstol=opts["abstol"]) # warm-up for this algorithm's compiled code + for _ in 1:opts["reps"] + r = run_once(prep, alg, rtol, case; abstol=opts["abstol"]) + best = (best === nothing || r.t_int + r.t_free + r.t_dp < best.t_int + best.t_free + best.t_dp) ? r : best + end + catch err + status = "failed" + @warn "$name @ $rtol failed: $(sprint(showerror, err))" + end + if best === nothing + push!( + rows, + "$casename,$name,$rtol,$(opts["abstol"]),$status,$(opts["mode"]),$(Threads.nthreads()),$(BLAS.get_num_threads()),$N,$(prep.intr.msing)," * join(fill("", 12), ",") + ) + continue + end + t_total = best.t_int + best.t_free + best.t_dp + line = @sprintf("%s,%s,%.1e,%.1e,%s,%s,%d,%d,%d,%d,%d,%d,%.4f,%.4f,%.4f,%.4f,%.10e,%d,%.3e,%.3e,%.3e,%.3e", + casename, name, rtol, opts["abstol"], status, opts["mode"], Threads.nthreads(), BLAS.get_num_threads(), N, prep.intr.msing, best.nchunks, + best.total_steps, best.t_int, best.t_free, best.t_dp, t_total, isempty(best.et) ? NaN : real(best.et[1]), best.nzero, + et_err(best, ref), dp_err(best, ref), et_err(best, truth), dp_err(best, truth)) + push!(rows, line) + @printf("%-9s rtol=%.0e steps=%6d t_int=%7.3fs t_tot=%7.3fs et1=%.6e vs_ref: et=%.1e dp=%.1e vs_truth: et=%.1e dp=%.1e\n", + name, rtol, best.total_steps, best.t_int, t_total, isempty(best.et) ? NaN : real(best.et[1]), + et_err(best, ref), dp_err(best, ref), et_err(best, truth), dp_err(best, truth)) + end + open(out, "w") do io + println(io, header) + foreach(r -> println(io, r), rows) + end + @info "Wrote $out" +end + +main(ARGS) diff --git a/benchmarks/profile_ffs_stages.jl b/benchmarks/profile_ffs_stages.jl new file mode 100644 index 000000000..c20806d4c --- /dev/null +++ b/benchmarks/profile_ffs_stages.jl @@ -0,0 +1,114 @@ +#!/usr/bin/env julia +""" +profile_ffs_stages.jl - Wall-clock breakdown of the Equilibrium and Force-Free States stages of one case. + +Replays the calls `main` makes for one case directory and times each stage separately: equilibrium +setup and re-forming, local stability, matrix splines, the Euler-Lagrange integration, the +free-boundary energies, the Δ′ BVP, result assembly and the HDF5 write. Use it to see where a run's +time actually goes before touching any single kernel. + +# Usage + +```bash +julia --project=. -t 4 benchmarks/profile_ffs_stages.jl --case [--verbose true|false] [--blas-threads k] [--no-hdf5] [--repeat n] +``` + +`--verbose` overrides the case's `verbose` (default: as in the TOML). `--repeat n` replays the whole +sequence n times in one process, so the first pass shows cold (JIT-inclusive) timings and later passes +the warm compute cost. Inputs come from the case directory; the HDF5 file is written to a temporary +directory and deleted. +""" + +using LinearAlgebra +using Printf +using TOML +using GeneralizedPerturbedEquilibrium + +const GPE = GeneralizedPerturbedEquilibrium +const FFS = GPE.ForceFreeStates + +function parse_args(args) + opts = Dict{String,Any}("case" => nothing, "verbose" => nothing, "blas" => nothing, "hdf5" => true, "repeat" => 1) + i = 1 + while i <= length(args) + a = args[i] + if a == "--case" + opts["case"] = abspath(args[i+1]) + i += 2 + elseif a == "--verbose" + opts["verbose"] = parse(Bool, args[i+1]) + i += 2 + elseif a == "--blas-threads" + opts["blas"] = parse(Int, args[i+1]) + i += 2 + elseif a == "--no-hdf5" + opts["hdf5"] = false + i += 1 + elseif a == "--repeat" + opts["repeat"] = parse(Int, args[i+1]) + i += 2 + else + error("unknown argument $a") + end + end + opts["case"] === nothing && error("--case is required") + return opts +end + +function main(args) + opts = parse_args(args) + case = opts["case"] + opts["blas"] !== nothing && BLAS.set_num_threads(opts["blas"]) + inputs = TOML.parsefile(joinpath(case, "gpec.toml")) + ffs_table = inputs["ForceFreeStates"] + opts["verbose"] !== nothing && (ffs_table["verbose"] = opts["verbose"]) + ffs_table["write_outputs_to_HDF5"] = false + for pass in 1:opts["repeat"] + workdir = mktempdir() + ffs_table["HDF5_filename"] = joinpath(workdir, "gpec.h5") + timings = Pair{String,Float64}[] + stage(name, f) = (t = @elapsed(r = f()); push!(timings, name => t); r) + + eq_config = GPE.Equilibrium.EquilibriumConfig(inputs["Equilibrium"], case) + ctrl = FFS.ForceFreeStatesControl(; (Symbol(k) => v for (k, v) in ffs_table)...) + intr = FFS.ForceFreeStatesInternal(; dir_path=case) + intr.wall_settings = GPE.Vacuum.WallShapeSettings(; (Symbol(k) => v for (k, v) in inputs["Wall"])...) + GPE.resolve_mode_space!(intr, ctrl) + + equil = stage("equilibrium setup", () -> GPE.Equilibrium.setup_equilibrium(eq_config, nothing)) + equil = stage("equilibrium re-form (two-pass grid)", () -> GPE.maybe_reform_equilibrium(equil, eq_config, nothing, intr, ctrl, nothing)) + locstab, ballooning_boundary = stage("local stability (Mercier/ballooning)", () -> GPE.run_local_stability(ctrl, equil)) + kf_ctrl = GPE.KineticForces.KineticForcesControl() + metric, mats = stage("metric + F/G/K matrix splines", () -> GPE.prepare_force_free_states!(intr, ctrl, equil, kf_ctrl, nothing)) + odet, fm_propagators, fm_chunks, fm_S_left = stage("Euler-Lagrange integration", () -> FFS.eulerlagrange_integration(ctrl, equil, mats, intr)) + free_energies = nothing + if ctrl.vac_flag + free_energies = stage("free-boundary energies (vacuum + eigen)", () -> FFS.free_run(odet, ctrl, equil, mats, intr)) + stage("normalize eigenfunctions", () -> FFS.normalize_eigenfunctions!(odet, free_energies.wt, equil.psio)) + if ctrl.kinetic_factor == 0 && intr.msing > 0 && fm_propagators !== nothing + stage( + "Δ′ BVP (debug=$(ctrl.verbose))", + () -> FFS.compute_delta_prime_matrix!(intr, fm_propagators, fm_chunks; + wv=free_energies.wv, psio=equil.psio, debug=ctrl.verbose, S_at_surface_left=fm_S_left, ctrl=ctrl, equil=equil, mats=mats) + ) + end + end + result = stage("build_result", () -> FFS.build_result(Symbol(ctrl.integrator), ctrl, equil, intr, metric, mats, odet, free_energies, nothing, nothing)) + if opts["hdf5"] + stage("HDF5 write", () -> GPE.write_outputs_to_HDF5(result; locstab=locstab, ballooning_boundary=ballooning_boundary)) + end + rm(workdir; recursive=true, force=true) + + total = sum(last, timings) + println() + @printf("pass %d/%d (%s) case %s N=%d msing=%d integrator=%s threads=%d blas=%d verbose=%s ODE steps=%d\n", + pass, opts["repeat"], pass == 1 ? "cold, includes JIT" : "warm", basename(case), intr.numpert_total, intr.msing, ctrl.integrator, Threads.nthreads(), + BLAS.get_num_threads(), ctrl.verbose, odet.total_steps) + for (name, t) in timings + @printf(" %-42s %8.2f s %5.1f%%\n", name, t, 100t / total) + end + @printf(" %-42s %8.2f s\n", "total", total) + end +end + +main(ARGS) diff --git a/examples/DIIID-like_ideal_example/gpec.toml b/examples/DIIID-like_ideal_example/gpec.toml index 24b2b7f24..57431a1c7 100644 --- a/examples/DIIID-like_ideal_example/gpec.toml +++ b/examples/DIIID-like_ideal_example/gpec.toml @@ -45,6 +45,8 @@ mthvac = 512 # Number of points used in splines over poloidal kinetic_source = "fixed" # Kinetic matrix source: "fixed" test matrices, or "calculated" from the kinetic NTV model kinetic_factor = 0.0 # Scaling of kinetic matrices (0 = ideal path; >0 enables kinetic mode) eulerlagrange_tolerance = 1e-10 # Relative tolerance for ODE integration of Euler-Lagrange equations +ode_abstol = 1e-8 # Absolute tolerance for the same integration +ode_solver = "Vern7" # OrdinaryDiffEq method for every Euler-Lagrange solve save_interval = 3 # Save every Nth ODE step (1=all). Always saves near rational surfaces. singfac_min = 1e-4 # Fractional distance from rational q at which ideal jump enforced ucrit = 1e4 # Column-norm threshold that triggers solution renormalization diff --git a/src/ForceFreeStates/CoreTypes.jl b/src/ForceFreeStates/CoreTypes.jl index 98d4807e1..f2907bc16 100644 --- a/src/ForceFreeStates/CoreTypes.jl +++ b/src/ForceFreeStates/CoreTypes.jl @@ -130,6 +130,8 @@ gpec.toml. - `nstep::Int` - Maximum number of integration steps (not yet implemented) - `ksing::Int` - Singular surface handling parameter - `eulerlagrange_tolerance::Float64` - Relative tolerance for ODE integration of Euler-Lagrange equations + - `ode_abstol::Float64` - Absolute tolerance for the same integration. Default `1e-8`: the OrdinaryDiffEq default of `1e-6` lets small state entries escape the relative control, so the error stops responding to `eulerlagrange_tolerance` below about `1e-8`. + - `ode_solver::String` - OrdinaryDiffEq explicit Runge-Kutta method used for every Euler-Lagrange solve (propagator chunks, Riccati outer plasma, forward sweep, Δ′ shooting). Default `"Vern7"`: on the DIII-D corpus it reaches the same δW and a closer Δ′ than `"Vern9"` for about half the RHS evaluations, because the ninth-order method rejects most of its steps near the rational surfaces. Any name in `OrdinaryDiffEq` that accepts complex states is allowed (`"Vern6"`, `"Vern9"`, `"DP8"`, ...). - `ucrit::Float64` - Critical value of unorm ratio to trigger solution normalization. In the standard path it triggers Gaussian reduction; in the Riccati path it triggers `renormalize_riccati_inplace!`. Default `1e4` empirically keeps max(|U₁|, |U₂|) in O(1)–O(10⁴) over the integration domain on DIII-D / Solovev sweeps; lower triggers excess renorms without accuracy gain, higher risks overflow before the next renorm. - `numsteps_init::Int` - Initial array size for ODE data storage - `numunorms_init::Int` - Initial array size for solution normalization data @@ -167,6 +169,8 @@ gpec.toml. nstep::Int = typemax(Int) ksing::Int = -1 eulerlagrange_tolerance::Float64 = 1e-8 + ode_abstol::Float64 = 1e-8 + ode_solver::String = "Vern7" ucrit::Float64 = 1e4 numsteps_init::Int = 4000 numunorms_init::Int = 100 diff --git a/src/ForceFreeStates/EulerLagrange.jl b/src/ForceFreeStates/EulerLagrange.jl index 462d7b86f..8693d2c24 100644 --- a/src/ForceFreeStates/EulerLagrange.jl +++ b/src/ForceFreeStates/EulerLagrange.jl @@ -45,75 +45,49 @@ and a small set of temporary matrices and factors used to compute singular-layer - `numpert_total::Int` - Total number of Fourier mode combinations (m × n) used in the calculation. - `numunorms_init::Int` - Initial allocation size for the number of normalization operations recorded. - - `msing::Int` - Number of singular surfaces in the equilibrium (used to size asymptotic coefficient arrays). - - `numsteps_init::Int` - Initial allocation size for the number of integration steps to store. - - `step::Int` - Current integration step index (1-based, like `istep` in the original Fortran). - - `psi_store::Vector{Float64}` - Stored psi values at each saved integration step (length `numsteps_init`). - - `q_store::Vector{Float64}` - Stored q values at each saved integration step (length `numsteps_init`). - - `u_store::Array{ComplexF64,4}` - Stored solution arrays at each saved step with shape `(numpert_total, numpert_total, 2, numsteps_init)` (complex solution state used by the solver). - - `du_store::Array{ComplexF64,3}` - dΞ_ψ/dψ (the u₁ block only) at each saved step, shape `(numpert_total, numpert_total, step)`. Empty until `materialize_derivative_stores!` fills it, except on the galerkin-matched path which supplies the analytic derivative at construction. du₂/dψ is never stored densely — its only consumer evaluates it on demand at bracket nodes. - - `xi_s_store::Array{ComplexF64,3}` - Clebsch displacement Ξ_s at each saved step, eq. 18 of Glasser 2016, shape `(numpert_total, numpert_total, step)`. Empty until materialized, same as `du_store`. - - `u_store_el_basis::Bool` - True when `u_store` holds the Euler-Lagrange state `(u₁, u₂)`, so the derivative kernel can be re-applied to it. False on the sparse parallel path, whose stored columns are chunk-endpoint Riccati matrices; `materialize_derivative_stores!` refuses to run there. - - `du_store_populated::Bool` - True once `du_store`/`xi_s_store` hold valid data in the final (post-transform, post-normalization) basis. Set by `materialize_derivative_stores!` or by the galerkin-matched constructor; stays false where the stores cannot be materialized, e.g. the sparse parallel path whose solution is in the Riccati basis. - - `crit_store::Vector{Float64}` - Stored crit parameter values (smallest eigenvalue of W⁻ꜝ) (length `numsteps_init`). - - `ca_r::Array{ComplexF64,4}` - Asymptotic coefficients just to the right of each singular surface with shape `(numpert_total, numpert_total, 2, msing)`. - - `ca_l::Array{ComplexF64,4}` - Asymptotic coefficients just to the left of each singular surface with shape `(numpert_total, numpert_total, 2, msing)`. - - `ca_populated::Bool` - True once an ideal singular-surface crossing has filled `ca_l`/`ca_r`; kinetic and galerkin-matched runs never populate them and leave this false, and the HDF5 writer then emits zero-extent `ca_left`/`ca_right` datasets instead of unpopulated arrays. - - `edge_scan::EdgeScanState` - Edge dW scan state and results. Initialized as a disabled sentinel (N_edge=0) and replaced by `findmax_dW_edge!` when a scan runs. - - `psifac::Float64` - Current normalized flux coordinate for the integrator. - - `q::Float64` - Safety factor value at `psifac` (current q during integration). - - `u::Array{ComplexF64,3}` - Current working solution arrays with shape `(numpert_total, numpert_total, 2)`. - - `ising_start::Int` - Index of the starting singular surface to be crossed during integration. - - `psimax::Float64` - Maximum psi value for which the integrator is allowed to run in next integration region. - - `needs_crossing::Bool` - Flag indicating whether a rational surface needs to be crossed after the current integration region. - - `nzero::Int` - Count of detected zero crossings (used for diagnostics). - - `new::Bool` - Flag indicating whether a new `unorm0` should be computed after a fixup. # Initialization parameters - - `unorm::Vector{Float64}` - Current norms of the solution vectors (length `numpert_total`). - - `unorm0::Vector{Float64}` - Reference/initial norms of the solution vectors (length `numpert_total`). # Saved data throughout integration - - `ifix::Int` - Number of normalization operations performed (index into normalization arrays). # Total ODE solver steps taken (all steps, not just saved ones) @@ -122,11 +96,8 @@ and a small set of temporary matrices and factors used to compute singular-layer - `sing_flag::Vector{Bool}` - Boolean flags indicating which stored normalizations correspond to singular solutions # Edge dW scan state and results (disabled sentinel when psiedge >= psilim, i.e. no edge scan) (length `numunorms_init`). - - `zeroed_idx::Vector{Vector{Int}}` - For each ideal rational surface jump, a vector of indices of solutions that were zeroed. # Data for integrator - - `fixfac::Array{ComplexF64,3}` - Fix-up factors for Gaussian reduction with shape `(numpert_total, numpert_total, numunorms_init)`. - - `fixstep::Vector{Int64}` - Step indices (psi step positions) at which normalization/fixups were performed (length `numunorms_init`). """ @kwdef mutable struct OdeState @@ -232,9 +203,9 @@ end # at the interval endpoints. Coefficients are ported from STRIDE's ode_itime cost model # (Fortran reference) and unchanged here. Tune only after re-fitting against a per-chunk # step-count sweep; touching these affects parallel-chunk load balancing. -const ODE_COST_AXIS = (a = 39695.0, b = 212830.0) -const ODE_COST_RAT = (a = 17147.0, b = 470710.0) -const ODE_COST_EDGE = (a = 1646.0, b = 4683.0) +const ODE_COST_AXIS = (a=39695.0, b=212830.0) +const ODE_COST_RAT = (a=17147.0, b=470710.0) +const ODE_COST_EDGE = (a=1646.0, b=4683.0) """ ode_itime_cost(psi1, psi2, intr) -> Float64 @@ -267,7 +238,7 @@ never from `Threads.nthreads()` — so the chunk list, and hence every Riccati o identical whatever thread count `julia -t` provides. Each split finds the equal-cost midpoint ψ_mid via bisection: - ode_itime_cost(psi_start, psi_mid) ≈ ode_itime_cost(psi_start, psi_end) / 2 +ode_itime_cost(psi_start, psi_mid) ≈ ode_itime_cost(psi_start, psi_end) / 2 Sub-chunks inherit `needs_crossing=false` and `ising=0`. Only the LAST sub-chunk of each original chunk retains `needs_crossing=true` and the original `ising`, so the @@ -326,10 +297,10 @@ function balance_integration_chunks(chunks::Vector{IntegrationChunk}, ctrl::Forc psi_mid = (lo + hi) / 2.0 left = IntegrationChunk(; psi_start=chunk.psi_start, psi_end=psi_mid, - needs_crossing=false, ising=0, direction=1) + needs_crossing=false, ising=0, direction=1) right = IntegrationChunk(; psi_start=psi_mid, psi_end=chunk.psi_end, - needs_crossing=chunk.needs_crossing, ising=chunk.ising, - direction=chunk.direction) + needs_crossing=chunk.needs_crossing, ising=chunk.ising, + direction=chunk.direction) splice!(result, best_idx, [left, right]) end @@ -349,17 +320,27 @@ Only the Riccati branch populates `propagators` / `chunks` / `S_left`, which for all three. """ function eulerlagrange_integration(ctrl::ForceFreeStatesControl, equil::Equilibrium.PlasmaEquilibrium, mats::MatrixSplines, intr::ForceFreeStatesInternal) - - if ctrl.integrator == "riccati" - ctrl.kinetic_factor > 0 && error("kinetic runs require integrator=\"forward\"; the Riccati integrator has no kinetic crossing.") - return riccati_eulerlagrange_integration(ctrl, equil, mats, intr) - elseif ctrl.integrator == "forward" - return forward_eulerlagrange_integration(ctrl, equil, mats, intr) - elseif ctrl.integrator == "galerkin" + ctrl.integrator == "galerkin" && error("integrator = \"galerkin\" solves the Euler-Lagrange system variationally, not by ODE integration; " * "it is dispatched to galerkin_solve.") + ctrl.integrator in ("riccati", "forward") || + error("Unknown integrator: $(ctrl.integrator). Expected \"forward\", \"riccati\", or \"galerkin\".") + ctrl.integrator == "riccati" && ctrl.kinetic_factor > 0 && + error("kinetic runs require integrator=\"forward\"; the Riccati integrator has no kinetic crossing.") + + # The RHS works on mpert×mpert blocks, where multithreaded BLAS costs more in synchronization + # than it saves; pin BLAS to one thread for the sweep and restore it afterwards. + blas_threads = BLAS.get_num_threads() + BLAS.set_num_threads(1) + try + if ctrl.integrator == "riccati" + return riccati_eulerlagrange_integration(ctrl, equil, mats, intr) + else + return forward_eulerlagrange_integration(ctrl, equil, mats, intr) + end + finally + BLAS.set_num_threads(blas_threads) end - error("Unknown integrator: $(ctrl.integrator). Expected \"forward\", \"riccati\", or \"galerkin\".") end """ @@ -479,20 +460,20 @@ is identified by dominant |U₁| component, giving the physically correct consta Frobenius solution and avoiding the spurious logarithmic irregularity. """ function compute_axis_init(mats::MatrixSplines, profiles::Equilibrium.ProfileSplines, - intr::ForceFreeStatesInternal, psi_low::Float64) - N = intr.numpert_total + intr::ForceFreeStatesInternal, psi_low::Float64) + N = intr.numpert_total hint = Ref(1) # Evaluate stability matrices at psi_low F_lower = zeros(ComplexF64, N, N) - kmat = zeros(ComplexF64, N, N) - gmat = zeros(ComplexF64, N, N) + kmat = zeros(ComplexF64, N, N) + gmat = zeros(ComplexF64, N, N) mats.ideal.F_spline_lower(vec(F_lower), psi_low; hint=hint) - mats.ideal.K_spline(vec(kmat), psi_low; hint=hint) - mats.ideal.G_spline(vec(gmat), psi_low; hint=hint) + mats.ideal.K_spline(vec(kmat), psi_low; hint=hint) + mats.ideal.G_spline(vec(gmat), psi_low; hint=hint) # singfac[j] = 1 / (m_j − n_j · q) for each mode j - q0 = profiles.q_spline(psi_low; hint=hint) + q0 = profiles.q_spline(psi_low; hint=hint) singfac = vec(1.0 ./ ((intr.mlow:intr.mhigh) .- q0 .* (intr.nlow:intr.nhigh)')) # F̄⁻¹ = (F_lower · F_lower')⁻¹ via the Cholesky factor @@ -506,15 +487,15 @@ function compute_axis_init(mats::MatrixSplines, profiles::Equilibrium.ProfileSpl for j in 1:N sf = singfac[j] fi = Finv[j, j] - k = kmat[j, j] + k = kmat[j, j] kd = conj(k) # K̄†[j,j] - g = gmat[j, j] + g = gmat[j, j] # 2×2 ODE matrix block for mode j [Glasser 2016 Eq. 22-24, diagonal approximation] m11 = -sf * fi * k - m12 = sf^2 * fi - m21 = g - kd * fi * k - m22 = sf * kd * fi + m12 = sf^2 * fi + m21 = g - kd * fi * k + m22 = sf * kd * fi # Frobenius matrix A₀_j = ψ_low · M_j [Glasser 2016 Eq. 51] #! format: off @@ -541,7 +522,7 @@ function compute_axis_init(mats::MatrixSplines, profiles::Equilibrium.ProfileSpl if abs(v2) > Base.sqrt(Base.eps(Float64)) * abs(v1) U1_init[j, j] = v1 / v2 else - U1_init[j, j] = one(ComplexF64) + U1_init[j, j] = one(ComplexF64) U2_init[j, j] = zero(ComplexF64) end end @@ -560,7 +541,7 @@ Formerly `ode_axis_init!`. This now only initializes `psifac`, `ising_start`, an Move ising_start logic to chunk_el_integration_bounds? """ function initialize_el_at_axis!(odet::OdeState, ctrl::ForceFreeStatesControl, mats::MatrixSplines, - profiles::Equilibrium.ProfileSplines, intr::ForceFreeStatesInternal) + profiles::Equilibrium.ProfileSplines, intr::ForceFreeStatesInternal) # Default psifac to minimum equilibrium psi value odet.psifac = profiles.xs[1] @@ -737,7 +718,7 @@ function chunk_el_integration_bounds(odet::OdeState, ctrl::ForceFreeStatesContro psi_end=psi_end, needs_crossing=true, ising=ising_current, - direction = bidirectional ? -1 : 1 + direction=bidirectional ? -1 : 1 )) # After crossing, we jump to the other side of the singular surface @@ -966,7 +947,7 @@ function integrate_el_region!( cb = DiscreteCallback((u, t, integrator) -> true, segment_callback!) prob = ODEProblem(sing_der!, odet.u, (chunk.psi_start, chunk.psi_end), (ctrl, equil, mats, intr, odet, chunk)) - sol = solve(prob, Vern9(); reltol=ctrl.eulerlagrange_tolerance, callback=cb, save_everystep=false, save_end=true) + sol = solve(prob, el_ode_algorithm(ctrl); reltol=ctrl.eulerlagrange_tolerance, abstol=ctrl.ode_abstol, callback=cb, save_everystep=false, save_end=true) # Unconditionally save the final step if the callback did not already capture it. # Guarantees the pre-crossing (or pre-edge) state is always stored in u_store, @@ -1171,7 +1152,7 @@ function transform_u!(odet::OdeState, intr::ForceFreeStatesInternal) temp[ksol, jsol] = odet.fixfac[ksol, jsol, ifix] end end - mul!(gauss_buffer, view(gauss,:,:,ifix), temp) + mul!(gauss_buffer, view(gauss, :, :, ifix), temp) gauss[:, :, ifix] .= gauss_buffer end # Account for zeroed indices at singular surfaces in `ode_ideal_cross` @@ -1188,7 +1169,7 @@ function transform_u!(odet::OdeState, intr::ForceFreeStatesInternal) # and mfix + 1 is the for the region after the last fixup and before the edge transforms[:, :, end] .= identity for ifix in odet.ifix:-1:1 - mul!(view(transforms,:,:,ifix), view(gauss,:,:,ifix), view(transforms,:,:,(ifix+1))) + mul!(view(transforms, :, :, ifix), view(gauss, :, :, ifix), view(transforms, :, :, (ifix + 1))) end # Now that we have the transform matrices, we can apply them to the solution vectors @@ -1448,4 +1429,3 @@ non-Hermitian contributions and needs an LU. xi_s .-= tmp_mat return xi_s end - diff --git a/src/ForceFreeStates/ForceFreeStates.jl b/src/ForceFreeStates/ForceFreeStates.jl index 1dc93e776..4505c5492 100644 --- a/src/ForceFreeStates/ForceFreeStates.jl +++ b/src/ForceFreeStates/ForceFreeStates.jl @@ -6,6 +6,17 @@ using LinearAlgebra.LAPACK using TOML using FFTW using OrdinaryDiffEq + +""" + el_ode_algorithm(ctrl) -> OrdinaryDiffEq algorithm + +The solver named by `ctrl.ode_solver`, instantiated for the Euler-Lagrange `solve` calls. +""" +function el_ode_algorithm(ctrl) + isdefined(OrdinaryDiffEq, Symbol(ctrl.ode_solver)) || + error("ode_solver = \"$(ctrl.ode_solver)\" is not an OrdinaryDiffEq algorithm name (e.g. \"Vern7\", \"Vern9\", \"DP8\")") + return getfield(OrdinaryDiffEq, Symbol(ctrl.ode_solver))() +end using HDF5 using JLD2 using FastInterpolations diff --git a/src/ForceFreeStates/Riccati/DeltaPrimeBVP.jl b/src/ForceFreeStates/Riccati/DeltaPrimeBVP.jl index 0a955fde7..6dc2c3d23 100644 --- a/src/ForceFreeStates/Riccati/DeltaPrimeBVP.jl +++ b/src/ForceFreeStates/Riccati/DeltaPrimeBVP.jl @@ -7,6 +7,7 @@ Compute the inter-surface tearing stability matrix (msing × msing) using the STRIDE global BVP formulation [Glasser 2018 Phys. Plasmas 25, 032501, Sec. III.B]. The BVP encodes the full plasma response with unknowns at each surface boundary: + ``` x_axis (N): free IC parameters at the axis (U₁ = 0 regular solutions) x_left[j] (2N): state at left inner-layer boundary of surface j @@ -19,9 +20,11 @@ The BVP encodes the full plasma response with unknowns at each surface boundary: When `wv` is provided (the vacuum response matrix, singfac-scaled), the edge BC follows the Fortran STRIDE convention: + ``` U₁ = c, U₂ = -wv·ψ₀²·c ``` + which is the free-boundary condition `wp + wv = 0` at the edge. When `wv` is `nothing`, a conducting wall BC (`U₁ = 0`) is used. @@ -38,9 +41,11 @@ keeps the BVP matrix full-rank and well-conditioned. The raw BVP solution is a 2·msing × 2·msing matrix `dp` with left/right sub-indices at each surface. The PEST3-convention Δ' matrix is the linear combination [Chance, PPPL-2527]: + ``` deltap(i,j) = dp(2i,2j) - dp(2i,2j-1) - dp(2i-1,2j) + dp(2i-1,2j-1) ``` + stored in `intr.delta_prime_matrix` (msing × msing). ## Limitations @@ -65,16 +70,28 @@ function compute_delta_prime_matrix!( intr::ForceFreeStatesInternal, propagators::Vector{ChunkPropagator}, chunks::Vector{IntegrationChunk}; - wv::Union{Nothing,Matrix{ComplexF64}} = nothing, - psio::Float64 = 0.0, - debug::Bool = false, - S_at_surface_left::Union{Nothing,Vector{Matrix{ComplexF64}}} = nothing, - ctrl::Union{Nothing,ForceFreeStatesControl} = nothing, - equil::Union{Nothing,Equilibrium.PlasmaEquilibrium} = nothing, - mats::Union{Nothing,MatrixSplines} = nothing + wv::Union{Nothing,Matrix{ComplexF64}}=nothing, + psio::Float64=0.0, + debug::Bool=false, + S_at_surface_left::Union{Nothing,Vector{Matrix{ComplexF64}}}=nothing, + ctrl::Union{Nothing,ForceFreeStatesControl}=nothing, + equil::Union{Nothing,Equilibrium.PlasmaEquilibrium}=nothing, + mats::Union{Nothing,MatrixSplines}=nothing ) intr.msing == 0 && return _has_unsupported_multi_resonance(intr) && return + # Same small-block BLAS pin as eulerlagrange_integration: the shooting solves re-run the RHS. + blas_threads = BLAS.get_num_threads() + BLAS.set_num_threads(1) + try + _compute_delta_prime_matrix!(intr, propagators, chunks, wv, psio, debug, S_at_surface_left, ctrl, equil, mats) + finally + BLAS.set_num_threads(blas_threads) + end + return +end + +function _compute_delta_prime_matrix!(intr, propagators, chunks, wv, psio, debug, S_at_surface_left, ctrl, equil, mats) sing, i_crossings, msing = _select_active_surfaces(intr, chunks) msing == 0 && return @@ -91,8 +108,10 @@ function compute_delta_prime_matrix!( if !use_S_axis for ic in i_crossings chunks[ic].direction == 1 || - error("compute_delta_prime_matrix!: FM-axis fallback (use_S_axis=false) requires forward crossing chunks; " * - "chunk $ic has direction=$(chunks[ic].direction). Either provide S_at_surface_left or use bidirectional=false.") + error( + "compute_delta_prime_matrix!: FM-axis fallback (use_S_axis=false) requires forward crossing chunks; " * + "chunk $ic has direction=$(chunks[ic].direction). Either provide S_at_surface_left or use bidirectional=false." + ) end end @@ -105,15 +124,15 @@ function compute_delta_prime_matrix!( _build_asymptotic_basis_matrices(sing, has_ua, N, msing) debug && _log_bvp_setup(chunks, sing, S_at_surface_left, use_S_axis, has_ua, - Phi_L_mats, Phi_R_mats, Phi_R_halves, ipert_all, wv, psio, N, msing) + Phi_L_mats, Phi_R_mats, Phi_R_halves, ipert_all, wv, psio, N, msing) if use_S_axis uShootR, uShootL, uAxis = _build_S_axis_shooting_propagators( propagators, chunks, i_crossings, sing, msing, N, T_left_mats, T_right_mats, has_ua, ctrl, equil, mats, intr, debug) debug && _log_S_axis_shooting_propagators(uShootR, uShootL, uAxis, - S_at_surface_left, T_left_mats, - ipert_all, has_ua, msing, N) + S_at_surface_left, T_left_mats, + ipert_all, has_ua, msing, N) M, nMat, col_edge = _assemble_bvp_S_axis( uShootR, uShootL, uAxis, ipert_all, msing, N, wv, psio) else @@ -140,13 +159,13 @@ function compute_delta_prime_matrix!( # The raw matrix is consumed by `pest3_decompose` to recover (A', B', Γ', Δ') for the full # det(D' − D(γ)) = 0 eigenvalue problem; see the `delta_prime_raw` docstring in CoreTypes.jl. intr.delta_prime_matrix = deltap - intr.delta_prime_raw = dp_raw_persisted + intr.delta_prime_raw = dp_raw_persisted end # Column index helpers for the BVP matrix. j is the 1-based singular-surface index, # N is numpert_total. Layout: c_axis(N), c_left[1](2N), c_right[1](2N), ..., c_edge(N). -_col_left(j::Int, N::Int) = (N + 4N*(j-1) + 1):(N + 4N*(j-1) + 2N) -_col_right(j::Int, N::Int) = (N + 4N*(j-1) + 2N + 1):(N + 4N*j) +_col_left(j::Int, N::Int) = (N+4N*(j-1)+1):(N+4N*(j-1)+2N) +_col_right(j::Int, N::Int) = (N+4N*(j-1)+2N+1):(N+4N*j) # Multi-resonance surfaces (one q value satisfying multiple (m,n) tuples in a multi-n run) # are not yet handled by the inter-surface BVP. Returns true if any surface has >1 modes; @@ -185,9 +204,9 @@ end # Midpoint splitting halves each inter-surface span's condition number — STRIDE's trick: # cond(full) = 10¹⁵ → cond(half) ≈ 10⁷·⁵, an 8-digit accuracy gain. function _assemble_segment_propagators(propagators::Vector{ChunkPropagator}, - chunks::Vector{IntegrationChunk}, - i_crossings::Vector{Int}, msing::Int, N::Int, - use_S_axis::Bool) + chunks::Vector{IntegrationChunk}, + i_crossings::Vector{Int}, msing::Int, N::Int, + use_S_axis::Bool) Phi_L_mats = [assemble_fm_matrix(propagators, i_crossings[j]:i_crossings[j]) for j in 1:msing] Phi_R_mats = Vector{Matrix{ComplexF64}}(undef, msing + 1) if !use_S_axis @@ -201,11 +220,11 @@ function _assemble_segment_propagators(propagators::Vector{ChunkPropagator}, Phi_R_halves = Vector{Tuple{Matrix{ComplexF64},Matrix{ComplexF64}}}(undef, msing - 1) for j in 1:msing-1 chunk_start = i_crossings[j] + 1 - chunk_end = i_crossings[j+1] - 1 - n_chunks = chunk_end - chunk_start + 1 + chunk_end = i_crossings[j+1] - 1 + n_chunks = chunk_end - chunk_start + 1 if n_chunks >= 2 i_mid = chunk_start + div(n_chunks, 2) - 1 - Phi_left_half = assemble_fm_matrix(propagators, chunk_start:i_mid) + Phi_left_half = assemble_fm_matrix(propagators, chunk_start:i_mid) Phi_right_half = assemble_fm_matrix(propagators, i_mid+1:chunk_end) Phi_R_halves[j] = (Phi_left_half, Phi_right_half) else @@ -220,17 +239,17 @@ end # N+1:2N = small solutions (z^{+α}, bounded). Fortran STRIDE bakes T into the shooting # propagators (uFM_sing_init); we multiply T into the BVP propagator blocks at each surface. function _build_asymptotic_basis_matrices(sing::Vector{SingType}, has_ua::Bool, N::Int, msing::Int) - T_left_mats = Vector{Matrix{ComplexF64}}(undef, msing) + T_left_mats = Vector{Matrix{ComplexF64}}(undef, msing) T_right_mats = Vector{Matrix{ComplexF64}}(undef, msing) - T_left_inv = Vector{Matrix{ComplexF64}}(undef, msing) - T_right_inv = Vector{Matrix{ComplexF64}}(undef, msing) + T_left_inv = Vector{Matrix{ComplexF64}}(undef, msing) + T_right_inv = Vector{Matrix{ComplexF64}}(undef, msing) if has_ua for j in 1:msing sp = sing[j] - T_left_mats[j] = [sp.ua_left[:,:,1]; sp.ua_left[:,:,2]] - T_right_mats[j] = [sp.ua_right[:,:,1]; sp.ua_right[:,:,2]] - T_left_inv[j] = inv(T_left_mats[j]) - T_right_inv[j] = inv(T_right_mats[j]) + T_left_mats[j] = [sp.ua_left[:, :, 1]; sp.ua_left[:, :, 2]] + T_right_mats[j] = [sp.ua_right[:, :, 1]; sp.ua_right[:, :, 2]] + T_left_inv[j] = inv(T_left_mats[j]) + T_right_inv[j] = inv(T_right_mats[j]) end end return T_left_mats, T_right_mats, T_left_inv, T_right_inv @@ -261,7 +280,7 @@ function _build_S_axis_shooting_propagators( end if can_reintegrate && !isempty(shoot_range_R) uShootR[j] = integrate_fm_with_ua_ic(chunks, shoot_range_R, sing[j].ua_right, - ctrl, equil, mats, intr; backward=false, psi_ua=sing[j].psi_ua_right) + ctrl, equil, mats, intr; backward=false, psi_ua=sing[j].psi_ua_right) else T_init = has_ua ? T_right_mats[j] : nothing uShootR[j] = assemble_fm_matrix(propagators, shoot_range_R; T_init=T_init) @@ -278,7 +297,7 @@ function _build_S_axis_shooting_propagators( end if can_reintegrate && !isempty(shoot_range_L) uShootL[j] = integrate_fm_with_ua_ic(chunks, shoot_range_L, sing[j].ua_left, - ctrl, equil, mats, intr; backward=true, psi_ua=sing[j].psi_ua_left) + ctrl, equil, mats, intr; backward=true, psi_ua=sing[j].psi_ua_left) else T_init = has_ua ? T_left_mats[j] : nothing uShootL[j] = assemble_fm_matrix(propagators, shoot_range_L; T_init=T_init) @@ -287,10 +306,10 @@ function _build_S_axis_shooting_propagators( uAxis, i_axis_mid = _build_conditioned_axis_propagator(propagators, i_crossings, N) uShootL[1] = _build_uShootL_first(propagators, chunks, i_crossings, sing, - T_left_mats, has_ua, can_reintegrate, i_axis_mid, - ctrl, equil, mats, intr, N) + T_left_mats, has_ua, can_reintegrate, i_axis_mid, + ctrl, equil, mats, intr, N) if debug - shoot_range_L1 = (i_axis_mid + 1):(i_crossings[1] - 1) + shoot_range_L1 = (i_axis_mid+1):(i_crossings[1]-1) @info " Axis propagator: $(i_axis_mid) chunks, cond=$(@sprintf("%.2e", cond(uAxis)))" @info " uShootL[1]: range=$(shoot_range_L1), cond=$(@sprintf("%.2e", cond(uShootL[1])))" end @@ -303,14 +322,14 @@ end # chunk+1 to chunk(i_crossings[j]-1). The ψ midpoint is used (not the chunk-index midpoint) # because chunks near singularities are packed tighter in ψ — Fortran convention. function _midpoint_shoot_range(chunks::Vector{IntegrationChunk}, i_crossings::Vector{Int}, - j::Int, msing::Int; side::Symbol) + j::Int, msing::Int; side::Symbol) if side === :right - j == msing && return (i_crossings[msing] + 1):length(chunks) + j == msing && return (i_crossings[msing]+1):length(chunks) chunk_start = i_crossings[j] + 1 - chunk_end = i_crossings[j+1] - 1 + chunk_end = i_crossings[j+1] - 1 else # :left, j >= 2 chunk_start = i_crossings[j-1] + 1 - chunk_end = i_crossings[j] - 1 + chunk_end = i_crossings[j] - 1 end psi_mid_target = (chunks[chunk_start].psi_start + chunks[chunk_end].psi_end) / 2 i_mid_inter = chunk_start @@ -321,7 +340,7 @@ function _midpoint_shoot_range(chunks::Vector{IntegrationChunk}, i_crossings::Ve end i_mid_inter = ic end - return side === :right ? (chunk_start:i_mid_inter) : ((i_mid_inter + 1):chunk_end) + return side === :right ? (chunk_start:i_mid_inter) : ((i_mid_inter+1):chunk_end) end # Build a well-conditioned axis propagator by forward-propagating [0; I] through the @@ -329,7 +348,7 @@ end # midpoint is placed one chunk before the first surface so that uShootL[1] covers only the # last chunk, keeping it well-conditioned. function _build_conditioned_axis_propagator(propagators::Vector{ChunkPropagator}, - i_crossings::Vector{Int}, N::Int) + i_crossings::Vector{Int}, N::Int) n_pre_cross = i_crossings[1] - 1 i_axis_mid = max(1, n_pre_cross - 1) uAxis = zeros(ComplexF64, 2N, N) @@ -340,8 +359,8 @@ function _build_conditioned_axis_propagator(propagators::Vector{ChunkPropagator} prop = propagators[ic] upper_old = uAxis[1:N, :] lower_old = uAxis[N+1:2N, :] - uAxis[1:N, :] .= prop.block_upper_ic[:,:,1] * upper_old .+ prop.block_lower_ic[:,:,1] * lower_old - uAxis[N+1:2N, :] .= prop.block_upper_ic[:,:,2] * upper_old .+ prop.block_lower_ic[:,:,2] * lower_old + uAxis[1:N, :] .= prop.block_upper_ic[:, :, 1] * upper_old .+ prop.block_lower_ic[:, :, 1] * lower_old + uAxis[N+1:2N, :] .= prop.block_upper_ic[:, :, 2] * upper_old .+ prop.block_lower_ic[:, :, 2] * lower_old Q, _ = qr(uAxis) uAxis .= Matrix(Q)[:, 1:N] end @@ -355,18 +374,18 @@ end # Falls back to T_left_mats[1] (or identity if no ua) when there's only 1 chunk before the # first crossing. function _build_uShootL_first(propagators::Vector{ChunkPropagator}, - chunks::Vector{IntegrationChunk}, i_crossings::Vector{Int}, - sing::Vector{SingType}, T_left_mats::Vector{Matrix{ComplexF64}}, - has_ua::Bool, can_reintegrate::Bool, i_axis_mid::Int, - ctrl, equil, mats, intr::ForceFreeStatesInternal, N::Int) - shoot_range_L1 = (i_axis_mid + 1):(i_crossings[1] - 1) + chunks::Vector{IntegrationChunk}, i_crossings::Vector{Int}, + sing::Vector{SingType}, T_left_mats::Vector{Matrix{ComplexF64}}, + has_ua::Bool, can_reintegrate::Bool, i_axis_mid::Int, + ctrl, equil, mats, intr::ForceFreeStatesInternal, N::Int) + shoot_range_L1 = (i_axis_mid+1):(i_crossings[1]-1) if can_reintegrate && !isempty(shoot_range_L1) return integrate_fm_with_ua_ic(chunks, shoot_range_L1, sing[1].ua_left, - ctrl, equil, mats, intr; - backward=true, psi_ua=sing[1].psi_ua_left) + ctrl, equil, mats, intr; + backward=true, psi_ua=sing[1].psi_ua_left) elseif !isempty(shoot_range_L1) return assemble_fm_matrix(propagators, shoot_range_L1; - T_init=has_ua ? T_left_mats[1] : nothing) + T_init=has_ua ? T_left_mats[1] : nothing) else return has_ua ? T_left_mats[1] : Matrix{ComplexF64}(I, 2N, 2N) end @@ -377,19 +396,19 @@ end # the catastrophically ill-conditioned axis FM. Fortran-matched structure with # nMat = (2 + 4·msing)·N. Returns (M, nMat, col_edge). function _assemble_bvp_S_axis(uShootR::Vector{Matrix{ComplexF64}}, - uShootL::Vector{Matrix{ComplexF64}}, - uAxis::Matrix{ComplexF64}, ipert_all::Vector{Int}, - msing::Int, N::Int, - wv::Union{Nothing,Matrix{ComplexF64}}, psio::Float64) + uShootL::Vector{Matrix{ComplexF64}}, + uAxis::Matrix{ComplexF64}, ipert_all::Vector{Int}, + msing::Int, N::Int, + wv::Union{Nothing,Matrix{ComplexF64}}, psio::Float64) # STRIDE global BVP block structure [Glasser-Kolemen 2018 PoP 25, 032501 Eq. 37]. nMat = (2 + 4 * msing) * N col_axis = 1:N - col_edge = (nMat - N + 1):nMat + col_edge = (nMat-N+1):nMat M = zeros(ComplexF64, nMat, nMat) # Axis matching: uShootL[1] · c_left[1] = uAxis · c_axis (2N equations) M[1:2N, _col_left(1, N)] .= uShootL[1] - M[1:2N, col_axis] .= -uAxis + M[1:2N, col_axis] .= -uAxis row_offset = 2N for j in 1:msing @@ -398,21 +417,21 @@ function _assemble_bvp_S_axis(uShootR::Vector{Matrix{ComplexF64}}, for i in 1:2N if i != ipert_j && i != ipert_j + N row_offset += 1 - M[row_offset, _col_left(j, N)[i]] = 1 + M[row_offset, _col_left(j, N)[i]] = 1 M[row_offset, _col_right(j, N)[i]] = -1 end end - junc_rows = (row_offset + 1):(row_offset + 2N) + junc_rows = (row_offset+1):(row_offset+2N) if j < msing # Midpoint matching between consecutive surfaces - M[junc_rows, _col_right(j, N)] .= -uShootR[j] - M[junc_rows, _col_left(j+1, N)] .= uShootL[j+1] + M[junc_rows, _col_right(j, N)] .= -uShootR[j] + M[junc_rows, _col_left(j + 1, N)] .= uShootL[j+1] else # Edge junction M[junc_rows, _col_right(msing, N)] .= uShootR[msing] if wv !== nothing - M[junc_rows[1:N], col_edge] .= -I(N) + M[junc_rows[1:N], col_edge] .= -I(N) M[junc_rows[N+1:end], col_edge] .= wv .* psio^2 else M[junc_rows[N+1:end], col_edge] .= -I(N) @@ -425,7 +444,7 @@ function _assemble_bvp_S_axis(uShootR::Vector{Matrix{ComplexF64}}, for j in 1:msing ipert_j = ipert_all[j] row_offset += 1 - M[row_offset, _col_left(j, N)[ipert_j]] = 1 + M[row_offset, _col_left(j, N)[ipert_j]] = 1 row_offset += 1 M[row_offset, _col_right(j, N)[ipert_j]] = 1 end @@ -460,51 +479,51 @@ end # Fallback BVP assembly with FM-based axis BC (used when no Riccati S matrices are available). # Uses the conditioned axis propagator Phi_R[1][:,N+1:2N] in place of S-axis matching. function _assemble_bvp_FM_axis(Phi_L_mats::Vector{Matrix{ComplexF64}}, - Phi_R_mats::Vector{Matrix{ComplexF64}}, ipert_all::Vector{Int}, - msing::Int, N::Int, - T_left_inv::Vector{Matrix{ComplexF64}}, - T_right_inv::Vector{Matrix{ComplexF64}}, has_ua::Bool, - wv::Union{Nothing,Matrix{ComplexF64}}, psio::Float64) + Phi_R_mats::Vector{Matrix{ComplexF64}}, ipert_all::Vector{Int}, + msing::Int, N::Int, + T_left_inv::Vector{Matrix{ComplexF64}}, + T_right_inv::Vector{Matrix{ComplexF64}}, has_ua::Bool, + wv::Union{Nothing,Matrix{ComplexF64}}, psio::Float64) nMat = (2 + 4 * msing) * N col_axis = 1:N - col_edge = (N + 4N*msing + 1):nMat + col_edge = (N+4N*msing+1):nMat M = zeros(ComplexF64, nMat, nMat) M[1:2N, (N+1):(N+2N)] .= Phi_L_mats[1] - M[1:2N, col_axis] .= -view(Phi_R_mats[1], :, N+1:2N) + M[1:2N, col_axis] .= -view(Phi_R_mats[1], :, N+1:2N) - row_drive_base = 2N + (4N-2)*msing + row_drive_base = 2N + (4N - 2) * msing for j in 1:msing ipert_j = ipert_all[j] cl = _col_left(j, N) cr = _col_right(j, N) - row_cont = 2N + (4N-2)*(j-1) + row_cont = 2N + (4N - 2) * (j - 1) for i in 1:2N if i != ipert_j && i != ipert_j + N row_cont += 1 - M[row_cont, cl[i]] = 1 + M[row_cont, cl[i]] = 1 M[row_cont, cr[i]] = -1 end end - junc_rows = (row_cont + 1):(2N + (4N-2)*j) + junc_rows = (row_cont+1):(2N+(4N-2)*j) if j < msing - M[junc_rows, cr] .= Phi_R_mats[j+1] - M[junc_rows, _col_left(j+1, N)] .= -Phi_L_mats[j+1] + M[junc_rows, cr] .= Phi_R_mats[j+1] + M[junc_rows, _col_left(j + 1, N)] .= -Phi_L_mats[j+1] else M[junc_rows, cr] .= Phi_R_mats[msing+1] if wv !== nothing - M[junc_rows[1:N], col_edge] .= -I(N) + M[junc_rows[1:N], col_edge] .= -I(N) M[junc_rows[N+1:end], col_edge] .= wv .* psio^2 else M[junc_rows[N+1:end], col_edge] .= -I(N) end end if has_ua - M[row_drive_base + 2j-1, cl] .= T_left_inv[j][ipert_j, :] - M[row_drive_base + 2j, cr] .= T_right_inv[j][ipert_j, :] + M[row_drive_base+2j-1, cl] .= T_left_inv[j][ipert_j, :] + M[row_drive_base+2j, cr] .= T_right_inv[j][ipert_j, :] else - M[row_drive_base + 2j-1, cl[ipert_j]] = 1 - M[row_drive_base + 2j, cr[ipert_j]] = 1 + M[row_drive_base+2j-1, cl[ipert_j]] = 1 + M[row_drive_base+2j, cr[ipert_j]] = 1 end end return M, nMat, col_edge @@ -515,8 +534,8 @@ end # combination subtracts dp_raw entries up to ~3×10⁴ larger than the result, and Float64 # precision lets the imaginary part drift 2–5× on DIIID-class equilibria. function _solve_bvp_and_combine_pest3(M::Matrix{ComplexF64}, msing::Int, N::Int, nMat::Int, - use_S_axis::Bool, ipert_all::Vector{Int}, col_edge, - ctrl, debug::Bool) + use_S_axis::Bool, ipert_all::Vector{Int}, col_edge, + ctrl, debug::Bool) s2 = 2 * msing Tc = (ctrl === nothing || ctrl.extended_precision_bvp) ? Complex{Double64} : ComplexF64 M_solve = Tc.(M) @@ -533,17 +552,17 @@ function _solve_bvp_and_combine_pest3(M::Matrix{ComplexF64}, msing::Int, N::Int, for jsing in 1:msing, side in 1:2 dRow = 2jsing - (2 - side) fill!(b, 0) - drive_row = use_S_axis ? (nMat - s2 + dRow) : (2N + (4N-2)*msing + dRow) + drive_row = use_S_axis ? (nMat - s2 + dRow) : (2N + (4N - 2) * msing + dRow) b[drive_row] = 1 x = use_lu ? (M_lu \ b) : (M_pinv * b) debug && _log_bvp_solve(x, b, M_solve, jsing, side, dRow, msing, N, - ipert_all, col_edge, use_S_axis) + ipert_all, col_edge, use_S_axis) for ksing in 1:msing ipert_k = ipert_all[ksing] dp_raw[dRow, 2ksing-1] = x[_col_left(ksing, N)[ipert_k+N]] - dp_raw[dRow, 2ksing] = x[_col_right(ksing, N)[ipert_k+N]] + dp_raw[dRow, 2ksing] = x[_col_right(ksing, N)[ipert_k+N]] end end @@ -563,7 +582,7 @@ end # Logging helpers for `compute_delta_prime_matrix!`. Called only when debug=true. function _log_bvp_setup(chunks, sing, S_at_surface_left, use_S_axis, has_ua, - Phi_L_mats, Phi_R_mats, Phi_R_halves, ipert_all, wv, psio, N, msing) + Phi_L_mats, Phi_R_mats, Phi_R_halves, ipert_all, wv, psio, N, msing) @info "Δ' BVP: $(length(chunks)) chunks, $msing surfaces, N=$N" @info "Δ' BVP: Axis BC: $(use_S_axis ? "S-based (Riccati)" : "FM-based (conditioned)")" @info "Δ' BVP: Asymptotic basis: $(has_ua ? "available" : "NOT available (raw basis driving)")" @@ -575,8 +594,8 @@ function _log_bvp_setup(chunks, sing, S_at_surface_left, use_S_axis, has_ua, if has_ua for j in 1:msing sp = sing[j] - T_l = [sp.ua_left[:,:,1]; sp.ua_left[:,:,2]] - T_r = [sp.ua_right[:,:,1]; sp.ua_right[:,:,2]] + T_l = [sp.ua_left[:, :, 1]; sp.ua_left[:, :, 2]] + T_r = [sp.ua_right[:, :, 1]; sp.ua_right[:, :, 2]] @info " Surface $j: cond(T_left)=$(@sprintf("%.2e", cond(T_l))), cond(T_right)=$(@sprintf("%.2e", cond(T_r)))" ipert_j = ipert_all[j] @info " Surface $j ua_left (ipert=$ipert_j, psi_ua_left=$(@sprintf("%.8f", sp.psi_ua_left))):" @@ -603,7 +622,7 @@ function _log_bvp_setup(chunks, sing, S_at_surface_left, use_S_axis, has_ua, end function _log_S_axis_shooting_propagators(uShootR, uShootL, uAxis, S_at_surface_left, - T_left_mats, ipert_all, has_ua, msing, N) + T_left_mats, ipert_all, has_ua, msing, N) @info " Shooting propagators (S-based axis BC, no axis unknowns):" for j in 1:msing shoot_R_str = @sprintf("%.2e", cond(uShootR[j])) @@ -636,7 +655,7 @@ function _log_S_axis_shooting_propagators(uShootR, uShootL, uAxis, S_at_surface_ end function _log_bvp_solve(x, b, M_solve, jsing, side, dRow, msing, N, - ipert_all, col_edge, use_S_axis) + ipert_all, col_edge, use_S_axis) residual = norm(ComplexF64.(M_solve * x - b)) side_str = side == 1 ? "left" : "right" @info " BVP solve: jsing=$jsing side=$side_str (dRow=$dRow): ||Mx-b||=$(@sprintf("%.2e", residual)), ||x||=$(@sprintf("%.2e", Float64(norm(x))))" @@ -644,9 +663,9 @@ function _log_bvp_solve(x, b, M_solve, jsing, side, dRow, msing, N, ipert_ks = ipert_all[ks] cl = _col_left(ks, N) cr = _col_right(ks, N) - xl_big = ComplexF64(x[cl[ipert_ks]]) + xl_big = ComplexF64(x[cl[ipert_ks]]) xl_small = ComplexF64(x[cl[ipert_ks+N]]) - xr_big = ComplexF64(x[cr[ipert_ks]]) + xr_big = ComplexF64(x[cr[ipert_ks]]) xr_small = ComplexF64(x[cr[ipert_ks+N]]) @info " surf $ks: x_left[big]=$(@sprintf("%+.4e%+.4ei", real(xl_big), imag(xl_big))), x_left[small]=$(@sprintf("%+.4e%+.4ei", real(xl_small), imag(xl_small)))" @info " surf $ks: x_right[big]=$(@sprintf("%+.4e%+.4ei", real(xr_big), imag(xr_big))), x_right[small]=$(@sprintf("%+.4e%+.4ei", real(xr_small), imag(xr_small)))" @@ -660,7 +679,7 @@ end function _log_bvp_pest3(dp_raw, deltap, s2, msing, Tc) @info "Δ' BVP: Full dp_raw matrix ($(s2)×$(s2)) [$(Tc)]:" for i in 1:s2 - row_str = join([@sprintf("%+.6e", Float64(real(dp_raw[i,j]))) for j in 1:s2], " ") + row_str = join([@sprintf("%+.6e", Float64(real(dp_raw[i, j]))) for j in 1:s2], " ") @info " dp_raw[$i,:] = $row_str" end @info "Δ' BVP: Raw dp diagonal = $([@sprintf("%.4f%+.4fi", Float64(real(dp_raw[i,i])), Float64(imag(dp_raw[i,i]))) for i in 1:s2])" @@ -720,8 +739,8 @@ function pest3_decompose(dp_raw::AbstractMatrix) for i in 1:m, j in 1:m LL = dp_raw[2i-1, 2j-1] LR = dp_raw[2i-1, 2j] - RL = dp_raw[2i, 2j-1] - RR = dp_raw[2i, 2j] + RL = dp_raw[2i, 2j-1] + RR = dp_raw[2i, 2j] Ap[i, j] = RR + RL + LR + LL Bp[i, j] = RR - RL + LR - LL Gp[i, j] = RR + RL - LR - LL diff --git a/src/ForceFreeStates/Riccati/Propagators.jl b/src/ForceFreeStates/Riccati/Propagators.jl index 285695c5b..d888750b7 100644 --- a/src/ForceFreeStates/Riccati/Propagators.jl +++ b/src/ForceFreeStates/Riccati/Propagators.jl @@ -6,7 +6,7 @@ # length chunks; the absolute floor catches short chunks where 5% of the span would be # smaller than the typical ODE step. const SAVE_NEAR_END_FRAC = 0.05 -const SAVE_NEAR_END_PSI = 1e-4 +const SAVE_NEAR_END_PSI = 1e-4 """ assemble_fm_matrix(propagators, idx_range; condition=false) -> Matrix{ComplexF64} @@ -16,6 +16,7 @@ in order for indices `idx_range`. Returns Φ_end * ... * Φ_start, so that the r maps the IC at the start of `idx_range[1]` to the state at the end of `idx_range[end]`. Each `ChunkPropagator` stores the 2N columns of Φ split into two N×N×2 blocks: + ``` block_upper_ic[:,:,1:2] ↔ Φ[:,1:N] (result from IC=(I,0)) block_lower_ic[:,:,1:2] ↔ Φ[:,N+1:2N] (result from IC=(0,I)) @@ -33,8 +34,8 @@ means only U₂ ICs are needed. Do NOT use for inter-surface segments where both and U₂ components carry physical information. """ function assemble_fm_matrix(propagators::Vector{ChunkPropagator}, idx_range; - condition::Bool=false, - T_init::Union{Nothing,Matrix{ComplexF64}}=nothing) + condition::Bool=false, + T_init::Union{Nothing,Matrix{ComplexF64}}=nothing) # Determine matrix size from T_init if provided (lets us handle empty idx_range and even # an empty propagators list, provided T_init carries the dimension). Otherwise fall back # to the first propagator that actually exists in idx_range, with a final fallback to @@ -123,7 +124,7 @@ end riccati_der!(du, u, params, psieval) Evaluate the explicit dual Riccati ODE right-hand side: - dS/dψ = w†·F̄⁻¹·w - S·Ḡ·S, w = Q - K̄·S +dS/dψ = w†·F̄⁻¹·w - S·Ḡ·S, w = Q - K̄·S where Q = diag(1/(m - n·q)) is the diagonal singular factor matrix. The identity slice u[:,:,2] = I does not evolve (du[:,:,2] = 0). @@ -147,7 +148,7 @@ See: Glasser (2018) Phys. Plasmas 25, 032507 — Eq. 19 (dual Riccati form) _, equil, mats, intr, odet, _ = params Npert = intr.numpert_total - S = @view u[:, :, 1] + S = @view u[:, :, 1] dS = @view du[:, :, 1] @view(du[:, :, 2]) .= 0 # identity does not evolve @@ -162,9 +163,9 @@ See: Glasser (2018) Phys. Plasmas 25, 032507 — Eq. 19 (dual Riccati form) fmat_lower = acquire!(pool, ComplexF64, Npert, Npert) kmat = similar!(pool, fmat_lower) gmat = similar!(pool, fmat_lower) - w = similar!(pool, fmat_lower) # w = Q - K̄·S - v = similar!(pool, fmat_lower) # v = F̄⁻¹·w (then reused for S·Ḡ·S) - tmp = similar!(pool, fmat_lower) # scratch + w = similar!(pool, fmat_lower) # w = Q - K̄·S + v = similar!(pool, fmat_lower) # v = F̄⁻¹·w (then reused for S·Ḡ·S) + tmp = similar!(pool, fmat_lower) # scratch # Evaluate F̄ (Cholesky factor), K̄, Ḡ splines at current ψ mats.ideal.F_spline_lower(vec(fmat_lower), psieval; hint=mats._hint) @@ -255,8 +256,8 @@ function riccati_integrate_chunk!( cb = DiscreteCallback((u, t, integrator) -> true, riccati_integrator_callback!) rtol = ctrl.eulerlagrange_tolerance prob = ODEProblem(sing_der!, odet.u, (chunk.psi_start, chunk.psi_end), - (ctrl, equil, mats, intr, odet, chunk)) - sol = solve(prob, Vern9(); reltol=rtol, callback=cb, save_everystep=false, save_end=true) + (ctrl, equil, mats, intr, odet, chunk)) + sol = solve(prob, el_ode_algorithm(ctrl); reltol=rtol, abstol=ctrl.ode_abstol, callback=cb, save_everystep=false, save_end=true) odet.u .= sol.u[end] odet.psifac = sol.t[end] # Renormalize end state to (S, I) convention for the next chunk. @@ -273,8 +274,8 @@ end renormalize_riccati!(odet, intr) After a singular surface crossing, restore the canonical Riccati storage convention: - u[:,:,1] = S_new = U₁_new · U₂_new⁻¹ - u[:,:,2] = I +u[:,:,1] = S_new = U₁_new · U₂_new⁻¹ +u[:,:,2] = I `riccati_cross_ideal_singular_surf!` leaves u[:,:,1] = U₁_new and u[:,:,2] = U₂_new (not I), so this step is required before continuing the Riccati integration. @@ -298,8 +299,8 @@ end renormalize_riccati_inplace!(u, N) In-place Riccati renormalization on an arbitrary N×N×2 array: - u[:,:,1] = U₁ · U₂⁻¹ (new S) - u[:,:,2] = I +u[:,:,1] = U₁ · U₂⁻¹ (new S) +u[:,:,2] = I Used in `riccati_integrator_callback!` to renormalize the integrator's live state when column norms grow beyond `ctrl.ucrit`, analogous to Gaussian reduction in the @@ -346,8 +347,8 @@ function integrate_propagator_chunk!( # naturally. The resulting propagator maps state at psi_end → psi_start, which is # well-conditioned because exponentially growing solutions (forward) decay backward. tspan = chunk.direction == 1 ? - (chunk.psi_start, chunk.psi_end) : - (chunk.psi_end, chunk.psi_start) + (chunk.psi_start, chunk.psi_end) : + (chunk.psi_end, chunk.psi_start) rtol = ctrl.eulerlagrange_tolerance params = (ctrl, equil, mats, intr, odet_proxy, chunk) @@ -359,7 +360,7 @@ function integrate_propagator_chunk!( odet_proxy.spline_hint[] = 1 odet_proxy.mats_hint[] = 1 prob = ODEProblem(sing_der!, u_upper, tspan, params) - sol = solve(prob, Vern9(); reltol=rtol, save_everystep=false, save_end=true) + sol = solve(prob, el_ode_algorithm(ctrl); reltol=rtol, abstol=ctrl.ode_abstol, save_everystep=false, save_end=true) prop.block_upper_ic .= sol.u[end] odet_proxy.total_steps += sol.stats.naccept # thread-local; summed into odet after the BVP barrier @@ -371,7 +372,7 @@ function integrate_propagator_chunk!( odet_proxy.spline_hint[] = 1 odet_proxy.mats_hint[] = 1 prob = ODEProblem(sing_der!, u_lower, tspan, params) - sol = solve(prob, Vern9(); reltol=rtol, save_everystep=false, save_end=true) + sol = solve(prob, el_ode_algorithm(ctrl); reltol=rtol, abstol=ctrl.ode_abstol, save_everystep=false, save_end=true) prop.block_lower_ic .= sol.u[end] odet_proxy.total_steps += sol.stats.naccept end @@ -401,12 +402,12 @@ function integrate_fm_with_ua_ic( equil::Equilibrium.PlasmaEquilibrium, mats::MatrixSplines, intr::ForceFreeStatesInternal; - backward::Bool = false, - psi_ua::Float64 = NaN + backward::Bool=false, + psi_ua::Float64=NaN ) N = intr.numpert_total psi_start = chunks[first(chunk_range)].psi_start - psi_end = chunks[last(chunk_range)].psi_end + psi_end = chunks[last(chunk_range)].psi_end # Use stored ua ψ location if provided; otherwise fall back to chunk boundary. # The ua is evaluated at the inner-layer boundary (exact ψ from singular crossing), # which may differ slightly from the nearest chunk boundary. @@ -437,9 +438,9 @@ function integrate_fm_with_ua_ic( odet_proxy.spline_hint[] = 1 odet_proxy.mats_hint[] = 1 prob = ODEProblem(sing_der!, u0, tspan, params) - sol = solve(prob, Vern9(); reltol=rtol, abstol=abstol_arr, save_everystep=false, save_end=true) - result[1:N, 1:N] .= sol.u[end][:, :, 1] - result[N+1:2N, 1:N] .= sol.u[end][:, :, 2] + sol = solve(prob, el_ode_algorithm(ctrl); reltol=rtol, abstol=abstol_arr, save_everystep=false, save_end=true) + result[1:N, 1:N] .= sol.u[end][:, :, 1] + result[N+1:2N, 1:N] .= sol.u[end][:, :, 2] # Batch 2: columns N+1:2N of T (small solutions) u0[:, :, 1] .= ua[:, N+1:2N, 1] @@ -450,9 +451,9 @@ function integrate_fm_with_ua_ic( odet_proxy.spline_hint[] = 1 odet_proxy.mats_hint[] = 1 prob = ODEProblem(sing_der!, u0, tspan, params) - sol = solve(prob, Vern9(); reltol=rtol, abstol=abstol_arr, save_everystep=false, save_end=true) - result[1:N, N+1:2N] .= sol.u[end][:, :, 1] - result[N+1:2N, N+1:2N] .= sol.u[end][:, :, 2] + sol = solve(prob, el_ode_algorithm(ctrl); reltol=rtol, abstol=abstol_arr, save_everystep=false, save_end=true) + result[1:N, N+1:2N] .= sol.u[end][:, :, 1] + result[N+1:2N, N+1:2N] .= sol.u[end][:, :, 2] return result end @@ -464,8 +465,8 @@ Apply the chunk propagator `prop` to the current state `odet.u` in-place. The propagator acts as a linear map on the (U₁, U₂) pair: - U₁_new = block_upper_ic[:,:,1] · U₁_prev + block_lower_ic[:,:,1] · U₂_prev - U₂_new = block_upper_ic[:,:,2] · U₁_prev + block_lower_ic[:,:,2] · U₂_prev +U₁_new = block_upper_ic[:,:,1] · U₁_prev + block_lower_ic[:,:,1] · U₂_prev +U₂_new = block_upper_ic[:,:,2] · U₁_prev + block_lower_ic[:,:,2] · U₂_prev This correctly propagates any state (not just the identity), including the (S, I) form produced by Riccati-style crossings. @@ -520,8 +521,8 @@ function apply_propagator_inverse!(odet::OdeState, prop::ChunkPropagator) # Φ_bwd maps state at psi_end → psi_start (well-conditioned). # We want Φ_fwd = Φ_bwd⁻¹ to advance state from psi_start → psi_end. # Solving Φ_bwd · x = [U₁_old; U₂_old] gives x = Φ_bwd⁻¹ · [U₁_old; U₂_old]. - u_old = [odet.u[:,:,1]; odet.u[:,:,2]] # 2N × N + u_old = [odet.u[:, :, 1]; odet.u[:, :, 2]] # 2N × N u_new = Φ \ u_old # LU solve, 2N × N - odet.u[:,:,1] .= u_new[1:N, :] - odet.u[:,:,2] .= u_new[N+1:2N, :] + odet.u[:, :, 1] .= u_new[1:N, :] + odet.u[:, :, 2] .= u_new[N+1:2N, :] end From 7a2b947230d9da099f3e0f8d555f2fe5bded0993 Mon Sep 17 00:00:00 2001 From: d-burg Date: Wed, 9 Sep 2026 14:35:35 -0400 Subject: [PATCH 2/4] ForceFreeStates - MINOR - Add the integrator work-precision figures and the geqdsk corpus runner Co-Authored-By: Claude Fable 5.1 --- .gitignore | 1 + benchmarks/run_geqdsk_corpus.jl | 200 ++++++++++++++++++ .../integrator-comparison/chunks_wp_nf.png | Bin 0 -> 212376 bytes .../integrator-comparison/pipeline_wp_dp.png | Bin 0 -> 95860 bytes .../integrator-comparison/pipeline_wp_et.png | Bin 0 -> 91833 bytes 5 files changed, 201 insertions(+) create mode 100644 benchmarks/run_geqdsk_corpus.jl create mode 100644 docs/development/figures/integrator-comparison/chunks_wp_nf.png create mode 100644 docs/development/figures/integrator-comparison/pipeline_wp_dp.png create mode 100644 docs/development/figures/integrator-comparison/pipeline_wp_et.png diff --git a/.gitignore b/.gitignore index fcb3cc96c..6fa3a0d46 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ !docs/src/assets/**/*.png # committed documentation figures (generated by docs/src/figures/**/make_*.jl) !docs/src/figures/**/*.png +!docs/development/figures/**/*.png *.jld2 .gitattributes Manifest.toml diff --git a/benchmarks/run_geqdsk_corpus.jl b/benchmarks/run_geqdsk_corpus.jl new file mode 100644 index 000000000..395bca741 --- /dev/null +++ b/benchmarks/run_geqdsk_corpus.jl @@ -0,0 +1,200 @@ +#!/usr/bin/env julia +""" +run_geqdsk_corpus.jl - Run the Force-Free States stage on every geqdsk in a list and tabulate the outcome. + +Robustness sweep for the Riccati Euler-Lagrange path: each geqdsk is run with one template `gpec.toml` +(the shipped DIII-D-like deck by default) on a pool of worker processes, with a wall-clock cap per case. +A worker that exceeds the cap is killed and replaced, so one pathological equilibrium cannot stall the +sweep, and the JIT cost is paid once per worker rather than once per case. One CSV row per case: +q-profile shape from the geqdsk, mode space, rational surfaces, step count, stage timings, the lowest +free-boundary eigenvalues and the Δ′ diagonal. + +# Usage + +```bash +julia --project=. benchmarks/run_geqdsk_corpus.jl --list --root --out \\ + [--template ] [--workers 2] [--threads 4] [--timeout 600] [--limit n] +``` + +`--list` holds one geqdsk path per line, relative to `--root`. Outputs are written under `benchmarks/`. +""" + +using Distributed +using Printf +using TOML + +function parse_args(args) + opts = Dict{String,Any}("list" => nothing, "root" => ".", "out" => nothing, "workers" => 2, "threads" => 4, + "timeout" => 600.0, "limit" => typemax(Int), + "template" => joinpath(@__DIR__, "..", "examples", "DIIID-like_ideal_example", "gpec.toml")) + i = 1 + while i <= length(args) + a = args[i] + if a == "--list" + opts["list"] = abspath(args[i+1]); i += 2 + elseif a == "--root" + opts["root"] = abspath(args[i+1]); i += 2 + elseif a == "--out" + opts["out"] = abspath(args[i+1]); i += 2 + elseif a == "--template" + opts["template"] = abspath(args[i+1]); i += 2 + elseif a == "--workers" + opts["workers"] = parse(Int, args[i+1]); i += 2 + elseif a == "--threads" + opts["threads"] = parse(Int, args[i+1]); i += 2 + elseif a == "--timeout" + opts["timeout"] = parse(Float64, args[i+1]); i += 2 + elseif a == "--limit" + opts["limit"] = parse(Int, args[i+1]); i += 2 + else + error("unknown argument $a") + end + end + opts["list"] === nothing && error("--list is required") + opts["out"] === nothing && (opts["out"] = joinpath(@__DIR__, "integrator_results", "geqdsk_corpus.csv")) + return opts +end + +# Template deck with the Force-Free States stage only (no PerturbedEquilibrium / KineticForces). +function corpus_template(path) + inputs = TOML.parsefile(path) + keep = Dict{String,Any}(k => inputs[k] for k in ("Equilibrium", "Wall", "ForceFreeStates") if haskey(inputs, k)) + keep["Equilibrium"]["eq_filename"] = "eq.geqdsk" + keep["ForceFreeStates"]["integrator"] = "riccati" + keep["ForceFreeStates"]["verbose"] = false + keep["ForceFreeStates"]["write_outputs_to_HDF5"] = false + keep["ForceFreeStates"]["local_stability_flag"] = false + return keep +end + +const HEADER = "idx,geqdsk,status,elapsed_s,nw,q0,qmin,psi_qmin,qedge,N,msing,surfaces,total_steps," * + "t_equil_s,t_prep_s,t_int_s,t_free_s,t_dp_s,et1,et2,et3,dp_diag,message" + +function main(args) + opts = parse_args(args) + files = filter(!isempty, readlines(opts["list"]))[1:min(end, opts["limit"])] + mkpath(dirname(opts["out"])) + template = corpus_template(opts["template"]) + exeflags = ["--project=$(Base.active_project())", "--threads=$(opts["threads"])"] + + # Worker-side case runner; defined on each worker after it is spawned. + worker_setup = quote + using LinearAlgebra, TOML, Printf + using GeneralizedPerturbedEquilibrium + const GPE = GeneralizedPerturbedEquilibrium + const FFS = GPE.ForceFreeStates + function read_q_profile(path) + lines = readlines(path) + hdr = lines[1] + nw = parse(Int, hdr[53:56]); nh = parse(Int, hdr[57:60]) + nums = Float64[] + for l in lines[2:end] + for m in eachmatch(r"[-+]?\d*\.\d+(?:[eE][-+]?\d+)?", l) + push!(nums, parse(Float64, m.match)) + end + end + off = 20 + 4nw + nw * nh + q = abs.(nums[off+1:off+nw]) + imin = argmin(q) + return nw, q[1], q[imin], (imin - 1) / (nw - 1), q[end] + end + function run_case(geqdsk::String, template::Dict{String,Any}) + t0 = time() + nw, q0, qmin, psi_qmin, qedge = read_q_profile(geqdsk) + dir = mktempdir() + cp(geqdsk, joinpath(dir, "eq.geqdsk")) + open(joinpath(dir, "gpec.toml"), "w") do io + TOML.print(io, template) + end + inputs = TOML.parsefile(joinpath(dir, "gpec.toml")) + eq_config = GPE.Equilibrium.EquilibriumConfig(inputs["Equilibrium"], dir) + wall = GPE.Vacuum.WallShapeSettings(; (Symbol(k) => v for (k, v) in inputs["Wall"])...) + ctrl = FFS.ForceFreeStatesControl(; (Symbol(k) => v for (k, v) in inputs["ForceFreeStates"])...) + intr = FFS.ForceFreeStatesInternal(; dir_path=dir) + intr.wall_settings = wall + GPE.resolve_mode_space!(intr, ctrl) + t_equil = @elapsed begin + equil = GPE.Equilibrium.setup_equilibrium(eq_config, nothing) + equil = GPE.maybe_reform_equilibrium(equil, eq_config, nothing, intr, ctrl, nothing) + end + t_prep = @elapsed metric, mats = GPE.prepare_force_free_states!(intr, ctrl, equil, GPE.KineticForces.KineticForcesControl(), nothing) + t_int = @elapsed odet, props, chunks, S_left = FFS.eulerlagrange_integration(ctrl, equil, mats, intr) + t_free = @elapsed begin + free = FFS.free_run(odet, ctrl, equil, mats, intr) + FFS.normalize_eigenfunctions!(odet, free.wt, equil.psio) + end + t_dp = 0.0 + if intr.msing > 0 && props !== nothing + t_dp = @elapsed FFS.compute_delta_prime_matrix!(intr, props, chunks; wv=free.wv, psio=equil.psio, debug=false, + S_at_surface_left=S_left, ctrl=ctrl, equil=equil, mats=mats) + end + res = FFS.build_result(Symbol(ctrl.integrator), ctrl, equil, intr, metric, mats, odet, free, nothing, nothing) + surfaces = join([@sprintf("%d@%.4f", s.m[1], s.psifac) for s in intr.sing], ";") + dp = res.delta_prime === nothing ? "" : join([@sprintf("%.6g%+.6gi", real(z), imag(z)) for z in LinearAlgebra.diag(res.delta_prime.matrix)], ";") + et = real.(free.et) + rm(dir; recursive=true, force=true) + return (status="ok", elapsed=time() - t0, nw, q0, qmin, psi_qmin, qedge, N=intr.numpert_total, msing=intr.msing, surfaces, + total_steps=odet.total_steps, t_equil, t_prep, t_int, t_free, t_dp, + et1=get(et, 1, NaN), et2=get(et, 2, NaN), et3=get(et, 3, NaN), dp, message="") + end + end + + function spawn_worker() + pid = only(addprocs(1; exeflags=exeflags)) + remotecall_fetch(Core.eval, pid, Main, worker_setup) + return pid + end + + io = open(opts["out"], "w") + println(io, HEADER) + flush(io) + write_row(idx, rel, r) = begin + println(io, join([idx, rel, r.status, @sprintf("%.1f", r.elapsed), r.nw, @sprintf("%.4f", r.q0), @sprintf("%.4f", r.qmin), + @sprintf("%.3f", r.psi_qmin), @sprintf("%.3f", r.qedge), r.N, r.msing, r.surfaces, r.total_steps, + @sprintf("%.2f", r.t_equil), @sprintf("%.2f", r.t_prep), @sprintf("%.2f", r.t_int), @sprintf("%.2f", r.t_free), + @sprintf("%.2f", r.t_dp), @sprintf("%.8e", r.et1), @sprintf("%.8e", r.et2), @sprintf("%.8e", r.et3), r.dp, + replace(r.message, "," => ";", "\n" => " ")], ",")) + flush(io) + end + blank(status, elapsed, msg) = (status, elapsed, nw=0, q0=NaN, qmin=NaN, psi_qmin=NaN, qedge=NaN, N=0, msing=0, surfaces="", total_steps=0, + t_equil=NaN, t_prep=NaN, t_int=NaN, t_free=NaN, t_dp=NaN, et1=NaN, et2=NaN, et3=NaN, dp="", message=msg) + + queue = Channel{Tuple{Int,String}}(length(files)) + for (i, f) in enumerate(files) + put!(queue, (i, f)) + end + close(queue) + lock = ReentrantLock() + + @sync for w in 1:opts["workers"] + @async begin + pid = spawn_worker() + for (idx, rel) in queue + path = joinpath(opts["root"], rel) + t0 = time() + task = @async remotecall_fetch(Main.run_case, pid, path, template) + while !istaskdone(task) && time() - t0 < opts["timeout"] + sleep(1) + end + r = if istaskdone(task) + try + fetch(task) + catch err + blank("failed", time() - t0, sprint(showerror, err)[1:min(end, 300)]) + end + else + rmprocs(pid; waitfor=5) + pid = spawn_worker() + blank("timeout", time() - t0, "exceeded $(opts["timeout"]) s") + end + @lock lock write_row(idx, rel, r) + @printf("%3d/%d %-8s %6.1fs %s\n", idx, length(files), r.status, r.elapsed, rel) + end + rmprocs(pid) + end + end + close(io) + @info "Wrote $(opts["out"])" +end + +main(ARGS) diff --git a/docs/development/figures/integrator-comparison/chunks_wp_nf.png b/docs/development/figures/integrator-comparison/chunks_wp_nf.png new file mode 100644 index 0000000000000000000000000000000000000000..8834d5e2af53b4972ef08d4334bf2118d4cf9450 GIT binary patch literal 212376 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%0DB6d-vreNrCb}nY6GxZE*E#hy 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

Ce ze@pk-VQ9qFrSXs)hhaj3x|?6HU%k4cHpjU2kV>SiboxbAodhV9x4+%(h_t z6NS2(RPmEMB4}EN=YL%`EHs|%TU@}$JBy|wIEm-TeETwl^Hs*z;IFTHrq!A4f2x6! z%?oSdLoQ?Cj0H1csfNBd-LLK4W0ahJABTQ1R5{+L)twKxAAb!$ATNJRd7W(R$Mgcw zyoZa*O&6ViQgS09=c)J9i%YAb%eKJhHAEAb6Z=FMBk~M~GiIF1cy8As_mMm)|D5r< zrw@m5eZ-k3HKL+Dr)H%?8h(gogrh@e_WNcebZ>##9h0JUN zdfgY-;k?q)P!0E&ZYqSrFL=pE!g+ zDBNEEm~Qhhh@#+x{eiQaYNZ!;ZU-$8fwHgfo7poeO)Mx7Tt`ONLr0(fx{-RY4Fzqi zZa^5?dQA+aFOFX^?HwTOPY|j~Kxch5LEMV#gNR$n`-IgeEv`D9+0fb)vvx7qcm+wl zPRc!isCXRMr(h2>)M+mzikfM5QDF&yP}H3Qz(K&S80PL}aC2V+Ui<4+1J}<24YE~P z57={#W5-pZ!SVnYLZ>DRin58Hyzc6zT@k{^u4c1)2jI%2uvbZhOT>L1Y(v@j3ZmKf zL2Rcu;hL9Qzbm<8wTwZ7+@3ukdm%Z}_tbY^mgNs$|EKAo{o6Gq#PmQBpuhzI`H(ei2}}2IWBF;KWC`(1~XlxfV7oE0aaeG2gpmU9GS-_;c}S$p3OGg(XB>-5PXF@_SemJ1B@ zZq(6ellj83a~WfL4j2=X*w?q^?>JT36OHLhiGV|0+~r8o+_A&iGK*fD3v6}w2d}Cd zhw8{p^~nY?y_wuA^!s+o{t8_Fte$1jd*i|lBpHezgDld~fI3uW?vY?Mf=-{@hM0N{qo8pVv_rH(@{WoOP zE^RYUK&Rz*@0-M&KhT0#plK5p-cS8R7Ewm^dzT**r%TlZILy4fZU3Jj z%IcGwh`?c9`>sMrqX44387(v~6e!aS@xl;^oRj)4iQ9FS|2L)Pzx)8;!nocG3lcy(6}o=WaMk14 zvw4~co3!<+gS@*?4`gqDj8|i9ZnS&7>z2?HwQv0?Vw%lg`vY6RE5~!TMk{z-JV)gY zQHc3Z3L4TyA2i{5w2+Sx)22@a(ubgcflVZF$5Plvzi*S>V1b;0>)Qw_2`YfZ-mpn^ zp0=4I!;}?H*jKj&IxW!kw)2&_k>rf|&3I;5m#*kn)Q3F`&?O`tc<>QBt_Sh1o;5U~ zHfYJsaHd}SxXrmVlVVzyeuwIlv8ty=%qkxuWyWfR@uX+LcPctyg5RDeUR`iN$>8UxYtkx$2s?O5bJR~B_l@udyjqw6YBn4PjX{#R5xYLd)6O0(mc zNtUO)u5#~$_j^wD3kUiqZl7*ayT{E=_J@S)?up*Ep)D<@(WDaQ<`SgIv5ln?&n$WX zg{`R#p4N>TP}F@)vu}@Y%%f_#@Z@u;G+O^!B}F6?4B~hNbnYNrTB9tJU|Gvk9hF*S*5h=09lvh-cHzl68VadZF>xq{y$Y;3E4d z2$UL)$?C2s=yr&hGXX1FJ4rJZogr)slJR(gWuu+;TY`6YciV5zw`n;!LmELabO=S7 zI#C#vO0SZm)%Cs9eVJwz8)ZOntjFa_gCSCR5+|`0SZ|#vQf$I&rEa0Z$L~``0X9Ih zrrWvY{cRZ6De;$vfcg`h-k}Ki!ouRy!~f-q?HT_G%inuX$Gt&>j+;@sCqU7@*V7&? z$@YXJdOwo7*6qI6wX}$9*3uZ^U}yi?-2HxjbT*#$Y{y}@+0pv{mJ)$8pp31iF4r|k z?53yXM{ch}{s9-BuRnG~mOxw8Ln0>36z=0j;OXMkXF8MX(aXz-%w6~fQ>!Kl6|(hZ zs}U=pM{VYQYw7rpKBub0m=_-b2VEO>f{X*(T+87Tw4=Be>UJqI=v3MJjKbS{8`oat zp!;^w*tZ=yBvMSdely08hR%YVGJR`M9)zo8lz{xjp9N5aL<7{Dq#h1rxI-oUtl4lf zJU9L^Libbv%0=7qZn@x{Rr|i;Wp}lyu8c88)nR!tveXhg-oV}_{HIPoT zih1Bu$GpdaBrOGd=00~0tQPL}XhV`93m2st(5g~!z4$;YF`aJ$P+xulA`}e~S=@=E zfTbG#Z~Gfj7+GStuC*Bl)prZN;;393w)&GO2&;AQ5i|=V#>~)KC=MUVE?fxrcMIo3?5< zu3O&Wq~G@Z-E+wVeRrl^rBWgdqM7#%Wx#*0H&!SJ9OMBhr_U9}gC}cnrBni+6VJh$ z`j$LiZ84CTSv_?^qg_+I{#Q^^70#77^E6k(iI0k_z~VLCnQLRRiiLrL<-&vtxC z4uLdlh06G30^pXIHs<61krx}=VTU$T01IwC9XY4Jd%e&^71mx%9amt!_nLkf(1`dw z0*~uK)xP)TkV|-Yc>Vt{P?w#Ly8zTtsI9F{D|yJ9A1G~~zBSju3w#}iF4CQxnAn+- zB9f@j)$Zt1JLCUvOl!W`T@?zO$f4^8eyx8wSmepNJuag})UJz!sc_Q?#^vVBXk zxfv8JBjhEw^G0vWLgZ+OO9d6XBY(#s&LOi5#XEBmg{kR`vVT(=S-#!gnN{}NAI}fh z3xV__S--b^jX+Dj_}b5~C5DLcWk*g97}*d{)%!-2TFDPBQQ2eSz6Up8%;AXuZnMKf z=v85RMINLTHq^Yqv3~Bxmgp&KOy2jMP2HuvB$*O*tUT ziqMDwIH8FuVRK<|lmc-+@fi#H_c1}FBXPw($_Z95K9dS$tr^d0v#yEgw)DSdD*9)O zzDn1Z&*3z~>EhJ?XKCr%&(>QJ=Ve}HIKmHR*T!Y z&W!63nDpuLxf`V))hwWb3qJKC)yb%0?qA2>Z|Ss8C+>QCpQz^a{acl+6gu_({0wUU zgyhK{i|k9aRoxov_)V}JMxKPjsbt7!muIQ~m;4iMHBmPLeC3Kq=$@j`JV9C=!MlAIyU1%YmU5Zd~>TITV(0Y10d(KM&5DN1!Am#Mw3yw%pjZN?^ z?T6;g$iIaaIe;1=%t+)|9Za;;pBk(`Yz+p2+&!Spl%Q)kqm)VOi;u(8|9x*#>V_ik z8;7$={Thno!gIX_?M9ZCa;>B)_oPh?+70$ol*FdQIZjRAmXk{r4qdFI3!Kvyj!TrV z(3GVhBN1n@F>Zi|ljif5O*US&Fa)CS7j~@xyxtkiBXirFd zJ^^SVEMwokSf2wj2OPbp=O?B3vm*&FUDlGmlOy)3->qfpF42OW8SDj1w};N^SjXHU zQue#=`ihdCDEHSJzkk|~(;K%bFN|OcKqFuh9AIH0!((kxskkC!uEoc_r@;(0{e9~- zW8I12yAbC6Wl{Fx5q;7q>nM=X<4qb2jh|dXhSe7*5{Xy|#q`Y8tR-5Wi!r$A*6$Y1 zqY4Kg3-^c>Jcyx9)KRGJBZ3m7#WHRzA|CISSGFc3%kk&vnyc!uug@_x;u8p(Ex`%T zIDY(hk8^F67&IVZ-weeu2IxIQTkjiNy(YEH)#Y-jj4TW4Wauj5E;DYxNbSYC zm&?~eHK~^h9p%wIz{i7jRHmpTRuveuH+OTxjPC0Vg2rpI{nsF|q_=!_tM786eL^a8 z%e7Vz$yN2NPb?AV9QN$8fEy}mwzRzgOtY{37!O@ViAnl+-n-XXMtdYp*Apdnz(lbS zH|*R2Y5=UUj9_b6A`l@&pp*uaX&3gz`H{4b6BD35?`fGZ2afXMS>(MVkR8?NM#lX9 zBCjx6o^-y<4`eNm?uUXGGa=3xtT-YPaukI6g$EfwY~NqAPlcU=nTH8K2|F<_j~%xA z-+v){5a#5h^>>f|V8KypdgB?s#Sf8uNvH9lX>lQ_IZa55e%@9p2BH%{sF6??>D_MN z_kJIuzA8Tkmwg|S)|}!Rw5g+AT?O2Wz)Il+ZrqT8K0{k7o07CdrwH%dCr-Bg0p$G^ zkR-T;#QQLC^#F1TESv*XA!*wt49jFw*>^LbH${x{*UaxA{_`O5E{n_x&yCSE+kfiP zsZnH9r|9q371=*Z?6~GMk>Y~!yb;3HpZ~ZkLN7D1CmZC&B_-)Y{W_@8==yisjl@nD z)gLF-w3PQRFE37G`tBP8n~$&W^wA0Oci|wqIy!yh<6khbuyAmiYHE7;do1&oR;GS; z6UK)6gm%fT<=RHa#@5Sh9UW22t+n{Pa%O_4P(Va*skaqssYX!Yv>9}IVvLw2)Yc?{ z35%0G8|bw-1UzRdTZ8PZw>rDN%dHii8v@YMMyYd^*Ca*R_dMSjRh<*6`_vbO0dPwp zOFzqQ%P%v&P+*`Dd4{? z2J|s3L+|)TZTgfI=T0qpE5q{enWF3Rv&(_h(Q3p0{VSv~FuNCO-y5XNn}VmhqQxkU zDNZ@H_czsm7JKZ>l?_ksMbVeOehH{@xaNPhKnA(DZSz_Mie&g3$?lxcv9);K>-1{P zb`6tm=cE|1UiAOjSA~J}Ni)DM_k6Pg@FrX1g+hYw>@;cq&TOzftHHH7evDYalk2tU zOLGQH(mU-GrzXfS5f7^}SG4N3at9=yCUe9<@GbTnuR_@GFj08xVJiO*S8w4KWw*Bt zOLt0xG)PHGrwB+WNDMu6Hxkm_-QCR~gLHRyw=~k-A@E(^dq4NLk9Yoq>sYhaFV3Qa zRb&>owHGrbcohj>F5}Y)@ty1WXuE}T_Q`JM8@5O^mS~12s$;a}bMp_Jy~*z){i}BG z_O>xbK9AAhA@4ra-Q4~;NG#i%tL-Lj@IC*Ex0__BG3XS(SsA-_Sz9^sBFu(2{Aca* z=$YU_nC(4p-tE%z^5W=J^|;7zotlMB0>!ZGuGE^4H_Evq$d1#Juai`kq zz};!7Lw=$SKjNh_fSuTIl1ON4uj3{;Ks~3~WigUgPGOf4}Hd z-HYYYd%P5jwq~%8^M$wM*RPVKLj$_@Q$ikgUh3!Eg;Ur39jR-#fnG)@`K-cBDrLn7 zIT*SZ<|P?OpEOdUP?H%F1OZ`9kDWb{sE})C3ka*OPn{G(V4`^07kzrWQ!9y-rjg$#e5oLt1$Hm58ppZ@!?|2*ik8&GM_0@9XLwbKoHA{K@VZ zjDD3Ag;D!a)WO#bRjw0Hs;~W3=_4Miw(Uo)dSXwc41{)?w^PW%f*4z+JfB%SVA{-I zV`kn_=7p*)?8@(Y;@2K$M*c+>PF$ALWFPtUdr-~c>alfPy(4{u9eA$_oo|W;i_H!}n;{?{m;e30Pjsx4O(GemqKO%Bw$3}j~ z6u#aD?$6UqpAxq69k-2kLfR(Ib)Uy)8a+Ea;jAkyIjq7dH#i*(iIlXya(w$ClfDqe z`u)U59@M4cMh=Pyf;U#I%9Gbdl6`?4#68L@dpvcy<1=?vH(JE6)3m4I-CmxbBK|;- zsN(|0Kfl}1FGl#pA~l1yRSDlFvfKU14QywY*1rY{3_ErPfAvrtSY_v{CU04u!cN35 zlu^3=v}%lK%3Jr#R#ut3UXQHmEqV-+R&!wKwn_;D{KLvym`SPogrEa9*DO;I_RBif z^D716YrN+(tQYKHEDET*ph{?I4F5ZvuU8s0AC`;ZV!+apa|}ir8u&~+qyVx*%rSoF zXq`pXN(PWg!w+Rx{l?JM1?(>qDQp|ws6KsNr+VA<)j$N<+LK7&pzoL2D=OO-vnKda z%f=dHVQ(ynZkD`IF22XU;6>cuI zQBnlaXvINp4&{Nc5yGGvHbx;FSM@DWm|pEG*;Yg^x%K zB8!ODp1u{mM_Iip;^kP>E@bqbRfVG*B$e5@_)yiX3dQ?L@F|*n<$$#WprZn#Lr9~v zgc@a|xd?b9WK|_k==(Ce6xnsE9;y%$)q6O}3AjF z#WC@`iaqVvp4ly(w<0Ee2@We`#Z@}LdN35YqQusK-Qn7oCtZ`VFRU^UDJm{Wp#6)i zmnINuT5Anf_FrlaeA_Yci`e(pUnjIPIcI?$VE9PBVin4yI?5ARk9=DO5Gc?f9YmM- z!dPa|54^MqBx01Co1@mMe-3qcgD?dCqAA{KI$eQZ@suJ1=1sEvXObo%!3jyRAxSrD z-^>MbUK=5M5XHy3NCxOI>vr!`ZTi9?r8I>rDf7gI{Kd+(*~30%5S%%+xsIynz28#e z!?g8pZ3-cx+pLJAOTVcDnf^hQ2Iot0TW0mwyG!4}TZgwO{N$8yOf*L91Z|mVNB+8lNC^Ho8Ip4e*c{)}(L`)@M8OCl zHn{W0J4;yw2vpt^%gBa=QKL&7A?Q!J7e;Z7WSZ5qcH9hj+gu4P>pGC#Xhy%|YfId% z)P(Isu0locK4MwZNz3I}m*>&Z7*a9O*F_O|Y4BeGLPQYtmPXD@DnrEN0 z7IyWUxb6p?Y6xxot{+RQ{GPoJFZT{fGq_wrLhv&5Wf$l9qtrN|0tJL0sBMZK+;HLX8%oQ(b)0cwgM~lybdnb-pqt zPcC9ajI%;TAMd?TP*fB9cR_Xbz*s!+H2iexuval}X^>L}%s;B)Y#E`EP&hN*5`SEFSdLH-ej2Oc_**?X>g z;#>716Ky+px~rw?$Tr14+Z;!|t-R#ZBV}kyX@1p8bJ=vMK6vR9!g>Ka3Te8~$9DO( zJAke8>77)|9@dt!a`?zNb0be}b!gT=nw6WxN0b3$l|&osx5~7{-1;NEaUsbX-h$fQ zK!k(4i|jVNF>*|-4L4CZ9XrXFb*f;5$R5vgZ0HC}N4!-AB;3QcRKS>jLZIeE)j%+! zRkd3_oZnR#f(HK%92MfwY{+q9l{E>)dz<0re=~$57Wnf?VJk z@8^++A4>#%F=n9H13`Ot1a)@i|u$iB@$Ghmev7} ztcc%#y_PaWJky@Mtx>mi|McpvZ&AGPwLM=~Y*hd;=I0Y1u{Kgov-C~wmJ!OkcFGpK z{yvYPjq4NEVG4wDI1I&mo30TEt{o1R-N*J-@YWtMj1ISu+j3U8B_z~h_Ng9ba%swU z3WkF();(L(?8KiqP4?HZqsKu72h`b66)H(Jo)x>hFMxVRY^1$2bNdxUCBB?TNHqI= z_khu6TgHMlijXRdnHKax_Xl?vl;xx{n?(-joIQ`K`~{Vw16#oS>AuTdePzgY>5= z8uVdA7uMzvUc>DzTG1*fqT_wb_|xkKq-RmP1y!|L8r_2M@z33><~<#q_{PcxEU!*M zY&PaEm?%OpitPE#j~~|?K8pfq6g5YnKhg`&tq#>MAgD{gKjgW^x&rnIz5Sd{%n}i^ zt@*~Y0JTH+UMc9zZTykbf)#kbEt#LcGT9-A z^h$iK*d=Bw?n~Bo2TaOJK*IX($x`$OVD&)+ql&uwQBi0MVud2Gz$@`(-~3H zn;eX_&U-41QeS6(5OeBv+x+9oohs(xIP=uQw0lW4H&3GzPqP3$jJA{iON_}=%q5Tq zW`{{b)89k>>Eo^t6BFF!*Gpy4C~^)y*DNvf9{`p1WS<=Y5e`N?uf05aM~8-@+9E@@)24 zUfe?Vv1mk`tDbMC4w^6<6Y#iqRF@G|OY$ttN#86f6EXE2ue_;=T3%_eWtXW~}_kLfpo8}F_nqADJCH!zMnaW0ZS6=a>;mufn=91 zQ**!ey;o7YPt<*ZT_+k*Vf=wl*dAIKK(G(Cl`J-F9Xy&+K^DCqp_67LmMTm7Qdbj) zZa6L~e&U5lGFc@HkhV&jHbZ69M;=q=lSZA%REPDERaWeYxp<$>#y{Dwx6PWzAKG0b ziMhb=ox6;&w?op8D!lkVeltE_y@g@DO?!r_3Vl)V#;3ouSpc{aWFl+BXD&JnYghyoxY1qwQNeKGswaXxdN#X@&Dn`Sw ziQkv%+I{BBEiW?+YO>?N*4a5olYmp}*;^|Xki*23P-2&O>H9X0y03MAUcD*2#jNXA zGXAxHx60&TPu1=NvrT)VGgL@m)@? ztcg`v3I`%sbSV`v4ofEJIYyi!7s?^m3p2TX2HX9J#b4(<#{9mAq|{ z!B5WKL|)XL*{8R6Ii@+wFk{+{TaAE>Padh&>y>6Csn?n%5ycCwiD`Sd-5q_L4248y zfQk_KIR!VC@cPvyp{24zxu=cO{!~-w%hc5PV%)pRELqpw(Xs|Q5TH8qWlOA%Bl+c{^=2Pea0R+?-f(kf!iCf4(G8G*v3c2jxK(tPs+$WX+ufj-D$` z+8!crkB!ASTB;2P85RuMi};y`;#20xW?%qxe1L}USQt-~mD+`dq3VQzj{c+RJb(W7 zmjf27PRjr!leZ(cfT`pXiF;>M{u|C5$qX;4=5Ha$cTrawd=fLmqH6&8oT{OaC9ZYI ze^A1hfrO9xHUX}{8wE9z5a$Nxu3Up%RpGCbOMlCJ7*OUvqSB`DThb^Ky2ck(@zr3! zT1<}2}$zly`LtJB$;R6!1=IOx<&e|LE{z3xJsr{}v^({2U?PAo@#y%SnmUJE)o zx$U%Re_c9*yR+-vkyP-9$z_WU9i0I=xPpcxQ;fPY#4(NO4 z#Cxq@?eGWjkuwYdnnNMO3L8SXbL~OC-mIiNT2}G<=_w;$!ym6S&T(Vajc2sED$2dR zAGpa@rgbmMYIG&c@MXbe2}eWZ{rdUj6i44SJu@-kr*L)ZzHhptd9lzRYF)Ho&-MM% zo2>Ne@A}>Et2K{8j7oihyM&?nS#mRG?&wlgMnt}%+f zcWA>Fa3ne6fU4Qg;RlA8yt`k=K;oSCtDKas$|k zB^+v%4rBRJSAQR+KC zBsI3)Ji5I%{(!bsbp)X-s&EWvaaLV2890v=!B?5YXRFZi%Juh;BDOz2#G%HMt9aVK z2$xMWz-<-hxJc>EwU(lHc6XW)1u>-MOgC;guKKsNVF5*67+d0XUgdB|z+1b=IU@6X zqE1O8HA*{jozvm7`!PzQmI&!>p3M`l0(i`eyURpT4c2e*qpR*u*C1Loo3*4t)~IPQ z>=EOB^3p~;I*jn&dVvOU7H9YX+%0b|nihj!-dQE7Pj zH*)T(>eiR1 z(|+f`gULd1V5j6G_23v=YIe38&%QRB%GJ(>c2NOPGCOslZJmdrFmd|u!E2%Xy0Gp| zXliC?ti5NwqQV$-r&Jp@YN#LE?aecnEQR^d(LLZvBCS{6PVNbfi9FFX1huehHS1Mp z`wa4Zu7|`F@X<2%5pcSjR`|z%C8+Q_Y<=xF2J?ZPeVi?;xIL9_7hiQCof!)iiKW#O z+jk-C`&W^W5K^+cdE>XYp*^sGfY~oA3rqjo1=?X~DQHz2!R`*(?$i_C#i3kMzXB=? zbTujmiy-8JKK^5@EtB`YF#buYX}5``HquXz`J~fF*Sg0irKKwpEP;XcqD{e>*zd&w z6a}qwej=a3C+qu$344$*KrA!ZKeet^Q!8K9E)*lL1mczYFY|C7ksi**#x_BpNH>7v z4EICKrr;0JZQq4&a=b1JliA9~(*o??3AuLLJq0f*eWv*4-4+z7N_u-G0Rm$1=s2ik z0j1=9VCA9=EB;~b0IHF00RHQBfZAh&#&5m{KJ6=z_#dC+(UEe7C5=TC%(H~i^v%+B`iXN@>@ty1Z$yh+75MB?tprwSUpCclB-#W=ij()-2(EwB&uQ#1&2 z?s1a9CNLptTc{Zb4oA*2^O<$CYfT$A_3c~5nD}yak>}{xWjak&up5JW-_;K-NwYMj zsKO_*q-(TLbOs(TrM1*mya5F2R@!)>&y%jd;*E_~`u@l3`qVsg zW}xmg6yn{Ce4Yc%N@h83ZEY>Iy7SUBR>99}#xZN9Is#UWfUT)bvef566(3pP9ifCC#ff2Y`}iZTW&nsMz$y^}M&3Lu85Tl8dvpUt;SXKFHYpiS1% z)HLt{3t~X>@VK*?$%JvBUyEy13BV*-rhCelms$tHmu@Kv2=#T~6xW)rb=nIhF-akNqUC!n+I2`d5m z{!!Mv+1o??Tf)$^1n>uighDoFO#UG+UftQ>6E$11lwr=Th;M?H{*=zC?pXyu4wD~O zejXlZ#m0Eti3qj^thnLSm2#*?#w(G0De96P!`QeA@3_CrR;?Tg4^#o?O49VTw;^o|2D7tYeYm=L)|@OP8kC$k zK+tY<$!w(;AKqvPzjxs$D+a{WecRijf6eapud1S>0#y`)ebW`7vU1z57!s4Pnb0?V zq$27&2n)p$d{UA(^EC`&5wN*gLo!g0an>|;0uuM_-;y!EX(c96GoduM#MhG8sP63M zE*PtIk8c|0=(py2G#Hd!@rjCcAU@mF3>`g}uAUo2`jR~$8X2g;Zq7%VO~U^yz*#ec zi08b$`uvA;8J;h%OPy#5b2F;S)V1i-$@dcij99>lkZ@G=8zQHaNV?dVZAiu2nek)- zIIGh6%dbi{*XgPQ+SGtA$q>X8N0X0h!nG$1`GX#uscov`L1y*$o4ZM|8tLUU&*7#ukmbwh@ew=)q2tSbR4HP#FeK3EW-%LD8QulH+DC*QY# zHBaZ8@4q_#G+k`i@tyrm-B`x|??oIc9)<*ZefRWiG9XMQ3N_*TTKIjeXSm}J!unV= z=sB~J@YU(N^{6#H-lO>Xg9&fUTYH>XqoRw+fg;K{g8E;+#egnd>5P5 z@s`Hb)x$2w_r6r&Fm(d1WfHU~*{Pac-STKr>Jg1kjjosUG$ADdRFT0=zC{zfP*asK z8dr;64{2Pxdt4zCG!Zm7ukzv0RT2=mK;Hd&R&CMcWPiW3aXFz$I!ouhX<>qto53m* z?;j==E0sk_GrBlANvE&4<^$nW4Ci=da|4T!EVGJ|hdJi>VEE>hsPCpT`{C`5N5hbw>>a76_`P&y`fG($wTZ47Zdsl?v=D0A5sQWZB2tv?;+5dyd3w5 zCaSpb9PW??C(oL7)9p@Uo@1%+w~xfJv~u>J6+BTK+OnzUT9Jm1i@6w6EGKthSFeW; z2~NPLzK3Jc9Geh=xH3S;s|9UIG4RsYEQecJIW-Pn6!LTNh$;jT_Mz0;g(}N;f^1_xPpTz@iuM!*SZc zz*V?J4N`lL7tE5Vwuh1t;tb|B*@}-iJL29a#<`sel;e)ohIa$A856EpWLQ;iS_@m- zk=B^;nsE?^Ry%h81)*Te7}jGJe_CWjL`3{Vsz|8&BvR$%KQ4E2EA}F$9~VxE+_6r% zBqX=M#^BPamJSKu^ajYdNq&nfE3LUU@wLdkMgY`E^yZB*h>4V2)HVpXeTdvUfm<;k z=UVE&SFeWnVQ^pKOxXF?*|<2SM5=c(nR$+yAxsH5c)8(VQ$7f?r<5z+>-=FUTkNW~ zvFX8aQbB%ipOFZ&_QMvB>Z9>`p*K9@2~1P8THW)dH`0;2;QH$DDoJK^m&r_rIpdca zV-VO4)1`m;VZ*DRy@9$-ClMgigxpV3Vv1@n#+OQbL-Fk(4)9mYNpD0=fBcYg^SmTm z+ly-WWk00%^9A$u?vR1OMYWy4iLrhmo@~6i8Z=XE9mA~FnhpdGIBYv?aM?F?dEJh5 zL-XBKsf`H+^ee*)eQ!?g@+v;ETMtwu#ZRdX0k5D1k{Zem5RoM)-QRYemeP>QO3HgoWtz| zAyo%4Pdkxs(hH49va@vnMdceJhD|vs!|j9FvZD_yIJ%@wi*yEiQ<6EYZ}uQQE+iDe zyx1M4qpW{q)kq)8uH?1U)%5~q07B>C0k0H@DfAWX1wj0X=wqrF{<}DxEXZM6tKtP5 z293=lfh7d=Grl3dR&wKB102$!TLktnrKk{GevMNmqiY(T7pEa57S;`v^=P#P5w~4`H^r! z^h|NDnWAIr=$4)Pp*v?10*u)?O}0ezR+YL51gxWnBCYBOJ`ppOKydP~(%{g0R`=EFfr-czGgvBbL) zX-piQ@*9byn{lIAF69T=7-c8AB1&e?%dWKSOnq~|+Bog&ug--=2<93=AG8|>*ZHGx zv{xliJGcArB>y9_3yafUwExfsD8Hz?EI-a7nHF(blt+yX&7B?xzDC8QH5e%?OXG{9 zj-An#_%*kzl0Ak|MM8ypHFSD8EkC@NOjji;Ntx zQ!<+p@9ChDwJib3%3R}Lw+?Z-CQal|(W+TNd4H{&G)YJ8+Nv)`o!`*v8uKnBibWL> z>GqQLEN!lnA$l14sC0g@*F$ArfLRH%kfz*(cD*lc^OV0L|5o`t6dJh_V0i_*1U`06WS-Hy=9cS&9AiX{ zix9cVHn_qertZrSi;@{AOxLDOK_MHx0b>CZS@7`^Yr*gLErXJCW3BF= z))flS;$#v5wJ~M0K^(g8R*u$IqPPWXy-v3h5i?aTnm$WXhuM4IV6xwyBO!M}&PPNZ zA{4CJ4PUi}$Rl%mdp{2u6yo=3pl)HGpty6qj?kmlp?uSbY_rnT3t_prRa3ODLp5UN zn|gf}PRLf}*ypx_%+qbVDDO{lc}y6rx|nQoVCtpImx(A|;SVxO@Jtxn3&fSPkzJ0I z%3l^(`aeOxDmmGNbcT2>&V-n)3T0iX0%u)8QH|O z4nS&O3I`M&tDKt?y^^tGR1Q)4>?9 zgaKmTymc}%)L<6>9RV5*f5mUo?$$OzG2k^zT?->EGrDyXvF9!sQM zie)&~_-RYi>U>^*_;5qvS6#L+Zt4vtyc8nfFyHEd6?s&Fp2oQzEx608WgP>A_pxF= zys?r0Xr(!s5sx(R=-vU)Jr=pp;Ql1AZ8mv&w=DD3u6;SRS2w-}Kb zoauyE+Qo-7H1U}>0xQYjbvl-vpQ!1Vof?{4h%d_1%kVVm9`owq-UM?Q`V5S4KWYqp4+SW4 zWz2Y}RM-q(=2RRoRmGhrO?CN%0@e;JKQ*iN%

KE&Tw@YKA?gxY6z#Ruxr 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 H_4oe(@k8%^ literal 0 HcmV?d00001 diff --git a/docs/development/figures/integrator-comparison/pipeline_wp_dp.png b/docs/development/figures/integrator-comparison/pipeline_wp_dp.png new file mode 100644 index 0000000000000000000000000000000000000000..cc534fa362d148c9b502a17f194adbcc04e348af GIT binary patch literal 95860 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 PIw=`R#VZ+?Z`}Vs0x8A) literal 0 HcmV?d00001 diff --git a/docs/development/figures/integrator-comparison/pipeline_wp_et.png b/docs/development/figures/integrator-comparison/pipeline_wp_et.png new file mode 100644 index 0000000000000000000000000000000000000000..74c46845402184a0af86ce8525223adefb343c7d GIT binary patch literal 91833 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 literal 0 HcmV?d00001 From cfb1579d98f72842367e168b65e4e69d370dd43d Mon Sep 17 00:00:00 2001 From: d-burg Date: Wed, 9 Sep 2026 14:45:00 -0400 Subject: [PATCH 3/4] ForceFreeStates - MINOR - Make the corpus runner's worker calls serializable Co-Authored-By: Claude Fable 5.1 --- benchmarks/run_geqdsk_corpus.jl | 66 ++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 18 deletions(-) diff --git a/benchmarks/run_geqdsk_corpus.jl b/benchmarks/run_geqdsk_corpus.jl index 395bca741..fc41425a7 100644 --- a/benchmarks/run_geqdsk_corpus.jl +++ b/benchmarks/run_geqdsk_corpus.jl @@ -31,21 +31,29 @@ function parse_args(args) while i <= length(args) a = args[i] if a == "--list" - opts["list"] = abspath(args[i+1]); i += 2 + opts["list"] = abspath(args[i+1]) + i += 2 elseif a == "--root" - opts["root"] = abspath(args[i+1]); i += 2 + opts["root"] = abspath(args[i+1]) + i += 2 elseif a == "--out" - opts["out"] = abspath(args[i+1]); i += 2 + opts["out"] = abspath(args[i+1]) + i += 2 elseif a == "--template" - opts["template"] = abspath(args[i+1]); i += 2 + opts["template"] = abspath(args[i+1]) + i += 2 elseif a == "--workers" - opts["workers"] = parse(Int, args[i+1]); i += 2 + opts["workers"] = parse(Int, args[i+1]) + i += 2 elseif a == "--threads" - opts["threads"] = parse(Int, args[i+1]); i += 2 + opts["threads"] = parse(Int, args[i+1]) + i += 2 elseif a == "--timeout" - opts["timeout"] = parse(Float64, args[i+1]); i += 2 + opts["timeout"] = parse(Float64, args[i+1]) + i += 2 elseif a == "--limit" - opts["limit"] = parse(Int, args[i+1]); i += 2 + opts["limit"] = parse(Int, args[i+1]) + i += 2 else error("unknown argument $a") end @@ -77,16 +85,19 @@ function main(args) template = corpus_template(opts["template"]) exeflags = ["--project=$(Base.active_project())", "--threads=$(opts["threads"])"] - # Worker-side case runner; defined on each worker after it is spawned. - worker_setup = quote + # Worker-side case runner; the imports are evaluated first so the macros below resolve. + worker_imports = quote using LinearAlgebra, TOML, Printf using GeneralizedPerturbedEquilibrium + end + worker_setup = quote const GPE = GeneralizedPerturbedEquilibrium const FFS = GPE.ForceFreeStates function read_q_profile(path) lines = readlines(path) hdr = lines[1] - nw = parse(Int, hdr[53:56]); nh = parse(Int, hdr[57:60]) + nw = parse(Int, hdr[53:56]) + nh = parse(Int, hdr[57:60]) nums = Float64[] for l in lines[2:end] for m in eachmatch(r"[-+]?\d*\.\d+(?:[eE][-+]?\d+)?", l) @@ -137,11 +148,26 @@ function main(args) total_steps=odet.total_steps, t_equil, t_prep, t_int, t_free, t_dp, et1=get(et, 1, NaN), et2=get(et, 2, NaN), et3=get(et, 3, NaN), dp, message="") end + # Errors are turned into a row on the worker: a raised exception would carry method + # instances the driver process cannot deserialize. + function run_case_safe(geqdsk::String, template::Dict{String,Any}) + t0 = time() + try + return run_case(geqdsk, template) + catch err + msg = first(sprint(showerror, err), 400) + return (status="failed", elapsed=time() - t0, nw=0, q0=NaN, qmin=NaN, psi_qmin=NaN, qedge=NaN, N=0, msing=0, surfaces="", + total_steps=0, t_equil=NaN, t_prep=NaN, t_int=NaN, t_free=NaN, t_dp=NaN, et1=NaN, et2=NaN, et3=NaN, dp="", message=msg) + end + end + nothing # the eval's return value travels back to the driver; a function object would not deserialize there end function spawn_worker() pid = only(addprocs(1; exeflags=exeflags)) + remotecall_fetch(Core.eval, pid, Main, worker_imports) remotecall_fetch(Core.eval, pid, Main, worker_setup) + remotecall_fetch(Core.eval, pid, Main, :(const TEMPLATE = $template)) return pid end @@ -149,11 +175,15 @@ function main(args) println(io, HEADER) flush(io) write_row(idx, rel, r) = begin - println(io, join([idx, rel, r.status, @sprintf("%.1f", r.elapsed), r.nw, @sprintf("%.4f", r.q0), @sprintf("%.4f", r.qmin), - @sprintf("%.3f", r.psi_qmin), @sprintf("%.3f", r.qedge), r.N, r.msing, r.surfaces, r.total_steps, - @sprintf("%.2f", r.t_equil), @sprintf("%.2f", r.t_prep), @sprintf("%.2f", r.t_int), @sprintf("%.2f", r.t_free), - @sprintf("%.2f", r.t_dp), @sprintf("%.8e", r.et1), @sprintf("%.8e", r.et2), @sprintf("%.8e", r.et3), r.dp, - replace(r.message, "," => ";", "\n" => " ")], ",")) + println( + io, + join( + [idx, rel, r.status, @sprintf("%.1f", r.elapsed), r.nw, @sprintf("%.4f", r.q0), @sprintf("%.4f", r.qmin), + @sprintf("%.3f", r.psi_qmin), @sprintf("%.3f", r.qedge), r.N, r.msing, r.surfaces, r.total_steps, + @sprintf("%.2f", r.t_equil), @sprintf("%.2f", r.t_prep), @sprintf("%.2f", r.t_int), @sprintf("%.2f", r.t_free), + @sprintf("%.2f", r.t_dp), @sprintf("%.8e", r.et1), @sprintf("%.8e", r.et2), @sprintf("%.8e", r.et3), r.dp, + replace(r.message, "," => ";", "\n" => " ")], ",") + ) flush(io) end blank(status, elapsed, msg) = (status, elapsed, nw=0, q0=NaN, qmin=NaN, psi_qmin=NaN, qedge=NaN, N=0, msing=0, surfaces="", total_steps=0, @@ -172,7 +202,7 @@ function main(args) for (idx, rel) in queue path = joinpath(opts["root"], rel) t0 = time() - task = @async remotecall_fetch(Main.run_case, pid, path, template) + task = @async remotecall_fetch(Core.eval, pid, Main, :(run_case_safe($path, TEMPLATE))) while !istaskdone(task) && time() - t0 < opts["timeout"] sleep(1) end @@ -180,7 +210,7 @@ function main(args) try fetch(task) catch err - blank("failed", time() - t0, sprint(showerror, err)[1:min(end, 300)]) + blank("failed", time() - t0, first(sprint(showerror, err), 300)) end else rmprocs(pid; waitfor=5) From 219d3e933b89ab811aaa8ff8f34c4f5498805f24 Mon Sep 17 00:00:00 2001 From: d-burg Date: Wed, 9 Sep 2026 23:19:07 -0500 Subject: [PATCH 4/4] ForceFreeStates - MINOR - Harden the geqdsk corpus runner against stuck workers Read nw/nh as the last two header integers, so TokaMaker-written geqdsks parse, and SIGKILL a worker that outlives its wall-clock cap instead of letting the failed shutdown end the sweep. Co-Authored-By: Claude Opus 5 --- benchmarks/run_geqdsk_corpus.jl | 52 ++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/benchmarks/run_geqdsk_corpus.jl b/benchmarks/run_geqdsk_corpus.jl index fc41425a7..bef6dea49 100644 --- a/benchmarks/run_geqdsk_corpus.jl +++ b/benchmarks/run_geqdsk_corpus.jl @@ -95,9 +95,11 @@ function main(args) const FFS = GPE.ForceFreeStates function read_q_profile(path) lines = readlines(path) - hdr = lines[1] - nw = parse(Int, hdr[53:56]) - nh = parse(Int, hdr[57:60]) + # nw, nh are the last two integers of the header line; the leading label field is + # not column-aligned across EFIT and TokaMaker writers. + ints = [parse(Int, m.match) for m in eachmatch(r"(?= 2 || error("cannot read nw, nh from geqdsk header: $(lines[1])") + nw, nh = ints[end-1], ints[end] nums = Float64[] for l in lines[2:end] for m in eachmatch(r"[-+]?\d*\.\d+(?:[eE][-+]?\d+)?", l) @@ -163,14 +165,39 @@ function main(args) nothing # the eval's return value travels back to the driver; a function object would not deserialize there end + os_pids = Dict{Int,Int}() + function spawn_worker() pid = only(addprocs(1; exeflags=exeflags)) + os_pids[pid] = remotecall_fetch(getpid, pid) remotecall_fetch(Core.eval, pid, Main, worker_imports) remotecall_fetch(Core.eval, pid, Main, worker_setup) remotecall_fetch(Core.eval, pid, Main, :(const TEMPLATE = $template)) return pid end + # A worker stuck inside a solve does not answer the cooperative shutdown and `rmprocs` then + # throws; SIGKILL the OS process so one pathological equilibrium cannot end the whole sweep. + function kill_worker(pid) + try + rmprocs(pid; waitfor=5) + catch + ospid = get(os_pids, pid, 0) + if ospid > 0 + try + run(`kill -9 $ospid`) + catch + end + end + try + rmprocs(pid; waitfor=0) + catch + end + end + delete!(os_pids, pid) + return nothing + end + io = open(opts["out"], "w") println(io, HEADER) flush(io) @@ -202,25 +229,28 @@ function main(args) for (idx, rel) in queue path = joinpath(opts["root"], rel) t0 = time() - task = @async remotecall_fetch(Core.eval, pid, Main, :(run_case_safe($path, TEMPLATE))) + # The task must never throw: killing a timed-out worker makes its pending + # fetch fail, and an exception here would escape @sync and end the sweep. + task = @async try + remotecall_fetch(Core.eval, pid, Main, :(run_case_safe($path, TEMPLATE))) + catch err + err + end while !istaskdone(task) && time() - t0 < opts["timeout"] sleep(1) end r = if istaskdone(task) - try - fetch(task) - catch err - blank("failed", time() - t0, first(sprint(showerror, err), 300)) - end + out = fetch(task) + out isa Exception ? blank("failed", time() - t0, first(sprint(showerror, out), 300)) : out else - rmprocs(pid; waitfor=5) + kill_worker(pid) pid = spawn_worker() blank("timeout", time() - t0, "exceeded $(opts["timeout"]) s") end @lock lock write_row(idx, rel, r) @printf("%3d/%d %-8s %6.1fs %s\n", idx, length(files), r.status, r.elapsed, rel) end - rmprocs(pid) + kill_worker(pid) end end close(io)