6.3. Rate Coefficients¶
All atomic rate coefficients specify a calling signature that must be used for this rate, e.g. __call__(arg1, arg2, …). The calculations associated with this calling signature are actually implemented in a separate function called evaluate(arg1, arg2, …). No other information or data about the rate is specified in the core API, instead all other implementation details are deferred to the atomic data provider.
The reason for this design is that it allows rate objects to be used throughout all the Cherab emission models without knowing how this data will be provided or calculated. For example, some atomic data providers might use interpolated data while others could provide theoretical equations. Cherab emission models only need to know how to call them after they have been instantiated.
6.3.1. Atomic Processes¶
- class cherab.core.atomic.rates.IonisationRate¶
Effective ionisation rate for a given ion.
- class cherab.core.atomic.rates.RecombinationRate¶
Effective recombination rate for a given ion.
- class cherab.core.atomic.rates.ThermalCXRate¶
Effective charge exchange rate between two ions.
The IonisationRate, RecombinationRate and ThermalCXRate classes all share the same call signatures.
- __call__(density, temperature)¶
Returns an effective rate coefficient at the specified plasma conditions.
This function just wraps the cython evaluate() method.
- evaluate(density, temperature)¶
an effective recombination rate coefficient at the specified plasma conditions.
This function needs to be implemented by the atomic data provider.
- Parameters:
density (float) – Electron density in m^-3
temperature (float) – Electron temperature in eV.
- Returns:
The effective ionisation rate in [m^3.s^-1].
6.3.2. Photon Emissivity Coefficients¶
- class cherab.core.atomic.rates.ImpactExcitationPEC¶
Impact excitation rate coefficient.
- class cherab.core.atomic.rates.RecombinationPEC¶
Recombination rate coefficient.
- class cherab.core.atomic.rates.ThermalCXPEC¶
Thermal charge exchange rate coefficient.
The ImpactExcitationPEC, RecombinationPEC and ThermalCXPEC classes all share the same call signatures.
- __call__(density, temperature)¶
Returns a photon emissivity coefficient at the specified plasma conditions.
This function just wraps the cython evaluate() method.
- evaluate(density, temperature)¶
Returns a photon emissivity coefficient at the specified plasma conditions.
This function needs to be implemented by the atomic data provider.
- Parameters:
density (float) – Receiver ion density in m^-3
temperature (float) – Receiver ion temperature in eV.
- Returns:
The effective PEC rate [Wm^3].
Some example code for requesting PEC objects and sampling them with the __call__() method.
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from cherab.core.atomic import deuterium
>>> from cherab.openadas import OpenADAS
>>>
>>> # initialise the atomic data provider
>>> adas = OpenADAS()
>>>
>>> # request d-alpha instance of ImpactExcitationRate
>>> dalpha_excit = adas.impact_excitation_pec(deuterium, 0, (3, 2))
>>> # request d-alpha instance of RecombinationRate
>>> dalpha_recom = adas.recombination_pec(deuterium, 0, (3, 2))
>>>
>>> # evaluate D-alpha ImpactExcitationRate PEC at n_e = 1E19 m^-3 and t_e = 2 eV
>>> dalpha_excit(1E19, 2)
2.50352900-36
>>>
>>> # evaluate D-alpha ImpactExcitationRate PEC at n_e = 1E19 m^-3 and t_e = 2 eV
>>> dalpha_recom(1E19, 2)
1.09586154-38
6.3.3. Beam-Plasma Interaction Rates¶
- class cherab.core.atomic.rates.BeamStoppingRate¶
\(S^{e, i}_{CR}\) [\(m^3.s^{-1}\)]
The effective collisional radiative stopping coefficient \(S^{e, i}_{CR}\) [\(m^3.s^{-1}\)] for neutral atom \(X^0\) in a mono-energetic beam by fully stripped ions \(Y^i\) and their electrons.
Equivalent to \(S^{e, i}_{CR}\) as defined in ADAS adf21.
- class cherab.core.atomic.rates.BeamPopulationRate¶
\(bmp(X^0(m_i))\) [dimensionless]
Relative beam population of excited state \(m_i\) over ground state for atom \(X^0\), \(bmp(X^0(m_i))\).
The rate \(bmp(X^0(m_i))\) is equivalent to the \(BMP\) rate as defined in adf22 and is dimensionless.
- class cherab.core.atomic.rates.BeamEmissionPEC¶
\(bme(X^0(m_i))\) [\(W.m^3\)]
The effective beam emission coefficient, \(bme(X^0(m_i))\).
The rate \(bme(X^0(m_i))\) is equivalent to the \(BME\) rate as defined in adf22.
The BeamStoppingRate, BeamPopulationRate and BeamEmissionPEC classes all share the same call signatures.
- __call__(energy, density, temperature)¶
Returns the associated beam reaction rate at the specified plasma conditions.
This function just wraps the cython evaluate() method.
- evaluate(energy, density, temperature)¶
Returns the beam coefficient for the supplied parameters.
- Parameters:
energy (float) – Interaction energy in eV/amu.
density (float) – Target electron density in m^-3
temperature (float) – Target temperature in eV.
- Returns:
The beam coefficient
Some example code for requesting beam rate objects and sampling them with the __call__() method.
>>> from cherab.core.atomic import deuterium, carbon
>>> from cherab.openadas import OpenADAS
>>>
>>> # initialise the atomic data provider
>>> adas = OpenADAS(permit_extrapolation=True)
>>>
>>> # Request beam stopping rate and sample
>>> bms = adas.beam_stopping_rate(deuterium, carbon, 6)
>>> bms(50000, 1E19, 1)
1.777336e-13
>>>
>>> # Sample the beam population rate
>>> bmp = adas.beam_population_rate(deuterium, 2, carbon, 6)
>>> bmp(50000, 1E19, 1)
7.599066e-4
>>>
>>> # Sample the beam emission rate
>>> bme = adas.beam_emission_pec(deuterium, deuterium, 1, (3, 2))
>>> bme(50000, 1E19, 1)
8.651598e-34
- class cherab.core.atomic.rates.BeamCXPEC¶
\(q^{eff}_{n\rightarrow n'}\) [\(W.m^{3}\)]
Effective emission coefficient (or rate) for a charge-exchange line corresponding to a transition \(n\rightarrow n'\) of ion \(Z^{(\alpha+1)+}\) with electron donor \(H^0\) in metastable state \(m_{i}\). Equivalent to \(q^{eff}_{n\rightarrow n'}\) in adf12 <http://open.adas.ac.uk/adf12>_.
- Parameters:
donor_metastable – The metastable state of the donor species for which the rate data applies.
- __call__()¶
Evaluates the Beam CX rate at the given plasma conditions.
This function just wraps the cython evaluate() method.
- evaluate(energy, temperature, density, z_effective, b_field)¶
Evaluates the Beam CX rate at the given plasma conditions.
- Parameters:
energy (float) – Interaction energy in eV/amu.
temperature (float) – Receiver ion temperature in eV.
density (float) – Plasma total ion density in m^-3
z_effective (float) – Plasma Z-effective.
b_field (float) – Magnetic field magnitude in Tesla.
- Returns:
The effective rate
Some example code for requesting beam CX rate object and sampling it with the __call__() method.
>>> from cherab.core.atomic import deuterium, carbon
>>> from cherab.openadas import OpenADAS
>>>
>>> # initialise the atomic data provider
>>> adas = OpenADAS(permit_extrapolation=True)
>>>
>>> cxr = adas.beam_cx_pec(deuterium, carbon, 6, (8, 7))
>>> cxr_n1, cxr_n2 = cxr
>>> cxr_n1(50000, 100, 1E19, 1, 1)
5.826619e-33
>>> cxr_n2(50000, 100, 1E19, 1, 1)
1.203986e-32
6.3.4. Abundances¶
- class cherab.core.atomic.rates.FractionalAbundance¶
Rate provider for fractional abundances in thermodynamic equilibrium.
- __call__(electron_density, electron_temperature)¶
Evaluate the fractional abundance of this ionisation stage at the given plasma conditions.
This function just wraps the cython evaluate() method.
- Parameters:
electron_density (float) – electron density in m^-3
electron_temperature (float) – electron temperature in eV
>>> from cherab.core.atomic import neon
>>> from cherab.adas import ADAS
>>>
>>> atomic_data = ADAS()
>>>
>>> ne0_frac = atomic_data.fractional_abundance(neon, 0)
>>> ne0_frac(1E19, 1.0)
0.999899505093943
6.3.5. Radiated Power¶
- class cherab.core.atomic.rates.RadiatedPower¶
Total radiated power for a given species and radiation type.
Radiation type can be: - ‘total’ (line + recombination + bremsstrahlung + charge exchange) - ‘line’ radiation - ‘continuum’ (recombination + bremsstrahlung) - ‘cx’ charge exchange
- __call__(electron_density, electron_temperature)¶
Evaluate the total radiated power of this species at the given plasma conditions.
This function just wraps the cython evaluate() method.
- Parameters:
electron_density (float) – electron density in m^-3
electron_temperature (float) – electron temperature in eV
>>> from cherab.core.atomic import neon
>>> from cherab.adas import ADAS
>>>
>>> atomic_data = ADAS()
>>>
>>> ne_total_rad = atomic_data.radiated_power_rate(neon, 'total')
>>> ne_total_rad(1E19, 10) * 1E19
9.2261136594e-08
>>>
>>> ne_continuum_rad = atomic_data.radiated_power_rate(neon, 'continuum')
>>> ne_continuum_rad(1E19, 10) * 1E19
3.4387672228e-10
- class cherab.core.atomic.rates.StageResolvedLineRadiation¶
Total ionisation state resolved line radiated power rate.
- Parameters:
element (Element) – the radiating element
ionisation (int) – the integer charge state for this ionisation stage
name (str) – optional label identifying this rate
- __call__(electron_density, electron_temperature)¶
Evaluate the total radiated power of this species at the given plasma conditions.
This function just wraps the cython evaluate() method.
- Parameters:
electron_density (float) – electron density in m^-3
electron_temperature (float) – electron temperature in eV
>>> from cherab.core.atomic import neon
>>> from cherab.adas import ADAS
>>>
>>> atomic_data = ADAS()
>>>
>>> ne0_line_rad = atomic_data.stage_resolved_line_radiation_rate(neon, 0)
>>> ne0_line_rad(1E19, 10) * 1E19
6.1448254527e-16
>>>
>>> ne1_line_rad = atomic_data.stage_resolved_line_radiation_rate(neon, 1)
>>> ne1_line_rad(1E19, 10) * 1E19
1.7723122151e-11