Source code for phasepy.fit.fitpsat

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


def psat_obj(C, Pexp, Texp):
    pant = np.exp(C[0]-C[1]/(Texp+C[2]))
    error = np.sum((pant / Pexp - 1)**2)
    return error


# Fit Antoine parameters
[docs]def fit_ant(Texp, Pexp, x0=[0, 0, 0]): """ fit Antoine parameters, base exp Parameters ---------- Texp: experimental temperature in K. Pexp : experimental pressure in bar. x0 : array_like, optional initial values. Returns ------- fit : OptimizeResult Result of SciPy minimize """ fit = minimize(psat_obj, x0, args=(Pexp, Texp)) return fit
def fobj_alpha(k, Texp, Pexp, cubic): cubic.k = k P = np.zeros_like(Pexp) for i in range(len(Texp)): P[i], _, _ = cubic.psat(Texp[i]) error = np.sum((P / Pexp - 1)**2) return error # fit SV alpha
[docs]def fit_ksv(component, Texp, Pexp, ksv0=[1, 0]): """ fit PRSV alpha parameters Parameters ---------- component : object created with component class Texp : array_like experimental temperature in K. Pexp : array_like experimental pressure in bar. ksv0 : array_like, optional initial values. Returns ------- fit : OptimizeResult Result of SciPy minimize """ cubic = prsveos(component) fit = minimize(fobj_alpha, ksv0, args=(Texp, Pexp, cubic)) return fit