diff --git a/aiidalab_qe/node_view.py b/aiidalab_qe/node_view.py index 411729e8b..5ed0fd661 100644 --- a/aiidalab_qe/node_view.py +++ b/aiidalab_qe/node_view.py @@ -421,7 +421,7 @@ def __init__(self, node, **kwargs): self.title = ipw.HTML( f"""
-

QE App Work Chain (pk: {self.node.pk}) — +

QE App Workflow (pk: {self.node.pk}) — {self.node.inputs.structure.get_formula()}

""" diff --git a/aiidalab_qe/process.py b/aiidalab_qe/process.py index 477daa144..b93e32005 100644 --- a/aiidalab_qe/process.py +++ b/aiidalab_qe/process.py @@ -28,7 +28,9 @@ class WorkChainSelector(ipw.HBox): FMT_WORKCHAIN = "{wc.pk:6}{wc.ctime:>10}\t{wc.state:<16}\t{wc.formula} \t {wc.relax_info} \t {wc.properties_info}" def __init__(self, **kwargs): - self.work_chains_prompt = ipw.HTML("Select workflow or start new: ") + self.work_chains_prompt = ipw.HTML( + "Select computed workflow or start a new: " + ) self.work_chains_selector = ipw.Dropdown( options=[("New workflow...", self._NO_PROCESS)], layout=ipw.Layout(min_width="300px", flex="1 1 auto"), @@ -124,7 +126,7 @@ def refresh_work_chains(self, _=None): original_value = self.work_chains_selector.value self.work_chains_selector.options = [ - ("New calculation...", self._NO_PROCESS) + ("New workflow...", self._NO_PROCESS) ] + [ (self.FMT_WORKCHAIN.format(wc=wc), wc.pk) for wc in self.find_work_chains() diff --git a/aiidalab_qe/pseudos.py b/aiidalab_qe/pseudos.py index edd6a8573..bcf2a82b6 100644 --- a/aiidalab_qe/pseudos.py +++ b/aiidalab_qe/pseudos.py @@ -16,24 +16,24 @@ class PseudoFamilySelector(ipw.VBox): description = ipw.HTML( """
- The exchange-correlation function and pseudopotential library is set by - the protocol configured in the "WorkChain" tab. Here you can + The exchange-correlation functional and pseudopotential library is set by + the protocol configured in the "Workflow" tab. Here you can override the defaults if desired.
""", layout=ipw.Layout(max_width="60%"), ) pseudo_family_prompt = ipw.HTML( """
- Standard Solid-state pseudopotential (SSSP) protocol
""" + Standard solid-state pseudopotentials (SSSP)""" ) pseudo_family_help = ipw.HTML( """
- If you are unsure what to choose, select 'SSSP efficiency', which for + If you are unsure, select 'SSSP efficiency', which for most calculations will produce sufficiently accurate results at - comparatively small computational cost. If your calculation requires a + comparatively small computational costs. If your calculations require a higher accuracy, select 'SSSP accuracy', which will be computationally - more expensive, but will produce even more accurate results.
""" + more expensive.""" ) dft_functional_prompt = ipw.HTML( @@ -43,8 +43,7 @@ class PseudoFamilySelector(ipw.VBox): ) dft_functional_help = ipw.HTML( """
- The exchange-correlation energy is calculated based on the charge - density using this functional. We currently provide support for two + The exchange-correlation energy is calculated functional. We currently provide support for two well-established generalised gradient approximation (GGA) functionals: PBE and PBEsol.
""" ) diff --git a/aiidalab_qe/report.py b/aiidalab_qe/report.py index 020fc9438..ee53d141c 100644 --- a/aiidalab_qe/report.py +++ b/aiidalab_qe/report.py @@ -34,13 +34,13 @@ def _generate_report_dict(qeapp_wc): run_pdos = builder_parameters.get("run_pdos") yield "relaxed", run_relax - yield "relax_method", builder_parameters["relax_type"].title() + yield "relax_method", builder_parameters["relax_type"] yield "bands_computed", run_bands yield "pdos_computed", run_pdos # Material settings - yield "material_magnetic", builder_parameters["spin_type"].title() - yield "electronic_type", builder_parameters["electronic_type"].title() + yield "material_magnetic", builder_parameters["spin_type"] + yield "electronic_type", builder_parameters["electronic_type"] # Calculation settings yield "protocol", builder_parameters["protocol"] diff --git a/aiidalab_qe/static/welcome.jinja b/aiidalab_qe/static/welcome.jinja index a184a2ee3..cdf8830a3 100644 --- a/aiidalab_qe/static/welcome.jinja +++ b/aiidalab_qe/static/welcome.jinja @@ -9,10 +9,10 @@

Welcome to the AiiDAlab Quantum ESPRESSO app! 👋

- The Quantum ESPRESSO app (or QE app for short) is a graphical interface for calculating material properties based on density-functional theory (DFT). - Each of the properties is calculated by workflows powered by the AiiDA engine, and maintained in the Quantum ESPRESSO plugin for AiiDA. + The Quantum ESPRESSO app (or QE app for short) is a graphical front end for calculating materials properties using Quantum ESPRESSO (QE). + Each property is calculated by workflows powered by the AiiDA engine, and maintained in the Quantum ESPRESSO plugin for AiiDA. -

The QE app allows you to calculate material properties in a simple 4-step process:

+

The QE app allows you to calculate properties in a simple 4-step process:

  1. 🔍 Step 1: Select the structure you want to run.
  2. @@ -21,7 +21,7 @@
  3. 🚀 Step 4: Submit your workflow.
-

New users can go straight to the first step and select their structure. Once you've already calculated some properties, you can select the corresponding workflow using the dropdown below.

+

New users can go straight to the first step and select their structure. Once you've already run some calculations, you can select the corresponding workflow using the dropdown below.

Happy computing! 🎉

diff --git a/aiidalab_qe/static/workflow_summary.jinja b/aiidalab_qe/static/workflow_summary.jinja index 6d445806f..ba317a402 100644 --- a/aiidalab_qe/static/workflow_summary.jinja +++ b/aiidalab_qe/static/workflow_summary.jinja @@ -8,7 +8,7 @@
-

Workchain settings

+

Standard Settings

@@ -21,7 +21,7 @@ {% endif %} - + @@ -36,7 +36,7 @@
Structure geometry optimized
Work chain protocolProtocol {{ protocol }}
-

Advanced settings

+

Advanced Settings

diff --git a/aiidalab_qe/steps.py b/aiidalab_qe/steps.py index fafc5a79b..6d471163d 100644 --- a/aiidalab_qe/steps.py +++ b/aiidalab_qe/steps.py @@ -48,13 +48,17 @@ class WorkChainSettings(ipw.VBox): ) structure_help = ipw.HTML( """
- By default, the workflow will optimize the provided geometry. Select "Structure - as is" if this is not desired. You can either optimize the atomic positions ("Full geometry") - and unit cell, or atomic positions only ("Atomic positions").
""" + You have three options:
+ (1) Structure as is: perform a self consistent calculation using the structure provided as input.
+ (2) Atomic positions: perform a full relaxation of the internal atomic coordinates.
+ (3) Full geometry: perform a full relaxation for both the internal atomic coordinates and the cell vectors. """ ) materials_help = ipw.HTML( """
- Below you can indicate both if the material is magnetic and a metal or insulator. For now only ferromagnetic configurations are possible, since antiferromagnetism is more complicated to study automatically. If you're not sure whether your material is insulating, choose "Metal", since the corresponding settings usually also work quite well for insulators. + Below you can indicate both if the material should be treated as an insulator + or a metal (if in doubt, choose "Metal"), + and if it should be studied with magnetization/spin polarization, + switch magnetism ON or OFF (ON is at least twice more costly).
""" ) @@ -76,10 +80,9 @@ class WorkChainSettings(ipw.VBox): ) protocol_help = ipw.HTML( """
- The "moderate" protocol represents a balanced trade-off between + The "moderate" protocol represents a trade-off between accuracy and speed. Choose the "fast" protocol for a faster calculation - with less precision and the "precise" protocol that provides more - accuracy but will take longer.
""" + with less precision and the "precise" protocol to aim at best accuracy (at the prece of longer/costlier calculations).""" ) def __init__(self, **kwargs): @@ -139,8 +142,8 @@ def __init__(self, **kwargs): self.structure_help, self.relax_type, self.materials_help, - self.spin_type, self.electronic_type, + self.spin_type, self.properties_title, ipw.HTML("Select which properties to calculate:"), ipw.HBox(children=[ipw.HTML("Band structure"), self.bands_run]), @@ -165,7 +168,8 @@ class SmearingSettings(ipw.VBox): smearing_description = ipw.HTML( """

The smearing type and width is set by the chosen protocol. - Tick the box to override the default. + Tick the box to override the default, not advised unless you've mastered smearing effects (click HERE for a discussion).

""" ) @@ -236,11 +240,10 @@ def set_smearing(self, _=None): class KpointSettings(ipw.VBox): kpoints_distance_description = ipw.HTML( - """

- The k-points mesh density of the SCF calculation is set by the chosen protocol. + """

+ The k-points mesh density of the SCF calculation is set by the protocol. The value below represents the maximum distance between the k-points in each direction of reciprocal space. - Tick the box to override the default. -

""" + Tick the box to override the default, smaller is more accurate and costly.
""" ) # The default of `kpoints_distance` must be linked to the `protocol` diff --git a/qe.ipynb b/qe.ipynb index 7217d2602..485c9d75a 100644 --- a/qe.ipynb +++ b/qe.ipynb @@ -93,7 +93,7 @@ "app = WizardAppWidget(\n", " steps=[\n", " ('Select structure', structure_selection_step),\n", - " ('Configure work chain', configure_qe_app_work_chain_step),\n", + " ('Configure workflow', configure_qe_app_work_chain_step),\n", " ('Choose computational resources', submit_qe_app_work_chain_step),\n", " ('Status & Results', view_qe_app_work_chain_status_and_results_step),\n", " ])\n",
Functional