Implement ThermalCX plasma emission model
We already have a lot of the machinery in place for passive Charge Exchange, but there seems to be a few final pieces missing. Let's implement the missing code and get some passive CX modelled.
This feature is needed for the CASPER code, which is part of ITER IMAS, so I'll start working on it.
Since the ADAS thermal CX PECs are functions of Ne and Te only, it is likely that they are calculated on the assumption that both donor and receiver have a Maxwellian distribution with T = Te. This is an oversimplification, but I think we should stick with it for now.
Here is a breakdown based on information from the ITER Synthetic Diagnostics meeting where this feature was discussed:
ThermalCXPECmust be implemented as a function of 3 variables: electron density, electron temperature and donor temperature. The ADAS PEC data for this is on the way. When validated, the data is likely to be available in the OpenADAS.- The atomic repository structure for CX PECs should follow that of thermal_cx:
pec/thermalcx/{donor_element}/{donor_charge}/{receiver_element}/{receiver_charge}.json. Each json file contain PECs for different spectral lines. ThermalCXLinefor a given receiver and spectral line sums over all possible donors when evaluates the radiance.- All thermal broadened spectral line shapes valid for
ExcitationLineandRecombinationLineare valid forThermalCXLineas well.
Implemented in #386.