cherab.imas.plasma.load_plasma

cherab.imas.plasma.load_plasma(*args, time: float = 0, occurrence_core: int = 0, edge_args: tuple | None = None, edge_kwargs: dict | None = None, time_edge: float | None = None, occurrence_edge: int = 0, grid_ggd: IDSStructure | None = None, grid_subset_id: int | str = 5, equilibrium: EFITEquilibrium | None = None, b_field: Function2D | None = None, psi_interpolator: Callable[[float], float] | None = None, mask: Function2D | Function3D | None = None, time_threshold: float = inf, split_ion_bundles: bool = True, atomic_data: AtomicData | None = None, parent: _NodeBase | None = None, **kwargs) PlasmaSource

Load core and edge profiles and create a Plasma object.

If the edge_profiles IDS is empty, returns only the core plasma. If the core_profiles IDS is empty, returns only the edge plasma.

To load the edge plasma from a different IMAS entry, use edge_args and edge_kwargs to pass different arguments to the DBEntry constructor.

The distribution of each species is defined with Maxwellian using its density and temperature profiles, which are mapped to 3D using the provided equilibrium.

The ion bundle species are split into their constituent charge states using solve_coronal_equilibrium when split_ion_bundles is True and the necessary atomic data is available. Otherwise, ion bundles are ignored with a warning.

Parameters:
*args

IMAS URI, netCDF path, or legacy positional arguments for the core plasma’s DBEntry. For a URI or path, read mode is selected automatically; do not pass "r".

time: float = 0

Time for the core plasma, by default 0.

occurrence_core: int = 0

Occurrence index of the core_profiles IDS, by default 0.

edge_args: tuple | None = None

URI, netCDF path, or legacy positional DBEntry arguments for the edge plasma if different from the core plasma. Read mode is selected automatically. By default None: uses the same source as *args.

edge_kwargs: dict | None = None

Additional DBEntry options for the edge plasma if different from the core plasma. By default None: uses the same options as **kwargs.

time_edge: float | None = None

Time for the edge plasma. If None, uses time. By default None.

occurrence_edge: int = 0

Occurrence index of the edge_profiles IDS, by default 0.

grid_ggd: IDSStructure | None = None

Alternative grid_ggd structure describing the grid. By default None.

grid_subset_id: int | str = 5

Identifier of the grid subset (index or name). By default 5 ("Cells"). The list of grid subset identifiers can be seen at https://imas-data-dictionary.readthedocs.io/en/latest/generated/identifier/ggd_subset_identifier.html

equilibrium: EFITEquilibrium | None = None

Alternative EFITEquilibrium used to map core profiles. By default None: the equilibrium is read from the same IMAS query as the core profiles. Ignored if the core plasma is not available.

b_field: Function2D | None = None

Alternative 2D interpolator of the magnetic field vector (Br, Bphi, Bz). By default None: the magnetic field is loaded from the equilibrium IDS.

psi_interpolator: Callable[[float], float] | None = None

Alternative psi_norm(rho_tor_norm) interpolator. Used only if psi is missing in the core grid. By default None. Obtained from the equilibrium IDS.

mask: Function2D | Function3D | None = None

Mask function used for blending: (1 - mask) * f_edge + mask * f_core. By default, uses EFITEquilibrium’s inside_lcfs.

time_threshold: float = inf

Maximum allowed difference between the requested time and the nearest available time, by default numpy.inf.

split_ion_bundles: bool = True

Whether to split ion bundles into their constituent charge states using solve_coronal_equilibrium, by default True.

atomic_data: AtomicData | None = None

Atomic data provider class for this plasma, by default None. If None, some species (e.g. ion_bundle) may not be properly loaded.

parent: _NodeBase | None = None

Parent node in the Raysect scene graph, by default None. Typically a World instance.

**kwargs

Additional DBEntry options for the core plasma, such as dd_version or xml_path.

Returns:

Plasma – Plasma object with core and/or edge profiles.

Raises:
  • RuntimeError – If neither core nor edge profiles are available in the IMAS entry.

  • ValueError – If the provided equilibrium is not an instance of EFITEquilibrium.

  • RuntimeError – If there are issues with the core or edge profiles (e.g. missing electron profile, missing density or temperature profiles, empty grids, etc.) that prevent the plasma from being created.