Equation of state¶
The EquationOfState
class can be used to find
equilibrium volume, energy, and bulk modulus for solids:
- class ase.eos.EquationOfState(volumes, energies, eos='sj')[source]¶
Fit equation of state for bulk systems.
The following equation is used:
sjeos (default) A third order inverse polynomial fit 10.1103/PhysRevB.67.026103 :: 2 3 -1/3 E(V) = c + c t + c t + c t , t = V 0 1 2 3 taylor A third order Taylor series expansion about the minimum volume murnaghan PRB 28, 5480 (1983) birch Intermetallic compounds: Principles and Practice, Vol I: Principles. pages 195-210 birchmurnaghan PRB 70, 224107 pouriertarantola PRB 70, 224107 vinet PRB 70, 224107 antonschmidt Intermetallics 11, 23-32 (2003) p3 A third order polynomial fit
Use:
eos = EquationOfState(volumes, energies, eos='murnaghan') v0, e0, B = eos.fit() eos.plot(show=True)
Convenient helper function:
- ase.eos.calculate_eos(atoms, npoints=5, eps=0.04, trajectory=None, callback=None)[source]¶
Calculate equation-of-state.
- atoms: Atoms object
System to calculate EOS for. Must have a calculator attached.
- npoints: int
Number of points.
- eps: float
Variation in volume from v0*(1-eps) to v0*(1+eps).
- trajectory: Trjectory object or str
Write configurations to a trajectory file.
- callback: function
Called after every energy calculation.
>>> from ase.build import bulk >>> from ase.calculators.emt import EMT >>> a = bulk('Cu', 'fcc', a=3.6) >>> a.calc = EMT() >>> eos = calculate_eos(a, trajectory='Cu.traj') >>> v, e, B = eos.fit() >>> a = (4 * v)**(1 / 3.0) >>> print('{0:.6f}'.format(a)) 3.589825
See also
The Equation of state (EOS) tutorial.