Index

Ideal Models

All Clapeyron.jl models can be separated between an ideal and a residual contribution. The ideal contribution can be obtained via integration of the ideal isobaric heat capacity:

$\frac{A_{\mathrm{ideal}}}{Nk_\mathrm{B}T} = \sum_{i=1}^{N_{\mathrm{Component}}} x_i\left[\ln{\frac{\rho_i}{\rho_0}} + \frac{1}{Nk_\mathrm{B}T} \int_{T_0}^T \!\!C_{p,i}^0 dT + \frac{H_{0,i}}{Nk_\mathrm{B}T}- \frac{1}{Nk_{B}}\!\!\int_{T_0}^T \frac{C_{p,i}^0}{T} dT -\ln{\frac{T}{T_0}}-\frac{S_{0,i}}{Nk_\mathrm{B}} - 1\right]$

Normally, EoS models contain an ideal model. this model can be accessed by using Clapeyron.idealmodel.

Clapeyron.BasicIdealType
BasicIdeal <: IdealModel

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

Input parameters

None

Description

Default Ideal Model. Constant specific heat capacity equal to 5R/2. it's Helmholtz energy is equal to:

    a₀ = A₀/nRT = ∑(xᵢlog(nxᵢ/V)) - 1 - 1.5log(T)

Model Construction Examples

# Because this model does not have parameters, all those constructors are equivalent:
idealmodel = BasicIdeal()
idealmodel = BasicIdeal("water")
idealmodel = BasicIdeal(["water","carbon dioxide"])
source
Clapeyron.ReidIdealType
ReidIdeal <: IdealModel

ReidIdeal(components; 
userlocations = String[],
reference_state = nothing,
verbose = false)

Input parameters

  • a: Single Parameter (Float64) - polynomial coefficient
  • b: Single Parameter (Float64) - polynomial coefficient
  • c: Single Parameter (Float64) - polynomial coefficient
  • d: Single Parameter (Float64) - polynomial coefficient
  • e: Single Parameter (optional) (Float64) - polynomial coefficient

Model parameters

  • coeffs: Single Parameter (NTuple{5,Float64})

Description

Reid Ideal Model. Helmholtz energy obtained via integration of specific heat capacity:

Cpᵢ(T) = aᵢ  + bᵢT + cᵢT^2 + dᵢT^3 + eᵢT^4
Cp(T) = ∑Cpᵢxᵢ

Model Construction Examples

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

# Using user-provided parameters

# Passing files or folders
idealmodel = ReidIdeal(["neon","hydrogen"]; userlocations = ["path/to/my/db","reid.csv"])

# Passing parameters directly
idealmodel = ReidIdeal(["water","butane"];
            userlocations = (a = [32.24, 9.487], 
                        b = [0.00192, 0.3313], 
                        c = [1.06e-5, -0.0001108],
                        d = [-3.6e-9, -2.822e-9])
                        ) #e is not used
source
Clapeyron.JobackIdealType
JobackIdeal <: JobackIdealModel

JobackIdeal(components; 
userlocations = String[],
reference_state = nothing,
verbose = false)

Input parameters

  • Mw: Single Parameter (Float64) - Molecular Weight [g/mol]
  • N_a: Single Parameter (Float64)
  • T_c: Single Parameter (Float64)
  • P_c: Single Parameter (Float64)
  • V_c: Single Parameter (Float64)
  • T_b: Single Parameter (Float64)
  • T_m: Single Parameter (Float64)
  • H_form: Single Parameter (Float64)
  • G_form: Single Parameter (Float64)
  • a: Single Parameter (Float64)
  • b: Single Parameter (Float64)
  • c: Single Parameter (Float64)
  • d: Single Parameter (Float64)
  • H_fusion: Single Parameter (Float64)
  • H_vap: Single Parameter (Float64)
  • eta_a: Single Parameter (Float64)
  • eta_b: Single Parameter (Float64)

Description

Joback Group Contribution Ideal Model. GC version of ReidIdeal. Helmholtz energy obtained via integration of specific heat capacity:

aᵢ = ∑(νᵢₖbₖ) - 37.93
bᵢ = ∑(νᵢₖbₖ) + 0.210
cᵢ = ∑(νᵢₖcₖ) - 3.91e-4
dᵢ = ∑(νᵢₖbₖ) + 2.06e-7
Cpᵢ(T) = aᵢ  + bᵢT + cᵢT^2 + dᵢT^3

The GC-averaged Reid Model is available by using ReidIdeal(model::JobackIdeal).

The estimated critical point of a single component can be obtained via crit_pure(model::JobackIdeal)

References

  1. Joback, K. G., & Reid, R. C. (1987). Estimation of pure-component properties from group-contributions. Chemical Engineering Communications, 57(1–6), 233–243. doi:10.1080/00986448708960487

List of available groups

NameDescription
-CH3Methyl
-CH2-Methylene
>CH-
>C<
CH2=CH-
-CH=CH-
=C<
=C=
CH
C
ring-CH2-Cyclic alkane
ring>CH-
ring>C<
ring=CH-Aromatic group
ring=C<
-FFluoride
-ClChloride
-BrBromide
-IIodide
-OH (alcohol)Hydroxyl group
-OH (phenol)
-O- (non-ring)
-O- (ring)
>C=O (non-ring)Ketone
>C=O (ring)
O=CH- (aldehyde)Aldehyde
-COOH (acid)Carboxylic acid
-COO- (ester)Ester
O (other than above)Ketone
-NH2Amine
>NH (non-ring)
>NH (ring)
>N- (non-ring)
-N= (non-ring)
-N= (ring)
=NH
-CNNitrile
-NO3Nitroxide
-SH
-S- (non-ring)
-S- (ring)
source
Clapeyron.MonomerIdealType
MonomerIdeal <: MonomerIdealModel

MonomerIdeal(components; 
userlocations = String[],
reference_state = nothing,
verbose = false)

Input parameters

  • Mw: Single Parameter (Float64) - Molecular Weight [g/mol]

Model Parameters

None

Description

Monomer Ideal Model, result obtained from statistical mechanics Λ

    Λᵢ = h/√(kᵦTMwᵢ/Nₐ)    
    a₀ = A₀/nRT = ∑xᵢlog(ρᵢΛᵢ^3)

Model Construction Examples

# Using the default database
idealmodel = MonomerIdeal("water") #single input
idealmodel = MonomerIdeal(["water","ethanol"]) #multiple components

# Using user-provided parameters

# Passing files or folders
idealmodel = MonomerIdeal(["neon","hydrogen"]; userlocations = ["path/to/my/db","mw.csv"])

# Passing parameters directly
idealmodel = MonomerIdeal(["neon","hydrogen"];userlocations = (;Mw = [20.17, 2.]))
source
Clapeyron.WalkerIdealType
WalkerIdeal <: WalkerIdealModel

WalkerIdeal(components; 
userlocations = String[],
group_userlocations = String[]
verbose = false)

Input parameters

  • Mw: Single Parameter (Float64) - Molecular Weight [g/mol]
  • Nrot: Single Parameter (Int)
  • theta1: Single Parameter (Float64)
  • theta2: Single Parameter (Float64)
  • theta3: Single Parameter (Float64)
  • theta4: Single Parameter (Float64)
  • deg1: Single Parameter (Int)
  • deg2: Single Parameter (Int)
  • deg3: Single Parameter (Int)
  • deg4: Single Parameter (Int)

Description

Walker [1] Group Contribution Ideal Model.

Cpᵢ(T)/R = (5+NRot)/2 ∑νᵢₖ∑gₖᵥ(θₖᵥ/T)^2*exp(θₖᵥ/T)/(1-exp(θₖᵥ/T)) , v ∈ 1:4 

References

  1. Walker, P. J., & Haslam, A. J. (2020). A new predictive group-contribution ideal-heat-capacity model and its influence on second-derivative properties calculated using a free-energy equation of state. Journal of Chemical and Engineering Data, 65(12), 5809–5829. doi:10.1021/acs.jced.0c00723
source
Clapeyron.LJRefIdealType
LJRefIdeal <: IdealModel
LJRef(components;
userlocations = String[],
verbose = false)

Input parameters

  • sigma: Single Parameter (Float64) - particle size [Å]
  • epsilon: Single Parameter (Float64) - dispersion energy [K]
  • Mw: Single Parameter (Float64) - Molecular Weight [g/mol]

Description

Lennard-Jones Reference equation of state. Ideal Part. valid from 0.5 < T/Tc < 7 and pressures up to p/pc = 500.

τᵢ = 1.32ϵᵢ/T
δᵢ = n(Nₐσᵢ^3)/0.31V
a⁰ᵢ(δ,τ) = log(δᵢ) + 1.5log(τᵢ) - 1.515151515τᵢ + 6.262265814
a⁰(δ,τ,z) = ∑xᵢ(a⁰ᵢ + log(xᵢ))

LJRefIdeal acts as a wrapper of LJRef model, you can access it with LJRef(model::LJRefIdeal).

Mutiple component warning

The original model was done with only one component in mind. to support multiple components, a VDW 1-fluid mixing rule (shown above) is implemented, but it is not tested.

References

  1. Thol, M., Rutkai, G., Köster, A., Lustig, R., Span, R., & Vrabec, J. (2016). Equation of state for the Lennard-Jones fluid. Journal of physical and chemical reference data, 45(2), 023101. doi:10.1063/1.4945000
source
Clapeyron.AlyLeeIdealType
AlyLeeIdeal <: AlyLeeIdealModel

AlyLeeIdeal(components; 
userlocations = String[],
reference_state = nothing,
verbose = false)

Input parameters

  • A: Single Parameter (Float64) - Model Coefficient
  • B: Single Parameter (Float64) - Model Coefficient
  • C: Single Parameter (Float64) - Model Coefficient
  • D: Single Parameter (Float64) - Model Coefficient
  • E: Single Parameter (Float64) - Model Coefficient
  • F: Single Parameter (Float64) - Model Coefficient
  • G: Single Parameter (Float64) - Model Coefficient
  • H: Single Parameter (Float64) - Model Coefficient
  • I: Single Parameter (Float64) - Model Coefficient

Description

Aly-Lee Ideal Model (extended):

Cpᵢ(T)/R = A + B(CT⁻¹/sinh(CT⁻¹))² + D(ET⁻¹/cosh(ET⁻¹))² + F(GT⁻¹/sinh(GT⁻¹))² + H(IT⁻¹/cosh(IT⁻¹))²

Model Construction Examples

# Using the default database
idealmodel = AlyLeeIdeal("water") #single input
idealmodel = AlyLeeIdeal(["water","ethanol"]) #multiple components

# Using user-provided parameters

# Passing files or folders
idealmodel = AlyLeeIdeal(["neon","hydrogen"]; userlocations = ["path/to/my/db","alylee.csv"])

# Passing parameters directly
idealmodel = AlyLeeIdeal(["water","carbon dioxide"];
                        userlocations = (A = [4.004, 3.5],
                        B = [0.01, 2.044],
                        C = [268.8, 919.3],
                        D = [0.99, -1.06],
                        E = [1141.4, -865.1],
                        F = [3.07, 2.034],
                        G = [2507.37, 483.55],
                        H = [0.0, 0.0139],
                        I = [0.0, 341.11])
                        )

References

  1. Aly, F. A., & Lee, L. L. (1981). Self-consistent equations for calculating the ideal gas heat capacity, enthalpy, and entropy. Fluid Phase Equilibria, 6(3–4), 169–179. doi:10.1016/0378-3812(81)85002-9
source
Clapeyron.PPDSIdealType
PPDSIdeal <: PPDSIdealModel

PPDSIdeal(components;
userlocations = String[],
reference_state = nothing,
verbose = false)

Input parameters

  • A: Single Parameter (Float64) - Model Coefficient
  • B: Single Parameter (Float64) - Model Coefficient
  • C: Single Parameter (Float64) - Model Coefficient
  • D: Single Parameter (Float64) - Model Coefficient
  • E: Single Parameter (Float64) - Model Coefficient
  • F: Single Parameter (Float64) - Model Coefficient
  • G: Single Parameter (Float64) - Model Coefficient

Description

PPDS Ideal Model:

Cpᵢ(T)/R = B + (C - B)y²[1 + (y − 1)(D + Ey + Fy² + Gy³)]
y = T/(A + T)

Model Construction Examples

# Using the default database
idealmodel = PPDSIdeal("water") #single input
idealmodel = PPDSIdeal(["water","ethanol"]) #multiple components

# Using user-provided parameters

# Passing files or folders
idealmodel = PPDSIdeal(["neon","hydrogen"]; userlocations = ["path/to/my/db","alylee.csv"])

# Passing parameters directly
idealmodel = PPDSIdeal(["water","carbon dioxide"];
                        userlocations = (A = [4.004, 3.5],
                        B = [0.01, 2.044],
                        C = [268.8, 919.3],
                        D = [0.99, -1.06],
                        E = [1141.4, -865.1],
                        F = [3.07, 2.034],
                        G = [2507.37, 483.55],
                        H = [0.0, 0.0139],
                        I = [0.0, 341.11])
                        )

References

  1. Gmehling, J., Kleiber, M., Kolbe, B., & Rarey, J. (2019). Chemical thermodynamics for process simulation (2nd ed.). Berlin, Germany: Blackwell Verlag.
source