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:

All models are similarly structured with the following fields:

  • components::Vector{String}: names of the chemical components of the system
  • params::Vector{ModelParams}: vector of model-specific paramater objects
  • eos: 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.ESFrameworkType
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.)
source

Refprop RES Model

EntropyScaling.RefpropRESType
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) parameters
  • n2::SingleParam: component-specific or global (group) parameters
  • n3::SingleParam: component-specific or global (group) parameters
  • n4::SingleParam: component-specific or global (group) parameters
  • ξ::SingleParam: component-specific scaling parameter (ξ = 1 for 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)
Info

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])
source
EntropyScaling.RefpropRES2025Type
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) parameters
  • n2::SingleParam: component-specific or global (group) parameters
  • n3::SingleParam: component-specific or global (group) parameters
  • n4::SingleParam: component-specific or global (group) parameters
  • ξ::SingleParam: component-specific scaling parameter (ξ = 1 for individual fits)
Info

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])
source

Group-contribution model

EntropyScaling.GCESType
GCESModel

Group 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.)
source

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

  1. Loading experimental data and defining TransportPropertyData
  2. Fitting (included in the model construction)
  3. Plotting results and saving the parameters
EntropyScaling.TransportPropertyDataType
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⁻¹
source