bluemira.equilibria.coils._coil
Coil and coil grouping objects
Classes
Coil Object |
Module Contents
- class bluemira.equilibria.coils._coil.Coil(x: float, z: float, dx: float | None = None, dz: float | None = None, name: str | None = None, ctype: str | bluemira.base.constants.CoilType = CoilType.NONE, current: float = 0, j_max: float = np.nan, b_max: float = np.nan, discretisation: float = np.nan, n_turns: int = 1, resistance: float = 0, *, psi_analytic: bool = False, Bx_analytic: bool = True, Bz_analytic: bool = True)
Bases:
bluemira.equilibria.coils._field.CoilFieldsMixinCoil Object
For use with PF/CS/passive coils. All coils have a rectangular cross section.
- Parameters:
x (float) – Coil geometric centre x coordinate [m]
z (float) – Coil geometric centre z coordinate [m]
dx (float | None) – Coil radial half-width [m] from coil centre to edge (either side)
dz (float | None) – Coil vertical half-width [m] from coil centre to edge (either side)
name (str | None) – The name of the coil
ctype (str | bluemira.base.constants.CoilType) – Type of coil as defined in CoilType
current (float) – Coil current [A] (default = 0)
j_max (float) – Maximum current density in the coil [A/m^2]
b_max (float) – Maximum magnetic field at the coil [T]
discretisation (float) – discretise the coil, value in [m]. The minimum size is COIL_DISCR
n_turns (int) – Number of turns
resistance (float)
psi_analytic (bool)
Bx_analytic (bool)
Bz_analytic (bool)
Notes
If dx and dz are specified the coil size is fixed when modifying j_max or current
- __slots__ = ('_b_max', '_ctype', '_current', '_current_radius', '_discretisation', '_dx', '_dz',...
- _dx = None
- _dz = None
- _discretisation
- _flag_sizefix
- property x: float
Get coil x position
- Return type:
float
- property z: float
Get coil z position
- Return type:
float
- property dx: float | None
Get coil width (half)
- Return type:
float | None
- property dz: float | None
Get coil height (half)
- Return type:
float | None
- property discretisation: float
Get coil discretisation
- Return type:
float
- property current: float
Get coil current
- Return type:
float
- property j_max: float
Get coil max current density
- Return type:
float
- property b_max: float
Get coil max field
- Return type:
float
- property ctype: bluemira.base.constants.CoilType
Get coil type
- Return type:
- name = None
- n_turns = 1
- property resistance
Get coil resistance
- _number = 1
- __repr__()
Pretty printing
- plot(ax: matplotlib.axes.Axes | None = None, *, subcoil: bool = True, label: bool = False, force: collections.abc.Iterable | None = None, **kwargs) bluemira.equilibria.plotting.CoilGroupPlotter | None
Plot a Coil
- Parameters:
ax (matplotlib.axes.Axes | None) – Matplotlib axis object
subcoil (bool) – plot coil discretisations
label (bool) – show coil labels on plot
force (collections.abc.Iterable | None) – force arrows iterable
kwargs – passed to matplotlib’s Axes.plot
- Returns:
the axis if created
- Return type:
- static n_coils() int
Number of coils in coil
Notes
Allows n_coils to be accessed if an individual coil or a CoilGroup
- Return type:
int
- property position: numpy.ndarray
Get coil x, z position
- Return type:
numpy.ndarray
- property area: float
The cross-sectional area of the coil
- Return type:
The cross-sectional area of the coil [m^2]
Notes
\[\text{area} = 4 \cdot dx \cdot dz\]
- property volume: float
The volume of the coil
- Return type:
The volume of the coil [m^3]
Notes
\[\text{volume} =\text{area} \cdot 2 \pi x\]
- property x_boundary
Get coil x coordinate boundary
- property z_boundary
Get coil z coordinate boundary
- property _quad_boundary
Get coil quadrature x,z coordinate boundary
- assign_material(j_max: float = NBTI_J_MAX, b_max: float = NBTI_B_MAX, resistance: float = 0) None
Assigns EM material properties to coil
- Parameters:
j_max (float) – Overwrite default constant material max current density [A/m^2]
b_max (float) – Overwrite default constant material max field [T]
resistance (float)
- Return type:
None
Notes
Will always modify both j_max and b_max of the coil with either the default or specified values.
- get_max_current()
- Returns:
Max current
- _discretise()
Discretise a coil for greens function magnetic field calculations
Notes
Only discretisation method currently implemented is rectangular.
Possible improvement: multiple discretisations for different coils
- _validate_size()
- _set_coil_attributes()
- _rectangular_discretisation()
Discretise a coil into filaments based on the length in [m] of the discretisation. Each filament will be plotted as a rectangle with the filament at its centre.
- fix_size()
Fixes the size of the coil
- resize(current: float | None = None)
Resize coil given a current
- Parameters:
current (float | None)
- _resize(current)
- _re_discretise()
Re discretise and re set attributes if sizing information changes.
- _make_size(current: float | None = None)
Size the coil based on a current and a current density.
- Returns:
change in x
change in z
- Parameters:
current (float | None)
- static _make_boundary(x_c: float, z_c: float, dx: float, dz: float) tuple[numpy.ndarray, numpy.ndarray]
Makes the coil boundary vectors
- Parameters:
x_c (float) – x coordinate of centre
z_c (float) – z coordinate of centre
dx (float) – dx of coil
dz (float) – dz of coil
- Returns:
x_boundary – Radial coordinates of the boundary
z_boundary – Vertical coordinates of the boundary
- Return type:
tuple[numpy.ndarray, numpy.ndarray]
Note
Only rectangular coils