skelton-group / Phonopy-Spectroscopy

A collection of tools for simulating vibrational spectra, which interfaces with the Phonopy package.
MIT License
142 stars 54 forks source link

Error: The number of bands references in the ir. rep. groups is more than # modes = 24. #3

Closed PujaAdhikari closed 6 years ago

PujaAdhikari commented 6 years ago

Hi, I tried to follow the alpha-SiO2 steps for MgO (one of the examples of phonopy). The input files fc2.hdf5 and fc3.hdf5 were generated using phono3py with dimension for fc2 "2 2 2" and fc3 "1 1 1".

While using the following command. I got the error. phonopy-ir --ir_reps --linewidth_hdf5="kappa-m484848-g0.hdf5" --linewidth_temperature=300

The error looks like: Frequencies and eigenvectors read from "mesh.hdf5" Structure read from "phonopy.yaml" Atomic masses read from "phonopy.yaml"

Linewidths read from "kappa-m484848-g0.hdf5" (T = 300.00 K) Irreducible representations read from "irreps.yaml"

Traceback (most recent call last): File "/global/homes/a/adhikari/Phonopy-Spectroscopy/Scripts/phonopy-ir", line 72, in frequencies, 'thz', eigendisplacements, becTensors, args, linewidths = linewidths, irRepData = irRepData File "/global/homes/a/adhikari/Phonopy-Spectroscopy/SpectroscoPy/CLI/Runtime.py", line 93, in RunMode_IR 'ir', frequencies, frequencyUnits, irIntensities, _IR_IntensityUnits, args, linewidths = linewidths, irRepData = irRepData File "/global/homes/a/adhikari/Phonopy-Spectroscopy/SpectroscoPy/CLI/Runtime.py", line 465, in RunMode_Output ptFrequencies, ptIntensities, ptIrRepSymbols, ptLinewidths = GroupForPeakTable(frequencies, intensities, irRepData, linewidths = linewidths); File "/global/homes/a/adhikari/Phonopy-Spectroscopy/SpectroscoPy/TextExport.py", line 174, in GroupForPeakTable raise Exception("Error: The number of bands references in the ir. rep. groups is more than # modes = {0}.".format(numModes)); Exception: Error: The number of bands references in the ir. rep. groups is more than # modes = 24.

Please help me in this matter.

Thank you, Puja

JMSkelton commented 6 years ago

Hi Puja,

Can you post the command lines you used to prepare the eigenvectors and ir. reps. using Phonopy?

The problem is most likely using the conventional cell rather than the primitive cell; Phonopy requires the primitive to calculate the ir. reps., and you should also use that for the Phonopy-Spectroscopy calculations.

Best wishes,

Jonathan

JMSkelton commented 6 years ago

I also note that the error message is misleading -- it is triggered if the number of bands referenced by the ir. reps. is not equal to the number of modes; this will be fixed in the next update.

PujaAdhikari commented 6 years ago

Hi Jonathon, I used following commands: phonopy --dim="2 2 2" --readfc --hdf5 --fc_symmetry=1 --mesh="1 1 1" --eigenvectors phonopy --dim="2 2 2" --readfc --hdf5 --fc_symmetry=1 --irreps="0 0 0" setting.conf setting.conf consists: PRIMITIVE_AXIS = 0.0 0.5 0.5 0.5 0.0 0.5 0.5 0.5 0.0

Puja

JMSkelton commented 6 years ago

Hi Puja,

You need to include the PRIMITIVE_AXIS tag both when generating the eigenvectors (first command) and when generating the ir. reps. (second command).

Jonathan

PujaAdhikari commented 6 years ago

Hi Jonathon,

Thank you for pointing it out. Now I tried: phonopy --dim="2 2 2" --readfc --hdf5 --fc_symmetry=1 --mesh="1 1 1" --eigenvectors setting.conf phonopy --dim="2 2 2" --readfc --hdf5 --fc_symmetry=1 --irreps="0 0 0" setting.conf phono3py --dim="1 1 1" --dim_fc2="2 2 2" --fc2 --fc3 -v --br --thm --mesh="48 48 48" --write_gamma --gp=0 phonopy-ir --ir_reps --linewidth_hdf5="kappa-m484848-g0.hdf5" --linewidth_temperature=300

But now I get another error: Frequencies and eigenvectors read from "mesh.hdf5" Structure read from "phonopy.yaml" Atomic masses read from "phonopy.yaml"

Traceback (most recent call last): File "/global/homes/a/adhikari/Phonopy-Spectroscopy/Scripts/phonopy-ir", line 58, in eigenvectors, atomicMasses File "/global/homes/a/adhikari/Phonopy-Spectroscopy/SpectroscoPy/Utilities.py", line 148, in EigenvectorsToEigendisplacements raise Exception("Error: The number of supplied atomic masses is inconsistent with the number of displacements in the eigenvectors."); Exception: Error: The number of supplied atomic masses is inconsistent with the number of displacements in the eigenvectors.

Puja

JMSkelton commented 6 years ago

OK :- getting there. I'll have to think about how best to work around this problem in the code.

For now, try the following:

  1. Run phonopy --symmetry to obtain a PPOSCAR file with the primitive cell.
  2. Open the file in a text editor and add the atom types below the fifth line (i.e. convert it to the VASP 5 format).
  3. Remove (or rename) phonopy.yaml.
  4. Run again with phonopy-ir --cell="PPOSCAR" --ir_reps --linewidth_hdf5="kappa-m484848-g0.hdf5" --linewidth_temperature=300.

[Basically, what's happening is that the structure read in by phonopy-ir is the conventional cell, which has a number of atoms that is now inconsistent with the number of eigenvectors and ir. reps. The current Phonopy interface doesn't consider the possibility of people projecting a conventional to primitive cell when doing the calculations.]

Jonathan

PujaAdhikari commented 6 years ago

Hi Jonathan,

I tried above steps and now I have another error:

Frequencies and eigenvectors read from "mesh.hdf5" Structure read from "PPOSCAR" Atomic masses taken from Phonopy database

Linewidths read from "kappa-m484848-g0.hdf5" (T = 300.00 K) Irreducible representations read from "irreps.yaml"

Traceback (most recent call last): File "/global/homes/a/adhikari/Phonopy-Spectroscopy/Scripts/phonopy-ir", line 72, in frequencies, 'thz', eigendisplacements, becTensors, args, linewidths = linewidths, irRepData = irRepData File "/global/homes/a/adhikari/Phonopy-Spectroscopy/SpectroscoPy/CLI/Runtime.py", line 93, in RunMode_IR 'ir', frequencies, frequencyUnits, irIntensities, _IR_IntensityUnits, args, linewidths = linewidths, irRepData = irRepData File "/global/homes/a/adhikari/Phonopy-Spectroscopy/SpectroscoPy/CLI/Runtime.py", line 465, in RunMode_Output ptFrequencies, ptIntensities, ptIrRepSymbols, ptLinewidths = GroupForPeakTable(frequencies, intensities, irRepData, linewidths = linewidths); File "/global/homes/a/adhikari/Phonopy-Spectroscopy/SpectroscoPy/TextExport.py", line 157, in GroupForPeakTable raise Exception("Error: If supplied, linewidths must have the same number of elements as frequencies and intensities."); Exception: Error: If supplied, linewidths must have the same number of elements as frequencies and intensities.

Puja

JMSkelton commented 6 years ago

OK :-

You will nees to recalculate your linewidths with the --pa command-line option (equivalent to the PRIMITIVE_AXIS settings tag).

I think Phono3py has this option.

Jonathan

PujaAdhikari commented 6 years ago

Yes, it works. Thank you Jonathan.

Puja