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 frequencies calculations of spin polarized molecules using PBEc.
Bug PBEc The bug for analytical frequencies 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. 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 bottle neck 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 frequencies calculation can be used to control the accuracy of the U1 matrix components.
One disadvantage in calculating 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 an straight forward 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.
(Resonance) Raman¶
See the (Resonance) Raman section of the AMS manual. As explained there one has 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 by default AORESPONSE will be used. 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¶
New in AMS2020 is that one can 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.
Cohen, A. Willetts, R. D. Amos, and N. C. Handy, Vibrational contributions to static polarizabilities and hyperpolarizabilities, Journal of Chemical Physics 100, 4467 (1994)