Source code for ase.utils.eos

# -*- coding: utf-8 -*-

import numpy as np

from ase.utils.sjeos import EquationOfStateSJEOS

try:
    # ase.utils.eosase2 requires scipy
    import scipy
    from ase.utils.eosase2 import EquationOfStateASE2

[docs] class EquationOfState: """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='sjeos') v0, e0, B = eos.fit() eos.plot() """ def __init__(self, volumes, energies, eos='sjeos'): if eos == 'sjeos': eosclass = EquationOfStateSJEOS else: eosclass = EquationOfStateASE2 # old ASE2 implementation self._impl = eosclass(volumes, energies, eos) def fit(self): return self._impl.fit() def plot(self, filename=None, show=None): return self._impl.plot(filename, show)
except ImportError: # ase.utils.sjeos requires only numpy EquationOfState = EquationOfStateSJEOS