mirror of https://gitlab.com/QEF/q-e.git
182 lines
6.9 KiB
Plaintext
182 lines
6.9 KiB
Plaintext
=============================================================================
|
|
Program CPVIB
|
|
=============================================================================
|
|
|
|
Calculates the vibrational modes, Born effective charges and infrared
|
|
cross-section for isolated molecules/clusters in vacuum.
|
|
The programs uses the CP code as the underlying DFT engine
|
|
for wave function relaxation (SCF) and the frozen phonon method for
|
|
construction of the energy hessian (dynamical matrix),
|
|
i.e. displace each atom in all three cartesian directions to construct
|
|
the numerical first derivative of the forces.
|
|
|
|
INPUT:
|
|
=====
|
|
|
|
The program uses two mandatory input files (optional files are discussed
|
|
further below):
|
|
1. The regular CP input file, which presumably was used to generate a
|
|
ground state nuclear configuration (local minimum).
|
|
2. A file "prefix.vib.inp", where prefix is defined in the CP input
|
|
file.
|
|
|
|
prefix.vib.inp contains two name lists:
|
|
|
|
&INPUT_VIB
|
|
...
|
|
/
|
|
|
|
&ISOTOPES
|
|
...
|
|
/
|
|
|
|
------------------------------------------------------------------------------
|
|
INPUT_VIB namelist:
|
|
|
|
displacement real ( default = 0.05 )
|
|
displacement step, a uniform value for all atoms
|
|
|
|
save_freq integer ( default = 1 )
|
|
Save restart information every save_freq displacements.
|
|
Since it is usually a small file, containing mainly
|
|
the intermediate hessian, it is suggested not to
|
|
change the default.
|
|
|
|
restart_label character ( default = 'auto' )
|
|
'from_scratch': starts a new calculation
|
|
'restart' : continue a previous calculation
|
|
a file 'prefix.vib.restart' must be present
|
|
'auto' : if a file 'prefix.vib.restart' is present
|
|
the program will pick it up and continue
|
|
the previous calculation, or if absent,
|
|
it will start a new calculation
|
|
|
|
trans_inv_flag logical ( default = .true. )
|
|
impose translational invariance on the energy hessian
|
|
to ensure that the modes associated with a rigid
|
|
translation would have zero frequency
|
|
|
|
trans_inv_max_iter integer ( default = 50 )
|
|
the maximal number of steps in the iterative procedure
|
|
that removes the rigid translation modes
|
|
|
|
trans_inv_conv_thr real ( default = 1.0D-15 )
|
|
the threshhold for convergence of the iterative procedure
|
|
for removal of the rigid translation modes
|
|
|
|
trans_rot_inv_flag logical ( default = .true. )
|
|
remove also the rigid rotation modes
|
|
|
|
animate logical ( default = .false. )
|
|
generate xyz animation files for all normal modes
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
ISOTOPES namelist:
|
|
|
|
isotope(i) real ( default = mass specified in ATOMIC_SPECIES name
|
|
list of the CP input )
|
|
Used to change the mass (in AMU) of atom i. The same could
|
|
be achieved (in principle) if the particular atom i was
|
|
defined as a different species in the CP input, having the
|
|
same pseudo potential but a different mass. However, this
|
|
is useful if you haven't done it apriory, but you want to
|
|
get the isotope shift without repeating the whole calculation.
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
Additional information about the input/output files:
|
|
===================================================
|
|
|
|
1. After the energy hessian is calculated, the program will write
|
|
the analysis results to 'prefix.vib.analysis'.
|
|
The minimal output is:
|
|
* raw (but symmetrized) hessian
|
|
* diagonal mass matrix
|
|
* harmonic frequencies and the associated effective
|
|
spring constant and effective mode mass
|
|
* raw Born charge tensors for each atom
|
|
* the sum over the Born charges (minus total system charge)
|
|
this quantity should ideally be zero (acoustic sum rule).
|
|
* infrared intensity of each normal mode.
|
|
|
|
If trans_inv_flag==.true. then the same information as above is repeated
|
|
but this time with imposed translational invariance on the energy
|
|
hessian. In addition, the Born charges are symmetrized and
|
|
the acoustic sum rule is imposed.
|
|
|
|
if trans_rot_inv_flag==.true. then also rotational modes are projected
|
|
out.
|
|
|
|
|
|
|
|
A brief description of the methods:
|
|
==================================
|
|
|
|
1. The energy hessian is constructed by a simple difference formula for
|
|
the numerical first derivative of the forces.
|
|
|
|
2. The condition for translational invariance of the hessian is described
|
|
(for instance) in Gonze and Lee, Phys. Rev. B 55(16), 1997, 10355-10368.
|
|
However, simple enforcement of translational invariance breaks the
|
|
symmetry of the hessian. Here symmetrization and translational
|
|
invariance are repeatedly applied until convergence, i.e., until
|
|
the largest change in any matrix element of the hessian is smaller
|
|
than trans_inv_conv_thr parameter.
|
|
A more sophisticated and general algorithm was suggested by
|
|
Nicolas Mounet and Nicola Marzari (Ref. ???) and is already implemented
|
|
in QE-3.0.
|
|
|
|
3. The algorithm for removal of rotational rigid modes follows closely the
|
|
one implemented in Gaussian03 electronic structure package, as described
|
|
in their white papers (www.gaussian.com).
|
|
|
|
|
|
|
|
Warning messeges:
|
|
================
|
|
|
|
1.
|
|
from calc_hessian : info # -1
|
|
Warning: Reference structure is not converged!!!
|
|
|
|
Issued when the total energy of a perturbed configuration is lower than the
|
|
reference energy of the ground-state configuration. In some cases it is an
|
|
indication of insufficient structural relaxation, and further relaxation
|
|
is required. However, for very soft (low frequency) modes it is very difficult
|
|
to converge the structure properly. The soft modes include also the 'zero'
|
|
frequency modes associated with rigid translation and rotation. In practice
|
|
these are never zero, for numerical reasons, but could be projected out
|
|
of the final results.
|
|
|
|
2.
|
|
from calc_hessian : info # -1
|
|
Warning: consistency check
|
|
Numerical second derivative of the total energy, compared to
|
|
first derivative of the forces, for diagonal hessian element,
|
|
deviate by more then 10%:
|
|
Energy second derivative : -0.0003
|
|
Force first derivative : 0.0004
|
|
|
|
The matrix elements of the energy hessian are evaluated by a simple two-point
|
|
formula for the first derivative of the forces. For diagonal matrix elements
|
|
we can compare with the (less accurate) second numerical derivative of the
|
|
total energy, as a consistency check. If the difference between the two estimates
|
|
is larger than 10% (arbitrarily chosen) the code will issue the above warning,
|
|
but only if the matrix element is estimated to be larger than 1.0E-4.
|
|
Very small matrix elements are again associated with soft modes and are hard to
|
|
compute accurately.
|
|
|
|
In some cases the 'problems' causing the warnings are harmless. However one should always
|
|
verify it for each case.
|
|
|
|
|
|
How to improve the results:
|
|
==========================
|
|
|
|
1. better reference structure
|
|
2. tighter SCF convergence
|
|
|
|
|