mat3ra-esse 2025.4.17.post0__py3-none-any.whl → 2025.5.13.post0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mat3ra-esse might be problematic. Click here for more details.
- mat3ra/esse/data/examples.py +1 -1
- mat3ra/esse/data/schemas.py +1 -1
- mat3ra/esse/models/apse/db/nist_jarvis/2024_3.13/__init__.py +3 -0
- mat3ra/esse/models/apse/db/nist_jarvis/2024_3.13/atoms.py +41 -0
- mat3ra/esse/models/apse/db/nist_jarvis/2024_3.13/db_entry.py +55 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/__init__.py +3 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/__init__.py +3 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/atomic_positions.py +51 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/atomic_species.py +34 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/cell.py +111 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/cell_parameters.py +36 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/control.py +169 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/electrons.py +139 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/hubbard.py +194 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/ions.py +422 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/k_points.py +73 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/system.py +841 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw_x.py +1990 -0
- mat3ra/esse/models/core/abstract/coordinate_2d.py +13 -0
- mat3ra/esse/models/core/abstract/coordinate_3d.py +13 -0
- mat3ra/esse/models/core/abstract/kpoint.py +16 -0
- mat3ra/esse/models/core/abstract/matrix_3x3.py +17 -0
- mat3ra/esse/models/core/abstract/vector_3d.py +13 -0
- mat3ra/esse/models/core/abstract/vector_boolean_3d.py +13 -0
- mat3ra/esse/models/core/primitive/array_of_ids.py +5 -5
- mat3ra/esse/models/core/primitive/object_with_id.py +14 -0
- mat3ra/esse/models/core/primitive/object_with_id_and_value.py +20 -0
- mat3ra/esse/models/core/reusable/atomic_scalars.py +4 -4
- mat3ra/esse/models/core/reusable/atomic_string.py +18 -0
- mat3ra/esse/models/core/reusable/atomic_vector.py +20 -0
- mat3ra/esse/models/core/reusable/atomic_vectors.py +9 -9
- mat3ra/esse/models/core/reusable/band_gap.py +8 -2
- mat3ra/esse/models/core/reusable/energy.py +2 -2
- mat3ra/esse/models/core/reusable/energy_accuracy_levels/__init__.py +3 -0
- mat3ra/esse/models/element.py +6 -6
- mat3ra/esse/models/material/__init__.py +68 -46
- mat3ra/esse/models/material/reusable/__init__.py +3 -0
- mat3ra/esse/models/material/reusable/repetitions.py +25 -0
- mat3ra/esse/models/material/reusable/slab/__init__.py +3 -0
- mat3ra/esse/models/material/reusable/slab/enums.py +13 -0
- mat3ra/esse/models/material/reusable/slab/miller_indices.py +16 -0
- mat3ra/esse/models/material/reusable/slab/number_of_layers.py +16 -0
- mat3ra/esse/models/material/reusable/slab/termination.py +18 -0
- mat3ra/esse/models/material/reusable/slab/thickness.py +16 -0
- mat3ra/esse/models/material/reusable/slab/vacuum.py +16 -0
- mat3ra/esse/models/material/reusable/supercell_matrix_2d.py +25 -0
- mat3ra/esse/models/material/reusable/supercell_matrix_3d.py +27 -0
- mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/__init__.py +3 -0
- mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/configuration.py +445 -0
- mat3ra/esse/models/methods_directory/physical/psp/file/__init__.py +129 -0
- mat3ra/esse/models/methods_directory/physical/psp/file_data_item/__init__.py +111 -0
- mat3ra/esse/models/properties_directory/derived_properties.py +13 -13
- mat3ra/esse/models/properties_directory/non_scalar/average_potential_profile.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/band_gaps.py +12 -3
- mat3ra/esse/models/properties_directory/non_scalar/band_structure.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/stress_tensor.py +1 -1
- mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py +50 -50
- mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/electron_affinity.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/fermi_energy.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/formation_energy.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/ionization_potential.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/surface_energy.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/total_energy.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py +2 -2
- mat3ra/esse/models/properties_directory/structural/atomic_forces.py +8 -8
- mat3ra/esse/models/properties_directory/structural/basis/__init__.py +38 -16
- mat3ra/esse/models/properties_directory/structural/basis/atomic_constraint.py +20 -0
- mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints.py +11 -14
- mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints_property.py +33 -0
- mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinate.py +10 -4
- mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinates.py +16 -27
- mat3ra/esse/models/properties_directory/structural/basis/atomic_element.py +6 -7
- mat3ra/esse/models/properties_directory/structural/basis/atomic_elements.py +27 -0
- mat3ra/esse/models/properties_directory/structural/basis/atomic_label.py +11 -5
- mat3ra/esse/models/properties_directory/structural/basis/atomic_labels.py +27 -0
- mat3ra/esse/models/properties_directory/structural/basis/bonds.py +3 -3
- mat3ra/esse/models/properties_directory/structural/basis/units_enum.py +12 -0
- mat3ra/esse/models/properties_directory/structural/lattice/__init__.py +16 -16
- mat3ra/esse/models/properties_directory/structural/lattice/lattice_vectors.py +10 -11
- mat3ra/esse/models/properties_directory/structural/lattice/units/__init__.py +3 -0
- mat3ra/esse/models/properties_directory/structural/lattice/units/angle_enum.py +12 -0
- mat3ra/esse/models/properties_directory/structural/lattice/units/length_enum.py +12 -0
- mat3ra/esse/models/properties_directory/structural/lattice/vectors/__init__.py +26 -0
- mat3ra/esse/models/properties_directory/structural/lattice/vectors/units_enum.py +12 -0
- mat3ra/esse/models/properties_directory/structural/magnetic_moments.py +8 -8
- mat3ra/esse/models/properties_directory/structural/molecular_pattern.py +9 -9
- mat3ra/esse/models/properties_directory/structural/patterns/functional_group.py +3 -3
- mat3ra/esse/models/properties_directory/structural/patterns/ring.py +3 -3
- mat3ra/esse/models/properties_directory/structural/patterns/special_bond.py +3 -3
- mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py +2 -2
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/METADATA +1 -1
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/RECORD +101 -49
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/WHEEL +1 -1
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/licenses/LICENSE.md +0 -0
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: apse/db/nist_jarvis/2024.3.13/atoms.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List, Optional
|
|
8
|
+
|
|
9
|
+
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ArrayOf3NumberElementsSchema(RootModel[List[float]]):
|
|
13
|
+
root: List[float] = Field(..., title="array of 3 number elements schema")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class NISTJARVISAtomsSchema(BaseModel):
|
|
17
|
+
model_config = ConfigDict(
|
|
18
|
+
extra="forbid",
|
|
19
|
+
)
|
|
20
|
+
lattice_mat: Optional[List[ArrayOf3NumberElementsSchema]] = Field(None, max_length=3, min_length=3)
|
|
21
|
+
"""
|
|
22
|
+
Crystal lattice vectors as a 3x3 matrix, in Angstroms
|
|
23
|
+
"""
|
|
24
|
+
coords: Optional[List[ArrayOf3NumberElementsSchema]] = Field(None, min_length=1)
|
|
25
|
+
"""
|
|
26
|
+
Atomic coordinates for each atom in the unit cell
|
|
27
|
+
"""
|
|
28
|
+
elements: Optional[List[str]] = Field(None, min_length=1)
|
|
29
|
+
"""
|
|
30
|
+
Atomic elements for each atom in the unit cell in the same order as `coords`
|
|
31
|
+
"""
|
|
32
|
+
abc: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
33
|
+
angles: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
34
|
+
cartesian: Optional[bool] = None
|
|
35
|
+
"""
|
|
36
|
+
True if the coordinates are in Cartesian space, false if in fractional space
|
|
37
|
+
"""
|
|
38
|
+
props: Optional[List[str]] = None
|
|
39
|
+
"""
|
|
40
|
+
Additional properties for each of the atoms
|
|
41
|
+
"""
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: apse/db/nist_jarvis/2024.3.13/db_entry.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List, Optional
|
|
8
|
+
|
|
9
|
+
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ArrayOf3NumberElementsSchema(RootModel[List[float]]):
|
|
13
|
+
root: List[float] = Field(..., title="array of 3 number elements schema")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class NISTJARVISAtomsSchema(BaseModel):
|
|
17
|
+
model_config = ConfigDict(
|
|
18
|
+
extra="forbid",
|
|
19
|
+
)
|
|
20
|
+
lattice_mat: Optional[List[ArrayOf3NumberElementsSchema]] = Field(None, max_length=3, min_length=3)
|
|
21
|
+
"""
|
|
22
|
+
Crystal lattice vectors as a 3x3 matrix, in Angstroms
|
|
23
|
+
"""
|
|
24
|
+
coords: Optional[List[ArrayOf3NumberElementsSchema]] = Field(None, min_length=1)
|
|
25
|
+
"""
|
|
26
|
+
Atomic coordinates for each atom in the unit cell
|
|
27
|
+
"""
|
|
28
|
+
elements: Optional[List[str]] = Field(None, min_length=1)
|
|
29
|
+
"""
|
|
30
|
+
Atomic elements for each atom in the unit cell in the same order as `coords`
|
|
31
|
+
"""
|
|
32
|
+
abc: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
33
|
+
angles: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
34
|
+
cartesian: Optional[bool] = None
|
|
35
|
+
"""
|
|
36
|
+
True if the coordinates are in Cartesian space, false if in fractional space
|
|
37
|
+
"""
|
|
38
|
+
props: Optional[List[str]] = None
|
|
39
|
+
"""
|
|
40
|
+
Additional properties for each of the atoms
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class NISTJARVISDbEntrySchema(BaseModel):
|
|
45
|
+
model_config = ConfigDict(
|
|
46
|
+
extra="allow",
|
|
47
|
+
)
|
|
48
|
+
atoms: Optional[NISTJARVISAtomsSchema] = Field(None, title="NIST JARVIS Atoms schema")
|
|
49
|
+
"""
|
|
50
|
+
NIST J.A.R.V.I.S. db entry `atoms` key schema. Based on https://figshare.com/articles/dataset/Monolayer_data_for_heterostructure/22344571
|
|
51
|
+
"""
|
|
52
|
+
jid: Optional[str] = None
|
|
53
|
+
"""
|
|
54
|
+
The id of the entry in the database, e.g. JVASP-677
|
|
55
|
+
"""
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: apse/file/applications/espresso/7.2/pw.x/atomic_positions.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, ConfigDict, Field, conint
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CardOption(Enum):
|
|
14
|
+
alat = "alat"
|
|
15
|
+
bohr = "bohr"
|
|
16
|
+
angstrom = "angstrom"
|
|
17
|
+
crystal = "crystal"
|
|
18
|
+
crystal_sg = "crystal_sg"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class Value(BaseModel):
|
|
22
|
+
model_config = ConfigDict(
|
|
23
|
+
extra="forbid",
|
|
24
|
+
)
|
|
25
|
+
X: Optional[str] = None
|
|
26
|
+
"""
|
|
27
|
+
label of the atom as specified in ATOMIC_SPECIES
|
|
28
|
+
"""
|
|
29
|
+
x: float
|
|
30
|
+
"""
|
|
31
|
+
atomic positions
|
|
32
|
+
"""
|
|
33
|
+
y: float
|
|
34
|
+
"""
|
|
35
|
+
atomic positions
|
|
36
|
+
"""
|
|
37
|
+
z: float
|
|
38
|
+
"""
|
|
39
|
+
atomic positions
|
|
40
|
+
"""
|
|
41
|
+
if_pos_1_: Optional[conint(ge=0, le=1)] = Field(None, alias="if_pos(1)", title="integer one or zero")
|
|
42
|
+
if_pos_2_: Optional[conint(ge=0, le=1)] = Field(None, alias="if_pos(2)", title="integer one or zero")
|
|
43
|
+
if_pos_3_: Optional[conint(ge=0, le=1)] = Field(None, alias="if_pos(3)", title="integer one or zero")
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class AtomicPositionsSchema(BaseModel):
|
|
47
|
+
model_config = ConfigDict(
|
|
48
|
+
extra="forbid",
|
|
49
|
+
)
|
|
50
|
+
card_option: Optional[CardOption] = "alat"
|
|
51
|
+
values: Optional[List[Value]] = None
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: apse/file/applications/espresso/7.2/pw.x/atomic_species.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List, Optional
|
|
8
|
+
|
|
9
|
+
from pydantic import BaseModel, ConfigDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Value(BaseModel):
|
|
13
|
+
model_config = ConfigDict(
|
|
14
|
+
extra="forbid",
|
|
15
|
+
)
|
|
16
|
+
X: Optional[str] = None
|
|
17
|
+
"""
|
|
18
|
+
label of the atom. Acceptable syntax: chemical symbol X (1 or 2 characters, case-insensitive) or chemical symbol plus a number or a letter, as in "Xn" (e.g. Fe1) or "X_*" or "X-*" (e.g. C1, C_h; max total length cannot exceed 3 characters)
|
|
19
|
+
"""
|
|
20
|
+
Mass_X: Optional[float] = None
|
|
21
|
+
"""
|
|
22
|
+
mass of the atomic species [amu: mass of C = 12]. Used only when performing Molecular Dynamics run or structural optimization runs using Damped MD. Not actually used in all other cases (but stored in data files, so phonon calculations will use these values unless other values are provided)
|
|
23
|
+
"""
|
|
24
|
+
PseudoPot_X: Optional[str] = None
|
|
25
|
+
"""
|
|
26
|
+
PseudoPot_X
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class AtomicSpeciesSchema(BaseModel):
|
|
31
|
+
model_config = ConfigDict(
|
|
32
|
+
extra="forbid",
|
|
33
|
+
)
|
|
34
|
+
values: Optional[List[Value]] = None
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: apse/file/applications/espresso/7.2/pw.x/cell.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import Optional, Union
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CellDofree(Enum):
|
|
14
|
+
all = "all"
|
|
15
|
+
ibrav = "ibrav"
|
|
16
|
+
a = "a"
|
|
17
|
+
b = "b"
|
|
18
|
+
c = "c"
|
|
19
|
+
fixa = "fixa"
|
|
20
|
+
fixb = "fixb"
|
|
21
|
+
fixc = "fixc"
|
|
22
|
+
x = "x"
|
|
23
|
+
y = "y"
|
|
24
|
+
xy = "xy"
|
|
25
|
+
xz = "xz"
|
|
26
|
+
xyz = "xyz"
|
|
27
|
+
shape = "shape"
|
|
28
|
+
volume = "volume"
|
|
29
|
+
field_2Dxy = "2Dxy"
|
|
30
|
+
field_2Dshape = "2Dshape"
|
|
31
|
+
epitaxial_ab = "epitaxial_ab"
|
|
32
|
+
epitaxial_ac = "epitaxial_ac"
|
|
33
|
+
epitaxial_bc = "epitaxial_bc"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class CellDynamics(Enum):
|
|
37
|
+
none = "none"
|
|
38
|
+
sd = "sd"
|
|
39
|
+
damp_pr = "damp-pr"
|
|
40
|
+
damp_w = "damp-w"
|
|
41
|
+
bfgs = "bfgs"
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class CellSchema(BaseModel):
|
|
45
|
+
model_config = ConfigDict(
|
|
46
|
+
extra="forbid",
|
|
47
|
+
)
|
|
48
|
+
press: Optional[float] = 0
|
|
49
|
+
"""
|
|
50
|
+
Target pressure [KBar] in a variable-cell md or relaxation run.
|
|
51
|
+
"""
|
|
52
|
+
wmass: Optional[float] = None
|
|
53
|
+
"""
|
|
54
|
+
Fictitious cell mass [amu] for variable-cell simulations (both 'vc-md' and 'vc-relax'). Default: 0.75*Tot_Mass/pi**2 for Parrinello-Rahman MD; 0.75*Tot_Mass/pi**2/Omega**(2/3) for Wentzcovitch MD
|
|
55
|
+
"""
|
|
56
|
+
cell_factor: Optional[float] = None
|
|
57
|
+
"""
|
|
58
|
+
Used in the construction of the pseudopotential tables. It should exceed the maximum linear contraction of the cell during a simulation. Default: 2.0 for variable-cell calculations, 1.0 otherwise
|
|
59
|
+
"""
|
|
60
|
+
press_conv_thr: Optional[float] = 0.5
|
|
61
|
+
"""
|
|
62
|
+
Convergence threshold on the pressure for variable cell relaxation ('vc-relax' : note that the other convergence thresholds for ionic relaxation apply as well).
|
|
63
|
+
"""
|
|
64
|
+
cell_dofree: Optional[CellDofree] = "all"
|
|
65
|
+
"""
|
|
66
|
+
Select which of the cell parameters should be moved
|
|
67
|
+
"""
|
|
68
|
+
cell_dynamics: Optional[CellDynamics] = "bfgs"
|
|
69
|
+
"""
|
|
70
|
+
CASE ( calculation == 'vc-relax' )
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class CellDynamics1(Enum):
|
|
75
|
+
none = "none"
|
|
76
|
+
pr = "pr"
|
|
77
|
+
w = "w"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class CellSchema1(BaseModel):
|
|
81
|
+
model_config = ConfigDict(
|
|
82
|
+
extra="forbid",
|
|
83
|
+
)
|
|
84
|
+
press: Optional[float] = 0
|
|
85
|
+
"""
|
|
86
|
+
Target pressure [KBar] in a variable-cell md or relaxation run.
|
|
87
|
+
"""
|
|
88
|
+
wmass: Optional[float] = None
|
|
89
|
+
"""
|
|
90
|
+
Fictitious cell mass [amu] for variable-cell simulations (both 'vc-md' and 'vc-relax'). Default: 0.75*Tot_Mass/pi**2 for Parrinello-Rahman MD; 0.75*Tot_Mass/pi**2/Omega**(2/3) for Wentzcovitch MD
|
|
91
|
+
"""
|
|
92
|
+
cell_factor: Optional[float] = None
|
|
93
|
+
"""
|
|
94
|
+
Used in the construction of the pseudopotential tables. It should exceed the maximum linear contraction of the cell during a simulation. Default: 2.0 for variable-cell calculations, 1.0 otherwise
|
|
95
|
+
"""
|
|
96
|
+
press_conv_thr: Optional[float] = 0.5
|
|
97
|
+
"""
|
|
98
|
+
Convergence threshold on the pressure for variable cell relaxation ('vc-relax' : note that the other convergence thresholds for ionic relaxation apply as well).
|
|
99
|
+
"""
|
|
100
|
+
cell_dofree: Optional[CellDofree] = "all"
|
|
101
|
+
"""
|
|
102
|
+
Select which of the cell parameters should be moved
|
|
103
|
+
"""
|
|
104
|
+
cell_dynamics: Optional[CellDynamics1] = None
|
|
105
|
+
"""
|
|
106
|
+
CASE ( calculation == 'vc-md' )
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class ESSE(RootModel[Union[CellSchema, CellSchema1]]):
|
|
111
|
+
root: Union[CellSchema, CellSchema1] = Field(..., title="cell schema")
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: apse/file/applications/espresso/7.2/pw.x/cell_parameters.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CardOption(Enum):
|
|
14
|
+
alat = "alat"
|
|
15
|
+
bohr = "bohr"
|
|
16
|
+
angstrom = "angstrom"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Values(BaseModel):
|
|
20
|
+
model_config = ConfigDict(
|
|
21
|
+
extra="forbid",
|
|
22
|
+
)
|
|
23
|
+
v1: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
24
|
+
v2: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
25
|
+
v3: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class CellParametersSchema(BaseModel):
|
|
29
|
+
model_config = ConfigDict(
|
|
30
|
+
extra="forbid",
|
|
31
|
+
)
|
|
32
|
+
card_option: Optional[CardOption] = None
|
|
33
|
+
"""
|
|
34
|
+
label of the atom. Acceptable syntax: chemical symbol X (1 or 2 characters, case-insensitive) or chemical symbol plus a number or a letter, as in "Xn" (e.g. Fe1) or "X_*" or "X-*" (e.g. C1, C_h; max total length cannot exceed 3 characters)
|
|
35
|
+
"""
|
|
36
|
+
values: Optional[Values] = None
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: apse/file/applications/espresso/7.2/pw.x/control.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import Optional
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, ConfigDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Calculation(Enum):
|
|
14
|
+
scf = "scf"
|
|
15
|
+
nscf = "nscf"
|
|
16
|
+
bands = "bands"
|
|
17
|
+
relax = "relax"
|
|
18
|
+
md = "md"
|
|
19
|
+
vc_relax = "vc-relax"
|
|
20
|
+
vc_md = "vc-md"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class Verbosity(Enum):
|
|
24
|
+
high = "high"
|
|
25
|
+
low = "low"
|
|
26
|
+
debug = "debug"
|
|
27
|
+
medium = "medium"
|
|
28
|
+
minimal = "minimal"
|
|
29
|
+
default = "default"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class RestartMode(Enum):
|
|
33
|
+
from_scratch = "from_scratch"
|
|
34
|
+
restart = "restart"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class DiskIo(Enum):
|
|
38
|
+
high = "high"
|
|
39
|
+
medium = "medium"
|
|
40
|
+
low = "low"
|
|
41
|
+
nowf = "nowf"
|
|
42
|
+
none = "none"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class ControlSchema(BaseModel):
|
|
46
|
+
model_config = ConfigDict(
|
|
47
|
+
extra="forbid",
|
|
48
|
+
)
|
|
49
|
+
calculation: Optional[Calculation] = "scf"
|
|
50
|
+
"""
|
|
51
|
+
A string describing the task to be performed
|
|
52
|
+
"""
|
|
53
|
+
title: Optional[str] = ""
|
|
54
|
+
"""
|
|
55
|
+
reprinted on output.
|
|
56
|
+
"""
|
|
57
|
+
verbosity: Optional[Verbosity] = "low"
|
|
58
|
+
"""
|
|
59
|
+
Currently two verbosity levels are implemented: high, low. 'debug' and 'medium' have the same effect as 'high'; 'default' and 'minimal' as 'low'
|
|
60
|
+
"""
|
|
61
|
+
restart_mode: Optional[RestartMode] = "from_scratch"
|
|
62
|
+
wf_collect: Optional[bool] = None
|
|
63
|
+
"""
|
|
64
|
+
OBSOLETE - NO LONGER IMPLEMENTED
|
|
65
|
+
"""
|
|
66
|
+
nstep: Optional[float] = 1
|
|
67
|
+
"""
|
|
68
|
+
Default: 1 if calculation == 'scf', 'nscf', 'bands'; 50 for the other cases; Number of molecular-dynamics or structural optimization steps performed in this run. If set to 0, the code performs a quick "dry run", stopping just after initialization. This is useful to check for input correctness and to have the summary printed. NOTE: in MD calculations, the code will perform "nstep" steps even if restarting from a previously interrupted calculation.
|
|
69
|
+
"""
|
|
70
|
+
iprint: Optional[float] = None
|
|
71
|
+
"""
|
|
72
|
+
band energies are written every iprint iterations
|
|
73
|
+
"""
|
|
74
|
+
tstress: Optional[bool] = False
|
|
75
|
+
"""
|
|
76
|
+
calculate stress. It is set to .TRUE. automatically if calculation == 'vc-md' or 'vc-relax'
|
|
77
|
+
"""
|
|
78
|
+
tprnfor: Optional[bool] = None
|
|
79
|
+
"""
|
|
80
|
+
calculate forces. It is set to .TRUE. automatically if calculation == 'relax','md','vc-md'
|
|
81
|
+
"""
|
|
82
|
+
dt: Optional[float] = 20
|
|
83
|
+
"""
|
|
84
|
+
time step for molecular dynamics, in Rydberg atomic units (1 a.u.=4.8378 * 10^-17 s : beware, the CP code uses Hartree atomic units, half that much!!!)
|
|
85
|
+
"""
|
|
86
|
+
outdir: Optional[str] = None
|
|
87
|
+
"""
|
|
88
|
+
input, temporary, output files are found in this directory, see also wfcdir
|
|
89
|
+
"""
|
|
90
|
+
wfcdir: Optional[str] = None
|
|
91
|
+
"""
|
|
92
|
+
This directory specifies where to store files generated by each processor (*.wfc{N}, *.igk{N}, etc.). Useful for machines without a parallel file system: set wfcdir to a local file system, while outdir should be a parallel or network file system, visible to all processors. Beware: in order to restart from interrupted runs, or to perform further calculations using the produced data files, you may need to copy files to outdir. Works only for pw.x.
|
|
93
|
+
"""
|
|
94
|
+
prefix: Optional[str] = "pwscf"
|
|
95
|
+
"""
|
|
96
|
+
prepended to input/output filenames: prefix.wfc, prefix.rho, etc.
|
|
97
|
+
"""
|
|
98
|
+
lkpoint_dir: Optional[bool] = None
|
|
99
|
+
"""
|
|
100
|
+
OBSOLETE - NO LONGER IMPLEMENTED
|
|
101
|
+
"""
|
|
102
|
+
max_seconds: Optional[float] = 10000000
|
|
103
|
+
"""
|
|
104
|
+
Jobs stops after max_seconds CPU time. Use this option in conjunction with option restart_mode if you need to split a job too long to complete into shorter jobs that fit into your batch queues.
|
|
105
|
+
"""
|
|
106
|
+
etot_conv_thr: Optional[float] = 0.0001
|
|
107
|
+
"""
|
|
108
|
+
Convergence threshold on total energy (a.u) for ionic minimization: the convergence criterion is satisfied when the total energy changes less than etot_conv_thr between two consecutive scf steps. Note that etot_conv_thr is extensive, like the total energy. See also forc_conv_thr - both criteria must be satisfied
|
|
109
|
+
"""
|
|
110
|
+
forc_conv_thr: Optional[float] = 0.001
|
|
111
|
+
"""
|
|
112
|
+
Convergence threshold on forces (a.u) for ionic minimization: the convergence criterion is satisfied when all components of all forces are smaller than forc_conv_thr. See also etot_conv_thr - both criteria must be satisfied
|
|
113
|
+
"""
|
|
114
|
+
disk_io: Optional[DiskIo] = None
|
|
115
|
+
"""
|
|
116
|
+
Specifies the amount of disk I/O activity: (only for binary files and xml data file in data directory; other files printed at each molecular dynamics / structural optimization step are not controlled by this option )
|
|
117
|
+
"""
|
|
118
|
+
pseudo_dir: Optional[str] = None
|
|
119
|
+
"""
|
|
120
|
+
directory containing pseudopotential files. Default: value of the $ESPRESSO_PSEUDO environment variable if set; '$HOME/espresso/pseudo/' otherwise
|
|
121
|
+
"""
|
|
122
|
+
tefield: Optional[bool] = False
|
|
123
|
+
"""
|
|
124
|
+
If .TRUE. a saw-like potential simulating an electric field is added to the bare ionic potential. See variables edir, eamp, emaxpos, eopreg for the form and size of the added potential.
|
|
125
|
+
"""
|
|
126
|
+
dipfield: Optional[bool] = False
|
|
127
|
+
"""
|
|
128
|
+
If .TRUE. and tefield==.TRUE. a dipole correction is also added to the bare ionic potential - implements the recipe of L. Bengtsson, PRB 59, 12301 (1999). See variables edir, emaxpos, eopreg for the form of the correction. Must be used ONLY in a slab geometry, for surface calculations, with the discontinuity FALLING IN THE EMPTY SPACE.
|
|
129
|
+
"""
|
|
130
|
+
lelfield: Optional[bool] = False
|
|
131
|
+
"""
|
|
132
|
+
If .TRUE. a homogeneous finite electric field described through the modern theory of the polarization is applied. This is different from tefield == .true. !
|
|
133
|
+
"""
|
|
134
|
+
nberrycyc: Optional[int] = 1
|
|
135
|
+
"""
|
|
136
|
+
In the case of a finite electric field ( lelfield == .TRUE. ) it defines the number of iterations for converging the wavefunctions in the electric field Hamiltonian, for each external iteration on the charge density
|
|
137
|
+
"""
|
|
138
|
+
lorbm: Optional[bool] = False
|
|
139
|
+
"""
|
|
140
|
+
If .TRUE. perform orbital magnetization calculation.
|
|
141
|
+
"""
|
|
142
|
+
lberry: Optional[bool] = False
|
|
143
|
+
"""
|
|
144
|
+
If .TRUE. perform a Berry phase calculation. See the header of PW/src/bp_c_phase.f90 for documentation
|
|
145
|
+
"""
|
|
146
|
+
gdir: Optional[float] = None
|
|
147
|
+
"""
|
|
148
|
+
For Berry phase calculation: direction of the k-point strings in reciprocal space. Allowed values: 1, 2, 3 1=first, 2=second, 3=third reciprocal lattice vector For calculations with finite electric fields (lelfield==.true.) "gdir" is the direction of the field.
|
|
149
|
+
"""
|
|
150
|
+
nppstr: Optional[float] = None
|
|
151
|
+
"""
|
|
152
|
+
For Berry phase calculation: number of k-points to be calculated along each symmetry-reduced string. The same for calculation with finite electric fields (lelfield==.true.).
|
|
153
|
+
"""
|
|
154
|
+
gate: Optional[bool] = False
|
|
155
|
+
"""
|
|
156
|
+
In the case of charged cells (tot_charge .ne. 0) setting gate = .TRUE. represents the counter charge (i.e. -tot_charge) not by a homogeneous background charge but with a charged plate, which is placed at zgate (see below). Details of the gate potential can be found in T. Brumme, M. Calandra, F. Mauri; PRB 89, 245406 (2014). Note, that in systems which are not symmetric with respect to the plate, one needs to enable the dipole correction! (dipfield=.true.). Currently, symmetry can be used with gate=.true. but carefully check that no symmetry is included which maps z to -z even if in principle one could still use them for symmetric systems (i.e. no dipole correction). For nosym=.false. verbosity is set to 'high'. Note: this option was called "monopole" in v6.0 and 6.1 of pw.x
|
|
157
|
+
"""
|
|
158
|
+
twochem: Optional[bool] = False
|
|
159
|
+
"""
|
|
160
|
+
IF .TRUE. , a two chemical potential calculation for the simulation of photoexcited systems is performed, constraining a fraction of the electrons in the conduction manifold.
|
|
161
|
+
"""
|
|
162
|
+
lfcp: Optional[bool] = False
|
|
163
|
+
"""
|
|
164
|
+
If .TRUE. perform a constant bias potential (constant-mu) calculation for a system with ESM method. See the header of PW/src/fcp_module.f90 for documentation. To perform the calculation, you must set a namelist FCP.
|
|
165
|
+
"""
|
|
166
|
+
trism: Optional[bool] = False
|
|
167
|
+
"""
|
|
168
|
+
If .TRUE. perform a 3D-RISM-SCF calculation [for details see H.Sato et al., JCP 112, 9463 (2000), doi:10.1063/1.481564]. The solvent's distributions are calculated by 3D-RISM, though solute is treated as SCF. The charge density and the atomic positions are optimized, simultaneously with the solvents. To perform the calculation, you must set a namelist RISM and a card SOLVENTS. If assume_isolated = 'esm' and esm_bc = 'bc1', Laue-RISM is calculated instead of 3D-RISM and coupled with ESM method (i.e. ESM-RISM). [for details see S.Nishihara and M.Otani, PRB 96, 115429 (2017)]. The default of mixing_beta is 0.2 for both 3D-RISM and Laue-RISM. For structural relaxation with BFGS, ignore_wolfe is always .TRUE. .
|
|
169
|
+
"""
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: apse/file/applications/espresso/7.2/pw.x/electrons.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MixingMode(Enum):
|
|
14
|
+
plain = "plain"
|
|
15
|
+
TF = "TF"
|
|
16
|
+
local_TF = "local-TF"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Diagonalization(Enum):
|
|
20
|
+
david = "david"
|
|
21
|
+
cg = "cg"
|
|
22
|
+
ppcg = "ppcg"
|
|
23
|
+
paro = "paro"
|
|
24
|
+
ParO = "ParO"
|
|
25
|
+
rmm_davidson = "rmm-davidson"
|
|
26
|
+
rmm_paro = "rmm-paro"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class EfieldPhase(Enum):
|
|
30
|
+
read = "read"
|
|
31
|
+
write = "write"
|
|
32
|
+
none = "none"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class Startingpot(Enum):
|
|
36
|
+
atomic = "atomic"
|
|
37
|
+
file = "file"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class Startingwfc(Enum):
|
|
41
|
+
atomic = "atomic"
|
|
42
|
+
atomic_random = "atomic+random"
|
|
43
|
+
random = "random"
|
|
44
|
+
file = "file"
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class ElectronsSchema(BaseModel):
|
|
48
|
+
model_config = ConfigDict(
|
|
49
|
+
extra="forbid",
|
|
50
|
+
)
|
|
51
|
+
electron_maxstep: Optional[int] = 100
|
|
52
|
+
"""
|
|
53
|
+
maximum number of iterations in a scf step. If exact exchange is active, this will affect the inner loops.
|
|
54
|
+
"""
|
|
55
|
+
exx_maxstep: Optional[int] = 100
|
|
56
|
+
"""
|
|
57
|
+
maximum number of outer iterations in a scf calculation with exact exchange.
|
|
58
|
+
"""
|
|
59
|
+
scf_must_converge: Optional[bool] = True
|
|
60
|
+
"""
|
|
61
|
+
If .false. do not stop molecular dynamics or ionic relaxation when electron_maxstep is reached. Use with care.
|
|
62
|
+
"""
|
|
63
|
+
conv_thr: Optional[float] = None
|
|
64
|
+
adaptive_thr: Optional[bool] = False
|
|
65
|
+
"""
|
|
66
|
+
If .TRUE. this turns on the use of an adaptive conv_thr for the inner scf loops when using EXX.
|
|
67
|
+
"""
|
|
68
|
+
conv_thr_init: Optional[float] = None
|
|
69
|
+
"""
|
|
70
|
+
When adaptive_thr = .TRUE. this is the convergence threshold used for the first scf cycle.
|
|
71
|
+
"""
|
|
72
|
+
conv_thr_multi: Optional[float] = None
|
|
73
|
+
"""
|
|
74
|
+
When adaptive_thr = .TRUE. the convergence threshold for each scf cycle is given by: max( conv_thr, conv_thr_multi * dexx )
|
|
75
|
+
"""
|
|
76
|
+
mixing_mode: Optional[MixingMode] = "plain"
|
|
77
|
+
mixing_beta: Optional[float] = None
|
|
78
|
+
"""
|
|
79
|
+
mixing factor for self-consistency
|
|
80
|
+
"""
|
|
81
|
+
mixing_ndim: Optional[int] = 8
|
|
82
|
+
"""
|
|
83
|
+
number of iterations used in mixing scheme
|
|
84
|
+
"""
|
|
85
|
+
mixing_fixed_ns: Optional[int] = 0
|
|
86
|
+
"""
|
|
87
|
+
For DFT+U : number of iterations with fixed ns ( ns is the atomic density appearing in the Hubbard term ).
|
|
88
|
+
"""
|
|
89
|
+
diagonalization: Optional[Diagonalization] = "david"
|
|
90
|
+
diago_thr_init: Optional[float] = None
|
|
91
|
+
"""
|
|
92
|
+
Convergence threshold (ethr) for iterative diagonalization (the check is on eigenvalue convergence).
|
|
93
|
+
"""
|
|
94
|
+
diago_cg_maxiter: Optional[int] = None
|
|
95
|
+
"""
|
|
96
|
+
For conjugate gradient diagonalization: max number of iterations
|
|
97
|
+
"""
|
|
98
|
+
diago_ppcg_maxiter: Optional[int] = None
|
|
99
|
+
"""
|
|
100
|
+
For ppcg diagonalization: max number of iterations
|
|
101
|
+
"""
|
|
102
|
+
diago_david_ndim: Optional[int] = 2
|
|
103
|
+
"""
|
|
104
|
+
For Davidson diagonalization: dimension of workspace (number of wavefunction packets, at least 2 needed).
|
|
105
|
+
"""
|
|
106
|
+
diago_rmm_ndim: Optional[int] = 4
|
|
107
|
+
"""
|
|
108
|
+
For RMM-DIIS diagonalization: dimension of workspace (number of wavefunction packets, at least 2 needed).
|
|
109
|
+
"""
|
|
110
|
+
diago_rmm_conv: Optional[bool] = False
|
|
111
|
+
"""
|
|
112
|
+
If .TRUE., RMM-DIIS is performed up to converge. If .FALSE., RMM-DIIS is performed only once.
|
|
113
|
+
"""
|
|
114
|
+
diago_gs_nblock: Optional[int] = 16
|
|
115
|
+
"""
|
|
116
|
+
For RMM-DIIS diagonalization: blocking size of Gram-Schmidt orthogonalization
|
|
117
|
+
"""
|
|
118
|
+
diago_full_acc: Optional[bool] = False
|
|
119
|
+
"""
|
|
120
|
+
If .TRUE. all the empty states are diagonalized at the same level of accuracy of the occupied ones. Otherwise the empty states are diagonalized using a larger threshold (this should not affect total energy, forces, and other ground-state properties).
|
|
121
|
+
"""
|
|
122
|
+
efield: Optional[float] = None
|
|
123
|
+
"""
|
|
124
|
+
Amplitude of the finite electric field (in Ry a.u.; 1 a.u. = 36.3609*10^10 V/m). Used only if lelfield==.TRUE. and if k-points (K_POINTS card) are not automatic.
|
|
125
|
+
"""
|
|
126
|
+
efield_cart: Optional[List[float]] = Field(
|
|
127
|
+
None, max_length=3, min_length=3, title="array of 3 number elements schema"
|
|
128
|
+
)
|
|
129
|
+
efield_phase: Optional[EfieldPhase] = "none"
|
|
130
|
+
startingpot: Optional[Startingpot] = None
|
|
131
|
+
startingwfc: Optional[Startingwfc] = "atomic+random"
|
|
132
|
+
tqr: Optional[bool] = False
|
|
133
|
+
"""
|
|
134
|
+
If .true., use a real-space algorithm for augmentation charges of ultrasoft pseudopotentials and PAWsets. Faster but numerically less accurate than the default G-space algorithm. Use with care and after testing!
|
|
135
|
+
"""
|
|
136
|
+
real_space: Optional[bool] = False
|
|
137
|
+
"""
|
|
138
|
+
If .true., exploit real-space localization to compute matrix elements for nonlocal projectors. Faster and in principle better scaling than the default G-space algorithm, but numerically less accurate, may lead to some loss of translational invariance. Use with care and after testing!
|
|
139
|
+
"""
|