Source code for phasepy.fit.fitvt

from __future__ import division, print_function, absolute_import
from scipy.optimize import minimize
import numpy as np


def fobj_c(c, eos, Texp, Pexp, rhoexp):
    eos.c = c
    n = len(Texp)
    rho = np.zeros_like(rhoexp)
    for i in range(n):
        rho[i] = eos.density(Texp[i], Pexp[i], 'L')
    return np.sum((rho/rhoexp - 1)**2)


[docs]def fit_vt(component, eos, Texp, Pexp, rhoexp, c0=0.): """ fit Volume Translation for cubic EoS Parameters ---------- component : object created with component class eos: function cubic eos function Texp : array_like experimental temperature in K. Pexp : array_like experimental pressure in bar. rhoexp : array_like experimental liquid density at given temperature and pressure in mol/cm3. c0 : float, optional initial values. Returns ------- fit : OptimizeResult Result of SciPy minimize """ cubic = eos(component, volume_translation=True) fit = minimize(fobj_c, c0, args=(cubic, Texp, Pexp, rhoexp)) return fit