bluemira.equilibria.num_control

Numerical vertical stability control - still not quite there!

Classes

DummyController

Dummy control object to enable calculations to take place with no numerical

VirtualController

Represents a pair of virtual coils for the numerical vertical control of

Module Contents

class bluemira.equilibria.num_control.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)

Parameters:

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

_shape
stabilise(*args)

Dummy method to retain procedures with no effect on the equilibria.

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

Dummy method to retain procedures with no effect on the equilibria.

Return type:

numpy.typing.NDArray[numpy.float64]

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

Dummy method to retain procedures with no effect on the equilibria.

Parameters:
  • x (numpy.typing.ArrayLike)

  • z (numpy.typing.ArrayLike)

Return type:

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

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

Dummy method to retain procedures with no effect on the equilibria.

Parameters:
  • x (numpy.typing.ArrayLike)

  • z (numpy.typing.ArrayLike)

Return type:

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

class bluemira.equilibria.num_control.VirtualController(eq: bluemira.equilibria.equilibrium.Equilibrium, gz: float = 1.5)

Bases: bluemira.equilibria.coils.CoilGroup

Inheritance diagram of bluemira.equilibria.num_control.VirtualController

Represents a pair of virtual coils for the numerical vertical control of the plasma, as described in Jeon, 2015

It does work to some extent (perhaps I’ve implemented it incorrectly). It seems to fall over for large numerical instabilities.

Parameters:
eq
coilset
Xc
Zc
gz = 1.5
_pgreen
feedback_current() numpy.typing.NDArray[numpy.float64]

Calculate feedback currents to compensate for a radial field at the centre of the plasma. (Vertical stability)

\(I_{feedback}=-g_{z}\dfrac{B_{X,vac}}{B_{X,feedback}}\) \(\Bigr|_{\substack{X_{cur}, Z_{cur}}}\)

Return type:

numpy.typing.NDArray[numpy.float64]

adjust_currents(d_current: float)

Adjust the currents in the virtual control coils.

Parameters:

d_current (float)

stabilise()

Stabilise the equilibrium, calculating the feedback currents and applying them to the control coils.

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

Get the psi array of the VirtualController

Return type:

numpy.typing.NDArray[numpy.float64]