Perturbed Equilibrium
The PerturbedEquilibrium module computes the plasma response to external magnetic perturbations.
Types
GeneralizedPerturbedEquilibrium.PerturbedEquilibrium.PerturbedEquilibriumControl — Type
PerturbedEquilibriumControlUser-facing control parameters from TOML [PerturbedEquilibrium] section.
Fields
Note: Forcing data file settings are now in [ForcingTerms] section.
High Priority (MWE):
fixed_boundary::Bool- Fixed boundary flag (default: false)output_eigenmodes::Bool- Output mode fields as b-fields (default: true)compute_response::Bool- Compute plasma response (default: true)compute_singular_coupling::Bool- Compute singular coupling metrics (default: true)verbose::Bool- Enable verbose logging (default: true)
Output Settings:
output_filename::String- Combined output file with ForceFreeStates results (default: uses ForceFreeStates HDF5_filename)write_outputs_to_HDF5::Bool- Write perturbed equilibrium outputs to HDF5 (default: true)
Medium Priority (defer for MWE):
filter_modes::Bool- Enable mode filtering (default: false)singular_point_method::String- Method for singular point treatment (default: "standard")
GeneralizedPerturbedEquilibrium.PerturbedEquilibrium.PerturbedEquilibriumInternal — Type
PerturbedEquilibriumInternalInternal state variables for perturbed equilibrium calculations.
Fields
dir_path::String- Working directory pathforcing_modes::Vector{ForcingMode}- Loaded forcing mode dataplasma_response::Matrix{ComplexF64}- Plasma response matrixsingular_coupling_metrics::Dict{String,Float64}- Coupling metrics at singular surfacesm_modes::Vector{Int}- Poloidal mode numbers for each index i in 1:numpert_totaln_modes::Vector{Int}- Toroidal mode numbers for each index i in 1:numpert_total
GeneralizedPerturbedEquilibrium.PerturbedEquilibrium.PerturbedEquilibriumState — Type
PerturbedEquilibriumStateResults from perturbed equilibrium calculations.
Fields
Response fields (mode space):
xi_modes::Union{Nothing, NamedTuple}- Displacement (psi, theta, zeta) [npsi, mpert]b_modes::Union{Nothing, NamedTuple}- Magnetic field (psi, theta, zeta) [npsi, mpert]
Singular coupling matrices [msing, numpert_total]:
resonant_flux::Matrix{ComplexF64}- Resonant flux Φ_r/A (singcoup(1,:,:))resonant_current::Matrix{ComplexF64}- Resonant current (singcoup(2,:,:))island_width_sq::Matrix{ComplexF64}- (w/2)² in ψ_n (singcoup(3,:,:))penetrated_field::Matrix{ComplexF64}- Resonant field (singcoup(4,:,:))delta_prime::Matrix{ComplexF64}- Tearing stability Δ' (singcoup(5,:,:))
Diagnostic quantities [msing]:
island_half_width::Vector{Float64}- Actual w/2 (meters or ψ_n)chirikov_parameter::Vector{Float64}- Island overlap metric
Note: numpert_total = mpert × npert handles all (m,n) mode combinations
Legacy fields (deprecated):
coupling_coefficient::ComplexF64- Use singular coupling matrices insteadresonant_amplitude::Float64- Use island diagnostics instead
Energies:
plasma_energy::Float64- Plasma perturbation energyvacuum_energy::Float64- Vacuum perturbation energytotal_energy::Float64- Total perturbation energy
Functions
GeneralizedPerturbedEquilibrium.PerturbedEquilibrium.compute_perturbed_equilibrium — Function
compute_perturbed_equilibrium(
equil::Equilibrium.PlasmaEquilibrium,
ForceFreeStates_results::OdeState,
vac_data::Union{VacuumData, Nothing},
ffs_intr::ForceFreeStatesInternal,
ft_ctrl::ForcingTerms.ForcingTermsControl,
ctrl::PerturbedEquilibriumControl,
intr::PerturbedEquilibriumInternal
)::PerturbedEquilibriumStateMain entry point for perturbed equilibrium calculations.
Computes plasma response to external forcing and calculates singular layer coupling metrics.
Arguments
equil: Equilibrium solution from Equilibrium moduleForceFreeStates_results: Stability calculation results from ForceFreeStates modulevac_data: Vacuum response data from ForceFreeStates free boundary calculationffs_intr: ForceFreeStates internal state with mode informationft_ctrl: Forcing terms control parameters from [ForcingTerms] sectionctrl: Control parameters from [PerturbedEquilibrium] sectionintr: Internal state variables
Returns
PerturbedEquilibriumState: Calculation results
Workflow
- Load forcing data from file
- Compute plasma response (if enabled)
- Calculate singular coupling metrics (if enabled)
- Output eigenmode fields (if enabled)
GeneralizedPerturbedEquilibrium.PerturbedEquilibrium.write_outputs_to_HDF5 — Function
write_outputs_to_HDF5(
state::PerturbedEquilibriumState,
intr::PerturbedEquilibriumInternal,
ctrl::PerturbedEquilibriumControl,
filename::String
)Write perturbed equilibrium results to HDF5 file (appends to existing ForceFreeStates output).
Output Structure
perturbed_equilibrium/
├── forcing_modes/
│ ├── n # Toroidal mode numbers
│ ├── m # Poloidal mode numbers
│ ├── amplitude_real # Real parts of forcing amplitudes
│ └── amplitude_imag # Imaginary parts of forcing amplitudes
├── response/
│ ├── xi_perturbed # Displacement field
│ └── b_perturbed # Magnetic field perturbation
├── singular_coupling/
│ ├── coupling_coefficient_real
│ ├── coupling_coefficient_imag
│ └── resonant_amplitude
└── energies/
├── plasma_energy
├── vacuum_energy
└── total_energy