Water
Initializing SCPA EOS
import numpy as np
from reos.state import State
from reos.consts import Consts
from reos.cpa import CPAParameters
from reos.eos import EquationOfState
parameters = CPAParameters.from_json(["water"], "/parameters/cpa/kontogeorgis2006.json")
eos = EquationOfState.scpa(parameters)
print(parameters)
CPA Parameters
CPAParameters(
CubicParameters(
a0=[0.12277],
b=[0.000014515],
c1=[0.67359],
tc=[647.29]),
AssociativeParameters(
na=1, nb=1, nc=0,
sites=[
Site(type=A,owner=0,idx=0,mul=2,eps=16655,kappa=0.0692),
Site(type=B,owner=0,idx=1,mul=2,eps=16655,kappa=0.0692)],
interactions=[
SiteInteraction(j=0,l=1,epsilon=16655,kappa=0.0692, rule='cr1')])
)
Psat algorithm
def calc_psat(t, p0):
e = 1
it = 0
while abs(e) > 1e-8 and it < 100:
s1 = State.tpx(eos, t, p0, np.array([1.0]), 'vapor')
s2 = State.tpx(eos, t, p0, np.array([1.0]), 'liquid')
phiv = np.exp(s1.lnphi()[0])
phil = np.exp(s2.lnphi()[0])
r = phil / phiv
e = 1.0 - r
p0 = p0 * r
it += 1
return p0, s1, s2
Computing properties
N = 100
T=np.linspace(250.0, 650, N)
PRES = np.zeros_like(T)
VAP = np.zeros_like(T,dtype=object)
LIQ = np.zeros_like(T,dtype=object)
XV = np.zeros_like(VAP,dtype=object)
XL = np.zeros_like(LIQ,dtype=object)
rhoV = np.zeros_like(VAP)
rhoL = np.zeros_like(LIQ)
entropyV = np.zeros_like(VAP)
entropyL = np.zeros_like(LIQ)
for (i,t) in enumerate(T):
PRES[i], VAP[i], LIQ[i] = calc_psat(t, PRES[i-1] if i>0 else 1e5)
liq = LIQ[i]
vap = VAP[i]
entropyL[i] = liq.entropy()
entropyV[i] = vap.entropy()
rhoV[i] = vap.density
rhoL[i] = liq.density
DS = entropyV - entropyL
DH = T * DS
Non-associated sites fraction
for (i,t) in enumerate(T):
...
XL[i] = eos.unbonded_sites_fraction(t, rhoL[i], np.array([1.0]))[0]
XV[i] = eos.unbonded_sites_fraction(t, rhoV[i], np.array([1.0]))[0]