Skip to content

add XRayIonicGasMix#264

Open
arlauwer wants to merge 38 commits intoSKIRT:masterfrom
arlauwer:ionised
Open

add XRayIonicGasMix#264
arlauwer wants to merge 38 commits intoSKIRT:masterfrom
arlauwer:ionised

Conversation

@arlauwer
Copy link
Copy Markdown
Contributor

@arlauwer arlauwer commented May 8, 2026

Description
An ionized variant of the XRayAtomicGasMix was added. This class is very similar and includes the following:

  • photo-absorption for all ions up to Z=30
  • fluorescent emission following a photo-absorption for these same ions
  • free electron (Compton) scattering (+polarization) option
  • Lyman recombination for H-like ions modeled the same way as fluorescence
  • Lyman resonant scattering for H-like ions

Motivation
Not only does this extend the data sets of the XRayAtomicGasMix to ionized gas, it also introduces some of the Lyman-series lines. This opens up many new possibilities to better model the X-ray reprocessing in ionized environments.

Tests
A few unit tests were written which have been manually verified. Additionally, the physics has been benchmarked in (Sameshima et al. 2026, submitted).

Guidelines
The current state of the PR does not fully conform to the SKIRT guidelines, as it is still somewhat a work in progress. The code is well documented and ready for review, but certain implementations may be changed in the future. More on this in the context section.

Resources
This class comes with its own resources, these can be placed in the resources/SKIRT9_Resources_AtomsMolecules/ directory.

Context
A few notes on the current implementation that might require future work:

  • Currently, only free electron scattering is included. This means that all ions scatter the same way regardless of their ionization state. This may be changed in the future to an interpolated version of free + bound electron scattering.
  • The Voigt evaluation algorithm used was unstable for our regime (eg. Fe+25 Lya at T < 10^5 K). Instead we use an external library that computes the Faaddeeva function, the real part of this function is exactly the Voigt function. This
    solution is not ideal within the SKIRT conventions so a better solution will have to be found.
  • The neutral XRayAtomicGasMix included line profiles for fluorescent emission, whereas the current data set does not provide such line-shape information. Moreover, the fluorescent transitions available in the present data set do not fully overlap with those implemented in XRayAtomicGasMix. Future work could aim to combine the strengths of both approaches, though this has not yet been explored.
  • Initially effort was made to create an XRayIonicGasMixFamily, but this has been postponed to ensure the release of this class first. Currently the XRayIonicGasMix assumes spatially constant temperature and abundances, although multiple media can be used to create some spatial dependence.
  • Although this material mix also contains the data for Lyman alpha resonant scattering, it will produce slightly different results. This is due to the fact that these material mixes handle the phase function differently. The specifics can be found in the setScatteringInfoIfNeeded function for both mixes.

small bug fixes
use ints
made Atoms.cpp
remove bound-electron
start main documentation
rename AtomUtils
revert LyaNeutralHydrogenGasMix phase function
clean up LyUtils
seperate dipole calculations
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant