shankar1729/jdftx

Displacements in phonon calculations

Closed this issue · 4 comments

Dear Shankar,

I tried to perform a phonon calculations using the vibrations command. The output file has the following structure:

Real mode 1:
Frequency: 0.000293 Eh [ 64 cm^-1 ]
Degeneracy: 1 of 4
IR intensity: 0.0033 e^2/amu [ 3.2 km/mol ]
Displacements:
disp C  -0.000076823648863   0.000000000000000   0.000230738374794
....

My question is what does these displacements mean? Is it a vectors for atom movement for the corresponding vibrational mode at q=0?
Additionally, can I somehow extract the displacements of atoms that were generated for phonon calculation and force matrix evaluation?

Thanks in advance!

Best,
Vitaliy

Hi Vitaliy,

Yes, the displacements in the vibrations calculations are the eigenvectors of the dynamical matrix at q=0. So you should see opposite displacements for a pair of atoms with others being small for a bond stretch mode, and so on.

For the phonon calculation, the phononBasis file contains the displacements used as the basis for representing the dynamical matrix. These are essentially Cartesian displacements in each direction for each atom in the unit cell (with an sqrt(M) factor in atomic units to make it omega_sq instead of force). The phonon tutorials show how to transform the dynamical matrix from real space to reciprocal space at arbitrary q and diagonalize. It focused on the eigenvalues to get a phonon band structure, but those eigenvectors are in this basis. So you can use those eigenvectors with the phononBasis file to generate the displacement pattern for a specific phonon eigenmode at a given q.

Best,
Shankar

Thanks a lot!

During my experiments I discovered strange JDFTx behavior.

  1. Tried to perform phonon calculations using two executables: jdftx_gpu and phonon_gpu for the very simple system (H2O molecule in a box with PBC). Two outputs are attached. Interesting, that the first one finished without any error while the second failed. The system and setting were the same.

output_phonon.txt
output_jdftx.txt
CMakeCache.txt

Also, I did not faced with such errors in any other cases except other molecules.

  1. As I discovered, phonon-specific files (phononOmegaSq, phononHsub, phononBasis, etc.) can be produced only by phonon executable. Can I somehow turn on such outputs in jdftx executable with vibrations command in input file?

  2. There is a useConstraints option in jdftx executable. However, there is no such option for the phonon executable. Is there any reason for this behavior?

Best,
Vitaliy

Hi Vitaliy,

For 1., I notice that you are not reading in the converged unit cell wavefunctions. This is a must for phonon calculations, and you are finding divergences in the perturbed calculations because it is starting form LCAO again, which should not happen.

For 2 and 3., the vibrations and phonons modules were written for very different purposes and support very different functionalities. The former for vibrational free energy calculations in catalysis etc., and the latter for electron-phonon interactions for transport, plasmonics etc. The underlying code is therefore rather different and optimized in very different ways. So it is not straightfroward to enable the input/output options from one into the other. It should be possible to add useConstraints to phonon, but this is not trivial, as the determination of minimal perturbations to cover the dynamical matrix becomes more nontrivial.

We will plan on combining these two modules in our ongoing major rewrite, but this would not be quick to do in the current code.

Best,
Shankar

Thank you for clarification!