Input Arguments¶
Most high-level functions in chinook operate on dictionaries as input format. This is done to support an efficient and high-density, yet largely human-readable input. Perhaps more importantly, this offers a high degree of flexibility in terms of required and optional keyword arguments. This comes however with a caveat that the full breadth of optional and required input arguments are not always conveniently accessible. This page then contains a comprehensive summary of the input dictionaries for a variety of functions.
Basis¶
Argument | Required | Datatype | Example | Notes |
---|---|---|---|---|
atoms | Yes | list of int | [0,0,1] | Unique elements are assigned distinct integers, consecutive |
Z | Yes | dict of int:int | {0:77,1:8} | Atomic number for each atom from atoms above |
orbs | Yes | list of lists of
string
|
[[‘60’],
[‘60’],
[‘21x’,’21y’]]
|
Elements define the orbital, one list for each atom,
elements define the orbital definition. Structure
of strings are: principal quantum number n,
orbital angular momentum l,
orbital label (s: N/A, p: x,y,z d:xz,yz,xy,XY,ZR)
|
pos | Yes | list of numpy arrays | [np.array([0.0,0.0,0.0]),
np.array([1.2,0.0,0.0]),
np.array([0.7,5.4,1.2])]
|
Positions of each atom in basis, each should be
3-float long, written in units of Angstrom
|
spin | No | dictionary | see below | Optional, for including spin-information, see below |
slab | No | dictionary | see below | Optional, for generating a slab-superstructure, see below |
orient | No | list | [np.pi/3,0,-np.pi/3] | One entry for each atom, indicating a
local rotation of the indicated atom, various formats accepted.
For more details, c.f. chinook.orbital.py
|
Spin¶
Argument | Required | Datatype | Example | Notes |
---|---|---|---|---|
bool | Yes | boolean | True | Switch for activating spin-degree of freedom.
Doubles basis size.
|
soc | No | boolean | True | Switch for activating spin-orbit coupling. |
lam | Yes* | dictionary | {0:0.15,1:0.0} | Required if soc:True, atomic-SOC strength |
order | No | char | F | Spin-ordering, ‘F’ for ferro, ‘A’ for antiferro, None otherwise |
dS | No* | float | 0.5 | Required if order if ‘F’ or ‘A’.
Energy splitting between up and down in eV
|
p_up | No* | numpy array of 3 float | np.array([0.0,0.0,0.0]) | For AF, position of spin-up states,
spin-up shifted down by dS on these sites.
|
p_dn | No* | numpy array of 3 float | np.array([0.0,0.0,0.0]) | For AF, position of spin-down states,
spin-down shifted down by dS on these sites.
|
Hamiltonian¶
Argument | Required | Datatype | Example | Notes |
---|---|---|---|---|
type | Yes | string | SK | type of Hamiltonian. Any of
‘SK’ for Slater-Koster, ‘txt’ for textfile,
‘list’ for list of float, ‘exec’ for executable
|
cutoff | Yes | float or list of float | [1.5,3.6] | Cutoff hopping distance.
Can be either a single float, or list of floats
if different Hamiltonian arguments apply for
different neighbour distances. Units of Angstroms.
|
renorm | Yes | float | 1.0 | overall bandwidth renormalization |
offset | Yes | float | 0.1 | overall chemical potential shift in eV |
tol | Yes | float | 1e-4 | Minimum strength term to include in eV |
avec | *No | numpy array of float | np.array([[1,0,0],
[0,1,0],
[0,0,1])
|
Lattice vectors 3x3 float, required with SK. |
spin | No | dictionary | See above | spin information, see above |
V | No | dictionary | {‘020’:0.0,’002200S’:0.5} | Slater Koster arguments, if applicable.
See Slater-Koster on Tight-Binding page.
|
list | No | list | [[0,0,0,0,0,5],…] |
if passing in list format.
|
filename | No | string | my_hamiltonian.txt | Path to Hamiltonian textfile. |
exec | No | list of methods | see Executable page | list of executable Python functions, see relevant page. |
Momentum Path¶
Argument | Required | Datatype | Example | Notes |
---|---|---|---|---|
type | Yes | char | F | type of units, either fractional,
i.e. units of reciprocal lattice units
‘F’, or absolute ‘A’ (i.e. 1/A)
|
pts | Yes | list of numpy array | [np.array([0,0,0]),
np.array([0.5,0.0.0])]
|
Endpoints for the momentum path.
An arbitrary number of points (>1) can be selected.
|
grain | Yes | int | 200 | Number of points between
each endpoint in the list of ‘pts’.
|
labels | No | list of str | [‘\Gamma’, ‘M’, ‘X’] | Labels for each of ‘pts’, supports
use of MathTex
|
Slab¶
Argument | Required | Datatype | Example | Notes |
---|---|---|---|---|
hkl | Yes | numpy array of int | np.array([0,0,1]) | Miller index of surface |
cells | Yes | float | 100.0 | Minimum thickness of slab, in Angstroms |
buff | Yes | float | 10.0” | Minimum thickness of vacuum buffer layer. |
term | Yes | tuple of two int | (1,1) | Atomic identities of atoms
on top and bottom of surface,
as defined in the basis arguments
|
fine | Yes | tuple of two float | (0.0,0.0) | Fine adjustments to surface
termination. See slab page for details.
|
ARPES Experiment¶
Argument | Required | Datatype | Example | Notes |
---|---|---|---|---|
cube | Yes | dictionary | {‘X’ : [-0.5,0.5,100],
‘Y’ : [-1,1,200],
‘E’ : [-2,0.1,1000],
‘kz’ : 0.0}
|
Region of interest, X, and Y
are momentum range, E is energy.
Fixed kz only. For a single slice,
can use e.g. ‘X’ : [0,0,1] .Can also
pass angles (rad) using ‘Tx’, ‘Ty’
instead of ‘X’, ‘Y’
|
pol | Yes | numpy array of float | np.array([1,0,0]) | Polarization vector |
hv | Yes | float | 21.2 | Photon energy, in eV |
T | Yes | float | 4.2 | Temperature, for Fermi distribution.
-1, or do not include ‘T’, to neglect
thermal distribution.
|
resolution | Yes | dictionary | {‘E’ : 0.01,
‘k’ : 0.005}
|
Energy, and momentum
(FWHM) resolution, in eV, 1/A.
|
SE | Yes | list | [‘constant’, 0.05] | Self-Energy,
see ARPES for further details
|
angle | No | float | 1.59 | Azimuthal rotation, in radians. |
W | No | float | 4.5 | Work function, in eV |
Vo | No | float | 11.5 | Inner potential in eV, for kz-dependence |
slab | No | bool | True | Specify if using a slab geometry,
will impose mean-free path. This
also truncates the eigenvectors.
|
mfp | No | float | 10.0 | Electron mean-free path,
sets penetration depth for slab-calculations.
|
spin | No | list | [1,np.array([0,0,1])] | Spin-ARPES, specify spin
projection (+/- 1 for up/down) and axis
as numpy array of 3 float.
|
threads | No | int | 4 | Split calculation across multiple parallel threads. |
rad_type | No | string | See below | Radial integral type, See below for details. |
rad_args | No | string | See below | Radial integral arguments, see below. |
Radial Integrals¶
Argument | Datatype | Notes |
---|---|---|
rad_type | string | Type of initial radial
state wavefunctions:
‘slater’ (default), ‘hydrogenic’, ‘grid’ (sample function on
mesh), ‘exec’ for user-defined executable
function, or ‘fixed’, where integrals are over-ridden for
constant values.
|
rad_args | if ‘rad_type’ is ‘grid’,
pass scaling of grid as a numpy array
of float. If ‘fixed’, pass dictionary
using ‘a-n-l-lp’ keys, float values
(e.g. ‘0-2-1-0’ for 2p to s transition).
|
|
phase_shifts | dictionary | Final state phase
shifts as first attempt at scattering
final states. Same input type as for ‘fixed’ above,
(e.g. ‘0-2-1-0’ for 2p to s transition).
|