This document lists and provides the description of the name (keywords) of structural optimization input variables to be used in the main input file of the abinis code.

The new user is advised to read first the new user's guide, before reading the present file. It will be easier to discover the present file with the help of the tutorial.

When the user is sufficiently familiarized with ABINIT, the reading of the ~ABINIT/Infos/tuning file might be useful. For response-function calculations using abinis, the complementary file ~ABINIT/Infos/respfn_help is needed.

This file is distributed under the terms of the GNU General Public License, see ~ABINIT/Infos/copyright or http://www.gnu.org/copyleft/gpl.txt .

For the initials of contributors, see ~ABINIT/Infos/contributors .

Goto :

Help files :

Files that describe other input variables:

- Basic variables, VARBAS
- Developper variables, VARDEV
- File handling variables, VARFIL
- Geometry builder + symmetry related variables, VARGEO
- Ground-state calculation variables, VARGS
- GW variables, VARGW
- Internal variables, VARINT
- Parallelisation variables, VARPAR
- Projector-Augmented Wave variables, VARPAW
- Response Function variables, VARRF

A. amu

B.

C.

D. delayperm dilatmx dtion

E. ecutsm

F. friction

G. getcell getxcart getxred

H.

I. iatcon iatfix iatfixx iatfixy iatfixz ionmov

J.

K.

L.

M. mdftemp mditemp mdwall

N. natfix natfixx natfixy natfixz natcon nconeq ntime

O. optcell

P.

Q.

R. restartxf

S. signperm strfact strprecon strtarget

T. tolmxf

U.

V. vel vis

W. wtatcon

X.

Y.

Z.

amu

Mnemonics: Atomic Mass Units

Characteristic:

Variable type: real array amu(ntypat)

Default is provided by a database of atomic masses.

Gives the masses in atomic mass units for each kind of atom in cell. These masses are used in performing molecular dynamical atomic motion if ionmov=1, 6, 7 or 8. Note that one may set all masses to 1 for certain cases in which merely structural relaxation is desired and not actual molecular dynamics.

Using 1986 recommended values, 1 atomic mass unit = 1.6605402e-27 kg. In this unit the mass of Carbon 12 is exactly 12.

A database of atomic masses is provided, giving default values.
Note that the default database uses mixed isotope masses (for Carbon
the natural occurence of Carbon 13 is taken into account).
The values are those recommended by the commission on Atomic Weights and
Isotopic Abundances, Inorganic Chemistry Division, IUPAC, in
*Pure Appl. Chem.* **60**, 841 (1988).
For Tc, Pm, Po to Ac, Pa and beyond U,
none of the isotopes has a half-life greater than 3.0d10 years, and
the values provided in the database do not come from that source.
For alchemical pseudoatoms, the masses of the constituents
atoms are mixed, according to the alchemical miwing
coefficients mixalch

delayperm

Mnemonics: DELAY between trials to PERMUTE atoms

Characteristic:

Variable type: integer

Default is 0.

Delay (number of time steps) between trials to permute two atoms, in view of accelerated search of minima. Still in development. See the routine moldyn.f. See also signperm. When

Go to the top

dilatmx

Mnemonics: DILATation : MaXimal value

Characteristic:

Variable type: real parameter

Default is 1.0 .

Gives the maximal permitted scaling of the lattice parameters when the cell shape and dimension is varied (see variable optcell). It is used to define the sphere of plane waves and FFT box coherent with the possible modifications of the cell (ionmov==2 and optcell/=0). For these definitions, it is equivalent to changing ecut by multiplying it by

Using

Setting

It is possible to use

Must be 1.0 for RF calculations.

Go to the top

dtion

Mnemonics: Delta Time for IONs

Characteristic:

Variable type: real parameter

Default is 100.

Used for controlling ion time steps. If ionmov is set to 1, 6 or 7, then molecular dynamics is used to update atomic positions in response to forces. The parameter

A typical good value for

For quenched dynamics (ionmov=7), a larger time step might be taken, for example 200.

No meaning for RF calculations.

Go to the top

ecutsm

Mnemonics: Energy CUToff SMearing

Characteristic: ENERGY

Variable type: real parameter (in Hartree)

Default is 0.d0

This input variable is important when performing relaxation of unit cell size and shape (non-zero optcell). Using a non-zero

Technical information :

See Bernasconi et al, J. Phys. Chem. Solids 56, 501 (1995)
for a related method.

**ecutsm** allows to define an effective kinetic energy for plane waves, close to, but
lower than the
maximal kinetic energy ecut. For kinetic
energies less than ecut-**ecutsm**, nothing is modified,
while between ecut-**ecutsm** and ecut,
the kinetic energy is multiplied by:

1.0 / ( x^{2} ( 3-2*x) )

where x = (ecut - kinetic_energy)/**ecutsm**

Note that x^{2} ( 3-2*x) is 0 at x=0, with vanishing derivative,
and that at x=1 , it is 1, with also vanishing derivative.

If **ecutsm** is zero, the unmodified kinetic energy is used.
**ecutsm** can be specified in Ha (the default), Ry, eV or Kelvin, since
**ecutsm** has the
'ENERGY' characteristics.
(1 Ha=27.2113961 eV).

A few test for Silicon (diamond structure, 2 k-points) have
shown 0.5 Ha to be largely enough for ecut between 2Ha and 6Ha,
to get smooth curves. It is likely that this value is OK
as soon as ecut is larger than 4Ha.

Go to the top
** | **Complete list of input variables

friction

Mnemonics: internal FRICTION coefficient

Characteristic:

Variable type: real parameter

Default is 0.001

Gives the internal friction coefficient (atomic units) for Langevin dynamics (when ionmov=9): fixed temperature simulations with random forces.

The equation of motion is :

M_{I} d^{2}R_{I}/dt^{2}=
F_{I} - **friction** M_{I} dR_{I}/dt
- F_random_{I}

where F_random_{I} is a Gaussian random force with average zero,
and variance 2 **friction** M_{I} kT.

The atomic unit of friction is
hartrees*electronic mass*(atomic time units)/bohr^{2}.
See J. Chelikowsky, J. Phys. D : Appl Phys. 33(2000)R33.

Go to the top
** | **Complete list of input variables

getcell

Mnemonics: GET CELL parameters from ...

Characteristic:

Variable type: integer parameter, an instance of a 'get' variable.

Default is 0.

This variable is typically used to chain the calculations, in the multi-dataset mode (ndtset>0), since it describes from which dataset acell and rprim are to be taken, as input of the present dataset. The cell parameters are EVOLVING variables, for which such a chain of calculations is useful.

If ==0, no use of previously computed values must occur.

If it is positive, its value gives the index of the dataset from which the data are to be used as input data. It must be the index of a dataset already computed in the SAME run.

If equal to -1, the output data of the previous dataset must be taken, which is a frequently occuring case. However, if the first dataset is treated, -1 is equivalent to 0, since no dataset has yet been computed in the same run.

If another negative number, it indicates the number of datasets to go backward to find the needed data (once again, going back beyond the first dataset is equivalent to using a null get variable).

Go to the top

getxcart

Mnemonics: GET XCART from ...

getxred

Mnemonics: GET XRED from ...

getvel

Mnemonics: GET VEL from ...

Characteristic:

Variable type: integer parameters, instances of 'get' variables

Default is 0.

These variables are typically used to chain the calculations,
in the multi-dataset mode (ndtset>0)
since they describe from which dataset the corresponding
output variables are to be taken, as input of the present
dataset. The atomic positions and velocities are EVOLVING variables,
for which such a chain of calculation is useful.

Note that the use of **getxcart** and **getxred** differs when
acell and rprim are different from one dataset
to the other.

If ==0, no use of previously computed values must occur.

If it is positive, its value gives the index of the dataset
from which the data are to be used as input data.
It must be the index of a dataset already computed in the
SAME run.

If equal to -1, the output data of the previous dataset
must be taken, which is a frequently occuring case.
However, if the first dataset is treated, -1 is equivalent
to 0, since no dataset has yet been computed in the same run.

If another negative number, it indicates the number
of datasets to go backward to find the needed data
(once again, going back beyond the first dataset is equivalent
to using a null get variable).

Note : **getxred** and **getxcart** cannot be simultaneously
non-zero for the same dataset. On the other hand the use of
**getvel** with **getxred** is allowed, despite the different
coordinate system.

Go to the top
** | **Complete list of input variables

iatcon

Mnemonics: Indices of AToms in CONstraint equations

Characteristic: NO MULTI, NOT INTERNAL

Variable type: integer array iatcon(natcon,nconeq)

Default is 0

Gives the indices of the atoms appearing in each of the nconeq independent equations constraining the motion of atoms during structural optimization or molecular dynamics (see nconeq, natcon, and wtatcon).

(Note : combined with wtatcon to give internal representation of the latter - this should be described)

Go to the top

iatfix

Mnemonics: Indices of AToms that are FIXed

iatfixx

Mnemonics: Indices of AToms that are FIXed along the X direction

iatfixy

Mnemonics: Indices of AToms that are FIXed along the Y direction

iatfixz

Mnemonics: Indices of AToms that are FIXed along the Z direction

Characteristic: **iatfixx**,**iatfixy** and **iatfixz** are NOT INTERNAL

Variable type: integer arrays of length natfix,
natfixx, natfixy or
natfixz

No Default (ignored unless natfix,
natfixx, natfixy or
natfixz > 0).

Give the index (in the range 1 to natom)
of each atom which is to
be held fixed for structural optimization or molecular dynamics.
The variable **iatfix** lists those fixed in the three directions,
while the other variables allow to fix some atoms along
x, y or z directions, or a combination of these.

WARNING : The implementation is inconsistent !! For ionmov==1, the fixing of directions was done in cartesian coordinates, while for the other values of ionmov, it was done in reduced coordinates. Sorry for this.

There is no harm in fixing one atom in the three directions
using **iatfix**, then fixing it again in other directions
by mentioning it in **iatfixx**, **iatfixy** or **iatfixz**.

The internal representation of these input data is done
by the mean of one variable **iatfix**(3,natom), defined
for each direction and each atom, being 0 if the atom is
not fixed along the direction, and 1 if the atom is fixed
along the direction.
When some atoms are fixed along 1 or 2 directions, the
use of symmetries is restricted to symmetry operations
whose (3x3) matrices symrel are diagonal.

If the geometry builder is used, **iatfix** will be related
to the preprocessed set of atoms, generated by the
geometry builder. The user must thus foresee the effect
of this geometry builder (see objarf).

Go to the top
** | **Complete list of input variables

ionmov

Mnemonics: IONic MOVEs

Characteristic:

Variable type: integer parameter

Default for

Control the displacements of ions, and eventually (see optcell) changes of cell shape and size.

- 0=> do not move ions;
- 1=> move atoms using molecular dynamics with
optional viscous damping (friction linearly proportional
to velocity). The viscous damping is controlled by the
parameter "vis".
If actual undamped molecular dynamics is desired,
set vis to 0. The implemented algorithm is the generalisation
of the Numerov technique (6th order), but is NOT invariant
upon time-reversal, so that the energy is not conserved.
The value
**ionmov**=6 will usually be preferred, although the algorithm that is implemented is lower-order. opcell/=0 is not available - 2=> conduct structural optimization using the Broyden-Fletcher-Goldfarb-Shanno minimization (BFGS). This is much more efficient for structural optimization than viscous damping, when there are less than let's say 10 degrees of freedom to optimize.
- 3=> conduct structural optimization using the
Broyden-Fletcher-Goldfarb-Shanno minimization (BFGS),
modified to take into account the total energy as well as
the gradients (as in usual BFGS).

See the paper by Schlegel, J. Comp. Chem. 3, 214 (1982). Might be better than**ionmov**=2 for few degrees of freedom (less than 3 or 4) - 4=> conjugate gradient algorithm for simultaneous optimization of potential and ionic degrees of freedom. It can be used with iscf=2 and iscf=5 or 6 (WARNING : this is under development, and does not work very well in many cases). optcell/=0 is not available.
- 5=> Simple relaxation of ionic positions according
to (converged) forces. Equivalent to
**ionmov**=1 with zero masses, albeit the relaxation coefficient is not vis, but iprcfc. optcell/=0 is not available. - 6=> Molecular dynamics using the Verlet algorithm, see Allen & Tildesley "Computer simulation of liquids" 1987, p 81. Although partly coded, optcell/=0 is not available. The only related parameter is the time step (dtion).
- 7=> Quenched Molecular dynamics using the Verlet algorithm, and stopping each atom for which the scalar product of velocity and force is negative. Although partly coded, optcell/=0 is not available. The only related parameter is the time step (dtion). The goal is not to produce a realistic dynamics, but to go as fast as possible to the minimum. For this purpose, it is advised to set all the masses to the same value (for example, use the Carbon mass, i.e. set amu to 12 for all type of atoms).
- 8=> Molecular dynamics with Nose-Hoover thermostat, using the Verlet algorithm. Although partly coded, optcell/=0 is not available. Related parameters : the time step (dtion), the initial temperature (mditemp), the final temperature (mdftemp), and the thermostat mass (noseinert).
- 9=> Langevin molecular dynamics. Although partly coded, optcell/=0 is not available. Related parameters : the time step (dtion), the initial temperature (mditemp), the final temperature (mdftemp), and the friction coefficient (friction).

No meaning for RF calculations.

Go to the top

mdftemp

Mnemonics: Molecular Dynamics Final Temperature

Characteristic:

Variable type: real mdftemp

Default is

Give the final temperature (for itime=ntime) of the Nose-Hoover thermostat (ionmov=8) and Langevin dynamics (ionmov=9), in Kelvin. This temperature will change linearly from mditemp at itime=1 to the final temperature

Go to the top

mditemp

Mnemonics: Molecular Dynamics Initial Temperature

Characteristic:

Variable type: real mditemp

Default is 300

Give the initial temperature (for itime=1) of the Nose-Hoover thermostat (ionmov=8) and Langevin dynamics (ionmov=9), in Kelvin. This temperature will change linearly to reach the temperature mdftemp at the end of the ntime timesteps.

Go to the top

mdwall

Mnemonics: Molecular Dynamics WALL location

Characteristic:

Variable type: real parameter

Default is 10000.0 Bohr (the walls are extremely far away).

Gives the location (atomic units) of walls on which the atoms will bounce back. when ionmov=6, 7, 8 or 9. For each cartesian direction idir=1, 2 or 3, there is a pair of walls with coordinates xcart(idir)=-wall and xcart(idir)=rprimd(idir,idir)+wall . Supposing the particle will cross the wall, its velocity normal to the wall is reversed, so that it bounces back.

By default, given in bohr atomic units (1 bohr=0.5291772083 Angstroms), although Angstrom can be specified, if preferred, since

Go to the top

natcon

Mnemonics: Number of AToms in CONstraint equations

Characteristic: NO MULTI

Variable type: integer array of length nconeq

Default is 0

Gives the number of atoms appearing in each of the nconeq independent equations constraining the motion of atoms during structural optimization or molecular dynamics (see nconeq, iatcon, and wtatcon).

Go to the top

natfix

Mnemonics: Number of Atoms that are FIXed

natfixx

Mnemonics: Number of Atoms that are FIXed along the X direction

natfixy

Mnemonics: Number of Atoms that are FIXed along the Y direction

natfixz

Mnemonics: Number of Atoms that are FIXed along the Z direction

Characteristic: NOT INTERNAL

Variable type: integer parameter

Defaults are 0 (no atoms held fixed).

Gives the number of atoms (not to exceed
natom) which are to be held fixed during a structural
optimization or molecular dynamics.

When **natfix** > 0,
**natfix** entries should be provided in array iatfix.

When **natfixx** > 0, **natfixx** entries should be provided
in array iatfixx, and so on ...

Go to the top
** | **Complete list of input variables

nconeq

Mnemonics: Number of CONstraint EQuations

Characteristic: NO MULTI

Variable type: integer parameter

Default is 0

Gives the number of independent equations constraining the motion of atoms during structural optimization or molecular dynamics (see natcon, iatcon, and wtatcon).

Go to the top

noseinert

Mnemonics: NOSE INERTia factor

Characteristic:

Variable type: real noseinert

Default is 1.0d5

Give the inertia factor W

M

and

W

where I represent each nucleus, M

Go to the top

ntime

Mnemonics: Number of TIME steps

Characteristic:

Variable type: integer parameter

Default is 5.

Gives the number of molecular dynamics time steps or Broyden structural optimization steps to be done if ionmov=1 or 2 respectively.

Note that at the present the option ionmov=1 is initialized with four Runge-Kutta steps which costs some overhead in the startup. By contrast, the initialisation of other ionmov values is only one SCF call.

Go to the top

ntypat

Mnemonics: Number of TYPEs of atoms

Characteristic: NO MULTI

Variable type: integer parameter

Default is 1.

Gives the number of types of atoms. E.g. for a homopolar system (e.g. pure Si)

The code tries to read the same number pseudopotential files.

The first pseudopotential is assigned type number 1, and so on ...

Go to the top

optcell

Mnemonics: OPTimize the CELL shape and dimensions

Characteristic:

Variable type: integer parameter

The Default is

Allows to optimize the unit cell shape and dimensions, when ionmov=2 or 3. The configuration for which the stress almost vanish is iteratively determined, by using the same algorithms as for the nuclei positions. Will eventually modify acell and/or rprim. The ionic positions are ALWAYS updated, according to the forces. A target stress tensor might be defined, see strtarget

**optcell**=0 : modify nuclear positions, since ionmov=2, but no cell shape and dimension optimisation.**optcell**=1 : optimisation of volume only (do not modify rprim, and allow an homogeneous dilatation of the three components of acell)**optcell**=2 : full optimization of cell geometry (modify acell and rprim - normalize the vectors of rprim to generate the acell). This is the usual mode for cell shape and volume optimization. It takes into account the symmetry of the system, so that only the effectively relevant degrees of freedom are optimized.**optcell**=3 : constant-volume optimization of cell geometry (modify acell and rprim under constraint - normalize the vectors of rprim to generate the acell)**optcell**=4,5 or 6 : optimize acell(1), acell(2) or acell(3), respectively (only works if the two other vectors are orthogonal to the optimized one, the latter being along its cartesian axis).**optcell**=7,8 or 9 : optimize the cell geometry while keeping the first, second or third vector unchanged (only works if the two other vectors are orthogonal to the one left unchanged, the latter being along its cartesian axis).

- one has to get rid off the discontinuites due to discrete changes of plane wave number with cell size, by using a suitable value of ecutsm;
- one has to allow for the possibility of a larger sphere of plane waves, by using dilatmx;
- one might have to adjust the scale of stresses to the scale of forces, by using strfact.
- if all the reduced coordinates of atoms are fixed by symmetry, one cannot use toldff to stop the SCF cycle. (Suggestion : use toldfe with a small value, like 1.0d-10)

Presently (v3.1), one cannot restart (restartxf)
a calculation with a non-zero **optcell** value from the
(x,f) history of another run with a different non-zero **optcell** value. There
are still a few problems at that level.

Go to the top
** | **Complete list of input variables

restartxf

Mnemonics: RESTART from (X,F) history

Characteristic:

Variable type: integer parameter

Default is 0.

Control the restart of broyden minimisation.

Works only for ionmov=2 (Broyden) and when an input wavefunction file is specified, thanks to the appropriate values of irdwfk or getwfk.

If positive, the code reads from the input wf file, the previous history of atomic coordinates and corresponding forces, in order to continue the work done by the job that produced this wf file. If optcell/=0, the history of acell and rprim variables is also taken into account. The code will take into consideration the whole history (if

If zero, the Broyden minimization is done from scratch.

NOTE : the input wf file must have been produced by a run that exited cleanly. It cannot be one of the temporary wf files that exist when a job crashed.

Presently (v3.1), one cannot restart
a calculation with a non-zero optcell value from the
(x,f) history of another run with a different
non-zero optcell value. There
are still a few problems at that level.
Starting a non-zero optcell
run from a zero optcell run should work.

Go to the top
** | **Complete list of input variables

rfasr

Mnemonics: Response Function : Acoustic Sum Rule

Characteristic: RESPFN

Variable type: integer parameter

Default is 0.

Control the evaluation of the acoustic sum rule in effective charge calculations within a response function calculation.

- 0 => no acoustic sum rule imposed
- 1 => acoustic sum rule imposed with extra charge evenly distributed among atoms
- 2 => acoustic sum rule imposed with extra charge given proportionally to those atoms with the largest effective charge.

Go to the top

signperm

Mnemonics: SIGN of PERMutation potential

Characteristic:

Variable type: integer

Default is 1.

In development. See the routine moldyn.f. See also delayperm.

+1 favors alternation of species

-1 favors segregation

Go to the top
** | **Complete list of input variables

strfact

Mnemonics: STRess FACTor

Characteristic:

Variable type: real parameter

Default is 100.0 (bohr^2)

The stresses multiplied by

For example, the stopping criterion defined by tolmxf relates to these scaled stresses.

Go to the top

strprecon

Mnemonics: STRess PRECONditioner

Characteristic:

Variable type: real parameter

Default is 1.0

This is a scaling factor to initialize the part of the Hessian related to the treatment of the stresses (optimisation of the unit cell). In case there is an instability, decrease the default value, e.g. set it to 0.1 .

Go to the top

strtarget

Mnemonics: STRess TARGET

Characteristic:

Variable type: real array strtarget(6)

Default is 6*0.0 (Ha/Bohr**3)

The optimization of cell size and shape, as might be asked through optcell, will target the stress tensor defined by by

The components of the stress tensor must be stored according to :
(1,1)->1 ; (2,2)->2 ; (3,3)->3 ; (2,3)->4 ; (3,1)->5 ; (1,2)->6.
The conversion factor
between Ha/Bohr**3 and GPa is : 1 Ha/Bohr**3 = 29421.033d0 GPa.

Not used if optcell==0.

Go to the top
** | **Complete list of input variables

tolmxf

Mnemonics: TOLerance on the MaXimal Force

Characteristic:

Variable type: real parameter

Default is 5.0d-5 hartree/bohr.

Sets a maximal absolute force tolerance (in hartree/bohr) below which BFGS structural relaxation iterations will stop.

Can also control tolerance on stresses, when optcell/=0, using the conversion factor strfact. This tolerance applies to any particular cartesian component of any atom, excluding fixed ones. See the parameter ionmov.

This is to be used when trying to equilibrate a structure to its lowest energy configuration (ionmov=2).

A value of about 5.0d-5 hartree/bohr or smaller is suggested (this corresponds to about 2.5d-3 eV/Angstrom).

No meaning for RF calculations.

Go to the top

vel

Mnemonics: VELocity

Characteristic: EVOLVING

Variable type: real array vel(3,natom)

Default is 3*natom 0's.

Gives the starting velocities of atoms, in cartesian coordinates, in bohr/atomic time units (atomic time units given where dtion is described).

Irrelevant unless ionmov > 0.

For ionmov=8 (Nose thermostat), if

If the geometry builder is used,

Velocities evolve is ionmov==1.

Go to the top

vis

Mnemonics: VIScosity

Characteristic:

Variable type: real parameter

Default is 100.

Gives the viscosity (atomic units) for linear frictional damping term applied to molecular dynamics when ionmov=1. Used for eventual relaxation of structure (however, ionmov=2 is in general more efficient).

The equation of motion is :

M_{I} d^{2}R_{I}/dt^{2}=
F_{I} - **vis** dR_{I}/dt

The atomic unit of viscosity is
hartrees*(atomic time units)/bohr^{2}. Units are not
critical as this is a ficitious damping used to relax
structures. A typical value for silicon is 400 with
dtion of 350 and atomic mass 28 amu. Critical
damping is most desirable and is found only by
optimizing **vis** for a given situation.

Go to the top
** | **Complete list of input variables

wtatcon

Mnemonics: WeighTs for AToms in CONstraint equations

Characteristic: NO MULTI

Variable type: real array wtatcon(3,natcon,nconeq)

Default is 0.

Gives the weights determining how the motion of atoms is constrained during structural optimization or molecular dynamics (see nconeq, natcon, and iatcon). For each of the nconeq independent constraint equations, wtatcon is a 3*natcon array giving weights, W

Sum

Different types of motion constraints can be implemented this way. For example,

nconeq 1 natcon 2 iatcon 1 2 wtatcon 0 0 +1 0 0 -1

could be used to constrain the relative height difference of two adsorbate atoms on a surface (assuming their masses are equal), since F'

Go to the top

Goto :

Help files :