bluemira.equilibria.plasma ========================== .. py:module:: bluemira.equilibria.plasma .. autoapi-nested-parse:: Representation of the plasma Classes ------- .. autoapisummary:: bluemira.equilibria.plasma.PlasmaCoil bluemira.equilibria.plasma.NoPlasmaCoil Functions --------- .. autoapisummary:: bluemira.equilibria.plasma.treat_xz_array Module Contents --------------- .. py:function:: 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 .. py:class:: 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. :param plasma_psi: Psi contribution from the plasma on the grid :param j_tor: Toroidal current density distribution from the plasma on the grid :param grid: Grid object on which the finite difference representation of the plasma should be constructed .. rubric:: Notes Uses direct summing of Green's functions to avoid SIGKILL and MemoryErrors when using very dense grids (e.g. CREATE). .. py:attribute:: _grid .. py:method:: _set_j_tor(j_tor: numpy.typing.NDArray[numpy.float64] | None) .. py:method:: _set_funcs(plasma_psi: numpy.typing.NDArray[numpy.float64]) .. py:method:: _Bx_func(x, z) .. py:method:: _dBx_func(x, z) .. py:method:: _Bz_func(x, z) .. py:method:: _dBz_func(x, z) .. py:method:: _check_in_grid(x, z) .. py:method:: _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 .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Poloidal magnetic flux at the points [V.s/rad] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Radial magnetic field at the points [T] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Radial magnetic field at the points [T] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Vertical magnetic field at the points [T] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: 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 :param x: Vertical coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Vertical magnetic field at the points [T] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Poloidal magnetic field at the points [T] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: plot(ax=None) -> bluemira.equilibria.plotting.PlasmaCoilPlotter Plot the PlasmaCoil. :param ax: The matplotlib axes on which to plot the PlasmaCoil :returns: The plasma coil plotter object .. py:method:: __repr__() -> str :returns: A simple string representation of the PlasmaCoil. .. py:class:: NoPlasmaCoil(grid: bluemira.equilibria.grid.Grid) NoPlasmaCoil object for dummy representation of a plasma-less state. :param grid: Grid object on which the finite difference representation of the plasma should be constructed .. py:attribute:: grid .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Poloidal magnetic flux at the points [V.s/rad] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Radial magnetic field at the points [T] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. Vertical magnetic field at the points [T] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Poloidal magnetic field at the points [T] .. py:method:: 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 :param x: Radial coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Radial magnetic field at the points [T] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: 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 :param x: Vertical coordinates at which to calculate :param z: Vertical coordinates at which to calculate. :returns: Vertical magnetic field at the points [T] .. rubric:: Notes If both x and z are None, defaults to the full map on the grid. .. py:method:: _return_zeros(x, z)