Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature DFT+U #577

Merged
merged 31 commits into from
Apr 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
aa46fba
adding HubbardWidget to Advanced settings
AndresOrtegaGuerrero Dec 7, 2023
7aa1329
adding HubbardStructureData to logic of QeAppWorkchain
AndresOrtegaGuerrero Dec 7, 2023
14411f1
adding HubbardWidget test
AndresOrtegaGuerrero Dec 11, 2023
01d6c26
fix hubbard_widget logic when structure is upload
AndresOrtegaGuerrero Dec 11, 2023
d0e1b8c
add parameters in WorkFlow Summary
AndresOrtegaGuerrero Dec 11, 2023
50ed69d
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Dec 12, 2023
a9d7d1d
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Dec 13, 2023
9695d88
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Dec 19, 2023
b2deee7
loading parameters from finished job
AndresOrtegaGuerrero Dec 19, 2023
5d34f66
adding a reset method for new job
AndresOrtegaGuerrero Dec 19, 2023
184a145
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Dec 23, 2023
f6d4f87
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Jan 11, 2024
32dbd9d
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Jan 16, 2024
a258bd5
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Jan 22, 2024
eb13f4a
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Jan 23, 2024
f181372
update to main
AndresOrtegaGuerrero Jan 31, 2024
4981217
update test
AndresOrtegaGuerrero Jan 31, 2024
1641e8b
remove conflict in test
AndresOrtegaGuerrero Jan 31, 2024
18c1026
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Feb 12, 2024
636a52b
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Feb 13, 2024
9896d12
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Feb 19, 2024
2c18697
link hubbard selector with override
AndresOrtegaGuerrero Feb 21, 2024
bcdfd3d
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Feb 29, 2024
4fee69a
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Mar 22, 2024
d2eeb34
Merge branch 'main' into feature/dft_plus_u
AndresOrtegaGuerrero Apr 3, 2024
f8c80b7
merge with main
AndresOrtegaGuerrero Apr 11, 2024
8ed7bdf
update widget var name and conftest
AndresOrtegaGuerrero Apr 11, 2024
069fc6e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 11, 2024
fbbf0e9
change key logic in workflow
AndresOrtegaGuerrero Apr 13, 2024
44826d1
add spaces for logic in kind,orbital
AndresOrtegaGuerrero Apr 16, 2024
28ed235
Merge branch 'main' into feature/dft_plus_u
superstar54 Apr 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 40 additions & 3 deletions src/aiidalab_qe/app/configuration/advanced.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from aiidalab_qe.app.parameters import DEFAULT_PARAMETERS
from aiidalab_qe.common.panel import Panel
from aiidalab_qe.common.setup_pseudos import PseudoFamily
from aiidalab_qe.common.widgets import HubbardWidget

from .pseudos import PseudoFamilySelector, PseudoSetter

Expand Down Expand Up @@ -112,6 +113,13 @@ def __init__(self, default_protocol=None, **kwargs):
)
self.kpoints_distance.observe(self._callback_value_set, "value")

# Hubbard setting widget
self.hubbard_widget = HubbardWidget()
ipw.dlink(
(self.override, "value"),
(self.hubbard_widget.activate_hubbard, "disabled"),
lambda override: not override,
)
# Total change setting widget
self.total_charge = ipw.BoundedFloatText(
min=-3,
Expand Down Expand Up @@ -184,6 +192,7 @@ def __init__(self, default_protocol=None, **kwargs):
# Kpoints setting widget
self.kpoints_description,
ipw.HBox([self.kpoints_distance, self.mesh_grid]),
self.hubbard_widget,
self.pseudo_family_selector,
self.pseudo_setter,
]
Expand All @@ -207,6 +216,7 @@ def _update_input_structure(self, change):
self.magnetization._update_widget(change)
self.pseudo_setter.structure = change["new"]
self._display_mesh()
self.hubbard_widget.update_widgets(change["new"])
else:
self.magnetization.input_structure = None
self.pseudo_setter.structure = None
Expand Down Expand Up @@ -269,7 +279,18 @@ def get_panel_value(self):
# Set total charge
parameters["pw"]["parameters"]["SYSTEM"]["tot_charge"] = self.total_charge.value

# Set the pseudos
if self.hubbard_widget.activate_hubbard.value:
parameters["hubbard_parameters"] = self.hubbard_widget.hubbard_dict
if self.hubbard_widget.eigenvalues_label.value:
parameters["pw"]["parameters"]["SYSTEM"].update(
self.hubbard_widget.eigenvalues_dict
)

# add clean_workdir to the parameters
parameters["clean_workdir"] = self.clean_workdir.value

# add the pseudo_family to the parameters
parameters["pseudo_family"] = self.pseudo_family_selector.value
if self.pseudo_setter.pseudos:
parameters["pw"]["pseudos"] = self.pseudo_setter.pseudos
parameters["pw"]["parameters"]["SYSTEM"]["ecutwfc"] = (
Expand All @@ -278,8 +299,6 @@ def get_panel_value(self):
parameters["pw"]["parameters"]["SYSTEM"]["ecutrho"] = (
self.pseudo_setter.ecutrho
)
# if override is not ticked, use the default value
parameters["pw"]["parameters"]["SYSTEM"]["tot_charge"] = self.total_charge.value

if self.van_der_waals.value in ["none", "ts-vdw"]:
parameters["pw"]["parameters"]["SYSTEM"]["vdw_corr"] = (
Expand Down Expand Up @@ -381,6 +400,22 @@ def set_panel_value(self, parameters):
parameters["pw"]["parameters"]["SYSTEM"]["tot_magnetization"]
)

if parameters.get("hubbard_parameters"):
self.hubbard_widget.activate_hubbard.value = True
self.hubbard_widget.set_hubbard_widget(
parameters["hubbard_parameters"]["hubbard_u"]
)
starting_ns_eigenvalue = (
parameters.get("pw", {})
.get("parameters", {})
.get("SYSTEM", {})
.get("starting_ns_eigenvalue")
)

if starting_ns_eigenvalue is not None:
self.hubbard_widget.eigenvalues_label.value = True
self.hubbard_widget.set_eigenvalues_widget(starting_ns_eigenvalue)

def reset(self):
"""Reset the widget and the traitlets"""

Expand Down Expand Up @@ -408,6 +443,8 @@ def reset(self):
self.pseudo_setter._reset()
# reset the magnetization
self.magnetization.reset()
# reset the hubbard widget
self.hubbard_widget.reset()
# reset mesh grid
if self.input_structure is None:
self.mesh_grid.value = " "
Expand Down
6 changes: 6 additions & 0 deletions src/aiidalab_qe/app/result/summary_viewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,12 @@ def generate_report_parameters(qeapp_wc):
report["periodicity"] = PERIODICITY_MAPPING.get(
qeapp_wc.inputs.structure.pbc, "xyz"
)

# DFT+U
hubbard_dict = ui_parameters["advanced"].pop("hubbard_parameters", None)
if hubbard_dict:
hubbard_parameters = hubbard_dict["hubbard_u"]
report["hubbard_u"] = hubbard_parameters
report["tot_magnetization"] = pw_parameters["SYSTEM"].get(
"tot_magnetization", False
)
Expand Down
6 changes: 6 additions & 0 deletions src/aiidalab_qe/app/static/workflow_summary.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,12 @@
<td>{{ initial_magnetic_moments }}</td>
</tr>
{% endif %}
{% if hubbard_u %}
<tr>
<td>DFT+U</td>
<td>{{ hubbard_u }}</td>
</tr>
{% endif %}
</table>
</div>
</div>
Expand Down
Loading
Loading