System Description

Parameters describing physical systems

system.object

key word

:

system.object

possible values

:

a file name of a saved cNA_LCAO object

default value

:

\([\ ]\) (empty)

description

:

If it is not empty, the system is defined by the input

object. In this case, all other parameters related to

the system in the input file will not be used.

an example

:

system.object = cNA_LCAO_object.mat

system.hamiltonian

key word

:

system.hamiltonian

possible values

:

a file name of an user provided hamiltonian matrix

default value

:

\([\ ]\) (empty)

description

:

If it is not empty, the system is defined by the input

Hamiltonian matrix. In this case, all other parameters

related to the system in the input file will not be

used. In addition, since the real space wavefunction

basis have not been given explicitly, any calculation

related to real space wavefunction can not be performed.

The input file can be either a mat-file or xml-file, or

text file, but must be in the same format as nanodcal

output file Hamiltonian.mat or Hamiltonian.xml, or

Hamiltonian.txt.

an example

:

system.hamiltonian = \([\ ]\)

system.name

key word

:

system.name

possible values

:

any string

default value

:

NoName

description

:

a string provided by user to label the system and

it is not used in the calculation.

an example

:

system.name = Si-nanowire

system.spinType

key word

:

system.spinType

possible values

:

NoSpin, CollinearSpin, CoplanarSpin, GeneralSpin

default value

:

NoSpin

description

:

within the framework of non-relativistic theory, spin

should be an intrinsic physical property of the system

rather than an input parameter. Usually, some knowledge

about the type of spin is known before the calculation

and this priori knowledge can be used to save

computation time. From the computational point of view,

the parameter spinType is needed.

We first define a vector of spin polarization which,

of course, is along the direction of the polarization.

Its amplitude is defined as a ratio of

(N_p-N_ap)/(N_p+N_ap), where N_p (N_ap) is the number

of electrons whose spin are (anti) parallel to the

spin polarization. By considering the N above as the

charge density, spin polarization can also be viewed

as a function of position in the system.

NoSpin is used for a system in which spin polarization

is zero; CollinearSpin is used for a system in which

spin polarizations at different places are all along the

same direction (either parallel or anti-parallel);

CoplanarSpin is used for a system in which spin

polarizations at different places are all within a same

plane; GeneralSpin is used for a system in which spin

polarizations at different places have their own

directions, or there is no a priori knowledge about

the spins in the system.

an example

:

system.spinType = NoSpin

system.centralCellVectors

key word

:

system.centralCellVectors

possible values

:

3\(\times\)3 or 1\(\times\)6 or 1\(\times\)3 double matrix

default value

:

  1. For a system without leads, the system will be

considered as a molecule when the parameter

centralCellVectors is not given, and it will be

determined by nanodcal automatically.

  1. For a system with leads, the parameter

centralCellVectors may be automatically determined by

the geometry of the leads and the buffer layers.

  1. There is no default value for a periodic system,

it must be given, otherwise the system will be

considered as a molecule by nanodcal.

description

:

This parameter defines the three base vectors of the

central cell, either the primitive or super cell for a

periodic system or the central scattering region for an

open system, which is with a shape of parallelepiped.

When the parameter is a 3\(\times\)3 double matrix, its each

column forms one of the three basis vectors. When

the parameter is a 1\(\times\)6 double matrix, it defines the

three basis vectors by their lengths a,b,c; and the

angles between them, alpha, beta, gamma. The convention

is that the a-axis is collinear with x-axis, and the

b-axis lies in the xy-plane. When the parameter is a

1\(\times\)3 double matrix, the alpha, beta, gamma angles are

all equal to \(\pi\)/2.

The default unit for angle is degree.

an example

:

system.centralCellVectors = …

[[1.3 0 0] [0 1.6 0] [0 0 2.5]]

system.centralCellVector1 or system.centralCellVector2

key word

:

system.centralCellVector1 or system.centralCellVector2

or system.centralCellVector3

possible values

:

3\(\times\)1 or 1\(\times\)3 double vector

default value

:

no default value

description

:

it is a alternative method to input the

centralCellVectors. This input value will not be used

when system.centralCellVectors is provided.

an example

:

system.centralCellVector1 = [1 0 0]

system.centralCellVector2 = [0 1 0]

system.centralCellVector3 = [0 0 1]

system.atomBlock

key word

:

system.atomBlock

possible values

:

N (the number of atoms in the central cell)

default value

:

no default value, must be input

description

:

all neutral atom properties related to the atoms which

consist in the central cell are defined in this block.

This line must immediately be followed by another (N+2)

lines: one line of headers, N data lines for all of the

N atoms, and finally a line with a single word end to

indicate the end of the atomic data block.

The first four headers in the header line must be (not

necessarily in order) X, Y, Z, and AtomType. The

value of [X Y Z] describes the position of each site in

the system (see also the parameter

system.atomCoordinateFormat). The value of AtomType

describes what atomic species is located in that site,

it is normally the symbol of the atomic element.

Another header must be given is OrbitalType which

describes what atomic orbitals of the atoms are used as

the wavefunction basis in the LCAO calculation. It is

normally SZ, SZP, DZ, or DZP. While AtomType

and OrbitalType could be any string specified by an

user, the pre-calculated data file of the corresponding

neutral atom must be named as

AtomType_OrbitalType.nad, or

AtomType_OrbitalType.mat, and located either in

directory where the calculation is performed, or in the

directory $NANODCALROOT/neutralatomdata.

See manual for more information about the data files

concerning the neutral atoms.

The value of OrbitalType of each individual atom can

be specified differently, i.e., all atoms can have their

own unique basis different from each other, even if

they have the same AtomType. If all the atoms have the

same OrbitalType, the OrbitalType can be specified

elsewhere in one shot for all the atoms by the

parameter system.orbitalType.

Other possible headers are SpinPolarization,

SpinPolarization_x, SpinPolarization_y,

SpinPolarization_z; SpinPolarization_r,

SpinPolarization_theta, SpinPolarization_phi; etc.

SpinPolarization is used for CollinearSpin system to

describe the initial polarization of the atom. The set

of SpinPolarization_x, SpinPolarization_y, and

SpinPolarization_z and the set of SpinPolarization_r,

SpinPolarization_theta, and SpinPolarization_phi are

used for CoplanarSpin or GeneralSpin system to

describe the initial polarization of the atom. When a

system is specified as CoplanarSpin, the values of

SpinPolarization_y or SpinPolarization_phi will

automatically be set to zero.

The default unit of angle is degree.

an example

:

system.atomBlock = 2

AtomType OrbitalType X Y Z SpinPolarization

Fe DZP 0.000000 0.000000 0.000000 0.200000

Fe DZP 2.610100 2.610100 2.610100 0.200000

end

system.atomFile

key word

:

system.atomFile

possible values

:

any string representing the name of an input atomfile

default value

:

no default value

description

:

In this alternative input mode, the content of the data

block of system.atomBlock is written into a separate

file (See the description of system.atomBlock). The

file atomFile contains (N+2) lines where N is the

number of atoms in the central cell. While the first

line is the integer N, the rest (N+1) lines are

exactly the same as those defined in the block of

system.atomBlock. The line of end is needed when there

are extra data lines after the (N+2) line in the file.

This input value will not be used when system.atomBlock

is given.

an example

:

system.atomFile = system.xyz

system.atomPositionShift

key word

:

system.atomPositionShift

possible values

:

a 3\(\times\)1 double matrix

default value

:

[0 0 0]

description

:

In nanodcal calculations, we suggest that users put all

the atoms inside the central cell box. This parameter

helps to shift all the coordinates which are defined in

the system.atomFile or system.atomBlock, by a constant

vector. In other words, the real coordinates of atoms

used by nanodcal will be the original ones

plus this input parameter.

an example

:

system.atomPositionShift = [9 8 7]

system.atomCoordinateFormat

key word

:

system.atomCoordinateFormat

possible values

:

cartesian or fractional

default value

:

cartesian

description

:

The format of the atomic coordinates defined in

system.atomBlock or system.atomFile. If cartesian, the

coordinates are defined in the normal cartesian system.

If fractional, the coordinates are defined on the basis

of system.atomFractionalCoordinateBaseVectors.

an example

:

system.atomCoordinateFormat = fractional

system.atomFractionalCoordinateBaseVectors

key word

:

system.atomFractionalCoordinateBaseVectors

possible values

:

3\(\times\)3 or 1\(\times\)6 or 1\(\times\)3 double matrix

default value

:

system.centralCellVectors

description

:

When system.atomCoordinateFormat is fractional, this

parameter gives the three base vectors with which the

fractional coordinates are defined.

When the parameter is a 3\(\times\)3 double matrix, its each

column forms one of the three basis vectors. When

this parameter is a 1\(\times\)6 double matrix, it defines the

three basis vectors by giving their lengths, a, b, and

c, and the angles between them, alpha, beta, and gamma,

with the convention that the a-axis is collinear with

the x-axis, and the b-axis lies in the xy-plane. When

the parameter is a 1\(\times\)3 double matrix, the alpha, beta,

and gamma are all assumed to be \(\pi\)/2.

The default unit of angle is degree.

an example

:

system.atomFractionalCoordinateBaseVectors = …

[[1.3 0 0] [0 1.6 0] [0 0 2.5]]

system.atomPositionPrecision

key word

:

system.atomPositionPrecision

possible values

:

a small number

default value

:

1e-3 Bohr

description

:

Used as a criterion in symmetry analysis. If the

distance of two atoms or their images is less than this

parameter, the atoms are considered to occupy the same

site.

an example

:

system.atomPositionPrecision = 1e-6

system.orbitalType

key word

:

system.orbitalType

possible values

:

any string

default value

:

AtomicData

description

:

orbitalType describes what atomic orbitals of the atoms

are used as the wavefunction basis in the LCAO

calculations. See relevant part of the description of

system.atomBlock. The input value will not be used when

the information of orbital type has been given in

system.atomBlock or in the file of system.atomFile.

an example

:

system.orbitalType = DZP

system.neutralAtomDataDirectory

key word

:

system.neutralAtomDataDirectory

possible values

:

any string representing the directory where the

calculated neutral atom data are saved.

default value

:

$NANODCALROOT/neutralatomdata

description

:

This input is for users to apply their own neutral atom

data.

an example

:

system.neutralAtomDataDirectory = ./neutralatomdata

system.numberOfElectrons

key word

:

system.numberOfElectrons

possible values

:

a double value

default value

:

calculated automatically by nanodcal

description

:

the number of electrons in (the central cell of) the

system. This value will be generated automatically by

nanodcal and normally, there is no need for an user to

input it. However, this input offers the opportunity

to calculate a charged system.

an example

:

system.numberOfElectrons = 88

system.numberOfLeads

key word

:

system.numberOfLeads

possible values

:

0, 2 (number of leads in the system)

default value

:

0

description

:

the number of leads (probes) in the system.

an example

:

system.numberOfLeads = 2

system.typeOfLead1, system.typeOfLead2, …

key word

:

system.typeOfLead1, system.typeOfLead2, …

possible values

:

top, bottom, front, back, left, and right

default value

:

no default value, must be given

description

:

the value must be given for each of the leads in the

system. It describes the relative position of the lead

to the central scattering region. More precisely,

left means the direction of [ 0 0 -1]

right means the direction of [ 0 0 1]

top means the direction of [ 0 1 0]

bottom means the direction of [ 0 -1 0]

front means the direction of [-1 0 0]

back means the direction of [ 1 0 0]

In two-probe calculations, the pair of left and

right is recommended for possible better computation

efficiency.

an example

:

system.typeOfLead1 = left

system.typeOfLead2 = right

system.voltageOfLead1, system.voltageOfLead2

key word

:

system.voltageOfLead1, system.voltageOfLead2

possible values

:

V, a double value

default value

:

0

description

:

the bias voltage applied to the lead, in the unit of

Volt. The change of chemical potential of the lead due

to the bias voltage is -eV.

an example

:

system.voltageOfLead1 = 0

system.voltageOfLead2 = 1.2

system.spinDirectionOfLead1, system.spinDirectionOfLead2

key word

:

system.spinDirectionOfLead1, system.spinDirectionOfLead2

possible values

:

a 3\(\times\)1 array, a 2\(\times\)1 array, or a number

default value

:

the direction of the total spin of a lead which is

calculated as a periodic bulk system

description

:

If a lead which is a periodic bulk structure has

freedom to change the direction of its total spin, this

input parameter gives the desired direction of the total

spin of that lead when it is used as a part of the

device system.

When it is a 3\(\times\)1 array, this input is a directional

vector (not necessarily normalized) defined in cartesian

coordinates.

When it is a 2\(\times\)1 array, this input is a directional

vector defined in spherical coordinate system, i.e,

[theta, phi].

When it is a number s, it means the the direction is

[0, 0, s].

an example

:

system.spinDirectionOfLead1 = [0 0 1]

system.spinDirectionOfLead2 = [0 0 -1]

system.objectOfLead1, system.objectOfLead2

key word

:

system.objectOfLead1, system.objectOfLead2

possible values

:

a file name of a saved cNA_LCAO object of the lead, or

an input file name based on which the lead object can

be calculated

default value

:

no default value, must be input

description

:

The calculation of a system with leads can be performed

in two steps. The first step is to perform calculation

for each lead which is considered equivalently as an

infinite periodic system. In the second step, the

physical properties (potential, density etc.) of the

leads are used as boundary conditions applied to the

central scattering region of the device. In this

scenario, this input value is normally a filename of

the calculated and saved results of the leads.

This input can also be just another input file which

initiates a complete calculation of the leads. Please

note that all information about the leads are described

indirectly by this input file. Please also note

that if this input is another input file for a lead

calculation, the current directory will be changed to

that of the lead input file when performing the

calculation for the lead.

an example

:

system.objectOfLead1 = ../leftlead/cNA_LCAO_object.mat

system.objectOfLead2 = ../rightlead/cNA_LCAO_object.mat

system.numberOfGates

key word

:

system.numberOfGates

possible values

:

an integer

default value

:

0

description

:

the number of gates in the system. Gates are

capacitively coupled to the device scattering region.

They affect the device by providing effective

boundary conditions to the electrostatic potential.

an example

:

system.numberOfGates = 0

system.typeOfGate1, system.typeOfGate2

key word

:

system.typeOfGate1, system.typeOfGate2

possible values

:

top, bottom, front, back, left, and right

default value

:

no default value, must be specified

description

:

the value must be given for each of the gates in the

system. It describes the relative position of the gate

to the central scattering region. More precisely,

left means the direction of [ 0 0 -1]

right means the direction of [ 0 0 1]

top means the direction of [ 0 1 0]

bottom means the direction of [ 0 -1 0]

front means the direction of [-1 0 0]

back means the direction of [ 1 0 0]

an example

:

system.typeOfGate1 = top

system.typeOfGate2 = bottom

system.voltageOfGate1, system.voltageOfGate2

key word

:

system.voltageOfGate1, system.voltageOfGate2

possible values

:

Vg, a double value

default value

:

0

description

:

the voltage on the gate located at the boundary

of the system, the unit is Volt. Note that

the corresponding energy shift is -eVg.

an example

:

system.voltageOfGate1 = -3

system.voltageOfGate2 = 0

Parameter describing calculations

calculation.name

key word

:

calculation.name

possible values

:

one from the following list, or a cell array with

each cell containing one from the following list.

init, initial, initialize, initialization;

NSC, NSCF, nonSelfConsistentField,

rigidAtomicField, neutralAtomicPotential;

HarrisField, HarrisEnergyFunctional,

HarrisFunctional, HarrisEnergy,

Harris, HarrisApproximation;

SC, SCF, selfConsistentField, selfConsistent;

PSC, PSCF, PostSCF, postField,

postSelfConsistencyField, postSelfConsistentField;

TE, totalEnergy, energy;

TP, P, momentum;

force;

stress, stressMatrix;

Hessian, HessianMatrix, dynamicalMatrix;

BS, bandStructure;

CBS, complexBandStructure

FBS, fullBandStructure, fermiSphere, fermiSurface

eig, eigs, eigen, eigenStates;

SS, scatteringStates;

DOS, densityOfStates;

DOSS, densityOfScatteringStates;

CH, charge, electron, electrons;

PO, potential;

EPhCoupling;

TR, TM, transmission;

TRC, TMC, channel, transchannel,

transmission-channel, transmissionchannel;

CO, COND, conductance;

ACCO, ACCOND, acConductance;

IVC, IVCurve;

IETS;

relax, relaxation, structureRelaxation;

basisOptimization, BO;

default value

:

no default value, must be provided.

description

:

The above list of possible values are divided into

groups by ;. Values in the same group are all

equivalent, i.e. they invoke the same calculation.

Note that when choosing more than one calculation,

they must be arranged in a physically correct

(meaningful) order.

The following are descriptions of each calculation.

initialization : for construction of the system

object without calculating any physical property.

rigidAtomicField : a simple summation of precalculated

atomic self-consistent fields of all atoms involved in

the system without any further electronic relaxation.

This calculation generates the Hamiltonian and the real

space charge density needed for further calculations.

This field or potential is not self-consistent. In a DFT

calculation, this field accounts for those terms of the

Hamiltonian that need to be computed only once outside

of the self-consistent loop.

HarrisField : same as the rigidAtomicField

calculation but within the Harries functional method.

The Harris total energy is an approximation of the DFT

self-consistent total energy.

The HarrisField calculation can also be used together

with the SCF option. After 2 or 3 self-consistent

steps (by setting calculation.SCF.maximumSteps = 2 or

3), the estimation of total energy may be somewhat

improved.

SCF : generates Hamiltonian and density which are

consistent with each other.

PostSCF : modify the (self-consistent) Hamiltonian

by various additional terms, e.g. the terms caused by

an applied external magnetic field.

totalEnergy: the total energy of the system as defined

by the density-functional theory. The total energy can

also be decomposed into several terms, like kinetic energy,

band structure energy, short range energy, and so on.

momentum: calculate total electronic momentum of the

system and also the electronic momentum matrix.

force: atomic forces, which can also also be decomposed

into several terms, like kinetic force, short range

force, and so on.

stress: the stress tensor of the system, which is

defined as the negative derivative of the total energy

with respect to the strain tensor. The stress tensor can

also be decomposed into several terms, like kinetic

stress, short range stress, and so on.

hessian: the hessian matrix, which is defined as the

second derivative of the total energy with respect to

atomic positions.

The corresponding dynamical matrix can also be

calculated, with which the phonon spectrum and

vibrational modes of the system can further be

determined.

In addition, the derivative of the Hamiltonian matrix

with respect to atomic positions can also be calculated,

which could be used to study the phonon and electron

interactions.

bandStructure: the normal band structure calculation

which gives the band energies as a function of a series

of k-points. The k-points are normally along a line

segment(s) in the k-space.

complexBandStructure: the complex-band structure

calculation. Comparing to normal band structure which

displays a band energy as a function of a k-point, i.e.,

e = e(k1,k2,k3), the complex-band structure displays a

k-coordinate, e.g. k3, as a function of band energy and

other k-coordinates, i.e., k3 = k3(e;k1,k2) where the

value of k3 is normally a complex number.

fullBandStructure: this calculation gives the band

energies at all k-points whin the Brillouin zone. The

fermi surface can also be determined and visualized, with

which electronic transmission properties of a lead can

be studied.

eigenStates: this calculation is used for molecular or

periodic bulk systems, which gives eigen energies and

also corresponding wave functions as a vector of the

coefficients of a set of atomic basis and/or as a

real-space function, for a set of states specified by

an user.

scatteringStates: this calculation is used for systems

with probes, which gives transmission and reflection

coefficients and also the real-space wave function, for

a set of states specified by an user.

densityOfStates: the density of electronic states

(dos), which can also be decomposed in various ways to

obtain projected dos, local dos, and so on.

densityOfScatteringStates: the density of electronic

scattering states (dos), which can also be decomposed in

various ways to obtain projected dos, local dos, and so

on. Comparing to the normal dos, doss only counts for

the scattering states associated to a specific lead and

washes out all other states.

charge: analysis of the total charge of the system in

various ways, such as projected to some particular atomic

orbitals, localized to a particular real-space region,

projected to the spin-polarization direction, and so on.

potential: this calculation is to obtain and also

display or visualize a real-space potential function of

Vdh, Vxc, Vna, or Veff, where Vdh is the delta_Hartree

potential, Vxc is the exchange-correlation potential,

Vna is the neutral atomic potential, and Veff = Vdh+Vxc.

Note that the difference of two Vdh calculated with and

without a bias voltage gives the detailed information

about how the voltage drops across the structure.

EPhCoupling: the electron-phonon couplings.

transmission: transmission coefficients calculation,

which can be used to determine the conductance of the

structure.

channel: the number of transmission channels of a

system when being used as a lead, which is given as a

function of energy, transverse wave vectors.

conductance: the conductance. The current with the

applied voltage is also calculated.

acConductance: the ac conductance when an ac bias

voltage is applied.

IVCurve: this calculation gives the current as a

function of applied voltages, and the intermediate data

of conductance is also given.

IETS: The inelastic electron tunneling spectroscopy.

relaxation: structure relaxation with or without

change of the central cell. Various constrains can be

applied during the relaxation.

basisOptimization: used to optimize the atomic basis

for a particular system(s). This is normally a key step

to a reliable result with high precision.

an example

:

calculation.name = {scf, bs}

Control parameters for the calculation

calculation.control.lengthUnit

key word

:

calculation.control.lengthUnit

possible values

:

au, a.u., atomic unit, Bohr,

an, ang, angstrom,

nm, nanometer,

where au a.u., and atomic unit are for Bohr,

an and ang for angstrom, and nm for nanometer.

default value

:

angstrom

description

:

the unit of length used in the input file. For example,

it will be used as the unit of the x-, y-, and

z-coordinates of the atoms, the unit of

centralCellVectors or the group of centralCellVector1,

centralCellVector2, and centralCellVector3.

Note: 1 Bohr = 0.529177208319 Angstrom

an example

:

calculation.control.lengthUnit = au

calculation.control.energyUnit

key word

:

calculation.control.energyUnit

possible values

:

au, a.u., atomic unit, Hartree,

Ryd, Ryd., Rydberg,

eV,

where au a.u., and atomic unit are for Hartree,

Ryd and Ryd. for Rydberg.

default value

:

eV

description

:

the unit of energy used in the input file.

Note: 1 Hartree = 27.211383411 eV = 2 Rydberg.

an example

:

calculation.control.energyUnit = au

calculation.control.angleUnit

key word

:

calculation.control.angleUnit

possible values

:

d, deg, deg., degree,

r, rad, rad., radian,

where d, deg, deg., and degree are for degree,

and r, rad, rad., and radian are for radian.

default value

:

degree

description

:

the unit of angle used in the input file.

an example

:

calculation.control.angleUnit = r

calculation.control.precision

key word

:

calculation.control.precision

possible values

:

high, normal, low

default value

:

normal

description

:

used to control default values of the following

parameters:

  1. calculation.realspacegrids.E_cutoff

low — 20 Hartree

normal — 50 Hartree

high — 150 Hartree

  1. calculation.k_spacegrids.L_cutoff

low — 20 Bohr

normal — 40 Bohr

high — 80 Bohr

  1. calculation.complexEcontour.numberOfPoints

low — 20

normal — 40

high — 60

  1. calculation.complexEcontour.numberOfPoints2

low — 4

normal — 8

high — 16

  1. calculation.realEcontour.interval

low — 2e-3 Hartree

normal — 5e-4 Hartree

high — 1e-4 Hartree

  1. calculation.realEcontour.eta

low — 5e-4 Hartree

normal — 2e-5 Hartree

high — 1e-6 Hartree

  1. calculation.SCF.convergenceCriteria

low — 1e-3 Hartree for hamiltonian matrix

and 1e-3 for density matrix

normal — 1e-4 Hartree for hamiltonian matrix

and 1e-4 for density matrix

high — 1e-5 Hartree for hamiltonian matrix

and 1e-5 for density matrix

an example

:

calculation.control.precision = normal

calculation.control.parallel

key word

:

calculation.control.parallel

possible values

:

1, true, 0, false

default value

:

false

description

:

If it is true or 1, the calculator will work in a

parallel calculation mode. Otherwise, it will work in a

serial calculation mode. Note that for parallel

computations, MPICH2 needs to be set up first.

an example

:

calculation.control.parallel = false

calculation.control.dataFormat

key word

:

calculation.control.dataFormat

possible values

:

compact, distributed

default value

:

compact

description

:

If compact, all calculated data will be saved in the

class object; if distributed, calculated data will be

saved separately.

an example

:

calculation.control.dataFormat = distributed

calculation.control.networkFileSystem

key word

:

calculation.control.networkFileSystem

possible values

:

1, true, 0, false

default value

:

true

description

:

Network File System (NFS) is a protocol allowing a

computer to access files over a network as easily as if

the network device was attached to the local disks of

the computer. In a parallel calculation, when

control.networkFileSystem is set to true, only one copy

of calculated data is saved, and each processor will use

the same copy through the network. When

control.networkFileSystem is false, each processor saves

its own copy of the calculated data.

an example

:

calculation.control.networkFileSystem = true

calculation.control.logOutputLevel

key word

:

calculation.control.logOutputLevel

possible values

:

an integer array

default value

:

[1 1]

description

:

logOutputLevel is designed to control both the log

output to screen and to files. If the length of the

logOutputLevel is n, there will be n-1 log files

generated. logOutputLevel(1) is for screen control and

logOutputLevel(ii+1) is for the control of the iith

file. The higher the value of logOutputLevel is, the

more detailed information will be written into the log

file.

Note: If only one log file is requested, it is named as

log.txt. If more than one log files are requested, their

names will be named like log3.txt or log5.txt, where the

integer 3 or 5 in the name is the corresponding output

level.

an example

:

calculation.control.logOutputLevel = [1 1]

calculation.control.txtResultsOutputLevel

key word

:

calculation.control.txtResultsOutputLevel

possible values

:

an integer

default value

:

1

description

:

Some calculated results may be given in files of *.mat

(also in *.xml, some also in *.txt) format.

txtResultsOutputLevel is used to control the output of

those files.

if it is 0,

no *.mat file will be saved

if it is >= 1,

Hamiltonian.mat (Hamiltonian matrix of the whole system)

DensityMatrix.mat (density matrix of the part related to

the central region) are saved.

if it is >= 2, in addition,

DensityFunction.mat (real space charge density, the part

within the central box)

PotentialFunctionVeff.mat (real space potential function

Veff, i.e. sum of the potential functions

delta-hartree and exchange-correlation, the part

within the central box)

if it is >= 3, in addition,

HamiltonianMatrixT.mat (the kinetic component of the

hamiltonian matrix, the part related to the

central region)

HamiltonianMatrixVna.mat (the neutral-atom component of

the Hamiltonian matrix, the part related to the

central region)

HamiltonianMatrixVnl.mat (the nonlocal pseudopotential

component of the Hamiltonian matrix, the part

related to the central region)

HamiltonianMatrixVeff.mat (the effective potential

component, i.e. sum of delta-Hartree and

exchange-correlation components of the

Hamiltonian matrix, the part related to the

central region)

HamiltonianMatrixVhubbard.mat (the Hubbard component of

the Hamiltonian matrix, the part related to the

central region)

HamiltonianMatrixVso.mat (the spin-orbit-interaction

component of the Hamiltonian matrix, the part

related to the central region)

if it is >= 4, in addition,

DensityFunctionRna.mat (real space neutral-atom charge

density, the part within the central box)

PotentialFunctionVna.mat (real space neutral-atom

potential function Vna, i.e. sum of the

neutral-atom Coulomb potential and

local pseudopotential, the part within the

central box)

PotentialFunctionVdh.mat (real space delta-Hartree

potential function Vdh, the part within the

central box)

PotentialFunctionVxc.mat (real space exchange-correlation

potential function Vxc, the part within the

central box)

if it is >= 5, in addition,

HamiltonianMatrixStaticPartOfH.mat (the static part of

the Hamiltonian matrix, the part related to the

central region)

if it is >= 6, in addition,

DensityFunctionRpc.mat (real space partial-core charge

density, the part within the central box)

DensityFunctionReffna.mat (real space effective

neutral-atom charge density, i.e. an effective

charge density which produces a Coulomb

potential that is exactly same as Vna, the part

within the central box)

an example

:

calculation.control.txtResultsOutputLevel = 1

calculation.control.largeSystem

key word

:

calculation.control.largeSystem

possible values

:

1, true, 0, false

default value

:

determined by nanodcal.

description

:

If it is true or 1, nanodcal will use some special

algorithms for saving memory, otherwise, it will use

other algorithms for saving time.

an example

:

calculation.control.largeSystem = false

calculation.control.byPassCentralCellCheck

key word

:

calculation.control.byPassCentralCellCheck

possible values

:

1, true, 0, false

default value

:

false

description

:

Only used for open system. If it is false or 0, the

code will automatically check the consistency between

the central cell vectors and lead cell vectors, and the

positions of the atoms in the central cell and in the

lead cells. If it is true or 1, nanodcal will pass by

the check for saving time.

an example

:

calculation.control.byPassCentralCellCheck = true

calculation.control.temporaryDirectory

key word

:

calculation.control.temporaryDirectory

possible values

:

any string representing the directory where some

temporary data generated during the calculation will be

saved.

default value

:

./temporarydata

description

:

This input is for the user to redirect the temporary

data generated during a calculation.

an example

:

calculation.control.temporaryDirectory = ./tmp1

Pseudopotential parameters

This section summarizes the parameters of the pseudopotential.

calculation.pseudoPotential.nonOverlapInteractionMode

key word

:

calculation.pseudoPotential.nonOverlapInteractionMode

possible values

:

0, 1, 2

default value

:

2

description

:

A non-local pseudo-potential matrix (\(V_{nl}\)) element

\(<\phi_i | V_{nl} | \phi_j>\) can be non-zero even when the two

atomic orbital functions \(|\phi_i>\) and \(|\phi_j>\) do not

overlap. This parameter is for controlling the

calculation of those non-overlapping Vnl elements.

If nonOverlapInteractionMode is 0, all non-overlapping

Vnl elements will be set to zero. If it is 2, none of

the non-overlapping Vnl elements will be set to zero.

If it is 1, the element \(<\phi_i | V_{nl} | \phi_j>\) will be

set to zero when and only when there is no orbital in

the cell which contains \(|\phi_i>\) overlap with any orbital

in the image cell which contains \(|\phi_j>\).

an example

:

calculation.pseudoPotential.nonOverlapInteractionMode = 1

calculation.pseudoPotential.Lmax4Vnl

key word

:

calculation.pseudoPotential.Lmax4Vnl

possible values

:

an integer

default value

:

2

description

:

The highest angular momentum used in the

Kleinman-Bylander Vnl projector. Namely, those

projectors having angular momentum higher than Lmax4Vnl

will not be used in the calculation of Vnl.

an example

:

calculation.pseudoPotential.Lmax4Vnl = 3

Spin-orbit interaction parameters

calculation.spinOrbitInteraction.isIncluded

key word

:

calculation.spinOrbitInteraction.isIncluded

possible values

:

1, true, 0, false

default value

:

false

description

:

If it is true or 1, the effect of spin-orbit

interaction will be taken into account. Only used for

systems having the spinType of GeneralSpin.

an example

:

calculation.spinOrbitInteraction.isIncluded = true

feature status

:

experimental.

Hubbard parameters

The parameters in this section are for LDA+U calculations.

calculation.Hubbard.isIncluded

key word

:

calculation.Hubbard.isIncluded

possible values

:

1, true, 0, false

default value

:

false

description

:

If it is true or 1, a Hubbard-like term, the so called

LDA+U, is added to the potential.

an example

:

calculation.Hubbard.isIncluded = true

feature status

:

experimental.

calculation.Hubbard.parameterBlock

key word

:

calculation.Hubbard.parameterBlock

possible values

:

N (the number of atomic species whose Hubbard U

values needs to be re-defined.)

default value

:

no default value, must input when Hubbard.isIncluded is

true

description

:

This block is used to overwrite the default Hubbard U

values of specified atomic basis. There must be

exactly N lines in the block, and followed by a line of

end used as a end mark of the block. Each line

has two strings, which specify the AtomType and

OrbitalType of the atomic basis respectively, and

enough U values for s, p, d, and f orbitals,

respectively.

Note that the unit of the U values is defined by the

parameter calculation.control.energyUnit.

an example

:

calculation.Hubbard.parameterBlock = 3

Fe DZP 0 0 2

Co DZP 0 0 4

Ni DZP 0 0 3 6

end

feature status

:

experimental.

Occupation function parameters

The parameters here are for setting up the distribution function.

calculation.occupationFunction.name

key word

:

calculation.occupationFunction.name

possible values

:

a string to describe the occupation function:

FermiDirac: Fermi-Dirac distribution

default value

:

FermiDirac

description

:

The given function is used to determines the occupation

of the electronic states.

an example

:

calculation.occupationFunction.name = FermiDirac

calculation.occupationFunction.temperature

key word

:

calculation.occupationFunction.temperature

possible values

:

a double value

default value

:

0 for open systems and 100 for closed systems.

description

:

electronic temperature of the system, in the unit of K.

Although it is a physical property of the system, it is

often used as a parameter to stabilize calculations in

some cases.

Note: the Boltzmann constant k = 8.617342e-05(eV/K) /

27.2113834(eV/Hartree) = 3.1668151e-06 (Hartree/K).

an example

:

calculation.occupationFunction.temperature = 100

Real space grid parameters

The parameters here are for generating real space numerical grids.

calculation.realspacegrids.number

key word

:

calculation.realspacegrids.number

possible values

:

3\(\times\)1 integer vector or a integer number

default value

:

determined from the value of realspacegrids.E_cutoff

description

:

the small grid number in each direction. It is used

to divide the central cell into the input number of

small grids.

an example

:

calculation.realspacegrids.number = [64 64 64]

calculation.realspacegrids.E_cutoff

key word

:

calculation.realspacegrids.E_cutoff

possible values

:

a double number with proper energy unit such as

eV,

Ryd, Ryd., Rydberg,

au, a.u., atomic unit, Hartree,

where au a.u., and atomic unit are for Hartree,

Ryd, Ryd. for Rydberg.

default value

:

20, 50, or 150 Hartree, depending on the value of the

parameter calculation.control.precision.

description

:

the equivalent energy cut-off of the grid density.

E_cutoff ~ (1/2)(\(\pi\)/grid_length) \(^{2}\).

This input parameter is not used when

realspacegrids.number is given.

Note that if the number part of the input is missing, it

will be considered as 1, and if the unit part is

missing, it will be considered to use the unit defined

by calculation.control.energyUnit.

an example

:

calculation.realspacegrids.E_cutoff = 50

calculation.realspacegrids.clusterfactor

key word

:

calculation.realspacegrids.clusterfactor

possible values

:

an integer number

default value

:

5

description

:

Defines the number of grid points in each direction

which are grouped into a cluster for saving index

storage on the grids.

an example

:

calculation.realspacegrids.clusterfactor = 5

k_space grid parameters

The parameters here are for generating Fourier space numerical grids.

calculation.k_spacegrids.number

key word

:

calculation.k_spacegrids.number

possible values

:

3\(\times\)1 integer array

default value

:

determined by the value of k_spacegrids.L_cutoff

description

:

the small k-space grid number in each direction. It is

used to divide the Brillouin zone into the input

number of small grids.

an example

:

calculation.k_spacegrids.number = [8 8 8]

calculation.k_spacegrids.L_cutoff

key word

:

calculation.k_spacegrids.L_cutoff

possible values

:

a double number with proper length unit such as

au, a.u., atomic unit, Bohr

an, ang, angstrom,

nm, nanometer,

where au a.u., and atomic unit are for Bohr,

an and ang for angstrom, and nm for nanometer.

default value

:

20, 40, or 80 Bohr, depending on the value of the

parameter calculation.control.precision.

description

:

the equivalent length cut-off of the k-space grid

density. k-space grid length ~ (\(\pi\)/L_cutoff).

The input parameter will not be used when

k_spacegrids.number is given.

Note that if the number part of the input is missing, it

will be considered as 1, and if the unit part is

missing, it will be considered to use the unit defined

by calculation.control.lengthUnit.

an example

:

calculation.k_spacegrids.L_cutoff = 40

calculation.k_spacegrids.shift

key word

:

calculation.k_spacegrids.shift

possible values

:

3\(\times\)1 or 1\(\times\)3 array, [s\(_1\), s\(_2\), s\(_3\)], with each s\(_i\) a

double number between 0 and 1.

default value

:

[0 0 0]

description

:

k-space grid point shift. While all s\(_i\) are set to be 0,

the Gamma point is always among the k-space grid points

being generated; otherwise, the k-space grid points will

be shifted s\(_1\), s\(_2\), and s\(_3\) grid length along their

grid vector directions, respectively.

an example

:

calculation.k_spacegrids.shift = [1/2 1/2 1/2]

Energy contour parameters

The parameters here are for setting up the contour integration over energy for calculating the density matrix from the Green’s functions.

calculation.complexEcontour.type

key word

:

calculation.complexEcontour.type

possible values

:

smallSemiCircle, middleSemiCircle,

largeSemiCircle, doubleSemiCircle

default value

:

smallSemiCircle

description

:

Type of energy contour to be used in the integration of

the equilibrium part of lesser Greens function. See

user manual for more information about the choice of

complex contour.

an example

:

calculation.complexEcontour.type = smallSemiCircle

largeSemiCircle, doubleSemiCircle

calculation.complexEcontour.numberOfPoints

key word

:

calculation.complexEcontour.numberOfPoints

possible values

:

an integer

default value

:

20, 40, or 60, depending on the value of the

parameter calculation.control.precision.

description

:

Number of energy points used on the complex energy

contour for integrating the equilibrium part of

the lesser Greens function.

(Note: if the system temperature is not

zero, numberOfPoints is the number of energy points on

the circle part of the contour.)

an example

:

calculation.complexEcontour.numberOfPoints = 40

calculation.complexEcontour.lowestEnergyPoint

key word

:

calculation.complexEcontour.lowestEnergyPoint

possible values

:

a double number with proper energy unit such as

eV,

Ryd, Ryd., Rydberg,

au, a.u., atomic unit, Hartree,

where au a.u., and atomic unit are for Hartree,

Ryd, Ryd. for Rydberg.

default value

:

determined by nanodcal

description

:

The lowest energy point on the complex energy contour.

Note that if the number part of the input is missing, it

will be considered as 1; if the unit part is

missing, it will be considered as using the unit defined

by calculation.control.energyUnit.

an example

:

calculation.complexEcontour.lowestEnergyPoint = 40

calculation.complexEcontour.Delta

key word

:

calculation.complexEcontour.Delta

possible values

:

an integer

default value

:

10

description

:

Used only in the finite temperature case. The number of

poles of the Fermi function which are enclosed in the

complex energy contour.

an example

:

calculation.complexEcontour.Delta = 10

calculation.complexEcontour.gamma

key word

:

calculation.complexEcontour.gamma

possible values

:

an integer

default value

:

20

description

:

Used only in the finite temperature case. The length (in

unit kT) of the straight portion of the complex energy

contour that is below the Fermi energy.

an example

:

calculation.complexEcontour.gamma = 20

calculation.complexEcontour.numberOfPoints2

key word

:

calculation.complexEcontour.numberOfPoints2

possible values

:

an integer

default value

:

4, 8, or 16, depending on the value of the

parameter calculation.control.precision.

description

:

Used only in cases of finite temperature. The number of

energy points on the straight part of the complex

energy contour for integrating the equilibrium part

of lesser Greens function.

an example

:

calculation.complexEcontour.numberOfPoints2 = 6

calculation.realEcontour.numberOfPoints

key word

:

calculation.realEcontour.numberOfPoints

possible values

:

an integer

default value

:

determined using the value of realEcontour.interval

description

:

Number of energy points on the real energy axis

for integrating the non-equilibrium part of

lesser Greens function.

an example

:

calculation.realEcontour.numberOfPoints = 40

calculation.realEcontour.interval

key word

:

calculation.realEcontour.interval

possible values

:

a double number

default value

:

2e-3, 5e-4, or 1e-4 Hartree, depending on the value of the

parameter calculation.control.precision.

description

:

Energy interval used to determine the number of energy

points for integrating the non-equilibrium part

of lesser Greens function on the real energy axis. This

input is not used when realEcontour.numberOfPoints is

given.

an example

:

calculation.realEcontour.interval = 5e-4

calculation.realEcontour.etaSigma

key word

:

calculation.realEcontour.etaSigma

possible values

:

a small double number

default value

:

1e-6 Hartree

description

:

the small eta used in the calculation of self-energy

along the real energy contour. In analytical Greens

function theory, the eta is a positive infinitesimal.

an example

:

calculation.realEcontour.etaSigma = 1e-4

calculation.realEcontour.etaGF

key word

:

calculation.realEcontour.etaGF

possible values

:

a small double number

default value

:

1e-6 Hartree

description

:

the small eta used in the calculation of Greens function

along the real energy contour. In analytical Greens

function theory, this is a positive infinitesimal.

an example

:

calculation.realEcontour.etaGF = 1e-4

calculation.realEcontour.eta

key word

:

calculation.realEcontour.eta

possible values

:

a small double number

default value

:

5e-4, 2e-5, or 1e-6 Hartree, depending on the value of the

parameter calculation.control.precision.

description

:

the small eta used in the calculation of self-energy

and/or Greens function along the real energy contour.

This parameter is not used when the parameter

realEcontour.etaSigma and/or realEcontour.etaGF is

given.

an example

:

calculation.realEcontour.eta = 1e-4

Exchange-correlation functional parameters

The parameters here are used in various exchange-correlation (XC) functionals. In nanodcal, XC functional calculation is done by plug-in calculators. Several XC functionals can be chosen by the user. On the other hand, the users can input their own XC functionals by plug-in their calculators to nanodcal.

calculation.xcFunctional.calculator

key word

:

calculation.xcFunctional.calculator

possible values

:

a structure with two fields of class and parameter

default value

:

determined by nanodcal

description

:

This input parameter defines a plug-in calculator,

where the field class clarifies the name of the

calculator, and the field parameter gives its

construction parameter. The constructor of the plug-in

calculator will be called in the following manner:

calculator = constructor([cp])

where

[cp] = calculation.xcFunctional.calculator.parameter

For information about how to replace this plug-in

calculator, type nanodcal -help plug-in and nanodcal -api.

an example

:

calculation.xcFunctional.calculator.class = XC_cell

calculation.xcFunctional.calculator.parameter.Type …

= LDA_VWN80

calculation.xcFunctional.Type

key word

:

calculation.xcFunctional.Type

possible values

:

LDA_PZ81, LDA_VWN80, LDA_PW92, GGA_PBE96,

GGA_REVPBE98, GGA_RPBE99, mixed

default value

:

LDA_PZ81

description

:

The type of exchange-correlation functional to be

used. While LDA_PZ81, LDA_VWN80, LDA_PW92,

GGA_PBE96, GGA_REVPBE98, and GGA_RPBE99 are

well-known functionals, the option mixed is

for users to mix different types of

exchange and/or correlation functionals.

If calculation.xcFunctional.calculator is given, this

parameter will not be used.

an example

:

calculation.xcFunctional.Type = LDA_PZ81

GGA_REVPBE98, GGA_RPBE99, mixed

calculation.xcFunctional.Weight

key word

:

calculation.xcFunctional.Weight

possible values

:

2\(\times\)2 cell array when a well-known exchange and

correlation functional is used; n X 2 cell array, with n

a integer, when the mixed type of exchange and

correlation functional is used.

default value

:

{X,1.0;C,1.0} for regular type; no default value for

mixed type.

description

:

When a well-known exchange and correlation functional is

used, it gives weights for the exchange energy and the

correlation energy. When mixed type is used, it

specifies the exchange and/or correlation functionals

to be mixed and the corresponding mixing weights.

All exchange and correlation functionals which may be

used in the mixing is listed as follows with a short

description:

xLDA — LDA exchange

cPZ81 — PZ correlation (Phys. Rev. B 23, 5048)

cVWN80 — VWN correlation (Can. J. Phys. 58, 1200)

cPW92 — PW92 correlation (Phys. Rev. B 45, 13244)

xPBE96 — PBE exchange (Phys. Rev. Lett. 77, 3865)

xREVPBE98 — REVPBE exchange (Phys. Rev. Lett. 80, 890)

xRPBE99 — RPBE exchange (Phys. Rev. B 59, 7413)

xEV93 — EV exchange (Phys. Rev. B 47, 13164)

cPBE96 — PBE correlation (Phys. Rev. Lett. 77, 3865)

If calculation.xcFunctional.calculator is given, this

parameter will not be used.

an example

:

(for regular type)

calculation.xcFunctional.Weight = {X,1.0;C,1.0}

another example

:

(for mixed type):

calculation.xcFunctional.Weight = …

{xLDA,0.2;cVWN80,1.0;xPBE96,0.8}

calculation.xcFunctional.Lagrange

key word

:

calculation.xcFunctional.Lagrange

possible values

:

an integer

default value

:

3

description

:

Lagrange parameter is for 2N+1 Point Lagrange polynomial

interpolation to calculate charge density gradient.

If calculation.xcFunctional.calculator is given, this

parameter will not be used.

an example

:

calculation.xcFunctional.Lagrange = 3

External Hamiltonian modifier parameters

Nanodcal allows users to add/replace terms to the Kohn-Sham Hamiltonian by using plug-in calculators. Parameters here specify the Hamiltonian modifier.

calculation.hExternalModifier.isIncluded

key word

:

calculation.hExternalModifier.isIncluded

possible values

:

1, true, 0, false

default value

:

false

description

:

If it is true or 1, the external Hamiltonian modifier

defined in calculation.hExternalModifier.calculator will

be used.

an example

:

calculation.hExternalModifier.isIncluded = true

calculation.hExternalModifier.calculator

key word

:

calculation.hExternalModifier.calculator

possible values

:

a structure with two fields of class and parameter

default value

:

no default value, must be input when

hExternalModifier.isIncluded is true.

description

:

This input parameter defines a plug-in calculator,

where the field class clarifies the name of the

calculator, and the field parameter gives its

construction parameter. The constructor of the plug-in

calculator will be called in the following manner:

calculator = constructor([cp])

where

[cp] = calculation.hExternalModifier.calculator.parameter

Only used when hExternalModifier.isIncluded is true.

For information about how to replace this plug-in

calculator, type nanodcal -help plug-in and nanodcal -api.

an example

:

calculation.hExternalModifier.calculator.class …

= cHModifierByB

calculation.hExternalModifier.calculator.parameter.B …

= [0 0 10] Tesla

External self-energy modifier parameters

Nanodcal allows users to calculate self-energy of the device leads using methods of their own - instead of using the methods of nanodcal. The parameters here are for this purpose.

calculation.sigmaExternalModifier.isIncluded

key word

:

calculation.sigmaExternalModifier.isIncluded

possible values

:

1, true, 0, false

default value

:

false

description

:

If it is true or 1, the external self-energy modifier

defined in calculation.sigmaExternalModifier.calculator

will be used.

an example

:

calculation.sigmaExternalModifier.isIncluded = true

calculation.sigmaExternalModifier.calculator

key word

:

calculation.sigmaExternalModifier.calculator

possible values

:

a structure with two fields of class and parameter

default value

:

no default value, must be input when

sigmaExternalModifier.isIncluded is true.

description

:

This input parameter defines a plug-in calculator,

where the field class clarifies the name of the

calculator, and the field parameter gives its

construction parameter. The constructor of the plug-in

calculator will be called in the following manner:

calculator = constructor([cp])

where

[cp] = calculation.sigmaExternalModifier.calculator.parameter

Only used when sigmaExternalModifier.isIncluded is true.

For information about how to replace this plug-in

calculator, type nanodcal -help plug-in and nanodcal -api.

an example

:

calculation.sigmaExternalModifier.calculator.class …

= cAbstractSelfEnergyModifier

calculation.sigmaExternalModifier.calculator.parameter …

= \([\ ]\)

External real-space density modifier parameters

Nanodcal allows users to modify real-space charge density. Parameters here are for this function.

calculation.rhoExternalModifier.isIncluded

key word

:

calculation.rhoExternalModifier.isIncluded

possible values

:

1, true, 0, false

default value

:

false

description

:

If it is true or 1, the external real space density

modifier defined in rhoExternalModifier.calculator will

be used.

an example

:

calculation.rhoExternalModifier.isIncluded = true

calculation.rhoExternalModifier.calculator

key word

:

calculation.rhoExternalModifier.calculator

possible values

:

a structure with the two fields of class and parameter

default value

:

no default value, must be input when

rhoExternalModifier.isIncluded is true.

description

:

This input parameter defines a plug-in calculator,

where the field class clarifies the name of the

calculator, and the field parameter gives its

construction parameter. The constructor of the plug-in

calculator will be called in the following manner:

calculator = constructor([cp])

where

[cp] = calculation.rhoExternalModifier.calculator.parameter

Only used when rhoExternalModifier.isIncluded is true.

For information about how to replace this plug-in

calculator, type nanodcal -help plug-in and nanodcal -api.

an example

:

calculation.rhoExternalModifier.calculator.class …

= cAbstractRealspaceDensityModifier

calculation.rhoExternalModifier.calculator.parameter …

= \([\ ]\)