fiasco icon indicating copy to clipboard operation
fiasco copied to clipboard

Include photoexcitation and stimulated emission in level populations calculation

Open wtbarnes opened this issue 7 years ago • 6 comments

Currently, the level population does not include photoexcitation and stimulated emission processes. For more details, see section 2.3 of Young et al. (2003) and section 2.2 of Landi et al. (2006)

wtbarnes avatar Apr 21 '18 00:04 wtbarnes

The equation is straightforward here, but this requires user specification of a radiation field. Should we implement a few basic ones, like a blackbody spectrum at temperature T, and then additionally allow the user to input an array otherwise?

jwreep avatar Jan 31 '25 03:01 jwreep

Astropy includes a blackbody spectrum model: https://docs.astropy.org/en/latest/modeling/physical_models.html. I wonder if it would make sense for the radiation field to always be an astropy model.

wtbarnes avatar Feb 05 '25 06:02 wtbarnes

As an aside, I've finally begun actual work on #254 and in doing so have dramatically restructured how the level populations calculation is handled. It might make sense to wait on this until that work is finished. I'm hoping to have this done in the next few weeks.

wtbarnes avatar Feb 05 '25 06:02 wtbarnes

I think there's definitely value to allowing user-defined input, rather than restricting to idealized Astropy models. We should of course make sure to validate the input has the right units and form.

Great to hear that you're working on that one!

jwreep avatar Feb 06 '25 18:02 jwreep

An Astropy model can be user-defined. It doesn't have to be only one of the predefined models. In this case, the model would effectively be the type that the input would be restricted to for the sake of easily interfacing with a user-defined input.

wtbarnes avatar Feb 06 '25 18:02 wtbarnes

FWIW, the two ion model refactor is done. This should actually make it easier to implement this as it should just involve adding another private method (e.g. called _rate_matrix_photoionization) similar to how collisional excitation is handled,

https://github.com/wtbarnes/fiasco/blob/b8160d7b923ed246455988155d518315a26a0017/fiasco/ions.py#L696-L707

and then adding that to the coefficient matrix,

https://github.com/wtbarnes/fiasco/blob/b8160d7b923ed246455988155d518315a26a0017/fiasco/ions.py#L638

wtbarnes avatar Jul 22 '25 20:07 wtbarnes