From 09f0b9db9d907d7d44a5b04367c8ce0177d28d2d Mon Sep 17 00:00:00 2001 From: dominiquef Date: Thu, 10 Jul 2025 10:18:04 -0700 Subject: [PATCH 1/2] Add method to change entry points of save directives --- .../factories/directives_factory.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/simpeg_drivers/components/factories/directives_factory.py b/simpeg_drivers/components/factories/directives_factory.py index a1672fbe..f76cd0e9 100644 --- a/simpeg_drivers/components/factories/directives_factory.py +++ b/simpeg_drivers/components/factories/directives_factory.py @@ -54,6 +54,25 @@ def __init__(self, driver: InversionDriver): self._save_iteration_apparent_resistivity_directive = None self._scale_misfits = None + @staticmethod + def configure_save_directives(directives_list): + """ + Find all SaveGeoH5 directives in the list and set their open_geoh5 and + close_geoh5 flags such that the first and last directive handles the + opening and closing of the target geoh5. + + :param directives_list: List of directives to configure. + """ + save_dirs = [] + for directive in directives_list: + if isinstance(directive, directives.BaseSaveGeoH5): + directive.close_geoh5 = False + directive.open_geoh5 = False + save_dirs.append(directive) + + save_dirs[0].open_geoh5 = True + save_dirs[-1].close_geoh5 = True + @property def beta_estimate_by_eigenvalues_directive(self): """""" @@ -79,6 +98,8 @@ def directive_list(self): else: self._directive_list = self.save_directives + self.configure_save_directives(self._directive_list) + return self._directive_list @directive_list.setter From e79b7991a5eb52c0a46126d8402779f43dd137ee Mon Sep 17 00:00:00 2001 From: dominiquef Date: Thu, 10 Jul 2025 10:23:57 -0700 Subject: [PATCH 2/2] Make joint drivers use the open/close mechanics --- simpeg_drivers/joint/driver.py | 5 +++++ simpeg_drivers/joint/joint_petrophysics/driver.py | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/simpeg_drivers/joint/driver.py b/simpeg_drivers/joint/driver.py index 5bdb7660..16f162ac 100644 --- a/simpeg_drivers/joint/driver.py +++ b/simpeg_drivers/joint/driver.py @@ -165,6 +165,11 @@ def directives(self): self._directives.directive_list = ( self._directives.inversion_directives + directives_list ) + + DirectivesFactory.configure_save_directives( + self._directives.directive_list + ) + return self._directives @property diff --git a/simpeg_drivers/joint/joint_petrophysics/driver.py b/simpeg_drivers/joint/joint_petrophysics/driver.py index a3542e8f..af812b2e 100644 --- a/simpeg_drivers/joint/joint_petrophysics/driver.py +++ b/simpeg_drivers/joint/joint_petrophysics/driver.py @@ -87,6 +87,11 @@ def directives(self): self._directives.directive_list = ( self._directives.inversion_directives + directives_list ) + + DirectivesFactory.configure_save_directives( + self._directives.directive_list + ) + return self._directives def get_regularization(self):