Vibrational modes
This tutorial will show you how to obtain vibrational modes in Octopus by using Sternheimer linear response. We will use the water molecule as example. To start we will need the geometry. Copy the following in a file called h2o.xyz :
3
Water molecule in Angstroms
O 0.000 0.000 0.0
H 0.757 0.586 0.0
H -0.757 0.586 0.0
Since to obtain proper vibrational modes we need to be as close as possible to the minimum of energy, first we will optimize the geometry under the parameters we have defined for the simulation. For that we use the following input file:
CalculationMode = go
UnitsOutput = eV_Angstrom
XYZCoordinates = "h2o.xyz"
Spacing = 0.16*angstrom
Radius = 4.5*angstrom
BoxShape = minimum
FilterPotentials = filter_ts
GOMethod = fire
ExperimentalFeatures = yes
As you see we will use a smaller than usual spacing and a larger spherical box. This is required since forces require more precision than other quantities. Of course for production runs these values should be properly converged. Also to increase the precision of the forces and the total energy we will use the variable FilterPotentials, which specifies that a filter should be applied to the ionic potentials that removes the Fourier components that are higher than what we can represent on our grid.
Now run Octopus, once the calculation is finished you should get the optimized geometry in min.xyz . Modify the value of XYZCoordinates to point to this file.
To perform a calculation of the vibrational modes we need a ground-state calculation with a very well converged forces. So change the CalculationMode to gs
and run Octopus again, by adding ConvForce = 1.e-7 ( the criterion to stop the self-consistency process will be given by the change in the force). Once done, check that the forces in the static/info
file are reasonably small (<0.05 eV/A).
Now we are ready for the actual calculation of vibrational modes. To do it, change CalculationMode to vib_modes
and run Octopus. This calculation will take a while, since $3N_{atoms}$ response calculations are required.
Finally, the results will be written into the vib_modes
folder.
- Check the normal_frequencies_lr file.
# Mode Frequency [cm-1]
1 3714.66865804
2 3612.19180564
3 1541.89763162
4 282.95538165
5 189.98486286
6 155.62791393
7 -197.74013582
8 -246.65205687
9 -258.63857751
What kind of information does it give? Did we find the correct equilibrium geometry?
Try now to visualize the vibrational eigenmodes. You can use XCrySDen to open the file normal_modes_lr.axsf . In the “Display” menu set “Forces”, and in “Modify” set the factor to 1. Try to classify the modes as translations, rotations, and true internal vibrations. Which ones have the “negative” (actually imaginary) frequencies?