cherab/core

BeamCXPEC should take the total ion density instead of the receiver ion density

Closed this issue · 1 comments

The ADAS manual states that the effective CX emission coefficients depend on the total ion density, referred as NZeff there and not just the receiver ion density as in Cherab. Cherab own documentation for the CXS model also states that. However the docstring for the BeamCXPEC states that the receiver ion density should be used:

cpdef double evaluate(self, double energy, double temperature, double density, double z_effective, double b_field) except? -1e999:
"""Evaluates the Beam CX rate at the given plasma conditions.
:param float energy: Interaction energy in eV/amu.
:param float temperature: Receiver ion temperature in eV.
:param float density: Receiver ion density in m^-3
:param float z_effective: Plasma Z-effective.
:param float b_field: Magnetic field magnitude in Tesla.
:return: The effective rate
"""
and the BeamCXLine model passes the receiver ion density to the CX PECs.

From physics point of view it is the total ion density, and not just the density of the receiver ions, that determines the population of the excited states of the receiver in a thermal plasma, which in turn determines the CX emission coefficients.

The classes affected by the issue are:
core.atomic.rates.BeamCXPEC,
openadas.rates.cx.BeamCXPEC,
core.model.beam.charge_exchange.BeamCXLine.

This issue was found by David Becker by benchmarking Cherab against the SoS code during his internship at ITER.

Fixing this issue could result in a twofold difference in CX emissivity for impurities compared to current results.

Fixed in #444.