bluemira.equilibria.num_control =============================== .. py:module:: bluemira.equilibria.num_control .. autoapi-nested-parse:: Numerical vertical stability control - still not quite there! Classes ------- .. autoapisummary:: bluemira.equilibria.num_control.DummyController bluemira.equilibria.num_control.VirtualController Module Contents --------------- .. py:class:: DummyController(psi: numpy.typing.NDArray[numpy.float64]) Dummy control object to enable calculations to take place with no numerical vertical control scheme. psi() returns np.zeros(eq.psi.shape) .. py:attribute:: _shape .. py:method:: stabilise(*args) Dummy method to retain procedures with no effect on the equilibria. .. py:method:: psi() -> numpy.typing.NDArray[numpy.float64] Dummy method to retain procedures with no effect on the equilibria. .. py:method:: Bx(x: numpy.typing.ArrayLike, z: numpy.typing.ArrayLike) -> float | numpy.typing.NDArray[numpy.float64] :staticmethod: Dummy method to retain procedures with no effect on the equilibria. .. py:method:: Bz(x: numpy.typing.ArrayLike, z: numpy.typing.ArrayLike) -> float | numpy.typing.NDArray[numpy.float64] :staticmethod: Dummy method to retain procedures with no effect on the equilibria. .. py:class:: VirtualController(eq: bluemira.equilibria.equilibrium.Equilibrium, gz: float = 1.5) Bases: :py:obj:`bluemira.equilibria.coils.CoilGroup` .. autoapi-inheritance-diagram:: bluemira.equilibria.num_control.VirtualController :parts: 1 :private-bases: Represents a pair of virtual coils for the numerical vertical control of the plasma, as described in :doi:`Jeon, 2015 <10.3938/jkps.67.843>` It does work to some extent (perhaps I've implemented it incorrectly). It seems to fall over for large numerical instabilities. .. py:attribute:: eq .. py:attribute:: coilset .. py:attribute:: Xc .. py:attribute:: Zc .. py:attribute:: gz :value: 1.5 .. py:attribute:: _pgreen .. py:method:: feedback_current() -> numpy.typing.NDArray[numpy.float64] Calculate feedback currents to compensate for a radial field at the centre of the plasma. (Vertical stability) :math:`I_{feedback}=-g_{z}\dfrac{B_{X,vac}}{B_{X,feedback}}` :math:`\Bigr|_{\substack{X_{cur}, Z_{cur}}}` .. py:method:: adjust_currents(d_current: float) Adjust the currents in the virtual control coils. .. py:method:: stabilise() Stabilise the equilibrium, calculating the feedback currents and applying them to the control coils. .. py:method:: psi() -> numpy.typing.NDArray[numpy.float64] Get the psi array of the VirtualController