bluemira.equilibria.shapes

Useful parameterisations for plasma flux surface shapes.

Classes

ZakharovLCFS

Zakharov last closed flux surface geometry parameterisation.

CunninghamLCFS

Cunningham last closed flux surface geometry parameterisation.

ManickamLCFS

Manickam last closed flux surface geometry parameterisation.

KuiroukidisLCFS

Kuiroukidis last closed flux surface geometry parameterisation (adjusted).

JohnerLCFS

Johner last closed flux surface geometry parameterisation.

Functions

flux_surface_hirshman(...)

Hirshman and Neilson flux surface parameterisation.

flux_surface_zakharov(...)

As featured in Zakharov's EMEQ

flux_surface_cunningham(...)

As featured in Geof Cunningham's FIESTA (shape_fun)

flux_surface_manickam(...)

flux_surface_kuiroukidis(...)

Make an up-down asymmetric flux surface with a lower X-point.

flux_surface_johner(...)

Initial plasma shape parameterisation from HELIOS author

Module Contents

bluemira.equilibria.shapes.flux_surface_hirshman(r_0: float, z_0: float, a: float, kappa: float, n: int = 20) bluemira.geometry.coordinates.Coordinates

Hirshman and Neilson flux surface parameterisation.

Parameters:
  • r_0 (float) – Plasma magnetic axis radius [m]

  • z_0 (float) – Plasma magnetic axis height [m]

  • a (float) – Plasma geometric minor radius [m]

  • kappa (float) – Plasma elongation

  • n (int) – Number of points

Return type:

Plasma flux surface shape

Notes

Hirshman and Neilson, “External inductance of an axisymmetric plasma”, 1986

bluemira.equilibria.shapes.flux_surface_zakharov(r_0: float, z_0: float, a: float, kappa: float, delta: float, n: int = 20) bluemira.geometry.coordinates.Coordinates

As featured in Zakharov’s EMEQ

Parameters:
  • r_0 (float) – Plasma magnetic axis radius [m]

  • z_0 (float) – Plasma magnetic axis height [m]

  • a (float) – Plasma geometric minor radius [m]

  • kappa (float) – Plasma elongation

  • delta (float) – Plasma triangularity

  • n (int) – Number of points

Return type:

Plasma flux surface shape

Notes

https://inis.iaea.org/collection/NCLCollectionStore/_Public/17/074/17074881.pdf?r=1

Shafranov shift should be included in the r_0 parameter, as R_0 is defined in the above as the magnetic axis. The Shafranov shift is not subtracted to the r coordinates, contrary to the above equation (4). This is because benchmarking with EMEQ shows this does not appear to occur.

class bluemira.equilibria.shapes.ZakharovLCFS(var_dict: bluemira.utilities.opt_variables.VarDictT | None = None)

Bases: bluemira.geometry.parameterisations.GeometryParameterisation[ZakharovLCFSOptVariables]

Inheritance diagram of bluemira.equilibria.shapes.ZakharovLCFS

Zakharov last closed flux surface geometry parameterisation.

Parameters:

var_dict (bluemira.utilities.opt_variables.VarDictT | None)

__slots__ = ()
create_shape(label: str = 'LCFS', n_points: int = 1000) bluemira.geometry.wire.BluemiraWire

Make a CAD representation of the Zakharov LCFS.

Parameters:
  • label (str) – Label to give the wire

  • n_points (int) – Number of points to use when creating the Bspline representation

Return type:

CAD Wire of the geometry

bluemira.equilibria.shapes.flux_surface_cunningham(r_0: float, z_0: float, a: float, kappa: float, delta: float, delta2: float = 0.0, n: int = 20) bluemira.geometry.coordinates.Coordinates

As featured in Geof Cunningham’s FIESTA (shape_fun)

Parameters:
  • r_0 (float) – Plasma geometric major radius [m]

  • z_0 (float) – Plasma geometric vertical height [m]

  • a (float) – Plasma geometric minor radius [m]

  • kappa (float) – Plasma elongation

  • delta (float) – Plasma triangularity

  • delta2 (float) – Plasma “delta2” curliness?

  • n (int) – Number of points

Return type:

Plasma flux surface shape

Notes

This parameterisation does not appear to match delta perfectly for abs(delta) > 0 and delta2=0.

class bluemira.equilibria.shapes.CunninghamLCFS(var_dict: bluemira.utilities.opt_variables.VarDictT | None = None)

Bases: bluemira.geometry.parameterisations.GeometryParameterisation[CunninghamLCFSOptVariables]

Inheritance diagram of bluemira.equilibria.shapes.CunninghamLCFS

Cunningham last closed flux surface geometry parameterisation.

Parameters:

var_dict (bluemira.utilities.opt_variables.VarDictT | None)

__slots__ = ()
create_shape(label: str = 'LCFS', n_points: int = 1000) bluemira.geometry.wire.BluemiraWire

Make a CAD representation of the Cunningham LCFS.

Parameters:
  • label (str) – Label to give the wire

  • n_points (int) – Number of points to use when creating the Bspline representation

Return type:

CAD Wire of the geometry

bluemira.equilibria.shapes.flux_surface_manickam(r_0: float, z_0: float, a: float, kappa: float = 1.0, delta: float = 0.0, indent: float = 0.0, n: int = 20) bluemira.geometry.coordinates.Coordinates
  1. Manickam, Nucl. Fusion 24 595 (1984)

Parameters:
  • r_0 (float) – Plasma geometric major radius [m]

  • z_0 (float) – Plasma geometric vertical height [m]

  • a (float) – Plasma geometric minor radius [m]

  • kappa (float) – Plasma elongation

  • delta (float) – Plasma triangularity

  • indent (float) – Plasma indentation (beaniness)

  • n (int) – Number of points

Return type:

Plasma flux surface shape

Notes

This parameterisation does not appear to match delta perfectly for abs(delta) > 0 and indent=0.

class bluemira.equilibria.shapes.ManickamLCFS(var_dict: bluemira.utilities.opt_variables.VarDictT | None = None)

Bases: bluemira.geometry.parameterisations.GeometryParameterisation[ManickamLCFSOptVariables]

Inheritance diagram of bluemira.equilibria.shapes.ManickamLCFS

Manickam last closed flux surface geometry parameterisation.

Parameters:

var_dict (bluemira.utilities.opt_variables.VarDictT | None)

__slots__ = ()
create_shape(label: str = 'LCFS', n_points: int = 1000) bluemira.geometry.wire.BluemiraWire

Make a CAD representation of the Manickam LCFS.

Parameters:
  • label (str) – Label to give the wire

  • n_points (int) – Number of points to use when creating the Bspline representation

Return type:

CAD Wire of the geometry

bluemira.equilibria.shapes.flux_surface_kuiroukidis(r_0: float, z_0: float, a: float, kappa_u: float, kappa_l: float, delta_u: float, delta_l: float, n_power: int = 8, n_points: int = 100) bluemira.geometry.coordinates.Coordinates

Make an up-down asymmetric flux surface with a lower X-point.

Ap. Kuiroukidis and G. N. Throumoulopoulos, Plasma Phys. Control. Fusion 57 (2015)

Parameters:
  • r_0 (float) – Plasma geometric major radius [m]

  • z_0 (float) – Plasma geometric vertical height [m]

  • a (float) – Plasma geometric minor radius [m]

  • kappa_u (float) – Upper plasma elongation

  • kappa_l (float) – Lower plasma elongation

  • delta_u (float) – Upper plasma triangularity

  • delta_l (float) – Lower plasma triangularity

  • n_power (int) – Exponent related to the steepness of the triangularity

  • n_points (int) – Number of points

Return type:

Plasma flux surface shape

Notes

As far as I can tell, the reference parameterisation is either flawed in two places or is insufficiently specified to reproduce properly. I’ve included two workarounds here, which actually result in a very decent shape description. Furthermore, the grad_rho term does not appear to behave as described, given that it is just an offset. The key may lie in understand what “relative to the X-point” means but it’s not enough for me to go on at the moment.

class bluemira.equilibria.shapes.KuiroukidisLCFS(var_dict: bluemira.utilities.opt_variables.VarDictT | None = None)

Bases: bluemira.geometry.parameterisations.GeometryParameterisation[KuiroukidisLCFSOptVariables]

Inheritance diagram of bluemira.equilibria.shapes.KuiroukidisLCFS

Kuiroukidis last closed flux surface geometry parameterisation (adjusted).

Parameters:

var_dict (bluemira.utilities.opt_variables.VarDictT | None)

__slots__ = ()
create_shape(label: str = 'LCFS', n_points: int = 1000) bluemira.geometry.wire.BluemiraWire

Make a CAD representation of the Kuiroukidis LCFS.

Parameters:
  • label (str) – Label to give the wire

  • n_points (int) – Number of points to use when creating the Bspline representation

Return type:

CAD Wire of the geometry

bluemira.equilibria.shapes.flux_surface_johner(r_0: float, z_0: float, a: float, kappa_u: float, kappa_l: float, delta_u: float, delta_l: float, psi_u_neg: float, psi_u_pos: float, psi_l_neg: float, psi_l_pos: float, n: int = 100) bluemira.geometry.coordinates.Coordinates

Initial plasma shape parameterisation from HELIOS author J. Johner (CEA). Sets initial separatrix shape for the plasma core (does not handle divertor target points or legs). Can handle: - DN (positive, negative delta) [TESTED] - SN (positive, negative delta) (upper, lower) [TESTED]

Parameters:
  • r_0 (float) – Major radius [m]

  • z_0 (float) – Vertical position of major radius [m]

  • a (float) – Minor radius [m]

  • kappa_u (float) – Upper elongation at the plasma edge (psi_n=1)

  • kappa_l (float) – Lower elongation at the plasma edge (psi_n=1)

  • delta_u (float) – Upper triangularity at the plasma edge (psi_n=1)

  • delta_l (float) – Lower triangularity at the plasma edge (psi_n=1)

  • psi_u_neg (float) – Upper inner angle [°]

  • psi_u_pos (float) – Upper outer angle [°]

  • psi_l_neg (float) – Lower inner angle [°]

  • psi_l_pos (float) – Lower outer angle [°]

  • n (int) – Number of point to generate on the flux surface

Return type:

Plasma flux surface shape

class bluemira.equilibria.shapes.JohnerLCFS(var_dict: bluemira.utilities.opt_variables.VarDictT | None = None)

Bases: bluemira.geometry.parameterisations.GeometryParameterisation[JohnerLCFSOptVariables]

Inheritance diagram of bluemira.equilibria.shapes.JohnerLCFS

Johner last closed flux surface geometry parameterisation.

Parameters:

var_dict (bluemira.utilities.opt_variables.VarDictT | None)

__slots__ = ()
create_shape(label: str = 'LCFS', n_points: int = 1000) bluemira.geometry.wire.BluemiraWire

Make a CAD representation of the Johner LCFS.

Parameters:
  • label (str) – Label to give the wire

  • n_points (int) – Number of points to use when creating the Bspline representation

Return type:

CAD Wire of the geometry