Entropy Scaling Models
Entropy scaling makes use of the fact that transport properties can be scaled such that the scaled transport property $Y^{\rm s}$ is a univariate function of the configurational (or residual) entropy $s_{\rm conf}$, i.e.
\[Y^{\rm s} = Y^{\rm s}\left(s_{\rm conf}\right).\]
Entropy scaling enables the prediction of transport properties in all fluid phases.
The following entropy scaling models are currently implemented:
- Entropy Scaling Framework [1, 2] (
ESFramework) - Refprop Residual Entropy Scaling (RES) Model [3] (
RefpropRES)
All models are similarly structured with the following fields:
components::Vector{String}: names of the chemical components of the systemparams::Vector{ModelParams}: vector of model-specific paramater objectseos: EOS model
The ModelParams are model-specific types containing all required parameters of the model. They always contain the Chapman-Enskog model (CE_model) as well as base parameters (base) which itself contains general parameters like the transport property or the molar mass.
All models share the contructor method Model(eos, params::Dict{P}), where params is a dict containing the parameters with the respective transport property as key, e.g., Dict(Viscosity() => [a_η, b_η, c_η], ThermalConductivity() => [a_λ, b_λ, c_λ]). Here, a, b, and c are the parameters (note that a_η, b_η, ... are vectors or matrices themselves). Lists of the parameters are given below in the repective 'Parameters' sections. Additional model-specific constructors are also given below.
Framework Model
EntropyScaling.ESFramework — Type
ESFramework{E,P} <: ESFrameworkModel
ESFramework(components, eos=nothing; userlocations=String[], collision_integral=KimMonroe(), verbose=false)
ESFramework(components, eos, datasets::Vector{<:TransportPropertyData}; opts::FitOptions=FitOptions(), solute=nothing, verbose=false)Entropy scaling framework [1, 2].
The entropy scaling framework provides a physical way to model transport properties (viscosity, thermal conductivity, diffusion coefficients) based on molecular-based EOS. It enables fitting new models using only a few experimental data.
Parameters
α0::CL.SingleParamα1::CL.SingleParamα2::CL.SingleParamα3::CL.SingleParamαln::CL.SingleParam
Example
using EntropyScaling, Clapeyron
# Load experimental sample data for n-butane
(T_exp, ϱ_exp, η_exp) = EntropyScaling.load_sample_data()
data = ViscosityData(T_exp, nothing, ϱ_exp, η_exp, :unknown)
# Create EOS model
eos_model = PCSAFT("butane")
# Create entropy scaling model (fit of parameters)
model = ESFramework(eos_model, [data])
# Calculation of viscosity at a state point
η = viscosity(model, 0.1e6, 300.)Refprop RES Model
EntropyScaling.RefpropRES — Type
RefpropRES{E,P} <: RefpropRESModel
RefpropRES(components, eos=nothing; userlocations=String[], ce_userlocations=String[], verbose=false)Entropy scaling model based on Refprop EOS for the viscosity and thermal conductivity [3, 4].
Parameters
n1::SingleParam: component-specific or global (group) parametersn2::SingleParam: component-specific or global (group) parametersn3::SingleParam: component-specific or global (group) parametersn4::SingleParam: component-specific or global (group) parametersξ::SingleParam: component-specific scaling parameter (ξ = 1for individual fits)φ0::CL.SingleParam: critical parameter (optional, only for thermal conductivity)Γ::CL.SingleParam: critical parameter (optional, only for thermal conductivity)qD::CL.SingleParam: critical parameter (optional, only for thermal conductivity)Tref::CL.SingleParam: critical parameter (optional, only for thermal conductivity)
The default CoolProp EOS is used here which does not necessarily match the choice of the original papers. This might lead to slight deviations from values in the original papers (especially for the thermal conductivity).
Example
using EntropyScaling
model_pure = RefpropRES("R134a")
η_pure = viscosity(model_pure, 1e5, 300.; phase=:liquid)
model_mix = RefpropRES(["decane","butane"])
η_mix = viscosity(model_mix, 1e5, 300., [.5,.5])EntropyScaling.RefpropRES2025 — Type
RefpropRES2025{E,P} <: RefpropRESModel
RefpropRES2025(components, eos=nothing; userlocations=String[], ce_userlocations=String[], verbose=false)Entropy scaling model based on Refprop EOS for the viscosity from Martinek et al. (2025) [5] (see also RefpropRES).
Parameters
n1::SingleParam: component-specific or global (group) parametersn2::SingleParam: component-specific or global (group) parametersn3::SingleParam: component-specific or global (group) parametersn4::SingleParam: component-specific or global (group) parametersξ::SingleParam: component-specific scaling parameter (ξ = 1for individual fits)
The default CoolProp EOS is used here which does not necessarily match the choice of the original papers. This might lead to slight deviations from values in the original papers (especially for the thermal conductivity).
Example
using EntropyScaling
model_pure = RefpropRES2025("R134a")
η_pure = viscosity(model_pure, 1e5, 300.; phase=:liquid)
model_mix = RefpropRES2025(["decane","butane"])
η_mix = viscosity(model_mix, 1e5, 300., [.5,.5])Group-contribution model
EntropyScaling.GCES — Type
GCESModelGroup contribution model for the viscosity from Löterging-Lin and Gross (2015) [6]. The model is based on the homosegmented GC-PCP-SAFT EOS.
Parameters
A-B: component-specific parameters calculated from the groups
m (segment parameter of molecular-based EOS) are additional internal parameters (not to be set at construction).
Example
using EntropyScaling, Clapeyron, GCIdentifier
component = get_groups_from_smiles("CCCO", gcPCPSAFTGroups)
model = GCESModel(HomogcPCPSAFT(component), [component])
η = viscosity(model, 0.1e6, 300.)Fitting Utilities
Some entropy scaling models allow the fitting of substance-specific parameters to experimental data. Therefore, a unified interface is provided including the handling of the data and the fit options.
Fitting Procedure
- Loading experimental data and defining
TransportPropertyData - Fitting (included in the model construction)
- Plotting results and saving the parameters
EntropyScaling.TransportPropertyData — Type
TransportPropertyData(prop, T, p, ϱ, η, phase=:unknown)
ViscosityData(T, p, ϱ, η, phase=:unknown)
ThermalConductivityData(T, p, ϱ, λ, phase=:unknown)
SelfDiffusionCoefficientData(T, p, ϱ, D, phase=:unknown)
InfDiffusionCoefficientData(T, p, ϱ, D, phase=:unknown)Constructor for TransportPropertyData. Either pressure p or density ϱ have to be specified. phase can also be a Vector{Symbol}.
Units
[T] = K[p] = Pa[ϱ] = mol m⁻³[η] = Pa s[λ] = W (m K)⁻¹[D] = m² s⁻¹