Benchmark: the performance of semilocal and hybrid density functionals in 3d transition-metal chemistry

Reproducing selected results from using different codes.

Key-value pairs

key description
name Name of the system
relativistic 0 or 1
project Name of the project: “tmfp06d”
xc Exchange-correlation functional

Note that there are additional keys not explained above which are specific to the given calculator.


First extract the data of the given code and insert it into a new database file. Then use the script to write the csv formatted file using the data from the new database file.

# experimental results

# nwchem def2-qzvppd
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=nwchem,basis=def2-qzvppd,relativistic=0 -i nwchem_def2-qzvppd.nrel.PBE.db
python nwchem nwchem_def2-qzvppd.nrel.PBE.db
# nwchem aug-cc-pvqz
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=nwchem,basis=aug-cc-pvqz,relativistic=0 -i nwchem_aug-cc-pvqz.nrel.PBE.db
python nwchem nwchem_aug-cc-pvqz.nrel.PBE.db
# nwchem aug-cc-pv5z
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=nwchem,basis=aug-cc-pv5z,relativistic=0 -i nwchem_aug-cc-pv5z.nrel.PBE.db
python nwchem nwchem_aug-cc-pv5z.nrel.PBE.db
# aims tight basis relativistic none
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=aims,basis=tight,relativistic=0 -i aims_tight.nrel.PBE.db
python aims aims_tight.nrel.PBE.db
# aims tier2 basis relativistic none
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=aims,basis=tier2,relativistic=0 -i aims_tier2.nrel.PBE.db
python aims aims_tier2.nrel.PBE.db
# gpaw paw 09
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=gpaw,potentials_version=0.9,relativistic=0 -i gpaw_paw09.nrel.PBE.db
python gpaw gpaw_paw09.nrel.PBE.db

# aims tight basis relativistic atomic_zora scalar
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=aims,basis=tight,relativistic=1 -i aims_tight.srel.PBE.db
python aims aims_tight.srel.PBE.db
# aims tier2 basis relativistic atomic_zora scalar
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=aims,basis=tier2,relativistic=1 -i aims_tier2.srel.PBE.db
python aims aims_tier2.srel.PBE.db
# espresso pslib_0.3.1
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=espresso,potentials=pslib,relativistic=1 -i espresso_pslib_0.3.1.srel.PBE.db
python espresso espresso_pslib_0.3.1.srel.PBE.db
# espresso gbrv 1.2
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=espresso,potentials=gbrv,potentials_version=1.2,relativistic=1 -i espresso_gbrv_1.2.srel.PBE.db
python espresso espresso_gbrv_1.2.srel.PBE.db
# espresso gbrv 1.4
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=espresso,potentials=gbrv,potentials_version=1.4,relativistic=1 -i espresso_gbrv_1.4.srel.PBE.db
python espresso espresso_gbrv_1.4.srel.PBE.db
# espresso sg15_oncv
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=espresso,potentials=sg15_oncv,relativistic=1 -i espresso_sg15_oncv.srel.PBE.db
python espresso espresso_sg15_oncv.srel.PBE.db
# gpaw paw 09
ase-db tmfp06d.db project=tmfp06d,xc=PBE,calculator=gpaw,potentials_version=0.9,relativistic=1 -i gpaw_paw09.srel.PBE.db
python gpaw gpaw_paw09.srel.PBE.db

The systems in this work (many of TM atoms, and TM diatomics) should not be really treated with GGA DFT due to various reasons (see for example or These problems often translate into convergence problems in DFT codes or large scatter of the obtained results. The third step consists of eliminating all systems that show large scatter of results from the set.

# remove all systems that give large scatter of results
for f in *.csv
nf=`echo $f | rev | cut -d. -f3- | rev`.remove.db.csv
cp -f $f $nf
# non-relativistic
sed -i '/Ti2/d' $nf
sed -i '/VN/d' $nf
sed -i '/CrH/d' $nf
sed -i '/FeF/d' $nf 
sed -i '/FeO/d' $nf
sed -i '/CoH/d' $nf
sed -i '/NiH/d' $nf
sed -i '/CuH/d' $nf
# scalar-relativistic
sed -i '/MnH/d' $nf
sed -i '/Fe2/d' $nf
sed -i '/CoO/d' $nf
sed -i '/Ni2/d' $nf
# espresso
sed -i '/TiO/d' $nf
sed -i '/Cr2/d' $nf
sed -i '/CrN/d' $nf
sed -i '/Mn2/d' $nf
sed -i '/FeH/d' $nf
# vasp semicore
sed -i '/Sc2/d' $nf
sed -i '/ScN/d' $nf
sed -i '/TiN/d' $nf
sed -i '/V2/d' $nf
sed -i '/CrO/d' $nf

The results can be plotted e.g. with

Running the calculations again

Selected scripts used to obtain the results are available at