Vibrational Spectroscopy
************************

See the Vibrational Spectroscopy section of the AMS manual.


IR frequencies and normal modes
===============================

See the IR frequencies and normal modes section of the AMS manual.

The Hessian that is needed can be calculated numerically (for almost
all XC functionals) or analytically (for a limited amount of XC
functionals, mostly LDA or GGA). This can be set in the AMS part of
the input.

   $ADFBIN/ams <<eor
      NormalModes
         Hessian [Auto | Analytical | Numerical]
      End
      ...
   eor


Analytical Hessian
------------------

The analytical second derivatives (Hessian) implementation in ADF is
based on Ref. [1] [2] [3]. The analytical Hessian is as accurate as
the numerical Hessian for the same integration accuracy, but can be up
to 3 to 5 times quicker to compute, depending on the molecule,
integration grid parameters, and choice of basis set. Using the
analytical Hessian AMS will calculate the vibrational frequencies and
normal modes.

Warning:

  In previous versions ADF2006-ADF2020 contained a bug for analytical
  frequency calculations of spin-polarized molecules using PBEc.

**Bug PBEc** The bug for analytical frequency calculations of spin-
polarized molecules using PBEc affects calculations with the exchange-
correlation functionals PBE, OPBE, RPBE, revPBE, and S12g. This bug
was introduced in ADF2006 and fixed in AMS2020.103. Analytical
frequencies using LibXC were not affected. A workaround for older
versions is to use numerical frequencies. For AMS2020 one should use
AMS2020.103 or later. For ADF2019.3 one should use ADF2019.307.

Calculating the analytical Hessian requires the solution of the
Coupled Perturbed Kohn-Sham (CPKS) equations, which is an iterative
process. This part of the process is of order 3 x *number of atoms*,
and is generally the main bottleneck in calculating the frequencies.
The immediate result of the solution of the CPKS equations is the U1
matrix, the components of which are closely related to the derivatives
of the MO coefficients. One of the adjustable parameters in the input
of an analytical frequency calculation can be used to control the
accuracy of the U1 matrix components.

One disadvantage in calculating the analytical Hessian is that the
range of exchange-correlation functionals is limited. This is because
derivative formulas have to be derived for each exchange-correlation
functional in ADF, which is not a straightforward task. Here are the
currently available functionals:

**LDA:** XONLY, VWN, STOLL, PW92

**Exchange GGA:** Becke88, OPTx, PBEx, rPBEx, revPBEx, S12g

**Correlation GGA:** LYP, Perdew86, PBEc

**XC GGA shortcuts:** BP86, PBE, RPBE, revPBE, BLYP, OLYP, OPBE

Any functional not mentioned above is not implemented, including PW91
and Hartree-Fock.

**A note of caution**: For accurate frequencies it is especially
important to also have an accurately optimized geometry. During a
geometry optimization the integration accuracy is set by default to
"Normal", and so the resulting frequencies will also have this level
of integration accuracy while it may be desirable to have frequencies
computed with a higher accuracy. One might consider using Good
NumericalQuality (or BeckeGrid quality) and set the convergence
criteria for the geometry optimization tighter.

   AnalyticalFreq
      B1Size float
      B1Thresh float
      Check_CPKS_From_Iteration integer
      Debug string
      Hessian [reflect | average]
      Max_CPKS_Iterations integer
      Print string
      PrintNormalModeAnalysis Yes/No
      U1_Accuracy float
   End

"AnalyticalFreq"
   Type:
      Block

   Description:
      Define options for analytical frequencies.

   "B1Size"
      Type:
         Float

      Description:
         Sparse grid max memory size

   "B1Thresh"
      Type:
         Float

      Default value:
         1e-10

      Description:
         MMGF_DENB1 and MMGF_GRADB1 cutoff values

   "Check_CPKS_From_Iteration"
      Type:
         Integer

      Default value:
         1

      Description:
         Solution of the CPKS equations is an iterative process, and
         convergence is achieved if the difference between U1 matrix
         of successive iterations falls below a certain threshold.
         This key can be used to determine at which iteration the
         checking should start taking place.

   "Debug"
      Type:
         String

      Description:
         For debugging purposes. Options: fit, hessian, b1, densities,
         numbers, symmetry, all.

   "Hessian"
      Type:
         Multiple Choice

      Default value:
         reflect

      Options:
         [reflect, average]

      Description:
         Whether the final Hessian is obtained by reflecting or
         averaging?

   "Max_CPKS_Iterations"
      Type:
         Integer

      Default value:
         20

      Description:
         Calculating the analytical frequencies requires the solution
         of the Coupled Perturbed Kohn-Sham (CPKS) equations, which is
         an iterative process. If convergence is not achieved (a
         warning will be printed in the output if this is the case)
         then this subkey can be used to increase the number of
         iterations, although convergence is not guaranteed. The user
         required accuracy of the U1 matrix, as well as the ADF
         integration accuracy, can effect the rates of convergence.

   "Print"
      Type:
         String

      Description:
         Primarily for debugging purposes. Options: eigs, u1, parts.
         Choosing EIGS results in the print out of the MO
         eigenvectors, while U1 results in the print out of the U1
         matrices. Except for small molecules this will result in a
         lot of data being output, and so they are not recommended.
         Choosing PARTS results in the print out of various sub-
         hessians that add up to give the final analytical hessian.

   "PrintNormalModeAnalysis"
      Type:
         Bool

      Default value:
         No

      Description:
         Request ADF to print analysis of the normal modes
         independently of AMS.

   "U1_Accuracy"
      Type:
         Float

      Default value:
         5.0

      Description:
         Solution of the CPKS equations is an iterative process, and
         convergence is achieved if the difference between U1 matrix
         of successive iterations falls below a certain threshold.
         This subkey can be used to set the threshold. The accuracy of
         the U1 will be 10**(-x). So, the higher the number the more
         accurate the U1 will be. While this parameter effects the
         accuracy of the frequencies, other factors also effect the
         accuracy of the frequencies, especially the ADF integration
         accuracy.

[1] A. Bérces, R. M. Dickson, L. Fan, H. Jacobsen, D. Swerhone and T.
    Ziegler, *An implementation of the coupled perturbed Kohn-Sham
    equations: perturbation due to nuclear displacements*, Computer
    Physics Communications 100, 247 (1997)

[2] H. Jacobsen, A. Bérces, D. Swerhone and T. Ziegler, *Analytic
    second derivatives of molecular energies: a density functional
    implementation*, Computer Physics Communications 100, 263 (1997)

[3] S.K. Wolff, *Analytical second derivatives in the Amsterdam
    density functional package*, International Journal of Quantum
    Chemistry 104, 645 (2005)


(Resonance) Raman
=================

See the (Resonance) Raman section of the AMS manual. As explained
there, you have two methods for calculating resonance Raman. One
method uses the geometrical derivatives of the frequency-dependent
polarizability with a finite lifetime, and the other method uses
excited-state energy gradients projected onto the ground-state normal
modes.

For (resonance) Raman calculations that use the geometrical
derivatives of the frequency-dependent polarizability, AORESPONSE is
used by default. To use RESPONSE instead of AORESPONSE, include the
RESPONSE block key in the Engine ADF part of the input:

   Engine ADF
     Response
     End
   EndEngine


VROA: (Resonance) vibrational Raman optical activity
====================================================

See the VROA section of the AMS manual.


VCD: Vibrational Circular Dichroism
===================================

In AMS2020 it became possible to calculate VCD also for open-shell
systems in a spin-unrestricted calculation.

See the VCD section of the AMS manual.


Vibrational Polarizabilities
============================

Following a vibrational frequency calculation, ADF will automatically
print the pure vibrational polarizability [4] of the system. The full
polarizability tensor is printed in atomic units along with the
isotropic average.

See the Vibrational Polarizabilities section of the AMS manual.

[4] 13. 10. Cohen, A. Willetts, R. D. Amos, and N. C. Handy,
            *Vibrational contributions to static polarizabilities and
            hyperpolarizabilities*, Journal of Chemical Physics 100,
            4467 (1994)
