bluemira.magnetostatics.biot_savart =================================== .. py:module:: bluemira.magnetostatics.biot_savart .. autoapi-nested-parse:: Biot-Savart filament object Classes ------- .. autoapisummary:: bluemira.magnetostatics.biot_savart.BiotSavartFilament Module Contents --------------- .. py:class:: BiotSavartFilament(arrays: bluemira.geometry.coordinates.Coordinates | numpy.typing.NDArray[numpy.float64] | list[bluemira.geometry.coordinates.Coordinates] | list[numpy.typing.NDArray[numpy.float64]], radius: float, current: float = 1.0) Bases: :py:obj:`bluemira.magnetostatics.baseclass.CurrentSource` .. autoapi-inheritance-diagram:: bluemira.magnetostatics.biot_savart.BiotSavartFilament :parts: 1 :private-bases: Class to calculate field and vector potential from an arbitrary filament. :param arrays: The arbitrarily shaped closed current Coordinates. Alternatively provide the list of Coordinates objects. :param radius: The nominal radius of the coil [m]. :param current: The current flowing through the filament [A]. Defaults to 1 A to enable current to be optimised separately from the field response. .. py:attribute:: _d_l .. py:attribute:: _d_l_hat .. py:attribute:: _mid_points .. py:attribute:: _points .. py:attribute:: _arrays .. py:attribute:: _radius .. py:attribute:: current :value: 1.0 .. py:method:: _check_discretisation(d_l: numpy.typing.NDArray[numpy.float64]) :staticmethod: Check the discretisation of the array. .. py:method:: potential(x: float | numpy.typing.NDArray[numpy.float64], y: float | numpy.typing.NDArray[numpy.float64], z: float | numpy.typing.NDArray[numpy.float64]) -> numpy.typing.NDArray[numpy.float64] Calculate the vector potential of an arbitrarily shaped Coordinates. :param x: The x coordinate(s) of the points at which to calculate the potential :param y: The y coordinate(s) of the points at which to calculate the potential :param z: The z coordinate(s) of the points at which to calculate the potential :returns: The vector potential at the point due to the arbitrarily shaped Coordinates .. py:method:: field(x: float | numpy.typing.NDArray[numpy.float64], y: float | numpy.typing.NDArray[numpy.float64], z: float | numpy.typing.NDArray[numpy.float64]) -> numpy.typing.NDArray[numpy.float64] Calculate the field due to the arbitrarily shaped Coordinates. :param x: The x coordinate(s) of the points at which to calculate the field :param y: The y coordinate(s) of the points at which to calculate the field :param z: The z coordinate(s) of the points at which to calculate the field :returns: The field at the point(s) due to the arbitrarily shaped Coordinates .. rubric:: Notes :math:`\dfrac{\mu_{0}}{4\pi}\oint \dfrac{Idl \times\mathbf{r^{'}}}{|\mathbf{r^{'}}|^{3}}` This is the original Biot-Savart equation, without centre-averaged smoothing. Do not use for values near the coil current centreline. .. py:method:: inductance() -> float Calculate the total inductance of the BiotSavartFilament. :returns: The total inductance (including self-inductance of reference Coordinates) [H] .. rubric:: Notes :math:`\dfrac{\mu_{0}}{4\pi}\oint \dfrac{d\mathbf{x_{1}} \cdot d\mathbf{r_{x}}}{|\mathbf{x_{1}}-\mathbf{x_{2}}|}` https://arxiv.org/pdf/1204.1486.pdf You probably shouldn't use this if you are actually interested in the inductance of an arbitrarily shaped Coordinates... .. py:method:: rotate(angle: float, axis: str | numpy.ndarray) Rotate the CurrentSource about an axis. :param angle: The rotation degree [degree] :param axis: The axis of rotation .. py:method:: plot(ax: matplotlib.pyplot.Axes | None = None, *, show_coord_sys: bool = False) Plot the CurrentSource. :param ax: The matplotlib axes to plot on :param show_coord_sys: Whether or not to plot the coordinate systems