Skip to content

Perturbation Object


dexter.Perturbation(modes: Collection[ModeObject] | None = None)

A container type for ModeObjects, representing the total perturbation of the system.

A Perturbation can consist of an arbitrary amount of modes, not necessarily of the same type.

Parameters:

  • modes (Collection[ModeObject] | None, default: None ) –

    Collection containing the comprising modes. If None, the perturbation is 0.

Example
Perturbation consisting of analytical flute modes
>>> LCFS = dex.MagneticFlux.Toroidal(0.05)
>>> per = dex.Perturbation(
...     [
...         dex.FluteMode(1e-4, LCFS, 3, 2, 0),
...         dex.FluteMode(2e-4, LCFS, 4, 3, 0),
...         dex.FluteMode(3e-4, LCFS, 5, 4, 0),
...     ]
... )
Example
Perturbation consisting of flute modes from a netCDF file
>>> LCFS = dex.MagneticFlux.Toroidal(0.05)
>>> per = dex.Perturbation(
...     [
...         dex.NcFluteMode(path, "Cubic", 2, 1),
...         dex.NcFluteMode(path, "Cubic", 3, 2),
...     ]
... )
Example
Perturbation consisting of mixed types of flute modes
>>> LCFS = dex.MagneticFlux.Toroidal(0.05)
>>> per = dex.Perturbation(
...     [
...         dex.FluteMode(1e-4, LCFS, 3, 2, 0),
...         dex.FluteMode(2e-4, LCFS, 5, 2, 0),
...         dex.NcFluteMode(path, "Cubic", 3, 2),
...     ]
... )

eval_p(theta: ArrayLike, zeta: ArrayLike, t: ArrayLike, psit: ArrayLike | None = None, psip: ArrayLike | None = None) -> Array

Calculates the perturbation's value $p(\psi, \theta, \zeta, t)$, in Normalized Units.

eval_deriv_flux(theta: ArrayLike, zeta: ArrayLike, t: ArrayLike, psit: ArrayLike | None = None, psip: ArrayLike | None = None) -> Array

Calculates the perturbation's derivative $dp(\psi, \theta, \zeta, t)/d\psi$, in Normalized Units.

eval_deriv_theta(theta: ArrayLike, zeta: ArrayLike, t: ArrayLike, psit: ArrayLike | None = None, psip: ArrayLike | None = None) -> Array

Calculates the perturbation's derivative $dp(\psi, \theta, \zeta, t)/d\theta$, in Normalized Units.

eval_deriv_zeta(theta: ArrayLike, zeta: ArrayLike, t: ArrayLike, psit: ArrayLike | None = None, psip: ArrayLike | None = None) -> Array

Calculates the perturbation's derivative $dp(\psi, \theta, \zeta, t)/d\zeta$, in Normalized Units.

eval_deriv_t(theta: ArrayLike, zeta: ArrayLike, t: ArrayLike, psit: ArrayLike | None = None, psip: ArrayLike | None = None) -> Array

Calculates the perturbation's derivative $dp(\psi, \theta, \zeta, t)/dt$, in Normalized Units.

__len__() -> int

Returns the total number of modes.