Help file for the Anaddb utility of the ABINIT package.
This file explains the use and i/o parameters needed for
the "Analysis of Derivative DataBase" code of the ABINIT package.
This code is able to compute interatomic force constants (hence its name),
but also, more generally, many different physical properties
from databases containing derivatives of the total energy
(Derivative DataBase  DDB).
The user is not supposed to know how the Derivative
DataBase (DBB) has been generated. He/she should simply know what
material is described by the DDB he/she wants to use.
If he/she is interested in the generation of DDB, and wants to
know more about this
topic, he/she will read different help files of the ABINIT package,
related to the
main code, to the
responsefunction features of the main code,
to the merging code.
It will be easier to discover the
present file with the help of the tutorial.
(Sorry, not yet available).
It is worthwhile to print this help file, for ease of reading.
Copyright (C) 19982004 ABINIT group (XG,DCA)
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
Content of the help file.
1. Introduction
In short, a Derivative DataBase contains a list of derivatives
of the total energy with respect to three kind of perturbations :
phonons, electric field and stresses. The present code analyses
the DDB, and directly gives properties of the material under
investigation, like phonon spectrum, frequencydependent dielectric
tensor, thermal properties.
In future versions of the help file, more theoretical considerations
will appear. In this one, we will directly explain
the input of the Anaddb code ...
Given an input file (parameters described below),
the user must create a "files" file which lists names for the files
the job will require, including the main input file, the main output file,
the name of the DDB.
The files file (called for example ab.files) could look like:
anaddb.in
anaddb.out
ddb
moldyn
In this example:
 the main input file is called "anaddb.in",
 the main output will be put into the file called "anaddb.out",
 the input DDB file is called "ddb",
 "moldyn" is a fake name (formerly used for harmonic molecular dynamics analysis  not used in the present version).
Other examples are given in the ~ABINIT/Test_v2 directory.
The maximal length
of names for the main input or output files is presently 132 characters.
The main executable file is called anaddb.
Supposing that the "files" file is called anaddb.files,
and that the executable is placed in your working directory, anaddb is run
interactively (in Unix) with the command
 anaddb < anaddb.files >& log
or, in the background, with the command
 anaddb < anaddb.files >& log &
where standard out and standard error are piped
to the log file called "log"
(piping the standard error, thanks to the '&' sign placed after '>'
is really important
for the analysis of eventual failures, when not due
to ABINIT, but to other sources, like disk full problem ...).
The user can specify
any names he/she wishes for any of these files.
Variations of the above commands
could be needed,
depending on the flavor of UNIX that is used on the platform
that is considered for running the code.
The syntax of the input file is strictly similar to the syntax of the
main abinit input files : the file is parsed, keywords are identified,
comments are also identified. However, the multidataset mode is not
available.
We now list the input variables for the anaddb input file.
2. The list of input variables.
Alphabetical list of input variables for ANADDB.
A.
alphon
asr
atftol
atifc
B.
brav
C.
chneut
D.
dieflag
dipdip
dostol
E.
eivec
elaflag
enunit
F.
frmin
frmax
G.
H.
I.
ifatfix
ifcana
ifcflag
ifcout
instrflag
istrfix
J.
K.
L.
M.
N.
natfix
natifc
nchan
nfreq
ngqpt
ng2qpt
ngrids
nlflag
nph1l
nph2l
nqshft
nsphere
nstrfix
ntemper
nwchan
O.
P.
piezoflag
polflag
prtmbm
Q.
qph1l
qph2l
q1shft
q2shft
R.
ramansr
relaxat
relaxstr
rfmeth
S.
selectz
T.
temperinc
tempermin
thmflag
thmtol
targetpol
U.
V.
vrsinddb
W.
X.
Y.
Z.
alphon
Mnemonics: ALign PHONon mode eigendisplacements
Characteristic:
Variable type: integer
Default: 0
In case alphon is set to 1, ANADDB will compute linear combinations of
the eigendisplacements of modes that are degenerate (twice or three times),
in order to align the mode effective charges along the cartesian axes.
This option is useful in the modebymode decomposition of the
electrooptic tensor, and to compute
the Raman susceptibilities of individual phonon modes.
In case of uniaxial crystals, the zaxis should be chosen along the optical axis.
Go to the top
 List of ANADDB input variables
asr
Mnemonics: Acoustic Sum Rule
Characteristic:
Variable type: integer
Default: 0
Govern the imposition of the Acoustic Sum Rule (ASR).
 0 => no ASR for interatomic force constants is imposed.
 1 or 2 => the ASR for interatomic force constants
is imposed by modifying the onsite interatomic force constants,
in a symmetric way (asr=2), or in the more general case,
unconstrained way (asr=1).
More detailed explanations : the total energy should be
invariant under translation of the crystal as a whole. This
would garantee that the three lowest phonon modes at Gamma
have zero frequency (Acoustic Sum Rule  ASR).
Unfortunately, the way the DDB is
generated (presence of a discrete grid of points for the
evaluation of the exchangecorrelation potential and energy)
slightly breaks the translational invariance.
Well, in some pathological cases, the breaking can be rather
important.
Two quantities are affected : the interatomic forces (or
dynamical matrices), and the effective charges.
The ASR for the effective charges is called the charge
neutrality sum rule, and will be dealt with by the variable
chneut.
The ASR for the interatomic forces can be restored,
by modifying the interatomic force of the atom on itself,
(called selfIFC), as soon as the dynamical matrix at Gamma
is known. This quantity
should be equal to minus the sum of all interatomic
forces generated by all others atoms (actionreaction law!),
which is determined by the dynamical matrix at Gamma.
So, if asr is nonzero, the correction to the selfforce
will be determined, and the selfforce will be imposed
to be consistent with the ASR.
This correction will work if IFCs are computed
(ifcflag/=0),
as well as if the IFCs are not computed
(ifcflag==0).
In both cases, the phonon frequencies will not be the same
as the ones determined by the output of abinit, RF case.
If you want to check that the DDB is correct, by comparing
phonon frequencies from abinit and anaddb, you should turn off
both asr and
chneut.
Until now, we have not explained the difference between
asr=1 and asr=2. This is rather subtle.
In some local lowsymmetry
cases (basically the effective charges should be anisotropic),
when the dipoledipole contribution is evaluated and subtracted,
the ASR cannot be imposed without breaking the
symmetry of the onsite interatomic forces. That explains why two
options are given : the second case (asr=2, sym) does not
entirely impose the ASR, but simply the part that keeps the onsite
interatomic forces symmetric (which means that the acoustic frequencies
do not go to zero exactly), the first case (asr=1, asym)
imposes the ASR, but breaks the symmetry.
asr=2 is to be preferred for the analysis of the interatomic force
constant in real space, while asr=1 should be used to get
the phonon band structure.
(NOTE : in order to confuse even more the situation,
it seems that the acoustic phonon frequencies generated by the code
for both the sym and asym options are exactly the same ...
likely due to an extra symmetrisation in the diagonalisation routine.
Of course, when
the matrix at Gamma has been generated from IFCs coming from dynamical
matrices none of which are Gamma, the breaking of the ASR is rather
severe. In order to clear the situation, one should use
a diagonalisation
routine for nonhermitian matrices. So, at the present status of
understanding, one should always use the asr=2 option ).
Go to the top
 List of ANADDB input variables
atftol
Mnemonics: ATomic Temperature Factor TOLerance
Characteristic:
Variable type: real
Default: 0.05
The relative tolerance on the atomic temperature factors.
This number will determine when the series of channel widths
with which the DOS is calculated can be stopped, i.e.
the mean of the relative change going from one grid
to the next bigger is smaller than wtol2.
(this option is disabled, however  no atomic temperature factors
are calculated in this version)
Go to the top
 List of ANADDB input variables
atifc
Mnemonics: AToms for IFC analysis
Characteristic:
Variable type: integer array atifc(
natifc)
Default: 0
The actual numbers of the atoms for which the interatomic
force constant have to be written and eventually analysed.
WARNING : there will be an inplace change of meaning of atifc (this is confusing,
and should be taken away in one future version  sorry for this).
Go to the top
 List of ANADDB input variables
brav
Mnemonics: BRAVais
Characteristic:
Variable type: integer
Default: 1
Allows to specify the Bravais lattice of the crystal,
in order to help to generate a grid of special q points.
 1 => all the lattices (including FCC, BCC and hexagonal)
 2 => specific for Face Centered lattices
 3 => specific for Body Centered lattices
 4 => specific for the Hexagonal lattice
Note that in the latter case, the rprim of
the unit cell have to be
1.0 0.0 0.0 .5 sqrt(3)/2 0.0 0.0 0.0 1.0
in order for the code to work properly.
Warning : the generation of qpoints in anaddb is rather
oldfashioned, and should be replaced by routines used by
the main abinis code.
Go to the top
 List of ANADDB input variables
chneut
Mnemonics: Integer for CHarge NEUTrality treatment
Characteristic:
Variable type: integer parameter
Default is 0.
Set the treatment of the Charge Neutrality requirement for
the effective charges.
 chneut=0 => no ASR for effective charges is imposed
 chneut=1 => the ASR for effective charges is imposed
by giving to each atom an equal portion
of the missing charge.
 chneut=2 => the ASR for effective charges is imposed
by giving to each atom a portion of the
missing charge proportional to the screening charge
already present.
More detailed explanation : the sum of the effective charges
in the unit cell should be equal to zero. It is not the case
in the DDB, and this sum rule is sometimes strongly violated.
In particular, this will make the lowest frequencies at Gamma
nonzero. There is no "best" way of imposing the ASR
on effective charges. This is still under investigation.
It you have another idea of a way to impose it, please
call us, and we will try it ! Better yet, try it yourself
and tell us if it works and send us a copy !
Go to the top
 List of ANADDB input variables
dieflag
Mnemonics: DIElectric FLAG
Characteristic:
Variable type: integer
Default: 0
Integer. Frequencydependent dielectric tensor flag.
 0 => No dielectric tensor is calculated.
 1 => The frequencydependent dielectric tensor is calculated.
The frequencies are defined by the
nfreq,
frmin,
frmax
variables. Also, the generalized LyddaneSachsTeller
relation will be used as an independent check of the
dielectic tensor at zero frequency (this for the
directions defined in the phonon list 2.
See nph2l).
 2 => Only the electronic dielectric tensor is calculated.
It corresponds to a zerofrequency homogeneous field,
with quenched atomic positions. For large band gap materials,
this quantity is measurable because the highest phonon
frequency is on the order of a few tenths of eV, and the
band gap is larger than 5eV.
 3 => Compute and print the relaxedion dielectric tensor.
Requirements for preceding responsefunction DDB generation
run: electricfield and full atomicdisplacement responses.
Set rfstrs = 1, 2, or 3 (preferably 3).
Set rfatpolrfatpol and
rfdir to do a full calculation of
phonons at Q=0 (needed because the inverse of
forceconstant tensor is required).
Note that the relaxedion dielectric tensor computed here can
also be obtained as the zerofrequency limit of the
frequencydependent dielectric tensor using input variables
dieflag=1 and frmin=0.0. (The results obtained using these two
approaches should agree to good numerical precision.) The ability
to compute and print the static dielectric tensor here is provided
for completeness and consistency with the other tensor
quantities that are computed in this section of the code.
Go to the top
 List of ANADDB input variables
dipdip
Mnemonics: DIPoleDIPole interaction
Characteristic:
Variable type: integer
Default: 1

0 => the dipoledipole interaction is not handled separately
in the treatment of the interatomic forces. This option
is available for testing purposes or if effective charge
and/or dielectric tensor is not available in the derivative
database. It gives results much less accurate than dipdip=1.

1 => the dipoledipole interaction is subtracted from the dynamical
matrices before Fourier transform, so that only the shortrange
part is handled in real space. Of course, it is reintroduced
analytically when the phonon spectrum is interpolated, or if
the interatomic force constants have to be analysed in real space.
Go to the top
 List of ANADDB input variables
dostol
Mnemonics: DOS TOLerance
Characteristic:
Variable type: real
Default: 0.25
The relative tolerance on the phonon density of state.
This number will determine when the series of grids
with which the DOS is calculated can be stopped, i.e.
the mean of the relative change going from one grid
to the next bigger is smaller than dostol.
The default is very large.
Go to the top
 List of ANADDB input variables
eivec
Mnemonics: EIgenVECtors
Characteristic:
Variable type: integer
Default: 0
 0 => do not write the phonon eigenvectors;
 1 => write the phonon eigenvectors;
 2 => write the phonon eigenvectors, the dynamical matrix is symmetrized;
 3 => write the phonon eigenvectors, in the lwfformatted file;
 4 => generate output files for band2eps (drawing tool for the phonon band structure);
Go to the top
 List of ANADDB input variables
elaflag
Mnemonics: ELAstic tensor FLAG
Characteristic:
Variable type: integer
Default: 0
Flag for calculation of elastic and compliance tensors
 0 => No elastic or compliance tensor will be calculated.
 1 => Only clampedion elastic and compliance tensors will be
calculated.
Requirements for preceding responsefunction DDB generation
run: Strain perturbation.
Set rfstrs to 1, 2, or 3.
Note that rfstrs=3 is recommended so that responses to
both uniaxial and shear strains will be computed.
 2 => Both relaxed and clampedion elastic and compliance tensor
will be calculated, but only the relaxedion quantities
will be printed.
The input variable instrflag
should also be set to 1, because
the internalstrain tensor is needed to compute the relaxedion
corrections. Requirements for preceding responsefunction DDB
generation run: Strain and atomicdisplacement responses at Q=0.
Set rfstrs = 1, 2, or 3 (preferably 3).
Set rfatpolrfatpol and
rfdir to do a full calculation of
phonons at Q=0 (needed because the inverse of
forceconstant tensor is required).
 3 => Both relaxed and clampedion elastic and compliance tensors
will be printed out.
The input variable instrflag
should also be set to 1.
Requirements for preceding responsefunction DDB generation
run: Same as for elaflag=2'.
Go to the top
 List of ANADDB input variables
enunit
Mnemonics: ENergy UNITs
Characteristic:
Variable type: integer
Default: 0
Give the energy for the phonon frequency output
(in the output file, not in the console log file, for
which Hartree units are used).
 0 => Hartree and cm1;
 1 => meV and Thz;
 2 => Hartree, cm1, meV, Thz, and Kelvin.
Go to the top
 List of ANADDB input variables
frmax
Mnemonics: FRequency : MAXimum
Characteristic:
Variable type: real number
Default: 10.0
Value of the largest frequency for the
frequencydependent dielectric tensor, in Hartree.
Go to the top
 List of ANADDB input variables
frmin
Mnemonics: FRequency : MINimum
Characteristic:
Variable type: real number
Default: 0.0
Value of the lowest frequency for the
frequencydependent dielectric tensor, in Hartree.
Go to the top
 List of ANADDB input variables
iatfix
Mnemonics: Indices of the AToms that are FIXed
Characteristic:
Variable type: integer array (1:natfix)
Default: 0
Indices of the atoms that are fixed during a structural relaxation at constrained polarization.
See polflag.
Go to the top
 List of ANADDB input variables
ifcana
Mnemonics: IFC ANAlysis
Characteristic:
Variable type: integer
Default: 0
 0 => no analysis of interatomic force constants;
 1 => analysis of interatomic force constants.
If the analysis is activated, one get the
trace of the matrices between pairs of atoms,
if dipdip is 1,
get also the trace of the shortrange
and electrostatic part, and
calculate the ratio with the full matrice;
then define a local coordinate reference (using
the nextneighbour coordinates), and express
the interatomic force constant matrix between
pairs of atoms in that local coordinate reference
(the first vector is along the bond; the second
vector is along the perpendicular force exerted
on the generic atom by a longitudinal displacement
of the neighbouring atom  in case it does not vanish;
the third vector is perpendicular to the two other)
also calculate ratios with respect to the
longitudinal force constant ( the (1,1) element of
the matrix in local coordinates).
Go to the top
 List of ANADDB input variables
ifcflag
Mnemonics: Interatomic Force Constants FLAG
Characteristic:
Variable type: integer
Default: 0
 0 => do all calculations directly from the DDB, without the
use of the interatomic force constant.
 1 => calculate and use the interatomic force constants
for interpolating the phonon spectrum and dynamical
matrices at every q wavevector, and eventually analyse
the interatomic force constants, according to the
informations given by
atifc,
dipdip,
ifcana,
ifcout,
natifc,
nsphere.
More detailed explanations : if the dynamical matrices
are known on a regular set of wavevectors, they
can be used to get the interatomic forces, which are simply
their Fourier transform. When nonanalyticities
can been removed by the use of effective charge at Gamma
(option offered by putting
dipdip to 1),
the interatomic forces are known to decay rather fast (in real space).
The interatomic forces generated from a small set of
dynamical matrices
could be of sufficient range to allow
the remaining interatomic forces to be neglected.
This gives a practical way to interpolate the content
of a small set of dynamical matrices, because dynamical
matrices can everywhere be generated starting from this
set of interatomic force constants. It is suggested to
always use ifcflag=1. The ifcflag=0 option
is available for
checking purpose, and if there is not enough information
in the DDB.
Go to the top
 List of ANADDB input variables
ifcout
Mnemonics: IFC OUTput
Characteristic:
Variable type: integer
Default: 0
For each atom in the list
atifc (generic atoms),
ifcout give the number
of neighbouring atoms for which the ifc's will be
output (written) and eventually analysed. The
neighbouring atoms are selected by decreasing distance with respect to
the generic atom.
Go to the top
 List of ANADDB input variables
instrflag
Mnemonics: INternal STRain FLAG
Characteristic:
Variable type: integer
Default: 0
Internal strain tensor flag.
 0 => No internalstrain calculation.
 1 => Print out both forceresponse and displacementresponse
internalstrain tensor.
Requirements for preceding responsefunction DDB generation
run: Strain and full atomicdisplacement responses.
Set rfstrs = 1, 2, or 3 (preferably 3).
Set rfatpol and
rfdir to do a full calculation of
phonons at Q=0.
Go to the top
 List of ANADDB input variables
istrfix
Mnemonics: Index of STRain FIXed
Characteristic:
Variable type: integer array istrfix(1:nstrfix)
Default: 0
Indices of the elements of the strain tensor that are fixed during a structural relaxation
at constrained polarisation :
 1 > xx
 2 > yy
 3 > zz
 4 > yz & zy
 5 > xz & zx
 6 > xy & yx
See polflag.
Go to the top
 List of ANADDB input variables
natfix
Mnemonics: Number of AToms FIXed
Characteristic:
Variable type: integer
Default: 0
Number of atoms that are fixed during a structural optimisation at constrained polarization.
See polflag.
Go to the top
 List of ANADDB input variables
natifc
Mnemonics: Number of AToms for IFC analysis
Characteristic:
Variable type: integer
Default: 0
Give the number of atoms for which ifc's are written and
eventually analysed. The list of these atoms is provided
by atifc
Go to the top
 List of ANADDB input variables
nchan
Mnemonics: Number of CHANnels
Characteristic:
Variable type: integer
Default: 800
The number of channels of width 1 cm1
used in calculating the
phonon density of states through the histogram method,
or, equivalently, the largest frequency sampled.
The first channel begins at 0.
Go to the top
 List of ANADDB input variables
nfreq
Mnemonics: Number of FREQuencies
Characteristic:
Variable type: integer
Default: 1
Number of frequencies wanted for the
frequencydependent dielectric tensor. Should be positive.
See dieflag.
The code will take nfreq equidistant values from
frmin to
frmax.
Go to the top
 List of ANADDB input variables
ngqpt
Mnemonics: Number of Grids points for Q PoinTs
Characteristic:
Variable type: integer array ngqpt(3)
Default: 3*0 (will not work)
The MonkhorstPack grid linear dimensions, for the DDB (coarse grid).
Go to the top
 List of ANADDB input variables
ng2qpt
Mnemonics: Number of Grids points for Q PoinTs (grid 2)
Characteristic:
Variable type: integer array ng2qpt(3)
Default: 3*0 (will not work)
The MonkhorstPack grid linear dimensions, for the finer of the
series of fine grids. Used for the integration
of thermodynamical functions (BoseEinstein distribution)
or for the DOS.
Go to the top
 List of ANADDB input variables
ngrids
Mnemonics: Number of GRIDS
Characteristic:
Variable type: integer
Default: 4
This number define the series of grids that will be used
for the estimation of the phonon DOS. The coarsest will be
tried first, then the next, ... then the one
described by
ng2qpt.
The intermediate grids are defined
for igrid=1... ngrids,
by the numbers ngqpt_igrid(ii)=(ng2qpt(ii)*igrid)/ngrids
Go to the top
 List of ANADDB input variables
nlflag
Mnemonics: NonLinear FLAG
Characteristic:
Variable type: integer
Default: 0
Nonlinear properties flag.
 0 => do not compute nonlinear properties ;
 1 => the electrooptic tensor, Raman susceptibilities and nonlinear optical
susceptibilities are calculated;
 2 => only the nonlinear optical susceptibilities and firstorder
changes of the dielectric tensor induced by an atomic displacement are calculated;
Go to the top
 List of ANADDB input variables
nph1l
Mnemonics: Number of PHonons in List 1
Characteristic:
Variable type: integer
Default: 0
Integer. The number of wavevectors in phonon list 1. The actual
values of these wavevectors will be specified by
qph1l
The dynamical matrix for these wavevectors, obtained
either directly from the DDB  if
ifcflag=0  or through
the interatomic forces interpolation  if
ifcflag=1 ),
will be diagonalized, and the corresponding eigenfrequencies
will be printed.
Go to the top
 List of ANADDB input variables
nph2l
Mnemonics: Number of PHonons in List 2
Characteristic:
Variable type: integer
Default: 0
The number of wavevectors in phonon list 2. The actual
values of these wavevectors will be specified in the following.
these are actually all wavectors at Gamma, but obtained
by a limit along a different direction in the Brillouinzone.
It is important to note that nonanalyticities in the
dynamical matrices are present at Gamma, due to the
longrange Coulomb forces. So, going to Gamma along different
directions can give different results.
The wavevectors in list 2 will be used to :
 generate and diagonalize dynamical matrix, and print the
corresponding eigenvalues.
 calculate the generalized LyddaneSachsTeller relation.
Note that if the three first numbers are zero, then
the code will do a calculation at Gamma without
nonanalyticities.
Go to the top
 List of ANADDB input variables
nqshft
Mnemonics: Number of Q SHiFTs
Characteristic:
Variable type: integer
Default: 1
The number of vector shifts of the simple Monkhorst and
Pack grid, needed to generate the coarse grid of q points
(for the series of fine grids, the number of shifts it is always taken to be 1).
Usually, put it to 1.
Use 2 if BCC sampling (Warning : not BCC lattice, BCC *sampling*),
and 4 for FCC sampling (Warning : not FCC lattice, FCC *sampling*).
Go to the top
 List of ANADDB input variables
nsphere
Mnemonics: Number of atoms in SPHERe
Characteristic:
Variable type: integer
Default: 0
Number of atoms included in the cutoff sphere for
interatomic force constant.
If nsphere= 0 : maximum extent allowed by the grid .
This number defines the atoms for which the
short range part of the interatomic force constants, after
imposition of the acoustic sum rule, will not be put to zero.
This option is available for testing purposes
(evaluate the range of the interatomic force constants), because
the acoustic sum rule will be violated if some atoms are no more
included in the inverse Fourier Transform.
Go to the top
 List of ANADDB input variables
nstrfix
Mnemonics: Number of STRain components FIXed
Characteristic:
Variable type: integer
Default: 0
Number of strain component that are fixed during a structural optimisation at constrained polarization.
See polflag.
Go to the top
 List of ANADDB input variables
ntemper
Mnemonics: Number of TEMPERatures
Characteristic:
Variable type: integer
Default: 400
Number of temperatures at which the thermodynamical
quantities have to be evaluated
Go to the top
 List of ANADDB input variables
nwchan
Mnemonics: Number of Widths of CHANnels
Characteristic:
Variable type: integer
Default: 10
Integer. The width of the largest channel
used to sample the frequencies.
The code will generate different sets of channels,
with decreasing widths (by step of 1 cm1), from
this channel width to 1, eventually. It considers to
have converged when the convergence criterion based on
dostol and
thmtol have been fulfilled.
Go to the top
 List of ANADDB input variables
piezoflag
Mnemonics: PIEZOelectric tensor FLAG
Characteristic:
Variable type: integer
Default: 0
Flag for calculation of piezoelectric tensors
 0 => No piezoelectric tensor will be calculated.
 1 => Only the clampedion piezoelectric tensor is computed and
printed. Requirements for preceding responsefunction DDB generation
run: Strain and electricfield responses. For the
electricfield part, one needs results from a prior 'ddk
perturbation' run. Note that even if only a limited number
of piezoelectric tensor terms are wanted (as determined by
rfstrs and rfdir in this calculation) it is necessary to set
rfdir = 1 1 1 in the d/dk calculation for most structures.
The only obvious exception to this requirement is cases in
which the primitive lattice vectors are all aligned with the
cartesian axes. The code will omit terms in the output
piezoelectric tensor for which the available d/dk set is
incomplete. Thus:
Set rfstrs to 1, 2, or 3i (preferably 3)
 2 => Both relaxed and clampedion elastic and compliance tensor
will be calculated, but only the relaxedion quantities
will be printed.
The input variable instrflag
should also be set to 1, because
the internalstrain tensor is needed to compute the relaxedion
corrections. Requirements for preceding responsefunction DDB
generation run: Strain, electricfield and full atomicdisplacement responses at Q=0.
Set rfstrs = 1, 2, or 3 (preferably 3).
Set rfelfd = 3.
Set rfatpol and
rfdir to do a full calculation of
phonons at Q=0 (needed because the inverse of
forceconstant tensor is required).
 3 => Both relaxed and clampedion piezoelectric tensors
will be printed out.
The input variable instrflag
should also be set to 1.
Requirements for preceding responsefunction DDB generation
run: Same as for piezoflag=2'.
Go to the top
 List of ANADDB input variables
polflag
Mnemonics: POLarization FLAG
Characteristic:
Variable type: integer
Default: 0
If activated, compute polarization in cartesian coordinates,
and update lattice constants and atomic positions in order to perform a structural
optimization at constrained polarization.
More detailed explanation : ANADDB can use the formalism described in
Na Sai et al, PRB 66, 104108 (2002), to perform structural relaxations
under the constraint that the polarization is equal to a value specified by the
input variable targetpol.
The user starts from a given configurationof a crystal and performs
a groundstate calculation of the HellmanFeynman forces and stresses
and the Berry phase polarization as
well as a linear response calculation of the whole matrix of
secondorder energy derivatives with respect to atomic displacement,
strains and electric field.
In case polflag=1, ANADDB solves the linear system of equations (13)
of the Na Sai paper, and computes new atomic positions
(if relaxat=1) and
lattice constant (if relaxstr=1).
Then, the user uses these parameters to perform a new groundstate
and linearresponse calculation. This must be repeated until convergence is
reached. THe user can also fix some atomic positions, or strains,
thanks to the input variables
natfix,
nstrfix,
iatfix,
istrfix.
In case both relaxat
and relaxstr are 0, while
polflag=1, ANADDB only computes the polarization in cartesian
coordinates.
As described in the Na Sai's paper, it is important to use the
finite difference expression of the ddk (berryopt=2 or 2)
in the linear response calculation of the effective charges and the piezoelectric tensor.
Go to the top
 List of ANADDB input variables
prtmbm
Mnemonics: PRinT ModeByMode decomposition
of the electrooptic tensor
Characteristic:
Variable type: integer
Default: 0
 0 => do not write the modebymode decomposition of the electrooptic tensor;
 1 => write out the contribution of the individual zonecenter phonon modes
to the electrooptic tensor.
Go to the top
 List of ANADDB input variables
qph1l
Mnemonics: Q for PHonon List 1
Characteristic:
Variable type:
real array qph1l(4,nph1l)
Default: 0
List of nph1l wavevectors,
defined by 4 numbers :
the wavevector is made by the three first numbers
divided by the fourth one (a normalisation factor).
The coordinates are defined with respect to the unit vectors
that spans the Brillouin zone. Note that this set of axes
can be nonorthogonal and not normed.
The normalisation factor makes easier the input of wavevector
such as (1/3,1/3,1/3), represented by 1.0 1.0 1.0 3.0 .
The internal representation of this array is as follows :
for each wavevector, the three first numbers are stored
in the array qph1l(3,nph1l), while the fourth is stored
in the array qnrml1(nph1l).
Go to the top
 List of ANADDB input variables
qph2l
Mnemonics: PHonon List 2
Characteristic:
Variable type:
real array qph2l(4,nph2l)
Default: all 0
Still four numbers, but the last one, that correspond to
the normalisation factor, is 0.0
For the code, this has the meaning that the three previous
value define a direction. The direction is in CARTESIAN
COORDINATES, unlike the nonGamma wavevectors defined in the
first list of vectors...
Note that if the three first numbers are zero, then
the code will do a calculation at Gamma without
nonanalyticities.
Also note that the code automatically set the imaginary
part of the dynamical matrix to zero. This is useful to compute
the phonon frequencies when half of the kpoints has been
used, by the virtue of the timereversal symmetry (which
may induce parasitic imaginary parts...).
The internal representation of this array is as follows :
for each wavevector, the three first numbers are stored
in the array qph2l(3,nph2l), while the fourth is stored
in the array qnrml2(nph2l).
Go to the top
 List of ANADDB input variables
q1shft
Mnemonics: Q shifts for the grid number 1
Characteristic:
Variable type:
real array q1shft(3,nqshft)
Default: all 0.0
This vector gives the shifts needed to define the coarse qpoint grid.
a) Case nqshft=1
In general, 0.5 0.5 0.5 with the ngqpt's even will give
very economical grids. On the other hand, is it
sometimes better for phonons to have the Gamma point
in the grid. In that case, 0.0 0.0 0.0 should be OK.
For the hexagonal lattice, the above mentioned
quantities become 0.0 0.0 0.5 and 0.0 0.0 0.0 .
b) Case nqshft=2
The two q1shft vectors must form a BCC lattice.
For example, use 0.0 0.0 0.0 and 0.5 0.5 0.5
c) Case nqshft=4
The four q1shft vectors must form a FCC lattice.
For example, use 0.0 0.0 0.0 , 0.0 0.5 0.5 ,
0.5 0.0 0.5 , 0.5 0.5 0.0
or 0.5 0.5 0.5 , 0.0 0.0 0.5 ,
0.0 0.5 0.0 , 0.5 0.0 0.0 (the latter is referred to
as shifted)
Further comments : by using this technique, it is possible
to increase smoothly the number of qpoints, at least
less abruptly than relying on series of grids like
(for the full cubic symmetry)
1x1x1 => (0 0 0)
2x2x2 (shifted) => (.25 .25 .25)
2x2x2 => 1x1x1 + (.5 0 0) (.5 .5 0) (.5 .5 0)
4x4x4 => 2x2x2 + (.25 0 0) (.25 .25 0) (.25 .5 0)
(.25 .25 .25) (.25 .25 .5) (.25 .5 .5)
...
with respectively 1, 1, 4 and 10 qpoints, corresponding
to a number of points in the full BZ of 1, 8, 8 and 64.
Indeed, the following grids are made available :
1x1x1 with nqshft=2 => (0 0 0) (.5 .5 .5)
1x1x1 with nqshft=4 => (0 0 0) (.5 .5 0)
1x1x1 with nqshft=4 (shifted) => (.5 0 0) (.5 .5 .5)
2x2x2 with nqshft=2 => 2x2x2 + (.25 .25 .25)
2x2x2 with nqshft=4 => 2x2x2 + (.25 .25 0) (.25 .25 .5)
2x2x2 with nqshft=4 (shifted) => (.25 0 0) (.25 .25 .25)
(.5 .5 .25) (.25 .5 0)
...
with respectively 2, 2, 2, 5, 6 and 4 qpoints, corresponding
to a number of points in the full BZ of 2, 4, 4, 16, 32 and 32.
For a FCC lattice, it is possible to sample only the Gamma point
by using a 1x1x1 BCC sampling (nqshft=2).
Go to the top
 List of ANADDB input variables
q2shft
Mnemonics: Q points SHiFTs for the grids 2
Characteristic:
Variable type: real array q2shft(3)
Default: all 0
Similar to q1shft,
but for the series of fine grids.
Note that nqshft
for this series of grids corresponds to 1.
Go to the top
 List of ANADDB input variables
ramansr
Mnemonics: RAMAN SumRule
Characteristic:
Variable type: integer
Default: 0
Govern the imposition of the sumrule on the Raman tensors.
As in the case of the Born effective charges, the firstorder derivatives
of the linear dielectric susceptibility with respect to an atomic displacement
must vanish when they are summed over all atoms. This sum rule is broken
in most calculations. By putting ramansr equal to 1 or 2, this sum
rule is imposed by giving each atom a part of the discrepancy.
 0 => no sum rule is imposed;
 1 => impose the sum rule on the Raman tensors, giving each atom an equal part
of the discrepancy;
 2 => impose the sum rule on the Raman tensors, giving each atom a part
of the discrepancy proportional to the magnitude of its contribution
to the Raman tensor.
For the time being, ramansr=1 is the preferred choice.
Go to the top
 List of ANADDB input variables
relaxat
Mnemonics: RELAXation of AToms
Characteristic:
Variable type: integer
Default: 0
If relaxat=1, relax atomic positions during a structural relaxation
at constrained polarization.
See polflag.
Go to the top
 List of ANADDB input variables
relaxstr
Mnemonics: RELAXation of STRain
Characteristic:
Variable type: integer
Default: 0
If relaxat=1, relax lattice constants (lengths/angles) during a structural relaxation
at constrained polarization.
See polflag.
Go to the top
 List of ANADDB input variables
rfmeth
Mnemonics: ResponseFunction METHod
Characteristic:
Variable type: integer
Default: 1
Select a particular set of Data Blocks in the DDB.
(PRESENTLY, ONLY OPTION 1 IS AVAILABLE)
 1 => Blocks obtained by a nonstationary formulation.
 2 => Blocks obtained by a stationary formulation.
For more detailed explanations, see abinis_help
If the information in the DDB is available, always use
the option 2. If not, you can try option 1, which is less
accurate.
Go to the top
 List of ANADDB input variables
selectz
Mnemonics: SeLECT Z
Characteristic:
Variable type: integer
Default: 0
Select some parts of the effective charge tensor.
(This is done after the application or nonapplication of
the ASR for effective charges). The transformed effective
charges are then used for all the subsequent calculations.
 0 => The effective charge tensor is left as it is.
 1 => For each atom, the effective charge tensor is made
isotropic, by calculating the trace of the matrix,
dividing it by 3, and using this number in a
diagonal effective charge tensor.
 2 => For each atom, the effective charge tensor is made
symmetric, by simply averaging on symmetrical elements.

Note : this is for analysis the effect of anisotropy
in the effective charge. The result with nonzero selectz
are unphysical.
Go to the top
 List of ANADDB input variables
targetpol
Mnemonics: TARGET POLarization
Characteristic:
Variable type: real targetpol(1:3)
Default: 0.0
Target value of the polarization in cartesian coordinates and in C/m^2.
See polflag.
Go to the top
 List of ANADDB input variables
temperinc
Mnemonics: TEMPERature INCrease
Characteristic:
Variable type: real
Default: 2.0
Increment of the temperature in Kelvin, for thermodynamical properties.
Go to the top
 List of ANADDB input variables
tempermin
Mnemonics: TEMPERature MINimum
Characteristic:
Variable type: real
Default: 1.0
Lowest temperature (Kelvin) at which the thermodynamical quantities
have to be evaluated. Cannot be zero.
The highest temperature is defined using
temperinc
and ntemper.
Go to the top
 List of ANADDB input variables
thmflag
Mnemonics: THerMal FLAG
Characteristic:
Variable type: integer
Default: 0
The code is able to calculate, using the histogram method :
 the normalized phonon DOS
 the phonon internal energy, free energy,
entropy, constant volume heat capacity
as a function of the temperature
 the DebyeWaller factors (tensors) for
each atom, as a function of the temperature
Input variables needed if this flag is activated :
dostol,
nchan,
ntemper,
temperinc,
tempermin,
as well as the wavevector grid number 2 definition,
ng2qpt,
ngrids,
q2shft.
Go to the top
 List of ANADDB input variables
thmtol
Mnemonics: THerModynamic TOLerance
Characteristic:
Variable type: real
Default: 0.05
The relative tolerance on the thermodynamical functions
This number will determine when the series of channel widths
with which the DOS is calculated can be stopped, i.e.
the mean of the relative change going from one grid
to the next bigger is smaller than thmtol.
Go to the top
 List of ANADDB input variables
vrsinddb
Mnemonics: VeRSion of the DDB
Characteristic:
Variable type: integer
Default: 990527
6 digit integer, giving the version of the
DDB that will be input to the Anaddb code. Should be equal
to the DDB version supported by the code.
The format is yymmdd, where dd is the day number,
mm is the month number and yy is the
two last digits of the year number.
The default is fine in all present cases.
Go to the top
 List of ANADDB 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