# Input tags

We have broken down the input tags based on the areas of the code
where they apply. For each tag, a default is given. Types of value
are specified as: *integer*;
*real*; *boolean*; or *string* (optA/optB are given for string options).

## General

- General.NumberOfSpecies (
*integer*) Number of species in cell

*default*: none- General.PseudopotentialType (
*string*) siesta/hamann Type of pseudopotential (in practice, this defines how the local part of the pseudopotential is handled)

*default*: hamann (read from ion file)- General.NeutralAtom (
*boolean*) Use neutral atom potential or not (removes need for Ewald sum)

*default*: T- General.FunctionalType (
*integer*) Selects the exchange-correlation functional. If the native CONQUEST XC implementation is used, there are three parameterisations of the LDA available, as well as three variants of the PBE GGA functional, with numbers given below.

*default*: read from ion file (same as pseudopotentials)Functional

Keyword

Ref

LDA Perdew-Zunger, no SIC

1

[E1]

LDA Goedecker-Teter-Hutter 96

2

[E2]

LSDA Perdew-Wang 92 (default)

3

[E3]

GGA Perdew-Burke-Ernzerhof 96 (PBE)

101

[E4]

GGA PBE + Zhang-Yang 98 (revPBE)

102

[E5]

GGA PBE + Hammer-Hansen-Norskov 99 (RPBE)

103

[E6]

GGA WC

104

[E7]

At the moment, only LSDA Perdew-Wang 92 and the three GGA Perdew-Burke-Ernzerhof functional variants can be used in spin polarised calculations.

Note that, if the code is compiled with LibXC, the full LibXC set of functionals is available, selected with a negative six digit number (-XXXCCC or -CCCXXX).

- General.EnergyUnits (
*string*) Ha/Ry/eV **Output only**Chooses units for energy*default*: Ha- General.DistanceUnits (
*string*) a0/bohr/A **Output only**Chooses units for distance (Bohr: a0/bohr or Ångströms: A*default*: a0- General.MemoryUnits (
*string*) kB/MB/GB **Output only**Chooses units for memory use*default*: MB- General.PartitionMethod (
*string*) File/Hilbert Chooses method for partitioning (read from file or use dynamic partitioner based on Hilbert curve)

*default*: HilbertOptions:

Hilbert (default) — Automatic partitioning using Hilbert curves; safe for initial use though optimum load balancing

*not*guaranteedFile — Reads a file (NOT recommended)

- General.LoadBalance (
*string*) partitions/atoms Applies to Hilbert above; chooses whether to distribute atoms or partitions evenly between processors (you are

*strongly*recommended to use atoms)*default*: atoms- General.ManyProcessors (
*boolean*) Applies to Hilbert above; chooses method for parallelising Hilbert curve work; “many” processors here probably means more than two

*default*: T- General.MaxAtomsPartition (
*integer*) Applies to Hilbert above; specifies maximum number of atoms allowed in a partition; triggers extra level of recursion in partitioner

*default*: 34- General.NPartitions[X/Y/Z] (
*integer*) Allows the user to specify the number of partitions in x, y and z directions

*default*: 0 (i.e. use Hilbert partitioning, above)- General.NewRun (
*boolean*) Switches between new run and restart (N.B. restart has

*not*been implemented yet)*default*: T- General.LoadDM (
*boolean*) Specifies whether to load a previous density matrix (K or L depending on whether diagonalisation or linear scaling are selected) from files

*default*: F- General.LoadRho (
*boolean*) Specifies whether to load a previous charge density from files

*default*: F- General.NetCharge (
*real*) Specifies net charge on unit cell; implemented rather crudely with a neutralising background charge assumed. Note that a

*positive*value indicates*excess*electrons*default*: 0.0- General.EwaldAccuracy (
*real*) Accuracy for ewald sum (in Ha/atom)

*default*: \(10^{-10}\)- General.TimeThreshold (
*real*) Minimum time for a timer to be printed (in seconds)

*default*: \(0.001\)- General.vdWDFT (
*boolean*) Selects vdW DF

*default*: F- General.DFT_D2 (
*boolean*) Selects DFT-D2

*default*: F- General.MaxTime (
*real*) Maximum wall time for calculation in seconds. Conquest will exit gracefully on completion of an ionic relaxation/MD step

*default*: 0.0- General.RNGSeed (
*integer*) Seed for the random number generator. If less than 0, a random seed will be generated, otherwise the specified seed is used, and the same sequence of random numbers will be generated every time. Useful for reproducing MD runs.

*default*: -1

Go to top.

## Atomic Specification

- ChemicalSpeciesLabel (
*block*) Lists all atomic species used in the calculation. Format:

`1 atomic_mass1 element_label_1`

`2 atomic_mass2 element_label_2`

`...`

`n atomic_mass_n_ element_label_n`

(Note that the block must end with %endblock ChemicalSpeciesLabel.) 1-–n are integer numbers used in the coordinate file to identify atomic species, as discussed in the Coordinates section. The atomic masses are only used for dynamics. The element labels should have a corresponding ion file

`element_label_x.ion`

and*may*have an accompanying atom specification block.There can then be up to n atom specification blocks whose names should be

`element_label_x`

. When using primitive PAOs for support functions many of these are read from the ion file.- Atom.MultisiteRange (
*real*) Range for multi-site support functions (the PAOs on all atoms within this range will be included in the support function)

*default*: 0.0- Atom.LFDRange (
*real*) Range for local filter diagonalisation (the Hamiltonian and overlap matrix elements from all atoms within this range will be included in the cluster diagonalisation)

*default*: 0.0

Go to top.

## Input-Output General Tags

- IO.Title (
*string*) Title for calculation

*default*: none- IO.Partitions (
*string*) Name for file containing distribution of partitions over processors (generated by accompanying utilities)

*default*:`make_prt.dat`

- IO.WriteOutToFile (
*boolean*) Specifies whether the main output information is written to standard output or to a file

*default*: T- IO.OutputFile (
*string*) Name for the main output file

*default*:`Conquest_out`

- IO.DumpL (
*boolean*) Whether to write the auxiliary matrices L to file at each self-consistent steps

*default*: T- IO.DumpChargeDensity (
*boolean*) Whether to write out the charge density. If T, then the charge density will be written out at self-consistency; additionally, if

`IO.Iprint_SC`

is larger than 2, the charge density will be written out at every step of the SCF cycle. The resulting`chden.nnn`

files can be converted to cube format files using the post-processing utility.*default*: F- IO.Dump[Har|XC|PS|ES|Tot]Pot (
*boolean*) Flags to allow dumping of different local potentials (Hartree, XC, pseudopotential, electrostatic, total). Only active when a static self-consistent run is chosen. (NB each flag must be set to true for output, such as

`IO.DumpHarPot T`

etc.) Files can be converted to cube format as for charge density by setting`Process.ChargeStub`

appropriately (e.g.`locpsHar`

with other files replacing Har with XC, PS, ES and Tot)*default*: F- IO.TimingOn (
*boolean*) Whether time information will be measured and written to output

*default*: F- IO.TimeAllProcessors (
*boolean*) Specifies whether time information will be written for all processors or just for the input/output process (the default)

*default*: F- IO.WriteTimeFile (
*boolean*) Whether time files are written or not. This flag will be ignored if

`IO.TimeAllProcessors`

is true, in which case time files are always written.*default*: T- IO.TimeFileRoot (
*string*) Root to be used in the time files, with an extension indicating the processor number, e.g.

`.001`

*default*:`time`

Go to top.

## Atomic Coordinates

- IO.Coordinates (
*string*) Specifies the file with atomic coordinates. See Coordinates for details on the file format

*default*: none- IO.FractionalAtomicCoords (
*boolean*) Specifies whether fractional or absolute (Cartesian) coordinates are used in the coordinate file

*default*: T- IO.PdbIn (
*boolean*) Switches between the coordinate file format (F) and PDB format (T)

*default*: F

Go to top.

## Levels of Output

The overall level of output is controlled by **IO.Iprint** and can be
fine-tuned with the other IO.Iprint keywords. These are by default set
to the value of **IO.Iprint**, but that will be over-ridden if setting them
explicitly. For instance, **IO.Iprint** could be set to 0, but **IO.Iprint_MD**
could be set to 2 giving more extensive information about atomic
movements but little other information.

- IO.Iprint (
*integer*) The amount of information printed out to the output file The larger the value the more detailed the output is.

0 Basic information about the system and the run1 Overview of the SCF cycle and atom movement2 More detail on SCF cycle, atom movement3 Extensive detail on SCF cycle, atom movement4 Details of energy breakdown5 Excessive output, only for developers debugging*default*: 0- IO.Iprint_init (
*integer*) The initialisation process

- IO.Iprint_mat (
*integer*) Matrix operations

- IO.Iprint_ops (
*integer*) Creation of operators H and S

- IO.Iprint_DM (
*integer*) Density matrix

- IO.Iprint_SC (
*integer*) Self-consistency

- IO.Iprint_minE (
*integer*) Energy minimisation

- IO.Iprint_MD (
*integer*) Molecular dynamics

- IO.Iprint_index (
*integer*) Indexing routines

- IO.Iprint_gen (
*integer*) General (not covered by other areas)

- IO.Iprint_pseudo (
*integer*) Pseudopotentials

- IO.Iprint_basis (
*integer*) Basis set

- IO.Iprint_intgn (
*integer*) Integration on the grid (not used at present)

- IO.Iprint_time (
*integer*) Timing information

Go to top.

## Integration Grid

- Grid.GridCutoff (
*real*) An energy that defines the spacing of the

*integration*grid (though for a blip calculation must be at least twice as fine as blip grid, and will be adjusted). Note that the value chosen will automatically be forced to be a factor of 3, 4 and 5 only (to fit with default FFT routines)Default: 50 Ha.

Go to top.

## Minimising Energy

- minE.VaryBasis (
*boolean*) Chooses whether or not basis coefficients should be varied to minimise the total energy

*default*: F- minE.SelfConsistent (
*boolean*) Determines whether or not self-consistency cycles are imposed between charge density and potential

*default*: T- minE.MixedLSelfConsistent (
*boolean*) Determines whether or not to perform self-consistent cycle at the same time as energy minimisation with respect to L

*default*: F- minE.EnergyTolerance (
*real*) Fractional tolerance for energy on minimisation of support function coefficients

*default*: 1\(\times\)10\(^{-5}\)- minE.LTolerance (
*real*) Tolerance on

*residual*in O(N) minimisation*default*: 1\(\times\)10\(^{-7}\)- minE.SCTolerance (
*real*) Tolerance on

*residual*in self-consistency*default*: 1\(\times\)10\(^{-6}\)- minE.SupportVariations (
*integer*) Maximum number of support-function iterations

*default*: 20- minE.PreconditionBlips(
*boolean*) Should blip variation be pre-conditioned? Pre-conditioning is (at present) more memory-intensive than it should be, but is efficient

*default*: F- minE.GlobalTolerance (
*boolean*) Are the convergence criteria applied to minimisation summed over the whole system, or per atom?

*default*: T

Go to top.

## Charge Self-Consistency

- SC.LinearMixingSC (
*boolean*) Should Pulay mixing be used? It is recommended that this is always used

*default*: T- SC.LinearMixingFactor (
*real*) Amount of output charge density which is mixed into new charge

*default*: 0.5- SC.LinearMixingFactor_SpinDown (
*real*) Amount of output charge density which is mixed into new charge for spin down channel.

*default*: value of**SC.LinearMixingFactor**- SC.LinearMixingEnd (
*real*) Tolerance for end of Pulay mixing

*default*: self-consistency tolerance- SC.LateStageReset (
*integer*) If using GR-Pulay, how often is residual calculated fully (rather than interpolated) ?

*default*: 5- SC.MaxIters (
*integer*) Maximum self-consistency iterations

*default*: 50- SC.MaxEarly (
*integer*) Maximum early-stage iterations

*default*: 3- SC.MaxPulay (
*integer*) Number of iterations stored and mixed during Pulay mixing

*default*: 5- SC.ReadAtomicDensityFile (
*string*) Filename for radial tables of atomic density (

*rarely*used: normally generated from PAOs)default:

- SC.AtomicDensityFlag (
*string*) values: pao/read

Flag determining how atomic densities should be found

*default*: pao- SC.KerkerPreCondition (
*boolean*) Flag determining if Kerker precondition is to be used.

*default*: F- SC.KerkerFactor (
*real*) Wave-vector magnitude used in Kerker preconditioning, it is \(q_0\) from the factor \(q^2 / \left(q^2 + q_0^2\right)\)

*default*: 0.1- SC.WaveDependentMetric (
*boolean*) Flag determining if wave-dependent metric is to be used in Pulay mixing.

*default*: F- SC.MetricFactor (
*real*) Wave-vector magnitude used by wave-dependent metric method, it is \(q_1\) from the factor \(\left(q^2 + q_1^2\right) / q^2\).

*default*: 0.1- SC.MakeInitialChargeFromK (
*boolean*) Flag determining whether initial charge is made from the density matrix

*default*: T

Go to top.

## Density Matrix

- DM.SolutionMethod (
*string*) values: ordern/diagon

Selects the method for finding the ground state density matrix. This can currently be either diagonalisation (diagon: minimising the energy with respect to the density matrix elements) or an O(N) method (ordern a combination of the techniques of Li et al. [E8] and Palser and Manolopoulos [E9].)

*default*: diagon- DM.L_range (
*real*) Cutoff applied to L matrix (total energy will converge with increasing range; suggested minimum for O(N) calculations is twice largest support function range; see Linear Scaling for more details)

*default*: 1.0- DM.LVariations (
*integer*) Maximum number of variations performed in search for ground-state density matrix

*default*: 50- DM.MaxPulay (
*integer*) Maximum number of iterations stored for Pulay minimisation

*default*: 5- DM.MinPulayStepSize (
*real*) Minimum allowed step size for Pulay minimisation in Energy minimisation stage of the calculation. Note that the actual step size is calculated by automatically, but will be constrained within the range defined by

`DM.MinPulayStepSize`

and`DM.MaxPulayStepSize`

. Not to be confused with the Pulay mixing step size for charge self-consistency.*default*: 0.001- DM.MaxPulayStepSize (
*real*) Maximum allowed step size for Pulay minimisation in Energy minimisation stage of the calculation. Not to be confused with the Pulay mixing step size for charge self-consistency.

*default*: 0.1- DM.LinTol (
*real*) Tolerance on linearity required before switching to Pulay minimisation

*default*: 0.1- DM.InvSTolerance (
*real*) Tolerance on iterative minimisation to find S\(^{-1}\). If \(\Omega = \mathrm{Tr}[(I-TS)^2]/N_{\mathrm{orbitals}}\) is above this, identity will be used

*default*: 0.01- DM.InvSMaxSteps (
*integer*) Sets the maximum number of iterations for finding S\(^{-1}\)

*default*: 100- DM.InvSDeltaOmegaTolerance (
*real*) Tolerance which determines when the iterative minimisation to find S\(^{-1}\) should finish. \(\delta\Omega_n = N_{\mathrm{orbitals}} (\Omega_n - \Omega_{n-1})\), where \(\Omega\) is defined in description for

`DM.InvSTolerance`

. This parameter differs from`DM.InvSTolerance`

in that the iterative S\(^{-1}\) finder will end iteration when \(\delta\Omega\) is less than or equal to`DM.InvSDeltaOmegaTolerance`

, while`DM.InvSTolerance`

determines whether to reset S\(^{-1}\) to identity (i.e. whether a satisfactory S\(^{-1}\) has been found) based on the final \(\Omega\) produced from the iterative loop*default*: 0.0001- DM.ConstantMu (
*boolean*) - Switches between fixed Fermi level (T) and fixed number of electrons (F). You
are

*strongly*recommended to leave at default

*default*: F- DM.mu (
*real*) Value of Fermi level for fixed Fermi level calculations

*default*: 0.0

Go to top.

## Diagonalisation

- Diag.NumKpts (
*integer*) Number of all k-points. No symmetry is applied.

*default*:- Diag.Kpoints (
*block*) Lists fractional coordinates and weights of all k-points:

`x_fract y_fract z_fract weight`

Generates the Monkhorst-Pack mesh, an equally spaced mesh of k-points.*default*:- Diag.MPMesh (
*boolean*) Switches on/off the Monkhorst-Pack mesh. Note: if this keyword is present in the input file, the keyword

**Diag.NumKpts**and the block**Kpoints**will be ignored.*default*:- Diag.MPMesh[X/Y/Z] (
*integer*) Specifies the number n of k-points along the x(y,z) axis.

*default*: 1- Diag.GammaCentred (
*boolean*) Selects Monkhorst-Pack mesh centred on the Gamma point

*default*: F- Diag.PaddingHmatrix (
*boolean*) Setting this flag allows the Hamiltonian and overlap matrices to be made larger than their physical size, so that ScaLAPACK block sizes can be set to any value (which can significantly improve efficiency). At present, the automatic setting of block sizes does not use this functionality; if desired, block sizes must be set manually (note that the optimum block size is likely to be different on different machines). (Available from v1.2)

*default*: T- Diag.BlockSizeR (
*integer*) Block size for rows (See next).

*default*: Determined automatically- Diag.BlockSizeC (
*integer*) R … rows, C … columns These are ScaLAPACK parameters, and can be set heuristically by the code. Blocks are sub-divisions of matrices, used to divide up the matrices between processors. The block sizes need to be factors of the square matrix size (i.e. \(\sum_{\mathrm{atoms}}\mathrm{NSF(atom)}\)). A value of 64 is considered optimal by the ScaLAPACK user’s guide.

If Diag.PaddingHmatrix is set to true then the block sizes can take any value, but BlockSizeR and BlockSizeC must be the same.

*default*: Determined automatically- Diag.MPShift[X/Y/Z] (
*real*) Specifies the shift

*s*of k-points along the x(y,z) axis, in fractional coordinates.*default*: 0.0- Diag.SmearingType (
*integer*) Specifies the type of smearing used

0

Fermi-Dirac

1

Methfessel-Paxton

*default*: 0- Diag.kT (
*real*) Smearing temperature

*default*: 0.001- Diag.MPOrder (
*integer*) Order of Bessel function approximation to delta-function used in Methfessel-Paxton smearing

*default*: 0- Diag.GaussianHeight (
*real*) - The height of Gaussian function used to determine the width of Methfessel-Paxton
approximation to delta-function (see Electronic occupation smearing)

*default*: 0.1- Diag.EfStepFiness (
*real*) Parameter controlling the finness of the Fermi energy search step used in Methfessel-Paxton smearing method (see Electronic occupation smearing)

*default*: 1.0- Diag.NElecLess (
*Real*) The number of electrons to subtract from the total number of electrons in each spin channel, which gives the starting point for searching the lower bound for Fermi energy. Used in Methfessel-Paxton smearing method (see Electronic occupation smearing)

*default*: 10.0- Diag.KProcGroups (
*integer*) Number of k-point processor groups for k-point parallelisation (see K-point parallelization)

*default*: 1- Diag.ProcRows (
*integer*) Number of rows in the processor grid for SCALAPACK within each k-point processor group

*default*: Determined automatically- Diag.ProcCols (
*integer*) Number of columns in the processor grid for SCALAPACK within each k-point processor group. The rows and columns need to multiply together to be less than or equal to the number of processors. If ProcRows \(\times\) ProcCols \(<\) number of processors, some processors will be left idle.

*default*: Determined automatically

Go to top.

## Moving Atoms

- AtomMove.TypeOfRun (
*string*) values: static/cg/sqnm/lbfgs/md

Options:

static — Single point calculation

cg — Structure optimisation by conjugate gradients

sqnm - Stabilised Quasi-Newton Minimisation (recommended approach)

lbfgs — Structure optimisation by LBFGS (Limited Memory Broyden–Fletcher–Goldfarb–Shanno algorithm)

md — Velocity Verlet algorithm

*default*: static- AtomMove.QuenchMD (
*boolean*) Selects Quenched MD for structure relaxation (with

`AtomMove.TypeOfRun md`

)*default*: F- AtomMove.FIRE (
*boolean*) Selects FIRE method for structure relaxation (with

`AtomMove.TypeOfRun md`

)*default*: F- AtomMove.NumSteps (
*integer*) Maximum number of steps for a structure optimisation or molecular dynamics run

*default*: 100- AtomMove.MaxForceTol (
*real*) The structure optimisation will stop when the maximum force component is less than

**MD.MaxForceTol***default*: 0.0005 Ha/bohr- AtomMove.MaxSQNMStep (
*real*) The maximum distance any atom can move during SQNM (in Bohr). Applies to the part of the search direction not in the SQNM subspace (scaled directly by a step size, which is limited to ensure this value is not exceeded).

*default*: 0.2 bohr- AtomMove.Timestep (
*real*) Time step for molecular dynamics

*default*: 0.5- AtomMove.IonTemperature (
*real*) Initial temperature for molecular dynamics

*default*: 300 K for MD, 0 for Quench MD or FIRE- AtomMove.ReadVelocity (
*boolean*) Read velocity from file

`md.checkpoint`

(when`AtomMove.RestartRun T`

)or

`velocity.dat`

(when`AtomMove.RestartRun F`

, very rare)*default*: F (when`AtomMove.RestartRun F`

)or T (when

`AtomMove.RestartRun T`

)- AtomMove.AppendCoords (
*boolean*) Chooses whether to append coordinates to

`UpdatedAtoms.dat`

during atomic movement (T) or to overwrite (F)*default*: T- AtomMove.OutputFreq (
*integer*) Frequency of output of information.

*Not properly implemented**default*: 50- AtomMove.WriteXSF (
*boolean*) Write atomic coordinates to

`trajectory.xsf`

for`AtomMove.TypeOfRun = md`

or`cg`

, every`AtomMove.XsfFreq`

steps*default*: T- AtomMove.XsfFreq (
*integer*) Frequency of output of atomic coordinates to

`trajectory.xsf`

*default*: same as`AtomMove.OutputFreq`

- AtomMove.WriteXYZ (
*boolean*) Write atomic coordinates to

`trajectory.xyz`

for`AtomMove.TypeOfRun = md`

, every`AtomMove.XyzFreq`

steps*default*: T- AtomMove.XyzFreq (
*integer*) Frequency of output of atomic coordinates to

`trajectory.xyz`

*default*: same as`AtomMove.OutputFreq`

- AtomMove.TestForces (
*boolean*) Flag for testing forces with comparison of analytic and numerical calculations. Can produce

*large*amounts of output*default*: F- AtomMove.TestAllForces (
*boolean*) Switch to test

*all*force contributions or not*default*: F- AtomMove.CalcStress (
*boolean*) Toggle calculation of the stress tensor. Switching off can improve performace.

*default*: T- AtomMove.FullStress (
*boolean*) Toggle calculation of the off-diagonal elements of the stress tensor, which can be expensive, but is required for calculating certain properties.

*default*: F- AtomMove.AtomicStress (
*boolean*) Toggle calculation of atomic contributions to the stress tensor. Used in heat flux/thermal conductivity calculations. Significantly increases memory demands.

*default*: F- AtomMove.OptCell (
*boolean*) Turns on conjugate gradient relaxation of the simulation box dimensions a, b and c. Note that AtomMove.TypeOfRun must also be set to cg (except for method 2 below where sqnm will result in SQNM for atomic positions and CG for cell vectors).

*default*: F- AtomMove.OptCellMethod (
*integer*) Cell optimisation method.

*default*: 1Options:

Fixed fractional coordinates (only cell vectors)

Alternating atomic position and cell vector optimisation (recommended for simultaneous optimisation)

Simultaneous cell and atomic conjugate gradients relaxation; caution recommended (can be unstable)

- AtomMove.EnthalpyTolerance (
*real*) Enthalpy tolerance for cell optimisation

*default*: 1\(\times\)10\(^{-5}\) Ha- AtomMove.StressTolerance (
*real*) Stress tolerance for cell optimisation

*default*: 0.1 GPa- AtomMove.TargetPressure (
*real*) External pressure for NPT molecular dynamics and cell optimisation

*default*: 0.0 GPa- AtomMove.OptCell.Constraint (
*string*) Applies a constraint to the relaxation.

none: Unconstrained relaxation.

*Fixing a single cell dimension:*a: Fix the x-dimension of the simulation box

b: Fix the y-dimension of the simulation box

c: Fix the z-dimension of the simulation box

*Fixing multiple cell dimensions:*any combination of the above separated by a space character. e.g: “a b” fixes both the x and y dimensions of the simulation box

*Fixing Ratios:*Any combination of a, b or c separated by a “/” character. e.g “c/a” fixes the initial ratio of the z-dimension to the x-direction.

*Global scaling factor:*volume: minimize the total energy by scaling each simulation box dimension by the same global scaling factor. Search directions are set by the mean stress.

- AtomMove.TestSpecificForce (
*integer*) Label for which force contribution to test. Note that for PAOs non-local Pulay and Hellman-Feynman forces are found together as part of the HF calculation; \(\phi\) Pulay refers to changes in \(\phi(\mathbf{r})\) when atoms move, while S Pulay refers to changes in S when atoms move. Options:

1 Total 2 Total Hellman-Feynman 3 Total Pulay 4 Non-SC Correction 5 Non-local \(\phi\) Pulay 6 KE \(\phi\) Pulay 7 Local \(\phi\) Pulay 8 S Pulay

*default*: 1- AtomMove.TestForceDirection (
*integer*) Direction in which atom will be moved (1=x; 2=y; 3=z)

*default*: 1- AtomMove.TestForceAtom (
*integer*) Atom to move

*default*: 1- AtomMove.TestForceDelta (
*real*) Distance atom will be moved for numerical evaluation of force

*default*: 10\(^{-5}\) bohr- AtomMove.RestartRun (
*boolean*) Restart a MD run. Note that this will set

`General.LoadL T`

,`AtomMove.MakeInitialChargeFromSC T`

and`XL.LoadX T`

if using the extended Lagrangian. The atomic coordinates will be read from`md.positions`

and the velocities and extended system variables from`md.checkpoint`

.*default*: F- AtomMove.ReuseDM (
*boolean*) Selects the use of last-step L-matrix (

`ordern`

) or K-matrix(`diagon`

) during MD or structure relaxation*default*: T- AtomMove.ReuseSFcoeff (
*boolean*) Selects the use of last-step PAO coefficients of multi-site support functions during MD or structure relaxation

*default*: T- AtomMove.ReuseInvS (
*boolean*) Selects the use of T-matrix in MD run (rare)

*default*: F- AtomMove.SkipEarlyDM (
*boolean*) Selects the skip of earlyDM calculation in MD run

*default*: F- AtomMove.McWeenyFreq (
*integer*) McWeeny step is applied every N steps (with “AtomMove.ReuseDM T”)

*default*:- AtomMove.ExtendedLagrangian (
*boolean*) Selects XL-BOMD (with “AtomMove.ReuseDM T”)

*default*: F- AtomMove.FixCentreOfMass (
*boolean*) Remove the centre of mass velocity at every time step

*default*: T

Go to top.

## Molecular Dynamics

- MD.Ensemble (
*string*) values: nve/nvt/npt/nph

The molecular dynamics ensemble

*default*: nve- MD.Thermostat (
*string*) values: none/nhc/berendsen/svr

Thermostat type

`none`

No thermostat (used for calculating temperature only)

`berendsen`

Berendsen weak coupling thermostat

`svr`

Stochastic velocity rescaling

*default*: none- MD.Barostat (
*string*) values: none/berendsen/iso-mttk/ortho-mttk/mttk

Barostat type. The following are the only valid thermostat/barostat combinations for the NPT ensemble:

`berendsen`

/`berendsen`

,`nhc`

/`pr`

,`svr`

/`pr`

`none`

No barostat (used for calculating pressure only)

`berendsen`

Berendsen weak coupling barostat

`pr`

Parrinello-Rahman (extended system) barostat

*default*: none- MD.tauT (
*real*) Coupling time constant for thermostat. Required for Berendsen thermostat, or if

`MD.CalculateXLMass = T`

. Note that this number means different things for the Berendsen and NHC thermostats.*default*: 1.0- MD.TDrag (
*real*) Add a drag coefficient to the thermostat. The thermostat velocities are reduced by a factor \(1 - \tau/D_T\) every step.

*default*: 0.0- MD.nNHC (
*integer*) Number of Nosé-Hoover thermostats in chain

*default*: 5- MD.CellNHC (
*boolean*) Use a separate Nosé-Hoover chain for thermostating the unit cell (NPT only)

*default*: T- MD.NHCMass (
*blocks*) \(<n1> <n2> <n3> \ldots\) Masses of NHC heat baths

*default*: 1 1 1 1 1- MD.CellNHCMass (
*block*) \(<n1> <n2> <n3> \ldots\) Masses of NHC heat baths for unit cell

*default*: 1 1 1 1 1- MD.BulkModulusEst (
*real*) Bulk modulus estimate for system. Only necessary for Berendsen weak pressure coupling (

`MD.Barostat = berendsen`

or`MD.BerendsenEquil > 0`

)*default*: 100- MD.tauP (
*real*) Coupling time constant for barostat. Required for Berendsen barostat, or if MD.CalculateXLMass = T. Note that this number means different things for the Berendsen and Parrinello-Rahman barostats.

*default*: 10.0 (Berendsen) or 100.0 (MTTK)- MD.PDrag (
*real*) Add a drag coefficient to the barostat. The barostat velocities are reduced by a factor \(1 - \tau/D_P\) every step. This is useful when the lattice parameters are varying rapidly.

*default*: 0.0- MD.BoxMass (
*real*) Mass of box for extended system formalism (MTTK barostats)

*default*: 1- MD.CalculateXLMass (
*boolean*) Calculate the mass of the extended system components (thermostats, barostat) using the MTTK formulae.

*default*: T- MD.nYoshida (
*integer*) values: 1/3/5/7/15/25/125/625

Order of Yoshida-Suzuki integration

*default*: 1- MD.nMTS (
*integer*) Number of time steps in inner loop of MTS scheme

*default*: 1- MD.BerendsenEquil (
*integer*) Equilibrate the system for \(n\) steps using Berendsen weak coupling

*default*: 0- MD.TDEP (
*boolean*) Dump data in a format readable by the Temperature Dependent Effective Potential (TDEP) code.

*default*: F- MD.ThermoDebug (
*boolean*) Print detailed information about thermostat and extended variables in

`thermostat.dat`

*default*: F- MD.BaroDebug (
*boolean*) Print detailed information about barostat and extended variables in

`barostat.dat`

*default*: F- MD.VariableTemperature (
*boolean*) Simulation with a variable temperature if .True.

*default*: F- MD.VariableTemperatureMethod (
*string*) Type of temperature profile. Only

`linear`

temperature profile is implemented.*default*: linear- MD.VariableTemperatureRate (
*real*) Change rate for the temperature. In units of K/fs. If positive, heating. If negative, cooling.

*default*: 0.0- MD.InitialTemperature(
*real*) Initial temperature.

*default*: same as AtomMove.IonTemperature- MD.FinalTemperature(
*real*) Final temperature.

*default*: same as AtomMove.IonTemperature

Go to top.

## Spin Polarisation

- Spin.SpinPolarised (
*boolean*) Determines if the calculation is spin polarised (collinear) or non-spin polarised.

*default*: F- Spin.FixSpin (
*boolean*) Determines if spin populations are to be fixed. Only read if

**Spin.FixPolarised**is set.*default*: F- Spin.NeUP (
*real*) Total number of electrons in spin up channel at start of calculation.

*default*: 0.0- Spin.NeDN (
*real*) Total number of electrons in spin down channel at start of calculation.

*default*: 0.0

Go to top.

## DeltaSCF

- flag_DeltaSCF (
*boolean*) Selects delta SCF calculation

*default*:- DeltaSCF.SourceLevel (
*integer*) Eigenstate number to remove electron from (source)

*default*:- DeltaSCF.TargetLevel (
*integer*) Eigenstate number to promote electron to (target)

*default*:- DeltaSCF.SourceChannel (
*integer*) Spin channel for electron source

*default*:- DeltaSCF.TargetChannel (
*integer*) Spin channel for electron target

*default*:- DeltaSCF.SourceNFold (
*integer*) Allows selection of more than one level for excitation source (N-fold)

*default*:- DeltaSCF.TargetNFold (
*integer*) Multiplicity of target (N-fold)

*default*:- DeltaSCF.LocalExcitation (
*boolean*) Select an excitation localised on a group of atoms

*default*:- DeltaSCF.HOMOLimit (
*integer*) How many states down from HOMO to search for localised excitation

*default*:- DeltaSCF.LUMOLimit (
*integer*) How many states up from LUMO to search for localised excitation

*default*:- DeltaSCF.HOMOThresh (
*real*) (

*please fill in*)*default*:- DeltaSCF.LUMOThresh (
*real*) Threshold for identifying localised excitation (sum over square moduli of coefficients)

*default*:

Go to top.

## Constrained DFT (cDFT)

- cDFT.Perform_cDFT (
*boolean*) Selects cDFT operation

*default*:- cDFT.Type (
*integer*) values: 1 or 2

Selects constraint to be for absolute charge on groups (1) or difference between two groups (2)

*default*:- cDFT.MaxIterations (
*integer*) Maximum iterations permitted

*default*:- cDFT.Tolerance (
*real*) Tolerance on charge

*default*:- cDFT.NumberAtomGroups (
*integer*) Number of groups of atoms

*default*:- cDFT.AtomGroups (
*block*) Block with each line specifying: Number of atoms, target charge, label for block. For each line, there should be a corresponding block with the appropriate label; the block consists of a list of atom numbers for the atoms in the group

Go to top.

## vdW-DF

- vdWDFT.LDAFunctionalType (
*string*) Selects LDA functional to use with vdW-DF

*default*:

Go to top.

## DFT-D2

- DFT-D2_range (
*real*) DFT-D2 cutoff range (bohr)

*default*:

Go to top.

## XL-BOMD

- XL.Kappa (
*real*) Value of kappa

*default*: 2.0- XL.PropagateX (
*boolean*) Selects the propagation of LS in XL-BOMD

*default*: T- XL.PropagateL (
*boolean*) Selects the propagation of L matrix in XL-BOMD (inappropriate)

*default*: F- XL.Dissipation (
*boolean*) Selects the addition of dissipative force

*default*:- XL.MaxDissipation (
*integer*) Order of dissipative force term

*default*: 5- XL.Integrator (
*string*) Selects the Verlet method or velocity Verlet method

*default*: velocityVerlet- XL.ResetFreq (
*integer*) Frequency to reset the propagation of X matrix in XL-BOMD

*default*: 0 (no reset)

Go to top.

## Advanced and obscure tags

### General

- General.LoadInvS (
*boolean*) Selects loading of inverse S matrix from previous step (not recommended)

*default*: F- General.NeutralAtomProjector (
*boolean*) Selects projector expansion of neutral atom potential; still in development. Only for expert use. (Allows specification of maximum l value for projectors and list of number of projectors for each l value.)

*default*: F- General.PAOFromFiles (
*boolean*) Allows you to give explicit file name for .ion files in atom block

*default*: F- General.MaxTempMatrices (
*integer*) Allows user to increase number of temporary matrices; sometimes required for wavefunction output.

*default*: 100- General.EwaldAccuracy (
*real*) Accuracy required for Ewald sum

*default*:1\(\times\)10\(^{-10}\)- General.CheckDFT (
*boolean*) Calculates DFT energy using output density

*default*: F- General.AverageAtomicDiameter (
*real*) Related to space-filling

*default*: 5.0- General.GapThreshold (
*real*) Related to space-filling

*default*: 2.0*(largest support radius)- General.only_Dispersion (
*boolean*) Selects only DFT_D2 calculation (no electronic structure etc)

- General.MixXCGGAInOut (
*real*) For non-SCF calculations only, chooses how to mix the proportions of GGA XC stress contribution (from the change of the electron density gradient) found using input (0.0 gives pure input) and output (1.0 gives pure output) densities. Note that this is an approximation but varying the value significantly away from 0.5 will give inconsistency between stress and energy.

*default*: 0.5

Go to top.

### Atomic Specification

- Atom.ValenceCharge (
*real*) Valence charge of species (e.g. 4 for carbon, 6 for oxygen)

*default*: read from ion file- Atom.NumberOfSupports (
*integer*) Number of support functions per atom for a species. Don’t confuse support functions and PAOs ! Support functions can be expanded in a basis set of PAOs or blips

*default*: number of PAOs read from ion file- Atom.SupportFunctionRange (
*real*) Confinement radius for the support functions for a given species

*default*: maximal PAO radius read from ion file- Atom.SupportGridSpacing (
*real*) The spacing of the blip grid (if using). Equivalent (under certain circumstances) to a maximum g-vector of \(\pi\)/

**SupportGridSpacing**plane wave cutoff as region radius and L matrix radius go to infinity.*Not used for PAO calculations*. N.B. Grid.GridCutoff will be reset to*at least*half SupportGridSpacing if too small.*default*: none- Atom.NonLocalFactor (
*real*) This is an adjustment factor: the Hamiltonian range is (strictly) 2 \(\times\) (support function radius + non-local projector radius). However, generally without affecting the results, the Hamiltonian range can be set to 2 \(\times\) (support function radius + non_local_factor\(\times\) non-local projector radius). If you have non_local_factor = 1.0 then you get the full range, if 0.0 then the same range as the S matrix.

*default*: 0.0- Atom.InvSRange (
*real*) Range of inverse S matrix (though actual matrix range is twice this for consistency with S matrix range).

*default*: support function range- Atom.SpinNeUp (
*real*) Specify the population of spin-up electrons for setting initial spin state of atomic densities

*default*: 0.0- Atom.SpinNeDn (
*real*) Specify the population of spin-down electrons for setting initial spin state of atomic densities

*default*: 0.0

Go to top.

### I/O General

- IO.Partitions (
*string*) Name for file containing distribution of partitions over processors (generated by accompanying utilities)

*default*:`make_prt.dat`

- IO.TimingOn (
*boolean*) Whether time information will be measured and written to output

*default*: F- IO.TimeAllProcessors (
*boolean*) Specifies whether time information will be written for all processors or just for the input/output process (the default)

*default*: F- IO.WriteTimeFile (
*boolean*) Whether time files are written or not. This flag will be ignored if

`IO.TimeAllProcessors`

is true, in which case time files are always written.*default*: T- IO.TimeFileRoot (
*string*) Root to be used in the time files, with an extension indicating the processor number, e.g.

`.001`

*default*:`time`

Go to top.

### I/O Atomic Coordinates

- IO.PdbAltLoc (
*string*) In case of PDB files with multiple locations selects an alternate location. Values: A, B, etc., as listed in the pdb file. Note that if the keyword is present in the input file but no value is given, only the parts of the system without any alternate location specification will be taken into account

*default*: none- IO.PdbOut (
*boolean*) Format of the output coordinate file. Writes a PDB file if set to T. In that case, either the input must be in pdb format or a PDB “template” file needs to be specified (keyword General.PdbTemplate)

*default*: F- IO.PdbTemplate (
*string*) A file used as a template for writing out coordinate files in the PDB format, i.e., the output file will contain the same information as the template, only the atomic coordinates will be overwritten. If the input file is in PDB format, it will also be used as the template, although this can still be overwritten with this keyword

*default*: coordinate file- IO.AtomOutputThreshold (
*integer*) Threshold below which atomic positions are output on initialisation, and atomic forces are output at the end of a static run.

*default*: 200

Go to top.

### Basis Set

- Basis.BasisSet (
*string*) values: blips/PAOs

Selects the basis set in which to expand the support functions (localised orbitals).

Options:

*default*: PAOs- Basis.LoadBlip (
*boolean*) Load blip or PAO coefficients from file. If set to T, for blips the code will look for a set of files containing blip coefficients, which is taken to be

`blip_coeffs.nnn`

, where`nnn`

is processor number (padded with zeroes); for PAOs, the code will look for a*single*file which is`supp_pao.dat`

by default, but can be set with`Basis.SupportPaoFile`

*default*: F- Basis.SupportPaoFile (
*string*) Specifies filename for PAO coefficients

*default*:`supp_pao.dat`

- Basis.UsePulayForPAOs (
*boolean*) Determines whether to use Pulay DIIS for minimisation of PAO basis coefficients

*default*: F- Basis.PaoKspaceOlGridspace (
*real*) Determines the reciprocal-space grid spacing for PAO integrals

*default*: 0.1- Basis.PaoKspaceOlCutoff (
*real*) Determines the cutoff for reciprocal-space grid spacing for PAO integrals

*default*: 1000.0- Basis.PAOs_StoreAllAtomsInCell (
*boolean*) Determines whether coefficients for all atoms in cell are stored on each processor (improves speed but potentially memory expensive, particularly with large systems) or only local atom coefficients (increases communication overhead)

*default*: T- Basis.SymmetryBreaking (
*boolean*) Determines whether symmetry-breaking assignment of PAOs to support functions is allowed. In general, it is

*highly*recommended that all atoms have sufficient support functions to span the space of angular momenta used in PAOs (i.e. \(2l+1\) support functions for each \(l\) channel used for PAOs); reducing the number potentially results in symmetry breaking and unphysical behaviour*default*: F- Basis.PaoNormFlag (
*integer*) Determines whether PAOs are normalised

*default*: 0- Basis.TestBasisGradients (
*boolean*) Chooses whether gradients of energy with respect to basis function coefficients should be tested (using numerical vs. analytical gradients).

**WARNING :**this produces large amounts of data*default*: F- Basis.TestBasisGradTot (
*boolean*) Test total gradient ?

*default*: F- Basis.TestBasisGradBoth (
*boolean*) Test both S- and H-derived gradients (i.e. gradients arising from change of S or H when support functions vary) ?

*default*: F- Basis.TestBasisGrad_S (
*boolean*) Test S-derived gradient ?

*default*: F- Basis.TestBasisGrad_H (
*boolean*) Test H-derived gradient ?

*default*: F- Basis.PAOs_OneToOne (
*boolean*) Assign PAOs to individual support functions (implies no support function optimisation)

*default*: F

Go to top.

### Integration Grid

- Grid.PointsAlong[X/Y/Z] (
*integer*) Grid points along x (y,z). Overwrites the values set by

**Grid.GridCutoff**. The default FFT code requires that the number of grid points have prime factors of 2, 3 or 5*default*: 0- Grid.InBlock[X/Y/Z] (
*integer*) This is the size of a grid point block (i.e., how many grid points are in one block in the x (y,z) direction), which must be a multiple of 2, 3, or 5 (larger values may impact on parallel efficiency).

*default*: 4- Grid.ReadBlocks (
*boolean*) If specified, the code reads information about blocks from the file make_blk.dat

*default*: F

Go to top.

J. P. Perdew and A. Zunger. Self-interaction correction to density-functional approximations for many-electron systems. *Phys. Rev. B*, 23:5048, 1981. doi:10.1103/PhysRevB.23.5048.

S. Goedecker, M. Teter, and J. Hutter. Separable dual-space gaussian pseudopotentials. *Phys. Rev. B*, 54:1703, 1996. doi:10.1103/PhysRevB.54.1703.

John P. Perdew and Yue Wang. Accurate and simple analytic representation of the electron-gas correlation energy. *Phys. Rev. B*, 45:13244, 1992. doi:10.1103/PhysRevB.45.13244.

J. P. Perdew, K. Burke, and M. Ernzerhof. Generalized gradient approximation made simple. *Phys. Rev. Lett.*, 77(18):3865, 1996. doi:10.1103/PhysRevLett.77.3865.

Y. Zhang and W. Yang. Comment on “generalized gradient approximation made simple”. *Phys. Rev. Lett.*, 80(4):890–890, 01 1998. URL: https://link.aps.org/doi/10.1103/PhysRevLett.80.890, doi:10.1103/PhysRevLett.80.890.

B. Hammer, L. B. Hansen, and J. K. Nørskov. Improved adsorption energetics within density-functional theory using revised perdew-burke-ernzerhof functionals. *Phys. Rev. B*, 59:7413, 1999. doi:10.1103/PhysRevB.59.7413.

Z. Wu and R. E. Cohen. More accurate generalized gradient approximation for solids. *Phys. Rev. B*, 73(23):235116, 06 2006. doi:10.1103/PhysRevB.73.235116.

X.-P. Li, R. W. Nunes, and D. Vanderbilt. Density-matrix electronic-structure method with linear system-size scaling. *Phys. Rev. B*, 47:10891, 1993. doi:10.1103/physrevb.47.10891.

A. H. R. Palser and D. E. Manolopoulos. Canonical purification of the density matrix in electronic-structure theory. *Phys. Rev. B*, 58(19):12704, 1998. doi:10.1103/PhysRevB.58.12704.

E. Artacho, D. Sanchez-Portal, P. Ordejon, A. Garcia, and J. M. Soler. Linear-scaling ab-initio calculations for large and complex systems. *Phys. Stat. Solidi B*, 215:809, 1999. doi:10.1002/(SICI)1521-3951(199909)215:1<809::AID-PSSB809>3.0.CO;2-0.

E. Hernández, M. J. Gillan, and C. M. Goringe. Basis functions for linear-scaling first-principles calculations. *Phys. Rev. B*, 55:13485–13493, 1997. doi:10.1103/PhysRevB.55.13485.

Go to top.