diff --git a/aiidalab_qe/process.py b/aiidalab_qe/process.py index 201ec351f..1280c768d 100644 --- a/aiidalab_qe/process.py +++ b/aiidalab_qe/process.py @@ -82,23 +82,31 @@ def find_work_chains(cls): ) for process in projected[1:]: - pk = process[0] - formula = load_node(pk).inputs.structure.get_formula() - if "relax" in load_node(pk).inputs: - relax_info = "structure is relaxed" - else: - relax_info = "structure is not relaxed" + workchain = load_node(process[0]) + formula = workchain.inputs.structure.get_formula() properties = [] - if "pdos" in load_node(pk).inputs: + if "pdos" in workchain.inputs: properties.append("pdos") - if "bands" in load_node(pk).inputs: + if "bands" in workchain.inputs: properties.append("bands") + if "relax" in workchain.inputs: + builder_parameters = workchain.get_extra("builder_parameters", {}) + relax_type = builder_parameters.get("relax_type") + + if relax_type != "none": + relax_info = "structure is relaxed" + else: + relax_info = "static SCF calculation on structure" + else: + relax_info = "structure is not relaxed" + if not properties: properties_info = "" else: properties_info = f"properties on {', '.join(properties)}" + yield cls.WorkChainData( formula=formula, relax_info=relax_info, diff --git a/aiidalab_qe/report.py b/aiidalab_qe/report.py index ee53d141c..f4883bd56 100644 --- a/aiidalab_qe/report.py +++ b/aiidalab_qe/report.py @@ -98,10 +98,10 @@ def _generate_report_dict(qeapp_wc): # read default from protocol smearing = default_params["smearing"] - if run_relax: - pw_parameters = qeapp_wc.inputs.relax.base.pw.parameters.get_dict() - if scf_kpoints_distance is None: - scf_kpoints_distance = qeapp_wc.inputs.relax.base.kpoints_distance.value + pw_parameters = qeapp_wc.inputs.relax.base.pw.parameters.get_dict() + if scf_kpoints_distance is None: + scf_kpoints_distance = qeapp_wc.inputs.relax.base.kpoints_distance.value + if run_bands: pw_parameters = qeapp_wc.inputs.bands.scf.pw.parameters.get_dict() if scf_kpoints_distance is None: @@ -116,9 +116,8 @@ def _generate_report_dict(qeapp_wc): ) nscf_kpoints_distance = qeapp_wc.inputs.pdos.nscf.kpoints_distance.value - if pw_parameters: - energy_cutoff_wfc = round(pw_parameters["SYSTEM"]["ecutwfc"]) - energy_cutoff_rho = round(pw_parameters["SYSTEM"]["ecutrho"]) + energy_cutoff_wfc = round(pw_parameters["SYSTEM"]["ecutwfc"]) + energy_cutoff_rho = round(pw_parameters["SYSTEM"]["ecutrho"]) yield "energy_cutoff_wfc", energy_cutoff_wfc yield "energy_cutoff_rho", energy_cutoff_rho diff --git a/aiidalab_qe/steps.py b/aiidalab_qe/steps.py index 26511602a..29aadb8dc 100644 --- a/aiidalab_qe/steps.py +++ b/aiidalab_qe/steps.py @@ -425,21 +425,8 @@ def set_input_parameters(self, parameters): def _update_state(self, _=None): if self.previous_step_state == self.State.SUCCESS: self.confirm_button.disabled = False - if not ( - self.workchain_settings.relax_type.value != "none" - or self.workchain_settings.bands_run.value - or self.workchain_settings.pdos_run.value - ): - self.confirm_button.disabled = True - self.state = self.State.READY - self._submission_blocker_messages.value = """ -