8.9. Spectral Line Shapes

Cherab contains Doppler-broadened, Doppler-Zeeman and Stark-Doppler-Zeeman line shapes of atomic spectra.

Assumption: Maxwellian distribution of emitting species is assumed. A general model of Doppler broadening will be implemented in the future.

class cherab.core.model.lineshape.doppler.doppler_shift(wavelength, observation_direction, velocity)

Calculates the Doppler shifted wavelength for a given velocity and observation direction.

Parameters:
  • wavelength – The wavelength to Doppler shift in nanometers.

  • observation_direction – A Vector defining the direction of observation.

  • velocity – A Vector defining the relative velocity of the emitting source in m/s.

Returns:

The Doppler shifted wavelength in nanometers.

class cherab.core.model.lineshape.doppler.thermal_broadening(wavelength, temperature, atomic_weight)

Returns the line width for a gaussian line as a standard deviation.

Parameters:
  • wavelength – Central wavelength.

  • temperature – Temperature in eV.

  • atomic_weight – Atomic weight in AMU.

Returns:

Standard deviation of gaussian line.

class cherab.core.model.lineshape.gaussian.add_gaussian_line(radiance, wavelength, sigma, spectrum)

Adds a Gaussian line to the given spectrum and returns the new spectrum.

The formula used is based on the following definite integral: \(\frac{1}{\sigma \sqrt{2 \pi}} \int_{\lambda_0}^{\lambda_1} \exp(-\frac{(x-\mu)^2}{2\sigma^2}) dx = \frac{1}{2} \left[ -Erf(\frac{a-\mu}{\sqrt{2}\sigma}) +Erf(\frac{b-\mu}{\sqrt{2}\sigma}) \right]\)

Parameters:
  • radiance (float) – Intensity of the line in radiance.

  • wavelength (float) – central wavelength of the line in nm.

  • sigma (float) – width of the line in nm.

  • spectrum (Spectrum) – the current spectrum to which the gaussian line is added.

Returns:

class cherab.core.model.lineshape.stark.add_lorentzian_line(radiance, wavelength, lambda_1_2, spectrum, integrator)

Adds a modified Lorentzian line to the given spectrum and returns the new spectrum.

The modified Lorentzian: \(L(\lambda-\lambda_0, \Delta\lambda_{1/2}^{(L)})=\frac{C_0(\Delta\lambda_{1/2}^{(L)})^{3/2}}{(\lambda-\lambda_0)^{5/2}+(\frac{\Delta\lambda_{1/2}^{(L)}}{2})^{5/2}},\)

\(C_0=\frac{(1/2)^{3/2}}{4R{_2}F_1(\frac{2}{5},1,\frac{7}{5},-R^{5/2})},\)

where \(\Delta\lambda_{1/2}^{(L)}\) is the line FWHM, \({_2}F_1\) is the hypergeometric function and \(R=50\). The line shape is truncated at \(\lambda<R\Delta\lambda_{1/2}^{(L)}\) and \(\lambda>R\Delta\lambda_{1/2}^{(L)}\).

See B. Lomanowski, et al. “Inferring divertor plasma properties from hydrogen Balmer and Paschen series spectroscopy in JET-ILW.” Nuclear Fusion 55.12 (2015) 123028 for details.

Parameters:
  • radiance (float) – Intensity of the line in radiance.

  • wavelength (float) – central wavelength of the line in nm.

  • lambda_1_2 (float) – FWHM of the line shape in nm.

  • spectrum (Spectrum) – the current spectrum to which the Lorentzian line is added.

  • integrator (Integrator1D) – Integrator1D instance to integrate the line shape over the spectral bin.

Returns:

class cherab.core.model.lineshape.base.LineShapeModel

A base class for building line shapes.

Parameters:
  • line (Line) – The emission line object for this line shape.

  • wavelength (float) – The rest wavelength for this emission line.

  • target_species (Species) – The target plasma species that is emitting.

  • plasma (Plasma) – The emitting plasma object.

  • atomic_data (AtomicData) – The atomic data provider.

  • integrator (Integrator1D) – Integrator1D instance to integrate the line shape over the spectral bin. Default is None.

class cherab.core.model.lineshape.gaussian.GaussianLine

Produces Gaussian line shape.

Parameters:
  • line (Line) – The emission line object for this line shape.

  • wavelength (float) – The rest wavelength for this emission line.

  • target_species (Species) – The target plasma species that is emitting.

  • plasma (Plasma) – The emitting plasma object.

  • atomic_data (AtomicData) – The atomic data provider.

>>> from cherab.core.atomic import Line, deuterium
>>> from cherab.core.model import ExcitationLine, GaussianLine
>>>
>>> # Adding Gaussian line to the plasma model.
>>> d_alpha = Line(deuterium, 0, (3, 2))
>>> excit = ExcitationLine(d_alpha, lineshape=GaussianLine)
>>> plasma.models.add(excit)
class cherab.core.model.lineshape.multiplet.MultipletLineShape

Produces Multiplet line shapes.

The lineshape radiance is calculated from a base PEC rate that is unresolved. This radiance is then divided over a number of components as specified in the multiplet argument. The multiplet components are specified with an Nx2 array where N is the number of components in the multiplet. The first axis of the array contains the wavelengths of each component, the second contains the line ratio for each component. The component line ratios must sum to one. For example:

Parameters:
  • line (Line) – The emission line object for the base rate radiance calculation.

  • wavelength (float) – The rest wavelength of the base emission line.

  • target_species (Species) – The target plasma species that is emitting.

  • plasma (Plasma) – The emitting plasma object.

  • atomic_data (AtomicData) – The atomic data provider.

  • multiplet – An Nx2 array that specifies the multiplet wavelengths and line ratios.

>>> from cherab.core.atomic import Line, nitrogen
>>> from cherab.core.model import ExcitationLine, MultipletLineShape
>>>
>>> # multiplet specification in Nx2 array
>>> multiplet = [[403.509, 404.132, 404.354, 404.479, 405.692], [0.205, 0.562, 0.175, 0.029, 0.029]]
>>>
>>> # Adding the multiplet to the plasma model.
>>> nitrogen_II_404 = Line(nitrogen, 1, ("2s2 2p1 4f1 3G13.0", "2s2 2p1 3d1 3F10.0"))
>>> excit = ExcitationLine(nitrogen_II_404, lineshape=MultipletLineShape, lineshape_args=[multiplet])
>>> plasma.models.add(excit)
class cherab.core.model.lineshape.zeeman.ZeemanLineShapeModel

A base class for building Zeeman line shapes.

Parameters:
  • line (Line) – The emission line object for this line shape.

  • wavelength (float) – The rest wavelength for this emission line.

  • target_species (Species) – The target plasma species that is emitting.

  • plasma (Plasma) – The emitting plasma object.

  • atomic_data (AtomicData) – The atomic data provider.

  • polarisation (str) – Leaves only \(\pi\)-/\(\sigma\)-polarised components: “pi” - leave only \(\pi\)-polarised components, “sigma” - leave only \(\sigma\)-polarised components, “no” - leave all components (default).

  • integrator (Integrator1D) – Integrator1D instance to integrate the line shape over the spectral bin. Default is None.

class cherab.core.model.lineshape.zeeman.ZeemanTriplet

Simple Doppler-Zeeman triplet (Paschen-Back effect).

Parameters:
  • line (Line) – The emission line object for this line shape.

  • wavelength (float) – The rest wavelength for this emission line.

  • target_species (Species) – The target plasma species that is emitting.

  • plasma (Plasma) – The emitting plasma object.

  • atomic_data (AtomicData) – The atomic data provider.

  • polarisation (str) – Leaves only \(\pi\)-/\(\sigma\)-polarised components: “pi” - leave central component, “sigma” - leave side components, “no” - all components (default).

class cherab.core.model.lineshape.zeeman.ParametrisedZeemanTriplet

Parametrised Doppler-Zeeman triplet. It takes into account additional broadening due to the line’s fine structure without resolving the individual components of the fine structure. The model is described with three parameters: \(\alpha\), \(\beta\) and \(\gamma\).

The distance between \(\sigma^+\) and \(\sigma^-\) peaks: \(\Delta \lambda_{\sigma} = \alpha B\), where B is the magnetic field strength. The ratio between Zeeman and thermal broadening line widths: \(\frac{W_{Zeeman}}{W_{Doppler}} = \beta T^{\gamma}\), where T is the species temperature in eV.

For details see A. Blom and C. Jupén, Parametrisation of the Zeeman effect for hydrogen-like spectra in high-temperature plasmas, Plasma Phys. Control. Fusion 44 (2002) 1229-1241.

Parameters:
  • line (Line) – The emission line object for this line shape.

  • wavelength (float) – The rest wavelength for this emission line.

  • target_species (Species) – The target plasma species that is emitting.

  • plasma (Plasma) – The emitting plasma object.

  • atomic_data (AtomicData) – The atomic data provider.

  • line_parameters (tuple) – Parameters of the model in the form (alpha, beta, gamma). Default is None (will use atomic_data.zeeman_triplet_parameters).

  • polarisation (str) – Leaves only \(\pi\)-/\(\sigma\)-polarised components: “pi” - leave central component, “sigma” - leave side components, “no” - all components (default).

class cherab.core.model.lineshape.zeeman.ZeemanMultiplet

Doppler-Zeeman Multiplet.

The lineshape radiance is calculated from a base PEC rate that is unresolved. This radiance is then divided over a number of components as specified in the zeeman_structure argument. The zeeman_structure specifies wavelengths and ratios of \(\pi\)-/\(\sigma\)-polarised components as functions of the magnetic field strength. These functions can be obtained using the output of the ADAS603 routines.

Parameters:
  • line (Line) – The emission line object for the base rate radiance calculation.

  • wavelength (float) – The rest wavelength of the base emission line.

  • target_species (Species) – The target plasma species that is emitting.

  • plasma (Plasma) – The emitting plasma object.

  • atomic_data (AtomicData) – The atomic data provider.

  • zeeman_structure – A ZeemanStructure object that provides wavelengths and ratios of \(\pi\)-/\(\sigma^{+}\)-/\(\sigma^{-}\)-polarised components for any given magnetic field strength. Default is None (will use atomic_data.zeeman_structure).

  • polarisation (str) – Leaves only \(\pi\)-/\(\sigma\)-polarised components: “pi” - leave only \(\pi\)-polarised components, “sigma” - leave only \(\sigma\)-polarised components, “no” - leave all components (default).

class cherab.core.model.lineshape.stark.StarkBroadenedLine

Parametrised Stark-Doppler-Zeeman line shape for Balmer and Paschen series based on B. Lomanowski, et al. “Inferring divertor plasma properties from hydrogen Balmer and Paschen series spectroscopy in JET-ILW.” Nuclear Fusion 55.12 (2015) 123028.

The following approximations are used:

  • The Zeeman and Stark effects are considered independently.

  • Zeeman splitting is taken in the form of a simple triplet with a \(\pi\)-component centred at \(\lambda\), \(\sigma^{+}\)-component at \(\frac{hc}{hc/\lambda -\mu B}\) and \(\sigma^{-}\)-component at \(\frac{hc}{hc/\lambda +\mu B}\).

  • The model of Stark broadening is obtained by fitting the Model Microfield Method (MMM).

  • The convolution of Stark-Zeeman and Doppler profiles is replaced with the weighted sum to speed-up calculations (so-called pseudo-Voigt profile).

The Stark-broadened line shape is modelled as modified Lorentzian: \(L(\lambda-\lambda_0, \Delta\lambda_{1/2}^{(L)})=\frac{C_0(\Delta\lambda_{1/2}^{(L)})^{3/2}}{(\lambda-\lambda_0)^{5/2}+(\frac{\Delta\lambda_{1/2}^{(L)}}{2})^{5/2}},\)

\(C_0=\frac{(1/2)^{3/2}}{4R{_2}F_1(\frac{2}{5},1,\frac{7}{5},-R^{5/2})},\)

where \(\Delta\lambda_{1/2}^{(L)}=c_{ij}\frac{n_e^{a_{ij}}}{T_e^{b_{ij}}}\) is the line FWHM, \({_2}F_1\) is the hypergeometric function and \(R=50\). The line shape is truncated at \(\lambda<R\Delta\lambda_{1/2}^{(L)}\) and \(\lambda>R\Delta\lambda_{1/2}^{(L)}\). The \(a_{ij}\), \(b_{ij}\) and \(c_{ij}\) are the fitting coefficients.

Each Zeeman component is modelled as a weighted sum of Stark (Lorentzian), \(L(\lambda-\lambda_0, \Delta\lambda_{1/2}^{(L)})\), and Doppler (Gauss), \(G(\lambda'-\lambda_0, \Delta\lambda_{1/2}^{(G)})\) profiles:

\(\eta L(\lambda-\lambda_0, \Delta\lambda_{1/2}^{(V)}) + (1-\eta)G(\lambda-\lambda_0, \Delta\lambda_{1/2}^{(V)})\),

with \(\Delta\lambda_{1/2}^{(V)}\equiv \Delta\lambda_{1/2}^{(V)}(\Delta\lambda_{1/2}^{(G)}, \Delta\lambda_{1/2}^{(L)})\) and \(\eta\equiv \eta(\Delta\lambda_{1/2}^{(G)}, \Delta\lambda_{1/2}^{(L)})\).

Both \(\Delta\lambda_{1/2}^{(V)}\) and \(\eta\) are obtained by fitting the convolution:

\(\int_{-\infty}^{\infty}G(\lambda'-\lambda_0, \Delta\lambda_{1/2}^{(G)})L(\lambda-\lambda'-\lambda_0, \Delta\lambda_{1/2}^{(L)})d\lambda'\).

The \(\Delta\lambda_{1/2}^{(V)}\) function is fitted as: \(\Delta\lambda_{1/2}^{(V)}=\sum_{n=0}^{6}a_n(\frac{\Delta\lambda_{1/2}^{(L)}}{\Delta\lambda_{1/2}^{(G)}})^n\) for \(\frac{\Delta\lambda_{1/2}^{(L)}}{\Delta\lambda_{1/2}^{(G)}} \le 1\) and \(\Delta\lambda_{1/2}^{(V)}=\sum_{n=0}^{6}b_n(\frac{\Delta\lambda_{1/2}^{(G)}}{\Delta\lambda_{1/2}^{(L)}})^n\) for \(\frac{\Delta\lambda_{1/2}^{(L)}}{\Delta\lambda_{1/2}^{(G)}} > 1\) with

a = [1., 0.15882, 1.04388, -1.38281, 0.46251, 0.82325, -0.58026] and

b = [1., 0, 0.57575, 0.37902, -0.42519, -0.31525, 0.31718].

While the \(\eta\) function is fitted as: \(\eta=exp(\sum_{n=0}^{5}c_n(ln(\frac{\Delta\lambda_{1/2}^{(L)}}{\Delta\lambda_{1/2}^{(V)}}))^n\) for \(0.01<\frac{\Delta\lambda_{1/2}^{(L)}}{\Delta\lambda_{1/2}^{(V)}}<0.999\) with

c = [5.14820e-04, 1.38821e+00, -9.60424e-02, -3.83995e-02, -7.40042e-03, -5.47626e-04].

Parameters:
  • line (Line) – The emission line object for this line shape.

  • wavelength (float) – The rest wavelength for this emission line.

  • target_species (Species) – The target plasma species that is emitting.

  • plasma (Plasma) – The emitting plasma object.

  • atomic_data (AtomicData) – The atomic data provider.

  • stark_model_coefficients (tuple) – Stark model coefficients in the form (c_ij, a_ij, b_ij). Default is None (will use atomic_data.stark_model_coefficients).

  • integrator (Integrator1D) – Integrator1D instance to integrate the line shape over the spectral bin. Default is GaussianQuadrature().

  • polarisation (str) – Leaves only \(\pi\)-/\(\sigma\)-polarised components: “pi” - leave only \(\pi\)-polarised components, “sigma” - leave only \(\sigma\)-polarised components, “no” - leave all components (default).

class cherab.core.model.lineshape.beam.base.BeamLineShapeModel

A base class for building beam emission line shapes.

Parameters:
  • line (Line) – The emission line object for this line shape.

  • wavelength (float) – The rest wavelength for this emission line.

  • beam (Beam) – The beam class that is emitting.

  • atomic_data (AtomicData) – The atomic data provider.

class cherab.core.model.lineshape.beam.mse.BeamEmissionMultiplet

Produces Beam Emission Multiplet line shape, also known as the Motional Stark Effect spectrum.