Source code for ase2sprkkr.input_parameters.definitions.bsfek
"""DOS task input parameters definition"""
from ...common.grammar_types import SetOf, Integer
from .sections import TASK, CONTROL, TAU, ENERGY, SITES, STRCONST, MODE
from ..input_parameters_definitions import InputParametersDefinition as InputParameters, InputValueDefinition as V
from ...common.generated_configuration_definitions import Length
from ...common.configuration_definitions import if_not_defined
[docs]
def input_parameters():
"""BSF - Bloch-spectral-function task input-parameters definition"""
out = InputParameters(
"bsfek",
[
CONTROL("BSF"),
TAU,
TASK("BSF").copy(
[
V("NK", 300, info="total number of k-points"),
V(
"KPATH",
Integer(min=1, max=5),
info="Predefined path in k-space",
description="""
Bravais-lattice KPATH path
==========================
orb 1 Γ-Σ-X-G-U-A-Z-Λ-Γ-∆-Y-H-T-B-Z
+ X-D-S-C-Y + U-P-R-E-T + S-Q-T
2 Γ-Σ-X-G-U-A-Z-Λ-Γ-∆-Y-H-T-B-Z
3 Γ-Σ-X-G-U-A-Z-Λ-Γ
4 Γ-∆-Y-H-T-B-Z
hex 1 Γ-Σ-M-T’-K-T-Γ-∆-A-R-L-S’-H-S-A
+ M-U-L + K-P-H
2 Γ-Σ-M-T’-K-T-Γ-∆-A-R-L-S’-H-S-A
3 Γ-Σ-M-T’-K-T-Γ-∆-A
4 Γ-Σ-M
5 K-T-Γ
sc 1 Γ-∆-X-Y-M-V-R-Λ-Γ-Σ-M
2 Γ-∆-X-Y-M-V-R-Λ-Γ
3 Γ-∆-X-Y-M-V-R
4 Γ-∆-X-Y-M
fcc 1 X-∆-Γ-Λ-L-Q-W-N-K-Σ-Γ
+ L-M-U-S-X-Z-W-D-U
2 X-∆-Γ-Λ-L-Q-W-N-K-Σ-Γ
3 X-∆-Γ-Λ-L
4 Γ-∆-X
5 Γ-Λ-L
bcc 1 Γ-D-H-G-N-Σ-Γ-Λ-P-F-H + N-D-P
2 Γ-D-H-G-N-Σ-Γ-Λ-P-F-H
3 Γ-D-H-G-N-Σ-Γ-Λ-P
4 Γ-D-H-G-N-Σ-Γ
5 Γ-D-H
""",
is_optional=True,
),
*if_not_defined(
"KPATH",
[
V(
"NKDIR",
Length("KA", "KE", default_values=[[0.0, 0.0, 0.0], [1.0, 1.0, 1.0]]),
info="Number of directions treated in k-spaces",
is_required="Please, specify either TASK.KPATH or TASK.KA and TASK.KE",
),
V(
"KA",
SetOf(float, length=3),
is_repeated="NUMBERED",
info="First k-vector segment in k-space in multiples of 2π/a and rectangular coordinates with * = 1, ...,NKDIR",
is_required="Please, specify either TASK.KPATH or TASK.KA and TASK.KE",
),
V(
"KE",
SetOf(float, length=3),
is_repeated="NUMBERED",
info="First k-vector segment in k-space in multiples of 2π/a and rectangular coordinates with * = 1, ...,NKDIR",
is_required="Please, specify either TASK.KPATH or TASK.KA and TASK.KE",
),
],
),
]
),
ENERGY(
emin=(-0.2, "The lowest E-value", None),
emax=(-1.0, "The highest E-value", None),
defaults={"GRID": 3, "NE": 200, "ImE": 0.001},
),
CONTROL("BLOCHSF"),
TAU,
MODE,
STRCONST,
SITES,
],
executable="kkrgen",
mpi=True,
info="BSFEK - Bloch spectral functions in the E-K plane",
)
class BSFEKTaskSection(out["TASK"].result_class):
def k_path_gui(self, atoms):
from ase2sprkkr.gui.k_path import k_path_gui
out = k_path_gui(atoms)
if out:
self.KPATH.clear()
self.set(out)
out["TASK"].result_class = BSFEKTaskSection
return out
# TODO - AKI scripts to generate KA/KE