def __init__(self, volumes, electronic_energies, eos='vinet'): self._volumes = volumes if np.array(electronic_energies).ndim == 1: self._electronic_energies = electronic_energies else: self._electronic_energies = electronic_energies[0] self._eos = get_eos(eos) self._energy = None self._bulk_modulus = None self._b_prime = None try: (self._energy, self._bulk_modulus, self._b_prime, self._volume) = fit_to_eos(volumes, self._electronic_energies, self._eos) except TypeError: msg = ["Failed to fit to \"%s\" equation of states." % eos] if len(volumes) < 4: msg += ["At least 4 volume points are needed for the fitting."] msg += ["Careful choice of volume points is recommended."] raise RuntimeError("\n".join(msg))
def __init__(self, volumes, electronic_energies, eos="vinet"): self._volumes = volumes self._electronic_energies = electronic_energies self._eos = get_eos(eos) (self._energy, self._bulk_modulus, self._b_prime, self._volume) = fit_to_eos( volumes, electronic_energies, self._eos )
def __init__(self, volumes, electronic_energies, eos='vinet'): self._volumes = volumes if electronic_energies.ndim == 1: self._electronic_energies = electronic_energies else: self._electronic_energies = electronic_energies[0] self._eos = get_eos(eos) (self._energy, self._bulk_modulus, self._b_prime, self._volume) = fit_to_eos(volumes, self._electronic_energies, self._eos)
def __init__( self, volumes, # Angstrom^3 electronic_energies, # eV temperatures, cv, # J/K/mol entropy, # J/K/mol fe_phonon, # kJ/mol eos='vinet', t_max=None, energy_plot_factor=None): self._volumes = np.array(volumes) self._electronic_energies = np.array(electronic_energies) self._all_temperatures = np.array(temperatures) self._cv = np.array(cv) self._entropy = np.array(entropy) self._fe_phonon = np.array(fe_phonon) / EvTokJmol self._eos = get_eos(eos) self._t_max = t_max self._energy_plot_factor = energy_plot_factor self._temperatures = None self._equiv_volumes = None self._equiv_energies = None self._equiv_bulk_modulus = None self._equiv_parameters = None self._free_energies = None self._num_elems = None self._thermal_expansions = None self._cp_numerical = None self._volume_entropy_parameters = None self._volume_cv_parameters = None self._volume_entropy = None self._volume_cv = None self._cp_polyfit = None self._dsdv = None self._gruneisen_parameters = None self._len = None
def __init__( self, volumes, # Angstrom^3 electronic_energies, # eV temperatures, cv, # J/K/mol entropy, # J/K/mol fe_phonon, # kJ/mol eos='vinet', t_max=None): self._volumes = np.array(volumes) self._electronic_energies = np.array(electronic_energies) self._temperatures = np.array(temperatures) self._cv = np.array(cv) self._entropy = np.array(entropy) self._fe_phonon = np.array(fe_phonon) / EvTokJmol if t_max: self._max_t_index = self._get_max_t_index(t_max) else: self._max_t_index = len(temperatures) - 3 self._eos = get_eos(eos) self._equiv_volumes = [] self._equiv_energies = [] self._equiv_bulk_modulus = [] self._equiv_parameters = [] self._free_energies = [] self._thermal_expansions = None self._volume_expansions = None self._cp_numerical = None self._volume_entropy_parameters = None self._volume_cv_parameters = None self._volume_entropy = None self._volume_cv = None self._cp_polyfit = None self._dsdv = None self._gruneisen_parameters = None
def __init__(self, volumes, # Angstrom^3 electronic_energies, # eV temperatures, cv, # J/K/mol entropy, # J/K/mol fe_phonon, # kJ/mol eos='vinet', t_max=None): self._volumes = np.array(volumes) self._electronic_energies = np.array(electronic_energies) self._temperatures = np.array(temperatures) self._cv = np.array(cv) self._entropy = np.array(entropy) self._fe_phonon = np.array(fe_phonon) / EvTokJmol if t_max: self._max_t_index = self._get_max_t_index(t_max) else: self._max_t_index = len(temperatures) - 3 self._eos = get_eos(eos) self._equiv_volumes = [] self._equiv_energies = [] self._equiv_bulk_modulus = [] self._equiv_parameters = [] self._free_energies = [] self._thermal_expansions = None self._volume_expansions = None self._cp_numerical = None self._volume_entropy_parameters = None self._volume_cv_parameters = None self._volume_entropy = None self._volume_cv = None self._cp_polyfit = None self._dsdv = None self._gruneisen_parameters = None
def __init__(self, volumes, # Angstrom^3 electronic_energies, # eV temperatures, cv, # J/K/mol entropy, # J/K/mol fe_phonon, # kJ/mol eos='vinet', t_max=None, energy_plot_factor=None): self._volumes = np.array(volumes) self._electronic_energies = np.array(electronic_energies) self._all_temperatures = np.array(temperatures) self._cv = np.array(cv) self._entropy = np.array(entropy) self._fe_phonon = np.array(fe_phonon) / EvTokJmol self._eos = get_eos(eos) self._t_max = t_max self._energy_plot_factor = energy_plot_factor self._temperatures = None self._equiv_volumes = None self._equiv_energies = None self._equiv_bulk_modulus = None self._equiv_parameters = None self._free_energies = None self._num_elems = None self._thermal_expansions = None self._cp_numerical = None self._volume_entropy_parameters = None self._volume_cv_parameters = None self._volume_entropy = None self._volume_cv = None self._cp_polyfit = None self._dsdv = None self._gruneisen_parameters = None self._len = None
def __init__(self, volumes, energies, eos="vinet"): """Init method. volumes : array_like Unit cell volumes where energies are obtained. shape=(volumes, ), dtype='double'. energies : array_like Energies obtained at volumes. shape=(volumes, ), dtype='double'. eos : str Identifier of equation of states function. """ self._volumes = volumes if np.array(energies).ndim == 1: self._energies = energies else: self._energies = energies[0] self._eos = get_eos(eos) self._energy = None self._bulk_modulus = None self._b_prime = None try: ( self._energy, self._bulk_modulus, self._b_prime, self._volume, ) = fit_to_eos(volumes, self._energies, self._eos) except TypeError: msg = ['Failed to fit to "%s" equation of states.' % eos] if len(volumes) < 4: msg += ["At least 4 volume points are needed for the fitting."] msg += ["Careful choice of volume points is recommended."] raise RuntimeError("\n".join(msg))
def ev(volume, *p): return get_eos('murnaghan')(volume, *p)
def ev(volume, *p): return get_eos('vinet')(volume, *p)
def __init__( self, volumes, # angstrom^3 electronic_energies, # eV temperatures, # K cv, # J/K/mol entropy, # J/K/mol fe_phonon, # kJ/mol eos="vinet", t_max=None, energy_plot_factor=None, ): """Init method. Parameters ---------- volumes: array_like Unit cell volumes (V) in angstrom^3. dtype='double' shape=(volumes,) electronic_energies: array_like Electronic energies (U_el) or electronic free energies (F_el) in eV. It is assumed as formar if ndim==1 and latter if ndim==2. dtype='double' shape=(volumes,) or (temperatuers, volumes) temperatures: array_like Temperatures ascending order (T) in K. dtype='double' shape=(temperatures,) cv: array_like Phonon Heat capacity at constant volume in J/K/mol. dtype='double' shape=(temperatuers, volumes) entropy: array_like Phonon entropy at constant volume (S_ph) in J/K/mol. dtype='double' shape=(temperatuers, volumes) fe_phonon: array_like Phonon Helmholtz free energy (F_ph) in kJ/mol. dtype='double' shape=(temperatuers, volumes) eos: str Equation of state used for fitting F vs V. 'vinet', 'murnaghan' or 'birch_murnaghan'. t_max: float Maximum temperature to be calculated. This has to be not greater than the temperature of the third element from the end of 'temperatre' elements. If max_t=None, the temperature of the third element from the end is used. energy_plot_factor: float This value is multiplied to energy like values only in plotting. """ self._volumes = np.array(volumes) self._electronic_energies = np.array(electronic_energies) self._all_temperatures = np.array(temperatures) self._cv = np.array(cv) self._entropy = np.array(entropy) self._fe_phonon = np.array(fe_phonon) / EvTokJmol self._eos = get_eos(eos) self._t_max = t_max self._energy_plot_factor = energy_plot_factor self._temperatures = None self._equiv_volumes = None self._equiv_energies = None self._equiv_bulk_modulus = None self._equiv_parameters = None self._free_energies = None self._num_elems = None self._thermal_expansions = None self._cp_numerical = None self._volume_entropy_parameters = None self._volume_cv_parameters = None self._volume_entropy = None self._volume_cv = None self._cp_polyfit = None self._dsdv = None self._gruneisen_parameters = None self._len = None