Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include collisional-radiative method in level populations calculation #234

Open
wtbarnes opened this issue Apr 3, 2023 · 2 comments
Open
Labels
Atomic Physics Knowledge Requires some knowledge of atomic physics effort-high feature Ion Anything related to the Ion object

Comments

@wtbarnes
Copy link
Owner

wtbarnes commented Apr 3, 2023

CHIANTI version 9 introudced the .auto and .rrllvlsuch that the processes of autoionization and dielectronic recombination from the lower and upper stages, respectively, could be included the level populations calculation. This modification is described in detail in the Appendix of the CHIANTI v9 paper.

The Ion.level_populations method will need to be modified significantly to incorporate these additional processes that factor into the level populations of the ion.

Before this can be addressed, #48 and #114 will need to be closed such that the needed data can be accessed in order to perform these calculations.

@jwreep
Copy link
Collaborator

jwreep commented Sep 30, 2024

This issue is intimidating, but probably the most important for updating to newer versions.

Could this be broken down into smaller steps somehow? Reading over the Chianti paper, it's not clear to me exactly what functions need to be refactored, what needs to be added, etc., and it would take a long time to understand this from the IDL.

Do you have a sense of what steps are needed?

@wtbarnes
Copy link
Owner Author

wtbarnes commented Oct 1, 2024

I agree. This is the single most important issue open on the repo right now. It is also very intimidating. 😅

That being said, I think the scope of this work is actually pretty tight, especially now that we can read the relevant files (thanks to your PRs!). The only function that needs to be modified (or at least that requires major refactoring) is fiasco.Ion.level_populations.

At a high level, the needed changes consist of extending the rate matrix that we invert to solve the level populations to the two-ion model to include dielectronic capture and cascades from the adjacent ion. I'm not even sure this will involve a lot of additional code. It will involve very careful work in terms of placing all of these rates in the correct place in our new extended matrix.

That being said, the procedure is largely the same as it is now: calculate the needed rates as a function of temperature and density, populate the matrix, solve the system of equations. We just need to need to (1) extend the rate matrix and then (2) populate it accordingly with the new rates following the procedure outlined in the papers and technical report linked above.

In terms of smaller steps, I'm not really sure, especially now that the data parsing is in place. I guess the first step would be to find a set of level populations for some ion that we know is altered by the inclusion of this two ion model, write a test that compares against these level populations, and then start modifying the rate matrix to match these new level populations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Atomic Physics Knowledge Requires some knowledge of atomic physics effort-high feature Ion Anything related to the Ion object
Projects
Development

No branches or pull requests

2 participants