jax_sbgeom.flux_surfaces.flux_surfaces_base module
- class FluxSurfaceSettings(mpol: int, ntor: int, nfp: int)[source]
Bases:
object- mpol: int
- ntor: int
- nfp: int
- reverse_theta_total(m_vec, n_vec, coeff_vec, cosine_sign: bool)
Vectorized version of _reverse_theta_single. Takes similar arguments as _reverse_theta_single but with additional array axes over which _reverse_theta_single is mapped.
Original documentation:
Internal *
Changes the Fourier coefficients such that theta is replaced by -theta.
- m_vecjnp.ndarray
Array of poloidal mode numbers.
- n_vecjnp.ndarray
Array of toroidal mode numbers.
- coeff_vecjnp.ndarray
Array of Fourier coefficients. (Rmnc or Zmns)
- cosine_signbool
If True, the coefficients correspond to cosine terms. If False, they correspond to sine terms.
- new_coeff_vecjnp.ndarray
The modified Fourier coefficients after reversing theta.
- class FluxSurfaceModes(mpol_vector: Array, ntor_vector: Array)[source]
Bases:
object- mpol_vector: Array
- ntor_vector: Array
- classmethod from_settings(settings: FluxSurfaceSettings)[source]
- class FluxSurfaceData(Rmnc: Array, Zmns: Array)[source]
Bases:
object- Rmnc: Array
- Zmns: Array
- classmethod from_rmnc_zmns_settings(Rmnc: Array, Zmns: Array, settings: FluxSurfaceSettings, make_normals_point_outwards: bool = True)[source]
- class ParametrisedSurface[source]
Bases:
ModuleInternal *
Class representing a parametrised surface. This is used for the interpolation-based methods that require 2D data. The surface is parametrised by (s, theta, phi) where s is the surface index or normalized flux label, theta is the poloidal angle and phi is the toroidal angle.
- class FluxSurfaceBase(data: FluxSurfaceData = None, modes: FluxSurfaceModes = None, settings: FluxSurfaceSettings = None)[source]
Bases:
ParametrisedSurfaceClass representing a set of flux surfaces using a VMEC-like representation. Base abstract class that provides no implementation. The actual implementation is provided in the FluxSurface class, which inherits from this base class. This allows for different implementations of the same interface, such as interpolation-based or direct evaluation-based methods.
Attributes:
- dataFluxSurfaceData
Data object containing the Fourier coefficients Rmnc and Zmns
- modesFluxSurfaceModes
Modes object containing the mode vectors mpol_vector and ntor_vector
- settingsFluxSurfaceSettings
Settings object containing parameters mpol, ntor, nfp
- data: FluxSurfaceData = None
- modes: FluxSurfaceModes = None
- settings: FluxSurfaceSettings = None
- classmethod from_hdf5(filename: str)[source]
Load a FluxSurface from an VMEC-type HDF5 file.
- Parameters:
filename (
str) – Path to the HDF5 file.- Returns:
The loaded FluxSurface object.
- Return type:
- classmethod from_flux_surface(flux_surface_base: FluxSurfaceBase)[source]
Create a FluxSurface from another FluxSurface (copy constructor). Can be used to convert between subclasses of FluxSurface.
- Parameters:
flux_surface_base (
FluxSurfaceBase) – The input FluxSurface to copy from.- Returns:
The copied FluxSurface.
- Return type:
- classmethod from_rmnc_zmns_settings(Rmnc: Array, Zmns: Array, settings: FluxSurfaceSettings, make_normals_point_outwards: bool = True)[source]
Create a FluxSurface from Fourier coefficients and settings. Optionally, modify the coefficients such that normals point outwards (default=True)
- Parameters:
Rmnc (
Array) – Array of radial Fourier coefficients. Shape (nsurf, nmodes)Zmns (
Array) – Array of vertical Fourier coefficients. Shape (nsurf, nmodes)settings (
FluxSurfaceSettings) – Settings object containing parameters mpol, ntor, nfpmake_normals_point_outwards (
bool) – Whether to modify the Fourier coefficients such that normals point outwards. Default is True.
- Returns:
The created FluxSurface.
- Return type:
- classmethod from_data_settings(data: FluxSurfaceData, settings: FluxSurfaceSettings)[source]
Create a FluxSurface from FluxSurfaceData and FluxSurfaceSettings.
- Parameters:
data (
FluxSurfaceData) – Data object containing the Fourier coefficients Rmnc and Zmnssettings (
FluxSurfaceSettings) – Settings object containing parameters mpol, ntor, nfp
- Returns:
The created FluxSurface.
- Return type:
- classmethod from_data_settings_full(data: FluxSurfaceData, settings: FluxSurfaceSettings)[source]
Create a FluxSurface from FluxSurfaceData and FluxSurfaceSettings. In this function, the data is ensured to be 2D. This is required for some functions that interpolate between the different surfaces.
- Parameters:
data (
FluxSurfaceData) – Data object containing the Fourier coefficients Rmnc and Zmnssettings (
FluxSurfaceSettings) – Settings object containing parameters mpol, ntor, nfp
- Returns:
The created FluxSurface.
- Return type:
- property nfp
- class FluxSurface(data: FluxSurfaceData = None, modes: FluxSurfaceModes = None, settings: FluxSurfaceSettings = None)[source]
Bases:
FluxSurfaceBase- cylindrical_position(s, theta, phi)[source]
Cylindrical position on the flux surface as a function of (s, theta, phi)
- Parameters:
s (jnp.ndarray) – Surface index or normalized flux label
theta (jnp.ndarray) – Poloidal angle(s)
phi (jnp.ndarray) – Toroidal angle(s)
- Returns:
Cylindrical position(s) on the flux surface [R, Z, phi]
- Return type:
jnp.ndarray
- cartesian_position(s, theta, phi)[source]
Cartesian position on the flux surface as a function of (s, theta, phi)
- Parameters:
s (jnp.ndarray) – Surface index or normalized flux label
theta (jnp.ndarray) – Poloidal angle(s)
phi (jnp.ndarray) – Toroidal angle(s)
- Returns:
Cartesian position(s) on the flux surface [x, y, z]
- Return type:
jnp.ndarray
- normal(s, theta, phi)[source]
Normal vector on the flux surface as a function of (s, theta, phi)
- Parameters:
s (jnp.ndarray) – Surface index or normalized flux label
theta (jnp.ndarray) – Poloidal angle(s)
phi (jnp.ndarray) – Toroidal angle(s)
- Returns:
Normal vector(s) on the flux surface
- Return type:
jnp.ndarray
- principal_curvatures(s, theta, phi)[source]
Principal curvatures on the flux surface as a function of (s, theta, phi)
- Parameters:
s (jnp.ndarray) – Surface index or normalized flux label
theta (jnp.ndarray) – Poloidal angle(s)
phi (jnp.ndarray) – Toroidal angle(s)
- Returns:
Principal curvatures(s) on the flux surface
- Return type:
jnp.ndarray
- make_2d_flux_surface(fs: FluxSurfaceBase)[source]
Convert a FluxSurface with 1D data to a FluxSurface with 2D data by adding a dummy surface dimension. This allows you to use the interpolation-based methods that require 2D data. Interpolation on one surface will just return the single surface.
- Parameters:
fs (
FluxSurfaceBase) – The input FluxSurfaceBase with 1D data.- Returns:
The output FluxSurfaceBase with 2D data.
- Return type:
- class ToroidalExtent(start: float, end: float)[source]
Bases:
objectClass representing a toroidal extent in phi.
Attributes:
- startfloat
Starting toroidal angle (in radians)
- endfloat
Ending toroidal angle (in radians)
- start: float
- end: float
- classmethod half_module(flux_surface: FluxSurfaceBase, dphi=0.0)[source]
Create a ToroidalExtent representing half a field period.
- Parameters:
flux_surface (
FluxSurfaceBase) – The flux surface for which to create the toroidal extent.dphi (float) – An optional offset to add to both the start and end angles.
- Returns:
The created ToroidalExtent.
- Return type:
- classmethod full_module(flux_surface: FluxSurfaceBase, dphi=0.0)[source]
Create a ToroidalExtent representing a full field period.
- Parameters:
flux_surface (
FluxSurfaceBase) – The flux surface for which to create the toroidal extent.dphi (float) – An optional offset to add to both the start and end angles.
- Returns:
The created ToroidalExtent.
- Return type: