stm keywords

STM calculator

stm.enabled

Enables STM/STS post-processing using the Tersoff–Hamann approximation.

type: scalar

default: false

allowed: true,false

example: stm.enabled = true

stm.method

STM method. Only ‘tersoff’ (Tersoff–Hamann) is supported.

type: string

default: 'tersoff'

allowed: 'tersoff'

example: stm.method = 'tersoff'

stm.h5

Path to the RESCU results HDF5 file to be used for STM/STS post-processing. If empty, the default <resultsFile>.h5 is used.

type: string

default: ''

example: stm.h5 = './results/ndg_ldos.h5'

stm.ldos.in

Path or prefix of the LDOS data to be used as input for the STM Tersoff–Hamann post-processing. Typically this points to the LDOS results produced by a DOS/LDOS calculation (without extension).

type: string

default: ''

example: stm.ldos.in = 'results/ndg_ldos'

stm.ldos.spin

Selects how the spin axis of a collinear LDOS is reduced before the map is built. A spin-polarised calculation writes one spatial column per spin per energy, so the channel count is twice the length of the energy axis. With ‘sum’, the default, the two components are added, since a non-magnetic tip probes the total. With ‘up’ or ‘down’ a single component is kept, for a spin-resolved image. The setting has no effect on a spin-unpolarised LDOS, where there is only one component per energy.

type: string

default: 'sum'

allowed: 'sum','up','down'

example: stm.ldos.spin = 'sum'

stm.ldos.stream

Controls whether the LDOS is read one plane at a time instead of being loaded whole. The constant-height and constant-current maps only need the LDOS near the reference plane at stm.vacuum.zref, so reading it plane by plane keeps the memory use small on large systems. With ‘auto’ the LDOS is read plane by plane when the run allows it (among other conditions, stm.vacuum.zref must be set and STS must be off) and as a whole volume otherwise, with the reason given in the log. With ‘on’ a run that cannot be read plane by plane stops with an error. With ‘off’ the whole volume is always read.

type: string

default: 'auto'

allowed: 'auto','on','off'

example: stm.ldos.stream = 'on'

stm.ldosPath

Internal HDF5 path to the LDOS dataset on which STM/STS is based.

type: string

default: '/dos/ldosVal'

example: stm.ldosPath = '/dos/ldosVal'

stm.latvecPath

Internal HDF5 path to the lattice vectors, used to convert grid indices to real-space coordinates.

type: string

default: '/domain/latvec'

example: stm.latvecPath = '/domain/latvec'

stm.gridPath

Internal HDF5 path to the coarse real-space grid dimensions (number of grid points along each direction).

type: string

default: '/domain/cgridn'

example: stm.gridPath = '/domain/cgridn'

stm.ldosChannel

Energy-channel index used when stm.bias.mode = ‘none’, i.e. when no energy window is integrated and a single LDOS slice is used.

type: scalar

default: 1

example: stm.ldosChannel = 5

stm.scanMode

STM scan mode: ‘H’ (constant-height), ‘C’ (constant-current), or ‘S’ (2D slice).

type: string

default: 'H'

allowed: 'H','C','S'

example: stm.scanMode = 'H'

stm.heightMode

Height selection mode. 1: use a single height h. 2: scan a range of heights between h1 and h2 using npoints.

type: scalar

default: 1

example: stm.heightMode = 1

stm.h

Tip height above the reference plane zOffset (in real-space units, e.g. Å). Used when heightMode = 1.

type: scalar

example: stm.h = 14.42

stm.h1

Lower bound of the tip height range (used when heightMode = 2).

type: scalar

example: stm.h1 = 10.0

stm.h2

Upper bound of the tip height range (used when heightMode = 2).

type: scalar

example: stm.h2 = 15.0

stm.npoints

Number of heights between h1 and h2 (used when heightMode = 2).

type: scalar

default: 0

example: stm.npoints = 5

stm.zOffset

Reference plane along z (e.g. top atomic layer). The effective tip height is z = zOffset + h.

type: scalar

default: 0

example: stm.zOffset = 0

stm.setpoint

Defines how the constant-current setpoint is chosen: ‘auto’ uses an internal heuristic, ‘percentile’ uses stm.p, ‘absolute’ uses stm.I0.

type: string

default: 'auto'

allowed: 'auto','percentile','absolute'

example: stm.setpoint = 'percentile'

stm.p

Percentile (%) used to determine the constant-current setpoint when stm.setpoint = ‘percentile’.

type: scalar

default: 20

example: stm.p = 20

stm.I0

Absolute current setpoint used when stm.setpoint = ‘absolute’. Units are arbitrary and consistent with the internal normalization of the STM current.

type: scalar

example: stm.I0 = 1.0

stm.m

Number of repetitions of the STM image along the first lattice vector (a-direction).

type: scalar

default: 1

example: stm.m = 3

stm.n

Number of repetitions of the STM image along the second lattice vector (b-direction).

type: scalar

default: 1

example: stm.n = 3

stm.colormapId

ID of the colormap used to render STM images (implementation-dependent, e.g. 0=viridis, 1=gray, 2=bone, 3=jet, 4=parula, 5+=hot).

type: scalar

default: 0

example: stm.colormapId = 5

stm.outPrefix

Base prefix used to name STM output files (images and auxiliary data).

type: string

default: 'stm'

example: stm.outPrefix = 'stm-N04'

stm.tip.coeff

Tip orbital-character coefficients for Chen’s derivative rule, over the real-harmonic basis [C_s C_px C_py C_pz C_dxy C_dyz C_dz2 C_dxz C_dx2y2] (1 to 9 entries; missing trailing entries are zero, so a legacy 4-vector [C_s C_px C_py C_pz] still works). The vector is normalised internally (global scale only). [1 0 0 0] is a pure s tip (Tersoff-Hamann limit); [0 0 0 1] is a pure p_z tip; [1 0 0 1] gives an (s+p_z) tip whose s-p interference can invert the contrast (e.g. CO-functionalized tip). For convenience use stm.tip.type instead. Overridden by stm.tip.type if that is set.

type: array

default: [1 0 0 0]

example: stm.tip.coeff = [1 0 0 1]

stm.tip.kappa

Tip vacuum decay constant kappa (Bohr^-1) used in the p-orbital derivative operators (1/kappa) d/dr. If omitted it is derived from the work function as kappa = sqrt(2*phi) (atomic units).

type: scalar

example: stm.tip.kappa = 1.13

stm.tip.phi

Tip work function (energy units, default 4.5 eV) used for the vacuum-decay constant k0=1.025*sqrt(phi[eV]) of the propagation, and to derive kappa when stm.tip.kappa is not given.

type: scalar

default: 4.5

example: stm.tip.phi = 4.5

stm.tip.href

Height (Angstrom) above the slab top of the basis-FAITHFUL reference plane on which the sample wavefunctions are reconstructed for Chen’s rule. The remaining gap (z0 - zref) is then propagated into the vacuum with the physical per-(k+G) evanescent decay, so the reciprocal d/dz -> -q_(k+G) operator is applied where it is exact. Default 2.0 A. Too small (reconstructing far out in the localized-basis tail) re-amplifies the atomic-lattice harmonics and gives a spurious multi-spot p_z ring; ~1.5-2.5 A reproduces the 3 nearest-neighbour-C lobes + N dip of Mandi & Palotas PRB 91, 165406.

type: scalar

default: 2

example: stm.tip.href = 2.0

stm.tip.type

Convenience selector of the tip orbital character for Chen’s rule (overrides stm.tip.coeff). Pure orbitals: ‘s’,’px’,’py’,’pz’,’dxy’,’dyz’,’dz2’(=3z^2-r^2),’dxz’,’dx2y2’. Interference mixes: ‘spz’=(s+p_z)/sqrt(2), ‘spz-‘=(s-p_z)/sqrt(2). For N-doped graphene (Mandi & Palotas PRB 91, 165406): ‘s’ gives the bright triangle, ‘pz’ the three C-neighbour lobes + N dip, ‘spz’ the honeycomb ring with a deep N dip.

type: string

allowed: 's','px','py','pz','dxy','dyz','dz2','dxz','dx2y2','spz','spz-'

example: stm.tip.type = 'pz'

stm.images.enabled

If true, generate 2D STM maps (height/current) as images. If false, skip image generation (useful for STS-only runs).

type: scalar

default: true

allowed: true,false

example: stm.images.enabled = true

stm.bias.mode

Bias integration mode: ‘none’ uses a single LDOS energy channel; ‘window’ integrates the LDOS from 0 to V (or V to 0 if V < 0); ‘dIdV’ computes a differential-conductance (STS) spectrum.

type: string

default: 'none'

allowed: 'none','window','dIdV'

example: stm.bias.mode = 'window'

stm.bias.V

Bias magnitude used in window mode. If units.energy = ‘eV’, V is in eV; otherwise in Hartree.

type: scalar

default: 0

example: stm.bias.V = -0.4

stm.linescan.enabled

If true, extract a 1D line-scan from the 2D STM map along a user-defined segment.

type: scalar

default: false

allowed: true,false

example: stm.linescan.enabled = true

stm.linescan.n

Number of sampling points along the line-scan segment.

type: scalar

default: 0

example: stm.linescan.n = 600

stm.linescan.x1

x-coordinate of the starting point of the line-scan (in real-space units, e.g. Å).

type: scalar

default: 0

example: stm.linescan.x1 = 0.0

stm.linescan.y1

y-coordinate of the starting point of the line-scan (in real-space units, e.g. Å).

type: scalar

default: 0

example: stm.linescan.y1 = 0.0

stm.linescan.x2

x-coordinate of the end point of the line-scan (in real-space units, e.g. Å).

type: scalar

default: 0

example: stm.linescan.x2 = 18.45

stm.linescan.y2

y-coordinate of the end point of the line-scan (in real-space units, e.g. Å).

type: scalar

default: 0

example: stm.linescan.y2 = 31.95634

stm.linescan.width

Optional transverse averaging width (in real-space units). If > 0, the line-scan is averaged over a strip of this half-width around the central segment.

type: scalar

default: 0

example: stm.linescan.width = 0.0

stm.sts.enabled

If true, compute scanning tunneling spectroscopy (STS) dI/dV at a fixed tip position as a function of bias.

type: scalar

default: false

allowed: true,false

example: stm.sts.enabled = true

stm.sts.x

x-coordinate of the STS tip position on the rendered plane (absolute units, e.g. Å).

type: scalar

default: 0

example: stm.sts.x = 0.0

stm.sts.y

y-coordinate of the STS tip position on the rendered plane (absolute units, e.g. Å).

type: scalar

default: 0

example: stm.sts.y = 0.0

stm.sts.z

Absolute z-coordinate of the STS tip position. If omitted, defaults to zOffset + h when available.

type: scalar

example: stm.sts.z = 14.44

stm.sts.bias0

Starting bias of the STS sweep. If units.energy = ‘eV’, bias0 is in eV.

type: scalar

default: -1

example: stm.sts.bias0 = -1.5

stm.sts.bias1

Ending bias of the STS sweep. If units.energy = ‘eV’, bias1 is in eV.

type: scalar

default: 1

example: stm.sts.bias1 = 1.5

stm.sts.biasstep

Bias increment used in the STS sweep between bias0 and bias1.

type: scalar

default: 0.1

example: stm.sts.biasstep = 0.05

stm.vacuum.enabled

If true, restrict STM/STS sampling to the vacuum region only (implementation-dependent).

type: scalar

default: false

allowed: true,false

example: stm.vacuum.enabled = true

stm.z0

If texttt{stm.z0} is set to $z_0$, then the tunneling matrix elements are computed on the plane $z = z_0$ using Eq. ref{eq:bardeenM}. Moreover, the system is decomposed into orbitals below (sample) and above (tip) the $z_0$-plane. Thence, the PDOS of the sample and tip ($n^S$ and $n^T$), and the sample and tip wavefunctions ($psi^S$ and $psi^T$) depend on the value of texttt{stm.z0}.

type: scalar

example: stm.z0 = 20.3

stm.voltage

Bias between the sample and tip.

type: scalar

example: stm.voltage = -0.1