bluemira.equilibria.plasma

Representation of the plasma

Classes

PlasmaCoil

PlasmaCoil object for finite difference representation of toroidal current

NoPlasmaCoil

NoPlasmaCoil object for dummy representation of a plasma-less state.

Functions

treat_xz_array(func)

Decorator for handling array calls to PlasmaCoil methods.

Module Contents

bluemira.equilibria.plasma.treat_xz_array(func)

Decorator for handling array calls to PlasmaCoil methods.

Returns:

Wrapped function

Raises:

EquilibriaError – x and z must be specified and the same dimension

class bluemira.equilibria.plasma.PlasmaCoil(plasma_psi: numpy.typing.NDArray[numpy.float64], j_tor: numpy.typing.NDArray[numpy.float64] | None, grid: bluemira.equilibria.grid.Grid)

PlasmaCoil object for finite difference representation of toroidal current carrying plasma.

Parameters:
  • plasma_psi (numpy.typing.NDArray[numpy.float64]) – Psi contribution from the plasma on the grid

  • j_tor (numpy.typing.NDArray[numpy.float64] | None) – Toroidal current density distribution from the plasma on the grid

  • grid (bluemira.equilibria.grid.Grid) – Grid object on which the finite difference representation of the plasma should be constructed

Notes

Uses direct summing of Green’s functions to avoid SIGKILL and MemoryErrors when using very dense grids (e.g. CREATE).

_grid
_set_j_tor(j_tor: numpy.typing.NDArray[numpy.float64] | None)
Parameters:

j_tor (numpy.typing.NDArray[numpy.float64] | None)

_set_funcs(plasma_psi: numpy.typing.NDArray[numpy.float64])
Parameters:

plasma_psi (numpy.typing.NDArray[numpy.float64])

_Bx_func(x, z)
_dBx_func(x, z)
_Bz_func(x, z)
_dBz_func(x, z)
_check_in_grid(x, z)
_convolve(func, x, z)

Map a Green’s function across the grid at a point, without crashing or running out of memory.

Returns:

Mapped greens function

Raises:

EquilibriaError – No known toroidal current distribution

psi(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Poloidal magnetic flux at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Poloidal magnetic flux at the points [V.s/rad]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

Bx(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Radial magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Radial magnetic field at the points [T]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

dBx(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Radial magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Radial magnetic field at the points [T]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

Bz(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Vertical magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Vertical magnetic field at the points [T]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

dBz(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Vertical magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Vertical magnetic field at the points [T]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

Bp(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Poloidal magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Poloidal magnetic field at the points [T]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

plot(ax=None) bluemira.equilibria.plotting.PlasmaCoilPlotter

Plot the PlasmaCoil.

Parameters:

ax – The matplotlib axes on which to plot the PlasmaCoil

Returns:

The plasma coil plotter object

Return type:

bluemira.equilibria.plotting.PlasmaCoilPlotter

__repr__() str
Returns:

A simple string representation of the PlasmaCoil.

Return type:

str

class bluemira.equilibria.plasma.NoPlasmaCoil(grid: bluemira.equilibria.grid.Grid)

NoPlasmaCoil object for dummy representation of a plasma-less state.

Parameters:

grid (bluemira.equilibria.grid.Grid) – Grid object on which the finite difference representation of the plasma should be constructed

grid
psi(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Poloidal magnetic flux at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Poloidal magnetic flux at the points [V.s/rad]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

Bx(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Radial magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Radial magnetic field at the points [T]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

Bz(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Vertical magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Return type:

float | numpy.typing.NDArray[numpy.float64]

Vertical magnetic field at the points [T]

Notes

If both x and z are None, defaults to the full map on the grid.

Bp(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Poloidal magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Poloidal magnetic field at the points [T]

Return type:

float | numpy.typing.NDArray[numpy.float64]

dBx(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Radial magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Radial coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Radial magnetic field at the points [T]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

dBz(x: numpy.typing.ArrayLike | None = None, z: numpy.typing.ArrayLike | None = None) float | numpy.typing.NDArray[numpy.float64]

Vertical magnetic field at x, z

Parameters:
  • x (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate

  • z (numpy.typing.ArrayLike | None) – Vertical coordinates at which to calculate.

Returns:

Vertical magnetic field at the points [T]

Return type:

float | numpy.typing.NDArray[numpy.float64]

Notes

If both x and z are None, defaults to the full map on the grid.

_return_zeros(x, z)