From 7311b73b232a190ab497cac7573eae6e7cf8a4de Mon Sep 17 00:00:00 2001 From: Andrew Fullard Date: Mon, 13 Jan 2025 12:41:59 -0500 Subject: [PATCH] Correctly integrate spontaneous recombination rate coeff --- .../rates/photoionization_strengths.py | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/tardis/plasma/equilibrium/rates/photoionization_strengths.py b/tardis/plasma/equilibrium/rates/photoionization_strengths.py index 4cea2aaa96f..bd677da9d4d 100644 --- a/tardis/plasma/equilibrium/rates/photoionization_strengths.py +++ b/tardis/plasma/equilibrium/rates/photoionization_strengths.py @@ -20,6 +20,17 @@ def __init__( self.photoionization_cross_sections = photoionization_cross_sections self.nu = self.photoionization_cross_sections.nu.values + self.photoionization_block_references = np.pad( + self.photoionization_cross_sections.nu.groupby(level=[0, 1, 2]) + .count() + .values.cumsum(), + [1, 0], + ) + + self.photoionization_index = ( + self.photoionization_cross_sections.index.unique() + ) + @property def common_prefactor(self): return ( @@ -64,7 +75,18 @@ def solve(self, electron_temperature): axis=0, ) ) - return spontaneous_recombination_rate_coeff + spontaneous_recombination_rate_coeff_integrated = ( + integrate_array_by_blocks( + spontaneous_recombination_rate_coeff.to_numpy(), + self.nu, + self.photoionization_block_references, + ) + ) + + return pd.DataFrame( + spontaneous_recombination_rate_coeff_integrated, + index=self.photoionization_index, + ) class AnalyticPhotoionizationCoeffSolver(SpontaneousRecombinationCoeffSolver): @@ -74,17 +96,6 @@ def __init__( ): super().__init__(photoionization_cross_sections) - self.photoionization_block_references = np.pad( - self.photoionization_cross_sections.nu.groupby(level=[0, 1, 2]) - .count() - .values.cumsum(), - [1, 0], - ) - - self.photoionization_index = ( - self.photoionization_cross_sections.index.unique() - ) - def calculate_mean_intensity_photoionization_df( self, dilute_blackbody_radiationfield_state,