EOS_2_phonons is a program for computational chemistry and physics that allows to automate the runs for frequency calculations, and breaking symmetry over different volumes.
The programs on this repository allow to obtain the needed outputs in order to further perform a quasi-harmonic approximation analyisis with the QHA_2D program
The program was developed as part of David Carrasco de Busturia PhD project at Prof. Nicholas Harrison's Computational Materials Science Group, Imperial College London. The program was used to investigate the phase diagram and phase transitions mechanisms on the calcium carbonate system.
-
Get the code:
git clone https://github.com/DavidCdeB/EOS_2_phonons -
Copy to the folder
EOS_2_phononscreated, the*.outoutput from theEOScalulation:
EOS
[Optional sub-keywords]
END
which contains the constant-volume optimization for several geometries.
-
Run the program
Eos_2_Phonons.py. This will prepare a frequency calculation input for each geometry. Before running this program, you should edit it and substitute[supercell expansion matrix here],[basis set here]and[functional here]by, respectively, the adequate supercell for the phonon calculation, the proper basis set and the DFT functional. -
Run
ONE.sh. This will create the directories corresponding to each volume, and will send the jobs to run. -
At this point, we need to detect negative phonons found at certain volumes. These can be detected by running the programs inside the repository search_neg_freqs. Read the instructions in this repository, so that then you can identify which volumes contain a imaginary (negative) frequency.
-
The next step is to distort the atomic coordinates along the eigenvectors. It is first necessary to bring these phonons back to the Gamma point. In order words, perform
FREQCALC + SUPERCELLtype of calculations. Edit theEos_2_Phonons.pyso that it contains the following:
SCELPHONO
[supercell expansion matrix here]
FREQCALC
-
Edit
TWO.sh, providing the list of volumes under the variableVOLUMES. This will run the frequency calculation bringing the phonons to Gamma. -
Edit
Eos_2_Phonons.pyso that it contains the following:
SUPERCELL
[supercell expansion matrix here]
FREQCALC
RESTART
SCANMODE
1 -10 10 0.4
1
END
END
Edit also the name of the files, i.e., change this line:
with open(VOLUMES[vol_i] + '_FREQCALC.d12', 'w') as f:
by this line:
with open(VOLUMES[vol_i] + '_SCANMODE_1.d12', 'w') as f:
or additionally by this line, if there is a second negative phonon mode:
with open(VOLUMES[vol_i] + '_SCANMODE_2.d12', 'w') as f:
This will prepare the input files for the SCANMODE runs.
-
Run
THREE.sh. This will run the scanmodes. Provide the list of volumes under the variableSCANMODE_1_FILESorSCANMODE_2_FILES. -
Run
FOUR.sh. This will extract the geometry of the minimum energy displacement of the scanmode. In addition, it will prepare a "findsym" input file for CRYSTAL. This will allow you to obtain a.FINDSYMfile, ready to be read by thefindsymprogram [1]. -
Run
FIVE.sh. This will modify the tolerances of the.FINDSYMfile, creating a set of different files corresponding to different tolerances:
0_1.FINDSYM -> 0.1 tolerance
0_01.FINDSYM -> 0.01 tolerance
0_001.FINDSYM -> 0.001 tolerance
0_0001.FINDSYM -> 0.0001 tolerance
0_00001.FINDSYM -> 0.00001 tolerance
0_000001.FINDSYM -> 0.000001 tolerance
0.FINDSYM -> 0 tolerance
Once done this, the findsym program will run,
and will generate a cif file for each tolerance.
-
Run
SIX.sh. This will run thecif2cellprogram [2] over each of theseciffiles previously generated. An input file for a constant volume optimization run will be created for the most common tolerance used, 0.1. You would have to change theCVOLOPT_fragment, which is the tail for the input file, specifying the basis set you are using. -
Run
SEVEN.sh. This will run the constant volume optimization. -
At this point, if the space group of the broken symmetry structure starts with
P, then the primitve cell is equivalent to the crystalographic. In this case, you should runEIGHT.sh. If the broken symmetry structure contains a crystallographic cell different from a primitve, you should runEIGHT.shby changing every instance ofEos_2_Phonons_when_threre_is_no_crystallographic_cell.pybyEos_2_Phonons.py.
Under the TEST folder, you will find all the programs
needed, together with a *out folder
with the frequency output.
Please cite the following reference when using this code:
D. Carrasco-Busturia, "The temperature - pressure phase diagram of the calcite I - calcite II phase transition: A first-principles investigation", Journal of Physics and Chemistry of Solids, vol. 154, p. 110 045, 2021. DOI: https://doi.org/10.1016/j.jpcs.2021.110045.
Here the bibtex:
@article{CARRASCOBUSTURIA2021110045,
title = {The temperature - pressure phase diagram of the calcite {I} - calcite {II} phase transition: A first-principles investigation},
journal = {Journal of Physics and Chemistry of Solids},
volume = {154},
pages = {110045},
year = {2021},
issn = {0022-3697},
doi = {https://doi.org/10.1016/j.jpcs.2021.110045},
url = {https://www.sciencedirect.com/science/article/pii/S0022369721001116},
author = {David Carrasco-Busturia}
}
QHA is free software released under the Gnu Public Licence version 3.
All contributions to improve this code are more than welcome.
-
Have a look at GitHub's "How to contribute".
-
If you are familiar with
git: fork this repository and submit a pull request. -
If you are not familiar with
git:- If something should be improved, open an issue here on GitHub
- If you think a new feature would be interesting, open an issue
- If you need a particular feature for your project contact me directly.
[1] Stokes, Harold T. and Hatch, Dorian M., Journal of Applied Crystallography 2005, 38, 237-238
[2] Björkman, T., Computer Physics Communications 182, 1183–1186 (2011)