Heap
dexter.HeapInitialConditions(thetas: NDArray1D, psips: NDArray1D, rhos: NDArray1D, zetas: NDArray1D, mus: NDArray1D)
Sets up the initial conditions of the Particles.
Example
>>> import numpy as np
>>>
>>> # set initial conditions on the `r` space
>>> rs = np.linspace(0, geometry.r_wall, 40)
>>> psips = np.asarray([geometry.psip(r) for r in rs])
>>>
>>> initials = dx.HeapInitialConditions(
... psips=psips,
... zetas=np.zeros(len(psips)),
... thetas=np.zeros(len(psips)),
... rhos=1e-5 * np.ones(len(psips)),
... mus=np.zeros(len(psips)),
... )
>>> print(len(initials))
40
Parameters:
-
thetas(NDArray1D) –The initial \(\theta\) angles.
-
psips(NDArray1D) –The initial poloidal magnetic fluxes \(\psi_p\).
-
rhos(NDArray1D) –The initial parallel gyro radii \(\rho\).
-
zetas(NDArray1D) –The initial \(\zeta\) angles.
-
mus(NDArray1D) –The magnetic moments \(mu\).
dexter.Heap(initial: HeapInitialConditions)
A collection of multiple Particles constructed from sets of Initial Conditions.
The particles are stored in arbitrary order.
Example
Constructs a Heap.
Parameters:
-
initials–The Particles' initial conditions sets.
dexter.Heap.poincare(qfactor: Qfactor, currents: Currents, bfield: Bfield, perturbation: Perturbation, params: MappingParameters) -> None
Calculates the Poincare map.
Parameters:
-
qfactor(Qfactor) –The equilibrium's qfactor.
-
currents(Currents) –The equilibrium's plasma current.
-
bfield(Bfield) –The equilibrium's magnetic field.
-
perturbation(Perturbation) –The equilibrium's perturbation.
-
params(MappingParameters) –The parameters of the Poincare mapping.
dexter.Heap.calculate_frequencies(qfactor: Qfactor, currents: Currents, bfield: Bfield, perturbation: Perturbation) -> None
Calculates the \(\omega_\theta\), \(\omega_\zeta\) and \(q_{kinetic}\) of the particles.
Tip
This method appears to be a bit sensitive to the solver's arithmetic error, so it's recommended to use the energy-adaptive-step method, and maybe tighten the tolerance a bit.
Parameters:
-
qfactor(Qfactor) –The equilibrium's qfactor.
-
currents(Currents) –The equilibrium's plasma current.
-
bfield(Bfield) –The equilibrium's magnetic field.
-
perturbation(Perturbation) –The equilibrium's perturbation.
Example
>>> num = 5
>>> initials = dx.HeapInitialConditions(
... thetas=np.ones(num),
... psips=0.8 * geometry.psip_wall * np.ones(num),
... rhos=np.linspace(1e-5, 5e-5, num),
... zetas=np.zeros(num),
... mus=np.zeros(num),
... )
>>>
>>> heap = dx.Heap(initials)
>>>
>>> heap.calculate_frequencies(
... qfactor,
... currents,
... bfield,
... perturbation=dx.Perturbation([])
... )
dexter.Heap.__getitem__(n: int) -> Particle
Returns the n-th particle.