Skip to content

Scripts needed to generate the Delta factor for two solid state DFT codes within the PBE formalism

License

Notifications You must be signed in to change notification settings

molmod/DeltaCodesDFT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This file provides a summary of the necessary information to calculate a code's Delta factor. The full procedure and background are described in the article by K. Lejaeghere, V. Van Speybroeck, G. Van Oost, and S. Cottenier: "Error estimates for solid-state density-functional theory predictions: an overview by means of the ground-state elemental crystals", Crit. Rev. Solid State (2014).

An overview of the current calculated Delta factors can be found at http://molmod.ugent.be/deltacodesdft

In addition to this README.md, the following files should have been included with the Supplementary Material:

  • calcDelta.py
  • CIFs
  • eosfit.py
  • WIEN2k.txt
  • primCIFs
  • history.tar.gz

In order to be able to run calcDelta.py and eosfit.py, python and numpy are needed.

CONTENTS OF THE SUPPLEMENTARY MATERIAL

CIFs contains the CIF files of 71 elemental crystals in their ground state structure (except for sulfur and manganese, where a simpler structure that appears at higher temperatures or pressures is taken). For each of these structures, the CIF file presents the crystal at its calculated equilibrium (PBE functional). Spin-orbit coupling has not been incorporated in these calculations.

primCIFs contains the same 71 structures, but in their primitive unit cell. This allows faster calculations. Note that these structures are not the ones reported in the original article, however, so k-points need to be modified.

calcDelta.py is a python script, that calculates the Delta factor between two given codes. Results are saved in Delta-out.txt. The script is called by python calcDelta.py filename1 filename2, where filename1 and filename2 refer to files containing V0, B0, and B1 information from the codes under study for each elemental crystal. Other options allow to print output to the screen or to use previous Delta definitions. By typing python calcDelta.py --help a more extensive help can be displayed.

WIEN2k.txt is an input file for calcDelta.py. These data are used as a reference in the default case. The WIEN2k.txt file should therefore be in the work directory at all times in order for calcDelta.py to work.

eosfit.py is a python script, that calculates the Birch-Murnaghan equation of state for a single set of E(V) data points. It is called by python eosfit.py filename, where filename refers to a file containing the crystal volumes (in A^3/atom) and the corresponding energies (in eV/atom). By typing python eosfit.py --help a more extensive help can be printed on screen.

history.tar.gz is an archive that contains input data for all codes investigated so far, as well as experimental information.

CALCULATING THE DELTA FACTOR

Translate every CIF file into a structure input file of the code under investigation. Make similar input files for 94%, 96%, 98%, 102%, 104%, and 106% of the equilibrium volume. For each elemental crystal this yields seven structures.

Calculate the energy for each of the 71x7 input files. Include spin polarization for O, Cr and Mn (antiferromagnetic) and Fe, Co, and Ni (ferromagnetic). The antiferromagnetism in the oxygen crystal should take place between the O2 molecules. Make sure the energy has converged in function of the computational parameters. Force optimizations should not be employed, since the computation of Delta requires fixed cell geometries, both with respect to the cell shape and the internal coordinates. Put the energies next to the volumes in a separate text file for each element (expressed per atom) and use eosfit.py to determine the Birch-Murnaghan equation of state parameters. If the predicted equilibrium volume is smaller than 96% or larger than 104% of the WIEN2k equilibrium volume, calculate an additional number of volumes so again 7 volume points are obtained, approximately symmetrical around V0. This ensures that for the pressure derivative of the bulk modulus an accurate value is obtained.

Assemble all sets of Birch-Murnaghan parameters in one text file and put the corresponding element symbol in front of the data. Use calcDelta.py to determine the Delta factor of the two code under consideration.

More elaborate comparisons can be performed as well. A Linux-friendly output scheme has been provided, which allows to execute such analyses. To scale the elementwise Delta (from filename) to the difference with experiment, for example, type:

python calcDelta.py VASP-relaxed.txt exp.txt --stdout | grep -E -v "\#|np|-" > test.txt
python calcDelta.py filename WIEN2k.txt --stdout | grep -E -v "\#|np|-" | join test.txt - | grep -v "N/A" | awk '{print $1, $3/$2*100}' | sort -n -k 2

To compare the performance of the code from filename to that of VASP (fixed-geometry), type:

python calcDelta.py VASP.txt WIEN2k.txt --stdout | grep -E -v "\#|np|-" > test.txt
python calcDelta.py filename WIEN2k.txt --stdout | grep -E -v "\#|np|-" | join test.txt - | grep -v "N/A" | awk '{print $1, $3/$2}' | sort -n -k 2

FURTHER INFORMATION

K. Lejaeghere, V. Van Speybroeck, G. Van Oost, and S. Cottenier: "Error estimates for solid-state density-functional theory predictions: an overview by means of the ground-state elemental crystals", Crit. Rev. Solid State (2014). (open access, also available at http://arxiv.org/abs/1204.2733)

Corresponding author: [email protected]

About

Scripts needed to generate the Delta factor for two solid state DFT codes within the PBE formalism

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages