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:
- Entropy Scaling Framework [1, 2] (
FrameworkModel
) - Refprop Residual Entropy Scaling (RES) Model [3] (
RefpropRESModel
)
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 themselfs). Lists of the parameters are given below in the repective 'Parameters' sections. Additional model-specific constructors are also given below.
Framework Model
EntropyScaling.FrameworkModel
— TypeFrameworkModel{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, seeTransportPropertyData
.opts
enables controling the fitting procedure throughFitOptions
.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.)
Refprop RES Model
EntropyScaling.RefpropRESModel
— TypeRefpropRESModel{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 modelcrit::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 ifClapeyron.jl
andCoolprop.jl
are loaded).
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])
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
— TypeTransportPropertyData(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⁻¹
EntropyScaling.FitOptions
— TypeFitOptions
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])
)