-
Notifications
You must be signed in to change notification settings - Fork 87
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c2d098a
commit 0d30189
Showing
7 changed files
with
1,389 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
""" | ||
Module defining flows for Materials Project r2SCAN workflows | ||
Reference: https://doi.org/10.1103/PhysRevMaterials.6.013801 | ||
""" | ||
|
||
from __future__ import annotations | ||
|
||
from copy import deepcopy | ||
from dataclasses import dataclass, field | ||
|
||
from jobflow import Flow, Maker |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
""" | ||
Module defining jobs for Materials Project r2SCAN workflows | ||
Reference: https://doi.org/10.1103/PhysRevMaterials.6.013801 | ||
""" | ||
|
||
from __future__ import annotations | ||
|
||
from dataclasses import dataclass, field | ||
from typing import TYPE_CHECKING | ||
|
||
import numpy as np | ||
from monty.serialization import loadfn | ||
from pkg_resources import resource_filename | ||
|
||
from atomate2.vasp.jobs.base import BaseVaspMaker | ||
from atomate2.vasp.sets.base import VaspInputGenerator | ||
from atomate2.vasp.sets.core import RelaxSetGenerator, StaticSetGenerator | ||
|
||
__all__ = ["MPPrelaxMaker", "MPRelaxMaker", "MPStaticMaker"] | ||
|
||
_BASE_MP_R2SCAN_RELAX_SET = loadfn( | ||
resource_filename("atomate2.vasp.sets", "BaseMPr2SCANRelaxSet.yaml") | ||
) | ||
|
||
|
||
class MPRelaxR2SCANGenerator(VaspInputGenerator): | ||
config_dict: dict = field(lambda: _BASE_MP_R2SCAN_RELAX_SET) | ||
|
||
|
||
@dataclass | ||
class MPPreRelaxMaker(BaseVaspMaker): | ||
""" | ||
Maker to create VASP pre-relaxation job using PBEsol by default. | ||
Parameters | ||
---------- | ||
name : str | ||
The job name. | ||
input_set_generator : .VaspInputGenerator | ||
A generator used to make the input set. | ||
write_input_set_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.write_vasp_input_set`. | ||
copy_vasp_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.copy_vasp_outputs`. | ||
run_vasp_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.run_vasp`. | ||
task_document_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.TaskDoc.from_directory`. | ||
stop_children_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.should_stop_children`. | ||
write_additional_data : dict | ||
Additional data to write to the current directory. Given as a dict of | ||
{filename: data}. Note that if using FireWorks, dictionary keys cannot contain | ||
the "." character which is typically used to denote file extensions. To avoid | ||
this, use the ":" character, which will automatically be converted to ".". E.g. | ||
``{"my_file:txt": "contents of the file"}``. | ||
""" | ||
|
||
name: str = "MP-PreRelax" | ||
input_set_generator: VaspInputGenerator = field( | ||
default_factory=lambda: MPRelaxR2SCANGenerator( | ||
{"user_incar_settings": {"EDIFFG": -0.05, "METAGGA": None, "GGA": "PS"}} | ||
) | ||
) | ||
|
||
|
||
@dataclass | ||
class MPRelaxMaker(BaseVaspMaker): | ||
""" | ||
Maker to create VASP relaxation job using r2SCAN by default. | ||
Parameters | ||
---------- | ||
name : str | ||
The job name. | ||
bandgap : float | ||
The bandgap of the material in eV. Used to determine the k-point density. | ||
input_set_generator : .VaspInputGenerator | ||
A generator used to make the input set. | ||
write_input_set_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.write_vasp_input_set`. | ||
copy_vasp_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.copy_vasp_outputs`. | ||
run_vasp_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.run_vasp`. | ||
task_document_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.TaskDoc.from_directory`. | ||
stop_children_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.should_stop_children`. | ||
write_additional_data : dict | ||
Additional data to write to the current directory. Given as a dict of | ||
{filename: data}. Note that if using FireWorks, dictionary keys cannot contain | ||
the "." character which is typically used to denote file extensions. To avoid | ||
this, use the ":" character, which will automatically be converted to ".". E.g. | ||
``{"my_file:txt": "contents of the file"}``. | ||
""" | ||
|
||
name: str = "MP-Relax" | ||
bandgap: float = 0.0 | ||
input_set_generator: VaspInputGenerator = field( | ||
default_factory=MPRelaxR2SCANGenerator | ||
) | ||
|
||
def __post_init__(self): | ||
if self.bandgap < 1e-4: | ||
kspacing = 0.22 | ||
else: | ||
rmin = 25.22 - 2.87 * self.bandgap | ||
kspacing = 2 * np.pi * 1.0265 / (rmin - 1.0183) | ||
|
||
self.input_set_generator.config_dict["user_incar_settings"].update( | ||
KSPACING=kspacing if 0.22 < kspacing < 0.44 else 0.44, ISMEAR=0.05, SIGMA=-5 | ||
) | ||
|
||
|
||
@dataclass | ||
class MPStaticMaker(MPRelaxMaker): | ||
""" | ||
Maker to create VASP static job using r2SCAN by default. | ||
Parameters | ||
---------- | ||
name : str | ||
The job name. | ||
bandgap : float | ||
The bandgap of the material in eV. Used to determine the k-point density. | ||
input_set_generator : .VaspInputGenerator | ||
A generator used to make the input set. | ||
write_input_set_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.write_vasp_input_set`. | ||
copy_vasp_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.copy_vasp_outputs`. | ||
run_vasp_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.run_vasp`. | ||
task_document_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.TaskDoc.from_directory`. | ||
stop_children_kwargs : dict | ||
Keyword arguments that will get passed to :obj:`.should_stop_children`. | ||
write_additional_data : dict | ||
Additional data to write to the current directory. Given as a dict of | ||
{filename: data}. Note that if using FireWorks, dictionary keys cannot contain | ||
the "." character which is typically used to denote file extensions. To avoid | ||
this, use the ":" character, which will automatically be converted to ".". E.g. | ||
``{"my_file:txt": "contents of the file"}``. | ||
""" | ||
|
||
name: str = "MP-Static" | ||
input_set_generator: VaspInputGenerator = field(StaticSetGenerator) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
# Default VASP settings for calculations in the Materials Project | ||
# using the Regularized-Restored Strongly Constrained and Appropriately | ||
# Normed functional (r2SCAN). | ||
INCAR: | ||
ALGO: ALL | ||
EDIFF: 1.e-05 | ||
EDIFFG: -0.02 | ||
ENAUG: 1360 | ||
ENCUT: 680 | ||
IBRION: 2 | ||
ISIF: 3 | ||
ISMEAR: 2 | ||
ISPIN: 2 | ||
KSPACING: 0.22 | ||
LAECHG: True # Output AECCAR | ||
LASPH: True | ||
LCHARG: True # Output CHGCAR | ||
LELF: True # Output ELFCAR | ||
LMIXTAU: True | ||
LORBIT: 11 | ||
LREAL: Auto | ||
LVTOT: True # Output LOCPOT | ||
LWAVE: False # Don't output WAVECAR | ||
METAGGA: R2SCAN | ||
NELM: 200 | ||
NSW: 99 | ||
PREC: Accurate | ||
SIGMA: 0.2 | ||
MAGMOM: | ||
Ce: 5 | ||
Ce3+: 1 | ||
Co: 0.6 | ||
Co3+: 0.6 | ||
Co4+: 1 | ||
Cr: 5 | ||
Dy3+: 5 | ||
Er3+: 3 | ||
Eu: 10 | ||
Eu2+: 7 | ||
Eu3+: 6 | ||
Fe: 5 | ||
Gd3+: 7 | ||
Ho3+: 4 | ||
La3+: 0.6 | ||
Lu3+: 0.6 | ||
Mn: 5 | ||
Mn3+: 4 | ||
Mn4+: 3 | ||
Mo: 5 | ||
Nd3+: 3 | ||
Ni: 5 | ||
Pm3+: 4 | ||
Pr3+: 2 | ||
Sm3+: 5 | ||
Tb3+: 6 | ||
Tm3+: 2 | ||
V: 5 | ||
W: 5 | ||
Yb3+: 1 | ||
POTCAR_FUNCTIONAL: PBE_54 | ||
POTCAR: | ||
Ac: Ac | ||
Ag: Ag | ||
Al: Al | ||
Am: Am | ||
Ar: Ar | ||
As: As | ||
At: At | ||
Au: Au | ||
B: B | ||
Ba: Ba_sv | ||
Be: Be_sv | ||
Bi: Bi | ||
Br: Br | ||
C: C | ||
Ca: Ca_sv | ||
Cd: Cd | ||
Ce: Ce | ||
Cf: Cf | ||
Cl: Cl | ||
Cm: Cm | ||
Co: Co | ||
Cr: Cr_pv | ||
Cs: Cs_sv | ||
Cu: Cu_pv | ||
Dy: Dy_3 | ||
Er: Er_3 | ||
Eu: Eu | ||
F: F | ||
Fe: Fe_pv | ||
Fr: Fr_sv | ||
Ga: Ga_d | ||
Gd: Gd | ||
Ge: Ge_d | ||
H: H | ||
He: He | ||
Hf: Hf_pv | ||
Hg: Hg | ||
Ho: Ho_3 | ||
I: I | ||
In: In_d | ||
Ir: Ir | ||
K: K_sv | ||
Kr: Kr | ||
La: La | ||
Li: Li_sv | ||
Lu: Lu_3 | ||
Mg: Mg_pv | ||
Mn: Mn_pv | ||
Mo: Mo_pv | ||
N: N | ||
Na: Na_pv | ||
Nb: Nb_pv | ||
Nd: Nd_3 | ||
Ne: Ne | ||
Ni: Ni_pv | ||
Np: Np | ||
O: O | ||
Os: Os_pv | ||
P: P | ||
Pa: Pa | ||
Pb: Pb_d | ||
Pd: Pd | ||
Pm: Pm_3 | ||
Po: Po_d | ||
Pr: Pr_3 | ||
Pt: Pt | ||
Pu: Pu | ||
Ra: Ra_sv | ||
Rb: Rb_sv | ||
Re: Re_pv | ||
Rh: Rh_pv | ||
Rn: Rn | ||
Ru: Ru_pv | ||
S: S | ||
Sb: Sb | ||
Sc: Sc_sv | ||
Se: Se | ||
Si: Si | ||
Sm: Sm_3 | ||
Sn: Sn_d | ||
Sr: Sr_sv | ||
Ta: Ta_pv | ||
Tb: Tb_3 | ||
Tc: Tc_pv | ||
Te: Te | ||
Th: Th | ||
Ti: Ti_pv | ||
Tl: Tl_d | ||
Tm: Tm_3 | ||
U: U | ||
V: V_pv | ||
W: W_sv | ||
Xe: Xe | ||
Y: Y_sv | ||
# 2023-05-02: change Yb_2 to Yb_3 as Yb_2 gives incorrect thermodynamics for most systems with Yb3+ | ||
# https://github.com/materialsproject/pymatgen/issues/2968 | ||
Yb: Yb_3 | ||
Zn: Zn | ||
Zr: Zr_sv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,7 +12,7 @@ INCAR: | |
ISMEAR: 0 | ||
LORBIT: 11 | ||
LASPH: True | ||
LDAU: true | ||
LDAU: True | ||
LDAUJ: | ||
F: | ||
Co: 0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
INCAR: | ||
MAGMOM: | ||
Ce: 5 | ||
Ce3+: 1 | ||
Co: 0.6 | ||
Co3+: 0.6 | ||
Co4+: 1 | ||
Cr: 5 | ||
Dy3+: 5 | ||
Er3+: 3 | ||
Eu: 10 | ||
Eu2+: 7 | ||
Eu3+: 6 | ||
Fe: 5 | ||
Gd3+: 7 | ||
Ho3+: 4 | ||
La3+: 0.6 | ||
Lu3+: 0.6 | ||
Mn: 5 | ||
Mn3+: 4 | ||
Mn4+: 3 | ||
Mo: 5 | ||
Nd3+: 3 | ||
Ni: 5 | ||
Pm3+: 4 | ||
Pr3+: 2 | ||
Sm3+: 5 | ||
Tb3+: 6 | ||
Tm3+: 2 | ||
V: 5 | ||
W: 5 | ||
Yb3+: 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.