scotty.geometry module
scotty.geometry module#
- class scotty.geometry.CircularCrossSectionField(B_T_axis, R_axis, minor_radius_a, B_p_a, R_points=101, Z_points=101, grid_buffer_factor=1.0)#
Bases:
scotty.geometry.MagneticField
Simple circular cross-section magnetic geometry
- Parameters
B_T_axis (float) – Toroidal magnetic field at the magnetic axis (Tesla)
R_axis (float) – Major radius of the magnetic axis (metres)
minor_radius_a (float) – Minor radius of the last closed flux surface (metres)
B_p_a (float) – Poloidal magnetic field at
minor_radius_a
(Tesla)R_points (int) –
Z_points (int) – Number of points for sample
(R, Z)
gridgrid_buffer_factor (float) – Multiplicative factor to increase size of sample grid by
- B_R(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_T(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_Z(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- R_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the major radius coordinate
- Z_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the vertical coordinate
- poloidalFlux_grid: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Value of the poloidal magnetic flux, \(\psi\), on
(R_coord, Z_coord)
- poloidal_flux(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- rho(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- class scotty.geometry.ConstantCurrentDensityField(B_T_axis, R_axis, minor_radius_a, B_p_a, R_points=101, Z_points=101, grid_buffer_factor=1)#
Bases:
scotty.geometry.MagneticField
Circular cross-section magnetic geometry with constant current density
- Parameters
B_T_axis (float) – Toroidal magnetic field at the magnetic axis (Tesla)
R_axis (float) – Major radius of the magnetic axis (metres)
minor_radius_a (float) – Minor radius of the last closed flux surface (metres)
B_p_a (float) – Poloidal magnetic field at
minor_radius_a
(Tesla)R_points (int) –
Z_points (int) – Number of points for sample
(R, Z)
gridgrid_buffer_factor (float) – Multiplicative factor to increase size of sample grid by
- B_R(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_T(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_Z(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- R_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the major radius coordinate
- Z_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the vertical coordinate
- poloidalFlux_grid: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Value of the poloidal magnetic flux, \(\psi\), on
(R_coord, Z_coord)
- poloidal_flux(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- rho(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- class scotty.geometry.CurvySlabField(B_T_axis, R_axis)#
Bases:
scotty.geometry.MagneticField
Analytical curvy slab geometry
- B_R(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_T(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_Z(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- R_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the major radius coordinate
- Z_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the vertical coordinate
- poloidalFlux_grid: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Value of the poloidal magnetic flux, \(\psi\), on
(R_coord, Z_coord)
- class scotty.geometry.EFITField(R_grid, Z_grid, rBphi, psi_norm_2D, psi_unnorm_axis, psi_unnorm_boundary, psi_norm_1D=None, delta_R=0.0001, delta_Z=0.0001, interp_order=5, interp_smoothing=0)#
Bases:
scotty.geometry.InterpolatedField
- Parameters
- B_R(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_T(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_Z(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- R_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the major radius coordinate
- Z_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the vertical coordinate
- classmethod from_EFITpp(filename, equil_time, delta_R, delta_Z, interp_order, interp_smoothing)#
- classmethod from_MAST_U_saved(filename, equil_time, delta_R, delta_Z, interp_order, interp_smoothing)#
- classmethod from_MAST_saved(filename, equil_time, delta_R, delta_Z, interp_order, interp_smoothing)#
- poloidalFlux_grid: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Value of the poloidal magnetic flux, \(\psi\), on
(R_coord, Z_coord)
- class scotty.geometry.InterpolatedField(R_grid, Z_grid, B_R, B_T, B_Z, psi, interp_order=5, interp_smoothing=0)#
Bases:
scotty.geometry.MagneticField
Interpolated numerical equilibrium using bivariate splines
- Parameters
R_grid (FloatArray) – 1D array of points in
R
(metres)Z_grid (FloatArray) – 1D array of points in
Z
(metres)B_R (FloatArray) – 2D
(R, Z)
grid of radial magnetic field values (Tesla)B_T (FloatArray) – 2D
(R, Z)
grid of toroidal magnetic field values (Tesla)B_Z (FloatArray) – 2D
(R, Z)
grid of vertical magnetic field values (Tesla)psi (FloatArray) – 2D
(R, Z)
grid of poloidal flux values (Weber/radian)interp_order (int) – Order of interpolating splines
interp_smoothing (int) – Smoothing factor for interpolating splines
- B_R(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_T(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_Z(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- R_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the major radius coordinate
- Z_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the vertical coordinate
- d2_poloidal_flux_dR2(q_R, q_Z, delta_R)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
delta_R (float) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- d2_poloidal_flux_dRdZ(q_R, q_Z, delta_R, delta_Z)#
- Parameters
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- d2_poloidal_flux_dZ2(q_R, q_Z, delta_R)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
delta_R (float) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- d_poloidal_flux_dR(q_R, q_Z, delta_R)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
delta_R (float) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- d_poloidal_flux_dZ(q_R, q_Z, delta_R)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
delta_R (float) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- poloidalFlux_grid: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Value of the poloidal magnetic flux, \(\psi\), on
(R_coord, Z_coord)
- poloidal_flux(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- class scotty.geometry.MagneticField#
Bases:
abc.ABC
Abstract base class for magnetic field geometries
- B_R(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_T(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- B_Z(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- R_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the major radius coordinate
- Z_coord: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Sample locations for the vertical coordinate
- d2_poloidal_flux_dR2(q_R, q_Z, delta_R)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
delta_R (float) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- d2_poloidal_flux_dRdZ(q_R, q_Z, delta_R, delta_Z)#
- Parameters
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- d2_poloidal_flux_dZ2(q_R, q_Z, delta_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
delta_Z (float) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- d_poloidal_flux_dR(q_R, q_Z, delta_R)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
delta_R (float) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- d_poloidal_flux_dZ(q_R, q_Z, delta_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
delta_Z (float) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]
- poloidalFlux_grid: numpy.ndarray[Any, numpy.dtype[numpy.float64]]#
Value of the poloidal magnetic flux, \(\psi\), on
(R_coord, Z_coord)
- poloidal_flux(q_R, q_Z)#
- Parameters
q_R (numpy.typing.ArrayLike) –
q_Z (numpy.typing.ArrayLike) –
- Return type
numpy.ndarray[Any, numpy.dtype[numpy.float64]]