LKP (Lee-Kesler-Plöcker)

The LKP model is a sort of hybrid between corresponding states and multiparameter EOS, simple EOS are developed for a reference fluid, and a simple fluid, and the acentric factor of the mixture is used to weight the two.

The reduced residual Helmholtz energy for the mixture is evaluated from

αr=(1ωmixωref)αsimpler+ωmixωrefαrefr

where the contributions are each of the form

αXr(τ,δ)=B(δZc)+C2(δZc)2+D5(δZc)5c4τ32γ(γ(δZc)2+β+1)exp(γ(δZc)2)+c4τ32γ(β+1)

where X is one of simple or reference (abbreviation: ref) with the matching sets of coefficients taken from this table:

var

simple

reference

b1

0.1181193

0.2026579

b2

0.265728

0.331511

b3

0.154790

0.276550e-1

b4

0.303230e-1

0.203488

c1

0.236744e-1

0.313385e-1

c2

0.186984e-1

0.503618e-1

c3

0

0.169010e-1

c4

0.427240e-1

0.41577e-1

d1

0.155428e-4

0.487360e-4

d2

0.623689e-4

0.740336e-5

β

0.653920

1.226

γ

0.601670e-1

0.03754

ω

0.0

0.3978

The terms in the contributions are given by:

B=b1b2τb3τ2b4τ3
C=c1c2τ+c3τ3
D=d1+d2τ

For density, the reduced density δ is defined by

δ=ρρred=vc,mixρ

in which the reducing density is the reciprocal of the pseudo-critical volume obtained from

vc,mix=i=1N1j=i+1Nxixjvij
vc,ij=18(vc,i1/3+vc,j1/3)3

and the critical volumes are estimated from

vc,i=(0.29050.085ωi)RTc,ipc,i

For temperature, the reciprocal reduced density is defined by

τ=Tc,mixT

with

Tc,mix=1vc,mixηi=1N1j=i+1Nxixjvc,ijηTc,ij

with η=0.25 and

Tc,ij=kijTc,iTc,j

Note: the default interaction parameter kij is therefore 1, rather than 0 in the case of SAFT and cubic models.

Finally the parameter Zc is defined by

Zc=0.29050.085ωmix

with the mixture acentric factor defined by

ωmix=ixiωi
[1]:
import teqp, numpy as np
spec = {
    "Tcrit / K": [190.564, 126.192],
    "pcrit / Pa": [4.5992e6, 3.3958e6],
    "acentric": [0.011, 0.037],
    "R / J/mol/K": 8.3144598,
    "kmat": [[1.0, 0.977],[0.977, 1.0]]
}
model = teqp.make_model({'kind': 'LKP', 'model': spec}, validate=True)
[2]:
# A little sanity check, with the check value from TREND
expected = -0.18568096994998817
diff = abs(model.get_Ar00(300, 8000.1, np.array([0.8, 0.2])) - expected)
assert(diff < 1e-13)