diff --git a/src/aiida_wannier90_workflows/workflows/optimize.py b/src/aiida_wannier90_workflows/workflows/optimize.py index d6b6196..e8f3641 100644 --- a/src/aiida_wannier90_workflows/workflows/optimize.py +++ b/src/aiida_wannier90_workflows/workflows/optimize.py @@ -528,7 +528,9 @@ def run_wannier90_optimize(self): } # Disable the error handler which might modify dis_proj_min - handler_overrides = {"handle_disentanglement_not_enough_states": False} + handler_overrides = { + "handle_disentanglement_not_enough_states": {"enabled": False} + } inputs["handler_overrides"] = orm.Dict(handler_overrides) inputs = prepare_process_inputs(Wannier90BaseWorkChain, inputs) @@ -734,9 +736,6 @@ def results(self): namespace="wannier90_plot", ) ) - if "interpolated_bands" in self.outputs["wannier90_plot"]: - w90_bands = self.outputs["wannier90_plot"]["interpolated_bands"] - self.out("band_structure", w90_bands) if "optimize_reference_bands" in self.inputs: if self.has_run_wannier90_optimize(): @@ -744,6 +743,11 @@ def results(self): else: # Even if I haven't run optimization, I still output bands distance if reference bands is present optimal_workchain = self.ctx.workchain_wannier90 + + if "interpolated_bands" in optimal_workchain.outputs: + # Override the `band_strucure` from W90BandsWorkChain + w90_optimal_bands = optimal_workchain.outputs["interpolated_bands"] + self.out("band_structure", w90_optimal_bands) bandsdist = self._get_bands_distance(optimal_workchain) bandsdist = orm.Float(bandsdist) bandsdist.store()