fermi=None # or 0.0 – the Fermi level is taken from the DFT calculations; e.g. -0.5 – the Fermi level is shifted by -0.5 eV.
orbs = 'sp' # s and p orbitals of the sample – calculations approx. 4× faster than 'spd', more tip orbitals allowed (dz2, dxz and dyz) and tilting of orbitals is allowed–; 'spd' – works fine for Fireball and FHI-AIMS, GPAW can do mistakes.
pbc=(0,0) # only the original geometry; (0.5,0.5) three more cells are added to the right and behind the original geometry; (1,1) 8 cells are added around the original geometry ; (2,2) 8+16 cells are added around the original geometry …
imaginary = False # do not change, only for possible future development.
cut_min=-15.0 # all molecular orbitals (eigen-states) with their eigen-energies lower than -15.0 eV bellow the Fermi level are excluded from the calculations.
cut_max=5.0 # all molecular orbitals (eigen-states) with their eigen-energies higher than 5.0 eV above the Fermi level are excluded from the calculations.
# note: For a proper slab (more than 3 layers of substrate, big unit cell approx. >= 15 Å in x and y, since only gamma point can be used now) the cut can be only twice eta (width of the Lorentzian used for calcultions) + extreme voltage used for in the dI/dV or STM calculations. For single molecules wider cut, so all important molecular orbitals are in the cut. If there is NO molecular orbital in the reading procedure, than the procedure will stop itself.
cut_at=-1 # all atoms of the substrate are taken into account; 50 - tunneling from only FIRST fifty atoms of the sample are taken into account – normally only the adsorbed molecule and/or the first layer of substrate are important for the calculations.
lvs = None # parameter only when Fireball inputs are read – lattice vector of the cell –, if periodic boundary conditions (PBC) are not stated – pbc=(0,0) – then None is fine;; if PBC are required, then 3×3 python/numpy array containing cell parameters is needed for Fireball input you can get them by e.g. np.loadtxt('input.lvs'); In the case of FHI-AIMS and GPAW this parameter is read automatically.
lower_atoms=[] # normally doesn't do anything; In special cases – in the molecule are elements with rather different barrier for tunneling (like an elements with very low or high electronegativity and therefore charged in the molecule) – some of the atoms needs to have different tunneling than other. These atoms are named here, but BEWARE python numbering is applied here – e.g. [0,1,2,3] means that 1st four atoms will have rescaled their tunneling.
lower_coefs=[] # normally doesn't do anything; Here are written rescaling constants (lowering coefficients) for each atoms named in lower_atoms – e.g. [0.5,0.5,0.25,0.25] means that 1st two atoms have lowered their contribution to tunneling by factor of two and only one quarter of tunneling is taken into account for atom 3 and 4 in the lower_atoms list.
# note: So far this was used only for a TOAT molecule where oxygens have they rescaling constants (lowering coefficients) set to 0.5.
# note2: Since d-orbitals have a faster decay, than s and p orbitals, then all tunelling contributions from d orbitals are automatically decreased. A constant 0.2 is used – it equals to a ratio between radial function of valence s and d at 4-7 Å above the atom.
dIdV( V, WF, eta ,eig, R, Rat, coes, orbs='sp', s=0.0, px =0.0, py=0.0, pz=0.0, dxz=0.0, dyz=0.0, dz2=0.0)
V # applied sample bias = (energy vs. the Fermi Level in eV).
WF # the Work-function (normally ~5 eV gives reasonable results).
eta # Width of the Lorentzian function for energy smearing deppending on system it can reach various values: for single molecular orbital very low number – 1e-6 eV; For standard slabs – 0.05-0.1 eV; For low layered or small slabs – 0.3-0.5 eV.
eig # eigenenergies of sample states (=molecular orbitals) (given by 1st output of 3 of the reading procedure).
R #input of points in which you calculate dI/dV (relaxed via PP-AFM – you need to have linked PPAFM part and GridUtils of PPAFM to get them; or nonrelaxed via ReadSTM.mkSpaceGrid).
Rat # position of atoms of the sample (given by 3rdt output of 3 of the reading procedure).
coes # LCAO coefficients (given by 2nd output of 3 of the reading procedure).
orbs='sp' # the same as in Reading parameters
s=0.0 # <0.0,1.0> – contribution to the tunneling to/from s orbital on the PP.
px=0.0 # <0.0,1.0> – contribution to the tunneling to/from px orbital on the PP.
py=0.0 # <0.0,1.0> – contribution to the tunneling to/from py orbital on the PP.
pz=0.0 # <0.0,1.0> – contribution to the tunneling to/from pz orbital on the PP.
dxz=0.0 # <0.0,1.0> – contribution to the tunneling to/from dxz orbital on the PP.
dyz=0.0 # <0.0,1.0> – contribution to the tunneling to/from dyz orbital on the PP.
dz2=0.0 # <0.0,1.0> – contribution to the tunneling to/from dz2 orbital on the PP.
dIdV_tilt( V, WF, eta ,eig, R, R0, Rat, coes, orbs='sp', pz=0.0, pxy =0.0, dz2=0.0, dxyz=0.0, len_R=4.0, al=1.0)
# V-coes: no change
orbs='sp' # only 'sp' works here
pz=0.0 # <0.0,1.0> – contribution to the tunneling to/from tilting pz orbital on the PP.
pxy=0.0 # <0.0,1.0> – contribution to the tunneling to/from tilting px and py orbitals on the PP.
dz2=0.0 # <0.0,1.0> – contribution to the tunneling to/from dz2 orbital on the PP.
dxyz=0.0 # <0.0,1.0> – contribution to the tunneling to/from tilting dxz and dyz orbitals on the PP.
len_R=4.0 # length of the PP-tip “bond”; 4 Å is an standard length in PPAFM calculations
al=1.0 # (0.0,2.0> – rescalling constants of the tilting; 1.0 – tilts with the same angle as the PP; 2.0 – tilts twice as fast; 0.5 – tilts twice as slow.
STM( V, nV, WF, eta ,eig, R, Rat, coes, orbs='sp', s=0.0, px =0.0, py=0.0, pz=0.0, dxz=0.0, dyz=0.0, dz2=0.0, WF_decay=1.0)
# note: everything the same as dI/dV except for:
nV # number of dI/dV steps - should be approx. V/eta +1 ; STM is rectangular integrated from the dI/dV;
WF_decay=1.0 # How the Workfunction (barrier and therefore tunneling decay) is changing with increasing/decreasing voltage for each dI/dV step; 1.0 – the change of the tunneling decay scales with the voltage (at V=1.0 is WF=4.0 eV); 0.0 – no change with the voltage.
UNDER DEVELOPMENT