Source code for ase2sprkkr.input_parameters.definitions.arpes
"""ARPES task input parameters definition"""
from ...common.grammar_types import SetOf, DefKeyword, Keyword, Range, Array, flag
from .sections import CONTROL, TAU, ENERGY, SITES
from ..input_parameters_definitions import (
InputParametersDefinition as InputParameters,
InputValueDefinition as V,
InputSectionDefinition as Section,
)
from ...sprkkr.sprkkr_grammar_types import Site
[docs]
def input_parameters():
return InputParameters(
"arpes",
[
CONTROL("ARPES"),
TAU,
ENERGY(
emin=(None, "Minimum of the energy window in eV with respect to the Fermi level", -8.0),
emax=(None, "Maximum of the energy window in eV with respect to the Fermi level", 5.0),
add=[
V("EWORK_EV", 4.2, info="Inner potential of the bulk crystal in eV"),
V(
"IMV_INI_EV", 0.05, info="Imaginary part of the potential in eV (initial state)"
), # alternatively you can use VIL (in eV) or IMV_INI (in Ry)'),
V(
"IMV_FIN_EV", 2.0, info="Imaginary part of the potential in eV (final state)"
), # alternatively you can use VIH (in eV) or IMV_FIN (in Ry)'),
],
defaults={"GRID": 1, "NE": 300},
),
SITES.copy(defaults={"NL": 4}),
Section(
"TASK",
[
V(
"TASK",
DefKeyword(
{
"ARPES": "Angle resolved photoemission spectroscopy",
"AIPES": "Angle integrated photoemission spectroscopy",
"SPLEED": "Spin polarized LEED (experimental feature)",
"BAND": "band structure calculations (experimental feature)",
}
),
name_in_grammar=False,
info="Type of the calculation",
),
V("IQ_AT_SURF", Site.I, 1),
V("MILLER_HKL", SetOf(int, length=3), [0, 0, 1]),
V("CRYS_VEC", True, info="Miller indices with respect to crystalographic primitive vectors"),
V(
"STRVER",
1,
is_expert=True,
is_always_added=True,
info="Set to 0 to supply the ARPES input file 'struc.inp' manually (and do not generate it).",
),
V(
"INPVER",
1,
is_expert=True,
is_always_added=True,
info="Set to 0 to use an old input.inp from old rslab",
),
],
),
Section(
"SPEC_PH",
[
V("THETA", 45.0, info="Direction of the photon (the polar coordinate)"),
V("PHI", 0.0, info="Direction of the photon (the azimuth coordinate)"),
V("POL_P", DefKeyword("P", "S", "C+", "C-"), info="Polarization of the light"),
V("EPHOT", 25.0, info="Photon energy in eV"),
# Expert
V("ALQ", expert=45.0, info="Alignment of polarization vector or pol.ellipsis"),
V(
"DELQ",
expert=0.0,
info="Phase shift between real and imaginary part of e-vector, delq=90 for circular polarized light",
),
V(
"NPOL",
Keyword(
{
0: "unpolarized and p-s dichroism for the calculation",
1: "p-pol or rcp or elliptical (depends on icirc, etc.)",
2: "s-pol or lcp or elliptical (depends on icirc, etc.)",
3: "dichroism (ddad, ldad)",
}
),
expert=1,
info="Controls the polarization and dichroism",
),
V(
"ICIRC",
Keyword(
{
0: "elliptically pol. light: alq, delq arbitrary",
1: "linear pol. light: alq arbitrary, delq=0",
2: "circular pol. light: alq=45, delq = 90",
}
),
expert=1,
info="controls the polarization and dichroism",
),
V(
"IDREH",
Keyword(
{
0: "linearly polarized (equals icirc=1)",
1: "right circular polarization",
-1: "left circular polarization",
}
),
expert=0,
info="Helicity of the photons",
),
V(
"IFSP",
Keyword({0: "fixed", 1: "variable"}),
is_expert=True,
is_required=False,
info="Photon azimuth angle type",
),
V("THETA_FIX", float, is_expert=True, info="Light and electrons are at fixed polarization angle"),
],
info="",
),
Section(
"SPEC_EL",
[
V("THETA", Range(float), info="Scattering angle", is_required=False),
V("PHI", Range(float), info="Scattering angle", is_required=False),
V(
"NT",
int,
info="Number of angular values for a rotation in polar coordinate.",
is_required=False,
),
V(
"NP",
int,
info="Number of angular values for a rotation in azimuth coordinate.",
is_required=False,
),
V("KA", Range(float), info="Scatering in momentum space ", is_required=False),
V(
"K1",
Range(float),
info="Translating vector of the scatering in momentum space ",
is_required=False,
),
V("NK1", int, info="Number of momentum steps for the integration", is_required=False),
V(
"K2",
Range(float),
info="Translating vector 2 of the scatering in momentum space ",
is_required=False,
),
V("NK2", int, info="Number of momentum steps 2 for the integration", is_required=False),
V(
"K3",
Range(float),
info="Translating vector 3 of the scatering in momentum space ",
is_required=False,
),
V("NK3", int, info="Number of momentum steps 3 for the integration", is_required=False),
V(
"K4",
Range(float),
info="Translating vector 4 of the scatering in momentum space ",
is_required=False,
),
V("NK4", int, info="Number of momentum steps 4 for the integration", is_required=False),
V("POL_E", DefKeyword("PZ")),
V("SPOL", int, is_required=False),
V("PSPIN", SetOf(float, length=3), is_required=False),
V("BETA1", float, is_required=False, info="Begin of the rotation"),
V("BETA2", float, is_required=False, info="End of the rotation"),
V("ROTAXIS", SetOf(int, length=3), is_required=False, info="Axis of the rotation"),
# expert
V(
"TYP",
Keyword(
{
0: "i(e) diagram",
1: "rotation diagram -> phi scan",
2: "scattering-angle diagram -> theta scan",
3: "orthonormal projection",
4: "stereographic projection",
},
description="3,4 only for angular resolved\npe (ups, xps) note: nt=np-> nx,ny",
),
expert=1,
info="Crystal coordinats in splout, xpsrun, or upsrun",
),
V("ISTR", Array(int, length=2), expert=[0, 0], info="beam number (h,k)"),
V("POL0", Array(int, length=3), expert=[0, 0, 0], info="initial pol."),
V("POL0L", Array(int, length=3), expert=[0, 0, 0], info="initial pol. in the laboratory system"),
V(
"Q1",
complex,
expert=1.0 + 0.0j,
info="Amplitude 1 of the photoelectron used in spin polarized calculations",
),
V(
"Q2",
complex,
expert=0.0 + 0.0j,
info="Amplitude 2 of the photoelectron used in spin polarized calculations",
),
V(
"Q3",
complex,
expert=0.0 + 0.0j,
info="Amplitude 3 of the photoelectron used in spin polarized calculations",
),
V(
"Q4",
complex,
expert=1.0 + 0.0j,
info="Amplitude 4 of the photoelectron used in spin polarized calculations",
),
],
),
Section(
"SPEC_STR",
[
V("N_LAYDBL", SetOf(int), [10, 10]),
V("NLAT_G_VEC", 57),
V("N_LAYER", 50),
V("SURF_BAR", SetOf(float), [0.25, 0.25]),
V("TRANSP_BAR", flag, False),
],
),
],
executable="kkrspec",
info="ARPES - Angle resolved photoemission spectroscopy",
)
""" ARPES task input parameters definition"""