ABINIT, structural optimization input variables:

List and description.



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.
Copyright (C) 1998-2004 ABINIT group (DCA, XG, RC)
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 : ABINIT home Page | Welcome | Suggested acknowledgments | List of input variables | Tutorial home page | Bibliography
Help files : New user's guide | Abinis (main) | Abinis (respfn) | Mrgddb | Anaddb | AIM (Bader) | Cut3D
Files that describe other input variables:

Content of the file : alphabetical list of variables.


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 delayperm is zero, there is not permutation trials.



Go to the top | Complete list of input variables
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 dilatmx2 (the result is an "effective ecut", called internally "ecut_eff", other uses of ecut being not modified when dilatmx>1.0 .
Using dilatmx<1.0 is equivalent to changing ecut in all its uses. This is allowed, although its meaning is no longer related to a maximal expected scaling.
Setting dilatmx to a large value leads to waste of CPU time and memory. Supposing you think that the optimized acell values might be 10% larger than your input values, use simply dilatmx 1.1 . This will already lead to an increase of the number of planewaves by a factor (1.1)3=1.331 , and a corresponding increase in CPU time and memory.
It is possible to use dilatmx when optcell=0, but a value larger than 1.0 will be a waste.
Must be 1.0 for RF calculations.




Go to the top | Complete list of input variables
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 dtion is a time step in atomic units of time. (One atomic time unit is 2.418884e-17 seconds, which is the value of Planck's constant in hartree*sec.) In this case the atomic masses, in amu (given in array "amu"), are used in Newton's equation and the viscosity (for ionmov=1) and number of time steps are provided to the code using input variables "vis" and "ntime". The code actually converts from masses in amu to masses in atomic units (in units of electron masses) but the user enters masses in amu. (The conversion from amu to atomic units (electron masses) is 1822.88851 electron masses/amu.)
A typical good value for dtion is about 100. The user must try several values for dtion in order to establish the stable and efficient choice for the accompanying amu, atom types and positions, and vis (viscosity).
For quenched dynamics (ionmov=7), a larger time step might be taken, for example 200.
No meaning for RF calculations.




Go to the top | Complete list of input variables
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 ecutsm, the total energy curves as a function of ecut, or acell, can be smoothed, keeping consistency with the stress (and automatically including the Pulay stress). The recommended value is 0.5 Ha. Actually, when optcell/=0, ABINIT requires ecutsm to be larger than zero. If you want to optimize cell shape and size without smoothing the total energy curve (a dangerous thing to do), use a very smalle ecutsm, on the order of one microHartree.

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 / ( x2 ( 3-2*x) )
where x = (ecut - kinetic_energy)/ecutsm
Note that x2 ( 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 :
MI d2RI/dt2= FI - friction MI dRI/dt - F_randomI
where F_randomI is a Gaussian random force with average zero, and variance 2 friction MI kT.
The atomic unit of friction is hartrees*electronic mass*(atomic time units)/bohr2. 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 | Complete list of input variables
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 | Complete list of input variables
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 ionmov is 0.

Control the displacements of ions, and eventually (see optcell) changes of cell shape and size.
No meaning for RF calculations.




Go to the top | Complete list of input variables
mdftemp
Mnemonics: Molecular Dynamics Final Temperature
Characteristic:
Variable type: real mdftemp
Default is mdftemp=mditemp

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 mdftemp at the end of the ntime timesteps.



Go to the top | Complete list of input variables
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 | Complete list of input variables
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 mdwall has the 'LENGTH' characteristics.




Go to the top | Complete list of input variables
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 | Complete list of input variables
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 | Complete list of input variables
noseinert
Mnemonics: NOSE INERTia factor
Characteristic:
Variable type: real noseinert
Default is 1.0d5

Give the inertia factor WT of the Nose-Hoover thermostat (when ionmov=8), in atomic units of weight*length2, that is (electron mass)*(bohr)2. The equations of motion are :
MI d2RI/dt2= FI - dX/dt MI dRI/dt
and
WT d2X/dt2= Sum(I) MI (dRI/dt)2 - 3NkBT
where I represent each nucleus, MI is the mass of each nucleus (see amu), RI is the coordinate of each nucleus (see xcart), dX/dt is a dynamical friction coefficient, and T is the temperature of the thermostat (see mditemp and mdftemp).




Go to the top | Complete list of input variables
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.
ntime is ignored if ionmov=0.




Go to the top | Complete list of input variables
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) ntypat is 1.
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 | Complete list of input variables
optcell
Mnemonics: OPTimize the CELL shape and dimensions
Characteristic:
Variable type: integer parameter
The Default is optcell=0

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 NOTE that a few details require attention when performing unit cell optimisation : It is STRONGLY suggested first to optimize the ionic positions without cell shape and size optimization (optcell=0), then start the cell shape and size optimization from the cell with relaxed ionic positions.

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 restartxf==1), or discard the few first (x,f) pairs, and begin only at the pair whose number corresponds to restartxf.
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.



Go to the top | Complete list of input variables
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 strfact will be treated like forces in the process of optimization (ionmov=2, non-zero optcell).
For example, the stopping criterion defined by tolmxf relates to these scaled stresses.




Go to the top | Complete list of input variables
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 | Complete list of input variables
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 strtarget, or part thereof (if restricted optimizations are asked, like fixed shape). Presently, this required target stress is not taken into account for the determination of the symmetries. If it breaks the symmetries of the input unit cell, so that symrel disagrees with strtarget, the result will be unreliable. Also, presently, the thermodynamical potential to be used n this situation (the free energy) does not replace the total energy, so that, for exemple, ionmov=3 cannot be used, since this algorithm is taking into account the total energy.

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 | Complete list of input variables
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 vel is not initialized, a random initial velocity giving the right kinetic energy will be generated.
If the geometry builder is used, vel 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).
Velocities evolve is ionmov==1.




Go to the top | Complete list of input variables
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 :
MI d2RI/dt2= FI - vis dRI/dt

The atomic unit of viscosity is hartrees*(atomic time units)/bohr2. 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, WI, for the x, y, and z components of each of the atoms (labeled by I) in the list of indices iatcon. Prior to taking an atomic step, the calculated forces, FI, are replaced by projected forces, F'I, which satisfy the set of constraint equations

Summu=x,y,z; I=1,natcon: Wmu,I * F'mu,I = 0 for each of the nconeq arrays WI.

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'z,1 - F'z,2 = 0 implies z1 - z2 = constant.




Go to the top | Complete list of input variables
Goto : ABINIT home Page | Welcome | Suggested acknowledgments | List of input variables | Tutorial home page | Bibliography
Help files : New user's guide | Abinis (main) | Abinis (respfn) | Mrgddb | Anaddb | AIM (Bader) | Cut3D