Index

Extended Corresponding states Model

Clapeyron.ECSType
ExtendedCorrespondingStates <: EoSModel

function ECS(components,
    refmodel=PropaneRef(),
    shapemodel=SRK(components),
    shaperef = SRK(refmodel.components))

Input Models

  • shape_model: shape model
  • shape_ref: shape reference. is the same type of EoS that shape_model
  • model_ref: Reference model

Description

A Extended Corresponding states method.

The idea is to use a "shape model" that provides a corresponding states parameters and a "reference model" that implements a helmholtz energy function, so that:

eos(shape_model,v,T,x)/RT = eos(model_ref,v₀,T₀)/RT₀    

where:

T₀ = T/f
v₀ = v/h
f,h = shape_factors(model::ECS,shape_ref::EoSModel,V,T,z)

shape_factors can be used to create custom Extended Corresponding state models.

References

.1 Mollerup, J. (1998). Unification of the two-parameter equation of state and the principle of corresponding states. Fluid Phase Equilibria, 148(1–2), 1–19. doi:10.1016/s0378-3812(98)00230-1

Clapeyron.shape_factorsFunction
shape_factors(model::ECS,V,T,z=SA[1.0])
shape_factors(model::ECS,shape_ref::ABCubicModel,V,T,z=SA[1.0])
shape_factors(model::ECS,shape_ref::EoSModel,V,T,z=SA[1.0])

Returns f and h scaling factors, used by the ECS Equation of state.

eos(shape_model,v,T,x)/RT = eos(model_ref,v₀,T₀)/RT₀    

where:

T₀ = T/f
v₀ = v/h

For cubics, a general procedure is defined in [1]:

h = b/b₀
fh = a(T)/a₀(T₀)
General Shape Factors?

For general EoS, there is no existent publications on how to obtain shape factors. However, we can "map" any EoS to a cubic with:

b ≈ lb_volume(model,z)
a ≈ RT*(b - B)
B = second_virial_coefficient(model,T)

This is not tested extensively and it is considered an Experimental feature, subject to future changes.

References

  1. Mollerup, J. (1998). Unification of the two-parameter equation of state and the principle of corresponding states. Fluid Phase Equilibria, 148(1–2), 1–19. doi:10.1016/s0378-3812(98)00230-1
Clapeyron.SPUNGFunction
function function SPUNG(components,
    refmodel=PropaneRef(),
    shapemodel=SRK(components),
    shaperef = SRK(refmodel.components))

Description

SPUNG: State Research Program for Utilization of Natural Gas

ECS method. It uses SRK as the shape model and PropaneRef as the reference model.

References

  1. Wilhelmsen, Ø., Skaugen, G., Jørstad, O., & Li, H. (2012). Evaluation of SPUNG* and other equations of state for use in carbon capture and storage modelling. Energy Procedia, 23, 236–245. doi:10.1016/j.egypro.2012.06.024
Clapeyron.LKPType
LKP <: EmpiricHelmholtzModel
LKP(components;
    idealmodel=BasicIdeal,
    verbose=false)

Input parameters

  • Tc: Single Parameter (Float64) - Critical Temperature [K]
  • Pc: Single Parameter (Float64) - Critical Pressure [Pa]
  • Vc: Single Parameter (Float64) (optional) - Critical Volume [m^3]
  • Mw: Single Parameter (Float64) - Molecular Weight [g/mol]
  • acentricfactor: Single Parameter (Float64) - Acentric Factor (no units)
  • k: Pair Parameter (Float64) (optional) - binary interaction parameter (no units)

Input models

  • idealmodel: Ideal Model

Description

Lee-Kesler-Plöker equation of state. corresponding states using interpolation between a simple, spherical fluid (methane, ) and a reference fluid (n-octane, ref):

αᵣ = (1 - ωᵣ)*αᵣ(δr,τ,params(∅)) + ωᵣ*αᵣ(δr,τ,params(ref))
τ = Tr/T
δr = Vr/V/Zr
Zr = Pr*Vr/(R*Tr)
Pr = (0.2905 - 0.085*ω̄)*R*Tr/Vr
ωᵣ = (ω̄ - ω(∅))/(ω(ref) - ω(∅))
ω̄ = ∑xᵢωᵢ
Tr = ∑xᵢ*xⱼ*Tcᵢⱼ*Vcᵢⱼ^η * (1-kᵢⱼ)
Vr = ∑xᵢ*xⱼ*Tcᵢⱼ*Vcᵢⱼ
Tcᵢⱼ = √Tcᵢ*Tcⱼ
Vcᵢⱼ = 0.125*(∛Vcᵢ + ∛Vcⱼ)^3
η = 0.25

Model Construction Examples

# Using the default database
model = LKP("water") #single input
model = LKP(["water","ethanol"]) #multiple components
model = LKP(["water","ethanol"], idealmodel = ReidIdeal) #modifying ideal model

# Passing a prebuilt model

my_idealmodel = MonomerIdeal(["neon","hydrogen"];userlocations = (;Mw = [20.17, 2.]))
model =  LKP(["neon","hydrogen"],idealmodel = my_idealmodel)

# User-provided parameters, passing files or folders
model = LKP(["neon","hydrogen"]; userlocations = ["path/to/my/db","lkp/my_k_values.csv"])

# User-provided parameters, passing parameters directly

model = LKP(["neon","hydrogen"];
        userlocations = (;Tc = [44.492,33.19],
                        Pc = [2679000, 1296400],
                        Vc = [4.25e-5, 6.43e-5],
                        Mw = [20.17, 2.],
                        acentricfactor = [-0.03,-0.21]
                        k = [0. 0.18; 0.18 0.]) #k,l can be ommited in single-component models.
                    )

References

  1. Plöcker, U., Knapp, H., & Prausnitz, J. (1978). Calculation of high-pressure vapor-liquid equilibria from a corresponding-states correlation with emphasis on asymmetric mixtures. Industrial & Engineering Chemistry Process Design and Development, 17(3), 324–332. doi:10.1021/i260067a020

Sanchez-Lacombe Model

Clapeyron.SanchezLacombeType
SanchezLacombe(components;
idealmodel = BasicIdeal,
mixing = SLk0k1lMixingRule,
userlocations = String[],
ideal_userlocations = String[],
mixing_userlocations = String[],
reference_state = false,
verbose = false)

Input parameters

  • Mw: Single Parameter (Float64) - Molecular Weight [g/mol]
  • segment: Single Parameter (Float64) - Number of segments (no units)
  • epsilon: Single Parameter (Float64) - Nonbonded interaction energy per monomer [J/mol]
  • vol: Single Parameter (Float64) - Closed Packed Specific volume [m^3/mol]

Model Parameters

  • Mw: Single Parameter (Float64) - Molecular Weight [g/mol]
  • segment: Single Parameter (Float64) - Number of segments (no units)
  • epsilon: Pair Parameter (Float64) - Nonbonded interaction energy per monomer [J/mol]
  • vol: Pair Parameter (Float64) - Closed Packed Specific volume [m^3/mol]

Input models

  • idealmodel: Ideal Model
  • mixing: Mixing model

Description

Sanchez-Lacombe Lattice Fluid Equation of State.

xᵢ = zᵢ/∑zᵢ
r̄ = ∑xᵢrᵢ
vᵣ,εᵣ = mix_vε(model,V,T,z,model.mixing,r̄,∑zᵢ)
ρ̃ = r̄*vᵣ/v
T̃ = R̄*T/εᵣ
aᵣ = r̄*(- ρ̃ /T̃ + (1/ρ̃  - 1)*log(1 - ρ̃ ) + 1)

References

  1. Neau, E. (2002). A consistent method for phase equilibrium calculation using the Sanchez–Lacombe lattice–fluid equation-of-state. Fluid Phase Equilibria, 203(1–2), 133–140. doi:10.1016/s0378-3812(02)00176-0
Clapeyron.mix_vεFunction
mix_vε(model::SanchezLacombeModel,V,T,z,mix::SLMixingRule,r̄ = @f(rmix),∑z = sum(z))

Function used to dispatch on the different mixing rules available for Sanchez-Lacombe.

Example:

function mix_vε(model::SanchezLacombe,V,T,z,mix::SLKRule,r̄,Σz = sum(z))
    v = model.params.vol.values
    ε = model.params.epsilon.values
    r = model.params.segment.values
    k = mix.k.values
    x = z ./ Σz
    ϕ = @. r * x / r̄
    εᵣ = sum(ε[i,j]*(1-k[i,j])*ϕ[i]*ϕ[j] for i ∈ @comps for j ∈ @comps)
    vᵣ = sum(v[i,j]*ϕ[i]*ϕ[j] for i ∈ @comps for j ∈ @comps)
    return vᵣ,εᵣ
Clapeyron.SLKRuleType
SLKRule(components; userlocations = String[], verbose = false)

Input parameters

  • k: Pair Parameter (Float64) (optional) - Binary Interaction Parameter (no units)

Constant Kᵢⱼ mixing rule for Sanchez-Lacombe:

εᵢⱼ = √εᵢεⱼ*(1-kᵢⱼ)
vᵢⱼ = (vᵢ + vⱼ)/2
ϕᵢ = rᵢ*xᵢ/r̄
εᵣ = ΣΣϕᵢϕⱼεᵢⱼ
vᵣ = ΣΣϕᵢϕⱼvᵢⱼ
Clapeyron.SLk0k1lMixingRuleType
SLKRule(components; userlocations = String[], verbose = false)

Input parameters

  • k0,k: Pair Parameter (Float64, optional) - Binary Interaction Parameter (no units)
  • k1: Pair Parameter (Float64, optional) - Binary Interaction Parameter (no units)
  • l: Pair Parameter (Float64,optional) - Binary Interaction Parameter (no units)

Neau's Consistent k₀,k₁,l mixing rule for Sanchez-Lacombe:

εᵢⱼ = √εᵢεⱼ
vᵢⱼ = (1 - lᵢⱼ)(vᵢ + vⱼ)/2
ϕᵢ = rᵢ*xᵢ/r̄
εᵣ = ΣΣϕᵢϕⱼεᵢⱼ*(1 - k₀ᵢⱼ + (1 - δᵢⱼ)(Σϕₖk₁ᵢₖ + Σϕₖk₁ₖⱼ))
vᵣ = ΣΣϕᵢϕⱼvᵢⱼ

Where δᵢⱼ is i == j ? 1 : 0

References

  1. Neau, E. (2002). A consistent method for phase equilibrium calculation using the Sanchez–Lacombe lattice–fluid equation-of-state. Fluid Phase Equilibria, 203(1–2), 133–140. doi:10.1016/s0378-3812(02)00176-0

Other molecular Models

Clapeyron.PeTSType
PeTSModel <: EoSModel

PeTS(components; 
idealmodel = BasicIdeal,
userlocations = String[],
ideal_userlocations = String[],
reference_state = nothing,
verbose = false)

Input parameters

  • Mw: Single Parameter (Float64) - Molecular Weight [g/mol]
  • segment: Single Parameter (Float64) - Number of segments (no units)
  • sigma: Single Parameter (Float64) - Segment Diameter []
  • epsilon: Single Parameter (Float64) - Reduced dispersion energy [K]
  • k: Pair Parameter (Float64) (optional) - Binary Interaction Paramater (no units)

Model Parameters

  • Mw: Single Parameter (Float64) - Molecular Weight [g/mol]
  • segment: Single Parameter (Float64) - Number of segments (no units)
  • sigma: Pair Parameter (Float64) - Mixed segment Diameter [m]
  • epsilon: Pair Parameter (Float64) - Mixed reduced dispersion energy[K]

Input models

  • idealmodel: Ideal Model

Description

Perturbed, Truncated and Shifted (PeTS) Equation of State.

References

  1. Heier, M., Stephan, S., Liu, J., Chapman, W. G., Hasse, H., & Langenbach, K. (2018). Equation of state for the Lennard-Jones truncated and shifted fluid with a cut-off radius of 2.5 σ based on perturbation theory and its applications to interfacial thermodynamics. Molecular Physics, 116(15–16), 2083–2094. doi:10.1080/00268976.2018.1447153