Hi,

Alexander Vozny wrote:
alat (Ang)       Etot (eV)
------------------------------
6.12             -1975.526018
6.14             -1975.531451
6.16             -1975.535169
6.18             -1975.53714
6.20             -1975.537384
6.22             -1975.535722
6.24             -1975.5324
6.26             -1975.527514

Your a is somewhere around 6.19


#  Equilibrium volume, a.u.^3 :  602.102908
which gives  a=8.44a0=4.46A
Andrei's tool cannot make such an error, so I'd expect that you converted to atomic units incorrectly.


#  Bulk modulus, Kbar         :   47.134730
GaSb zincblende  a=6.09593 Ang, B=57.0 GPa
It is typical for bulk modulus to be about 10% off expt value, plus or minus depends on GGA or LDA. (But since the lattice constant is wrong then this number is not correct anyhow).

i'm getting the following with ase's eos.py (script attached):
eos                      v0(eV**3) e0(eV)       B0(GPa)  a0(A)
                    poly 237.421   -1975.537445 12.55    6.192
                 taylor 237.471   -1975.537444 12.50    6.193
        murnaghan 237.414   -1975.537443 12.56    6.192
                  birch 237.414   -1975.537443 12.56    6.192
birchmurnaghan 237.413   -1975.537443 12.54    6.192
pouriertarantola 237.413   -1975.537442 12.55    6.192
                  vinet 237.414   -1975.537443 12.56    6.192


Marcin
alats = [
    6.12,
    6.14,
    6.16,
    6.18,
    6.20,
    6.22,
    6.24,
    6.26,
    ]
volumes = [a**3 for a in alats]

energies = [
    -1975.526018,
    -1975.531451,
    -1975.535169,
    -1975.53714,
    -1975.537384,
    -1975.535722,
    -1975.5324,
    -1975.527514,
    ]

from eos import EquationOfState
from eos import GPa

print 'eos              v0(eV**3) e0(eV)       B0(GPa)  a0(A)'
for eos_type in [
    'poly',
    'taylor', 'murnaghan',
    'birch', 'birchmurnaghan', 'pouriertarantola',
    'vinet',
    #'antonschmidt' # probably broken?
    ]:
    eos = EquationOfState(volumes, energies, eos=eos_type)
    v0, e0, B0 = eos.fit()
    print "%16s %.3f   %.6f %.2f    %.3f" % (eos_type, round(v0, 3), round(e0, 6), round(B0/GPa, 2), round(v0**(1./3), 3))
    #eos.plot()

Responder a