From 93d7a3bf66e0993daaea891b153af53e3ccb6624 Mon Sep 17 00:00:00 2001 From: Andrew Fullard Date: Mon, 22 Apr 2024 11:52:02 -0400 Subject: [PATCH 1/3] Fixes IntegrationError causing refdata generation failure Now returns an empty spectrum instead of a crash and gives a warning. --- .../montecarlo/montecarlo_transport_state.py | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/tardis/montecarlo/montecarlo_transport_state.py b/tardis/montecarlo/montecarlo_transport_state.py index 81143411286..10a21bcfb12 100644 --- a/tardis/montecarlo/montecarlo_transport_state.py +++ b/tardis/montecarlo/montecarlo_transport_state.py @@ -4,10 +4,11 @@ from astropy import units as u from tardis.io.util import HDFWriterMixin -from tardis.montecarlo.spectrum import TARDISSpectrum from tardis.montecarlo.estimators.dilute_blackbody_properties import ( MCDiluteBlackBodyRadFieldSolver, ) +from tardis.montecarlo.montecarlo_numba.formal_integral import IntegrationError +from tardis.montecarlo.spectrum import TARDISSpectrum class MonteCarloTransportState(HDFWriterMixin): @@ -74,6 +75,7 @@ def __init__( self.integrator_settings = None self._spectrum_integrated = None self.enable_full_relativity = False + self.enable_continuum_processes = False self.geometry_state = geometry_state self.opacity_state = opacity_state self.rpacket_tracker = rpacket_tracker @@ -224,11 +226,24 @@ def spectrum_integrated(self): if self._spectrum_integrated is None: # This was changed from unpacking to specific attributes as compute # is not used in calculate_spectrum - self._spectrum_integrated = self.integrator.calculate_spectrum( - self.spectrum_frequency[:-1], - points=self.integrator_settings.points, - interpolate_shells=self.integrator_settings.interpolate_shells, - ) + try: + self._spectrum_integrated = self.integrator.calculate_spectrum( + self.spectrum_frequency[:-1], + points=self.integrator_settings.points, + interpolate_shells=self.integrator_settings.interpolate_shells, + ) + except IntegrationError: + # if integration is impossible or fails, return an empty spectrum + warnings.warn( + "The FormalIntegrator is not yet implemented for the full " + "relativity mode oir continuum processes. " + "Please run with config option enable_full_relativity: " + "False and continuum_processes_enabled: False" + UserWarning, + ) + return TARDISSpectrum( + np.array([0, 1]) * u.Hz, np.array([0]) * u.erg / u.s + ) return self._spectrum_integrated @property From 43ffc767924861dae1fea140945a76c0af7dd40f Mon Sep 17 00:00:00 2001 From: Andrew Fullard Date: Mon, 22 Apr 2024 11:53:16 -0400 Subject: [PATCH 2/3] Fix missing comma --- tardis/montecarlo/montecarlo_transport_state.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tardis/montecarlo/montecarlo_transport_state.py b/tardis/montecarlo/montecarlo_transport_state.py index 10a21bcfb12..c8ebb869bb4 100644 --- a/tardis/montecarlo/montecarlo_transport_state.py +++ b/tardis/montecarlo/montecarlo_transport_state.py @@ -238,7 +238,7 @@ def spectrum_integrated(self): "The FormalIntegrator is not yet implemented for the full " "relativity mode oir continuum processes. " "Please run with config option enable_full_relativity: " - "False and continuum_processes_enabled: False" + "False and continuum_processes_enabled: False", UserWarning, ) return TARDISSpectrum( From c150dfea61c80d03d085696b71855d235eeae97c Mon Sep 17 00:00:00 2001 From: Andrew Fullard Date: Mon, 22 Apr 2024 12:13:03 -0400 Subject: [PATCH 3/3] Make spectrum NaN and add warning --- tardis/montecarlo/montecarlo_transport_state.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tardis/montecarlo/montecarlo_transport_state.py b/tardis/montecarlo/montecarlo_transport_state.py index c8ebb869bb4..5cd974a0a2f 100644 --- a/tardis/montecarlo/montecarlo_transport_state.py +++ b/tardis/montecarlo/montecarlo_transport_state.py @@ -236,13 +236,15 @@ def spectrum_integrated(self): # if integration is impossible or fails, return an empty spectrum warnings.warn( "The FormalIntegrator is not yet implemented for the full " - "relativity mode oir continuum processes. " + "relativity mode or continuum processes. " "Please run with config option enable_full_relativity: " - "False and continuum_processes_enabled: False", + "False and continuum_processes_enabled: False " + "This RETURNS AN EMPTY SPECTRUM!", UserWarning, ) return TARDISSpectrum( - np.array([0, 1]) * u.Hz, np.array([0]) * u.erg / u.s + np.array([np.nan, np.nan]) * u.Hz, + np.array([np.nan]) * u.erg / u.s, ) return self._spectrum_integrated