Entropy Scaling Models

Entropy scaling makes use of the fact that transport properies 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 porperties 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 themselfs). Lists of the parameters are given below in the repective 'Parameters' sections. Additional model-specific constructors are also given below.

Framework Model

EntropyScaling.FrameworkModelType
FrameworkModel{T} <: AbstractEntropyScalingModel

Entropy scaling framework [1, 2].

The entropy scaling framework provides a physical way to model transport properties (viscosity, thermal conductivity, diffusion coeffficients) based on molecular-based EOS. It enables fitting new models using only few experimental data.

Parameters

  • α::Matrix{T}: component-specific parameters (size: 5 x N_components)

m (segment parameter of molecular-based EOS) and Y₀⁺min (minimum of the scaled zero-density transport property) are additional internal parameters (not to be set at construction).

Constructors

  • FrameworkModel(eos, params::Dict{P}): Default constructor (see above).
  • FrameworkModel(eos, datasets::Vector{TransportPropertyData}; opts::FitOptions=FitOptions(), solute=nothing): Constructor for fitting new parameters α to experimental data (only applicable to pure components). datasets contains the experimental data, see TransportPropertyData. opts enables controling the fitting procedure through FitOptions. solute is an EOS model of the solute (optional, for fitting diff. coeff. at infinite dilution).

Example

using EntropyScaling, Clapeyron

# Load experimental sample data for n-butane
(T_exp,ϱ_exp,η_exp) = EntropyScaling.load_sample_data()
data = ViscosityData(T_exp, [], ϱ_exp, η_exp, :unknown)

# Create EOS model
eos_model = PCSAFT("butane")

# Create entropy scaling model (fit of parameters)
model = FrameworkModel(eos_model, [data])

# Calculation of the viscostiy at state
η = viscosity(model, 0.1e6, 300.)
source

Refprop RES Model

EntropyScaling.RefpropRESModelType
RefpropRESModel{T} <: AbstractEntropyScalingModel

Entropy scaling model based on Refprop EOS [3, 4].

A database provides ready-to-use models for the viscosity of several fluids. The model can favourably be used in combination with Clapeyron.jl and Coolprop.jl (see examples).

Parameters

  • n::Matrix{T}: component-specific or global (group) parameters
  • ξ::Vector{T}: component-specific scaling parameter in case global parameters are used (ξ = 1 for individual fits)
  • σ::Vector{T}: LJ size parameter for the Chapman-Enskog model
  • ε::Vector{T}: LJ energy parameter for the Chapman-Enskog model
  • crit::Dict{Symbol,Vector}: parameters for critical contribution of thermal conductivity (keys: :φ0, , :qD, and :Tref)

Constructors

  • RefpropRESModel(eos, params::Dict{P}): Default constructor (see above).
  • RefpropRESModel(eos, components): Creates a ES model using the parameters provided in the database (recommended). RefpropRESModel(components) creates the EOS model on-the-fly (only works if Clapeyron.jl and Coolprop.jl are loaded).
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 to the values in the original papers (especially for the thermal conductivity).

Example

using EntropyScaling, Clapeyron, CoolProp

model_pure = RefpropRESModel("R134a")
η_pure = viscosity(model_pure, 1e5, 300.; phase=:liquid)

model_mix = RefpropRESModel(["decane","butane"])
η_mix = viscosity(model_mix, 1e5, 300., [.5,.5])
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
EntropyScaling.FitOptionsType
FitOptions

Struct to control fitting.

Fields

  • what_fit::Dict{AbstractTransportProperty,Vector{Bool}}: specify which parameters to fit

Example

FitOptions(;
    what_fit=Dict(
        ThermalConductivity()=>ones(Bool,5), 
        SelfDiffusionCoefficient()=>Bool[0,0,0,1,1])
)
source