Index
Clapeyron.BornClapeyron.ConstRSPClapeyron.DHClapeyron.DHBornClapeyron.ESElectrolyteClapeyron.GCMSABornClapeyron.LinMixRSPClapeyron.MSAClapeyron.MSABornClapeyron.MeanIonicApproachClapeyron.SchreckenbergClapeyron.ZuoFurstClapeyron.ePCSAFTClapeyron.SAFTVREMieClapeyron.SAFTgammaEMieClapeyron.eSAFTVRMie
Explicit vs. Implicit Solvent Models
Electrolyte equations of state model mixtures containing charged species (ions). For such a mixture to be in thermodynamic equilibrium, a fundamental constraint must be imposed: the total electrical charge must sum to zero. This is the condition of electroneutrality.
How a model handles charged species defines its approach:
Explicit Solvent Models: These models work directly with individual ions as components (e.g., Na⁺, Cl⁻). While conceptually straightforward at the model level (ions are uniquely defined) performing phase equilibrium calculations requires explicitly satisfying the electroneutrality constraint alongside all other equilibrium conditions (like equality of chemical potentials). This adds a layer of complexity to equilibrium calculations.
Implicit Solvent Models: To circumvent the complexity of the electroneutrality constraint, this approach groups ions into electrically neutral pairs, representing them as a single salt component (e.g., NaCl). The remaining components (such as water) are implicitly treated as the solvent. Consequently, any model that operates with salt components rather than individual ions falls under this category.
Algorithms that solve phase equilibria by working directly with explicit solvent models are referred to as using the Electrochemical Ionic Approach, whereas algorithms that first transform the problem into an implicit solvent formulation are known to use the Mean Ionic Approach.
In Clapeyron.jl, we mainly implement explicit solvent models. However, to provide flexibility and connect the two methodologies, we offer the MeanIonicApproach model wrapper, which can transform an explicit solvent model into an equivalent implicit solvent representation.
Main models
Clapeyron.ESElectrolyte — Type
ESElectrolyte(solvents::Array{String,1},
ions::Array{String,1};
idealmodel::IdealModel = BasicIdeal,
neutralmodel::EoSModel = pharmaPCSAFT,
ionmodel::IonModel = DH,
RSPmodel::RSPModel = ConstRSP,
charge::Vector{Int} = Int[],
ideal_userlocations = String[],
neutralmodel_userlocations = String[],
ionmodel_userlocations = String[],
RSPmodel_userlocations = String[],
verbose::Bool=false)Description
This function provides the necessary framework to create an electrolyte model by combining ideal, neutral and ion models:
model = ESElectrolyte(["water"],["sodium","chloride"];
idealmodel = BasicIdeal,
neutralmodel = pharmaPCSAFT,
ionmodel = DH,
RSPmodel = ConstRSP)Any of the available models in Clapeyron can be combined in the above. Note that neutral (solvent) species and ions are defined separately. Within Clapeyron, we will only support ion-based electrolyte models; as such, any salt-based approach (i.e. where the salt is treated as a separate species) will not be supported.
Clapeyron.MeanIonicApproach — Type
MeanIonicApproach(model::ESElectrolyteModel;salts = nothing)Given en explicit solvent model, returns an implicit solvent model, where are the charged components are paired to form binary salts. If no salts argument is specified, the salt pairings will be created via Clapeyron.auto_binary_salts.
Example
´´´julia-repl julia> system = ePCSAFT(["water","acetonitrile"],["sodium","chloride"]) Explicit Electrolyte Model with 4 components: "water" "acetonitrile" "sodium" (+1) "chloride" (-1) Neutral Model: pharmaPCSAFT{BasicIdeal, Float64} Ion Model: hsdDH{ConstRSP} RSP Model: ConstRSP
julia> salt_system = MeanIonicApproach(system) MeanIonicApproach{ePCSAFT{BasicIdeal, pharmaPCSAFT{BasicIdeal, Float64}, hsdDH{ConstRSP}}} with 3 components: "water" "acetonitrile" "sodium.chloride" ´´´
Ion Models
Clapeyron.Born — Type
Born(solvents::Array{String,1},
ions::Array{String,1};
RSPmodel = ConstRSP,
userlocations = String[],
RSPmodel_userlocations = String[],
verbose = false)Input parameters
sigma_born: Single Parameter (Float64) - Born Diameter[m]
Input models
RSPmodel: Relative Static Permittivity Model
Description
This function is used to create a Born model. The Born term gives the excess Helmholtz energy to account for the electrostatic interactions between ions in solution.
References
- Born, M. (1920). Z. Phys. 1, 45.
Clapeyron.DH — Type
DH(solvents::Array{String,1},
ions::Array{String,1};
RSPmodel = ConstRSP,
userlocations = String[],
RSPmodel_userlocations = String[],
verbose = false)Input models
RSPmodel: Relative Static Permittivity Model
Description
This function is used to create a Debye-Hückel model. The Debye-Hückel term gives the excess Helmholtz energy to account for the electrostatic interactions between ions in solution.
References
- Debye, P., Huckel, E. (1923). Phys. Z. 24, 185.
Clapeyron.MSA — Type
MSA(solvents::Array{String,1},
ions::Array{String,1};
RSPmodel = ConstRSP,
userlocations = String[],
RSPmodel_userlocations = String[],
verbose = false)Input models
RSPmodel: Relative Static Permittivity Model
Description
This function is used to create a Mean Spherical Approximation model. The MSA term gives the excess Helmholtz energy to account for the electrostatic interactions between ions in solution.
References
- Blum, L. (1974). Solution of a model for the solvent-electrolyte interactions in the mean spherical approximation. The Journal of Chemical Physics, 61(5), 2129–2133. doi:10.1063/1.1682224
Clapeyron.DHBorn — Type
DHBorn(solvents::Array{String,1},
ions::Array{String,1};
RSPmodel = ConstRSP,
userlocations = String[],
RSPmodel_userlocations = String[],
verbose = false)Input parameters
sigma: Single Parameter (Float64) - Diameter of closest approach[m]sigma_born: Single Parameter (Float64) - Born Diameter[m]charge: Single Parameter (Float64) - Charge[-]
Input models
RSPmodel: Relative Static Permittivity Model
Description
This function is used to create a Debye-Hückel-Born model. The Debye-Hückel-Born term gives the excess Helmholtz energy to account for the electrostatic interactions between ions in solution.
References
- Debye, P., Huckel, E. (1923). Phys. Z. 24, 185.
- Born, M. (1920). Z. Phys. 1, 45.
Clapeyron.MSABorn — Type
MSABorn(solvents::Array{String,1},
ions::Array{String,1};
RSPmodel = ConstRSP,
userlocations = String[],
RSPmodel_userlocations = String[],
verbose = false)Input parameters
sigma: Single Parameter (Float64) - Hard-sphere diameter[m]sigma_born: Single Parameter (Float64) - Born Diameter[m]charge: Single Parameter (Float64) - Charge[-]
Input models
RSPmodel: Relative Static Permittivity Model
Description
This function is used to create a Mean Spherical Approximation-Born model. The MSA-Born term gives the excess Helmholtz energy to account for the electrostatic interactions between ions in solution.
References
- Blum, L. (1974). Solution of a model for the solvent‐electrolyte interactions in the mean spherical approximation, 61, 2129–2133.
- Born, M. (1920). Z. Phys. 1, 45.
Clapeyron.GCMSABorn — Type
GCMSABorn(solvents::Array{String,1},
ions::Array{String,1};
RSPmodel=ConstRSP,
SAFTlocations=String[],
userlocations=String[],
verbose=false)Input parameters
sigma: Single Parameter (Float64) - Hard-sphere diameter[m]sigma_born: Single Parameter (Float64) - Born Diameter[m]charge: Single Parameter (Float64) - Charge[-]
Input models
RSPmodel: Relative Static Permittivity Model
Description
This function is used to create a group-contribution Mean Spherical Approximation-Born model used in SAFT-gamma E Mie
Electrolyte Models
Clapeyron.ePCSAFT — Type
ePCSAFT(solvents::Array{String,1},
ions::Array{String,1};
idealmodel::IdealModel = BasicIdeal,
neutralmodel::EoSModel = pharmaPCSAFT,
ionmodel::IonModel = DH,
RSPmodel::RSPModel = ConstRSP,
charge = String[],
ideal_userlocations = String[],
neutralmodel_userlocations = String[],
ionmodel_userlocations = String[],
RSPmodel_userlocations = String[],
assoc_options::AssocOptions = AssocOptions(),
verbose::Bool = false,
reference_state = nothing)Description
This function is used to create an ePCSAFT model which is a combination of the PC-SAFT and Debye-Hückel model. It is based on the ePC-SAFT Revised variant.
Input parameters
PC-SAFT Parameters
Mw: Single Parameter (Float64) - Molecular Weight[g·mol⁻¹]segment: Single Parameter (Float64) - Number of segments (no units)sigma: Single Parameter (Float64) - Segment Diameter[Å]epsilon: Single Parameter (Float64) - Reduced dispersion energy[K]k: Pair Parameter (Float64) (optional) - Binary Interaction Parameter (no units)epsilon_assoc: Association Parameter (Float64) - Reduced association energy[K]bondvol: Association Parameter (Float64) - Association Volume[m³]
Debye-Hückel Parameters
sigma: Single Parameter (Float64) - Diameter of closest approach[m]charge: Single Parameter (Float64) - Charge[-]
Input models
idealmodel: Ideal Modelneutralmodel: Neutral EoS Modelionmodel: Ion Model
References
- Held, C., Reschke, T., Mohammad, S., Luza, A., Sadowski, G. (2014). ePC-SAFT Revised. Chemical Engineering Research and Design, 92(12), 2884-2897.
Clapeyron.eSAFTVRMie — Function
eSAFTVRMie(solvents::Array{String,1},
ions::Array{String,1};
idealmodel::IdealModel = BasicIdeal,
neutralmodel::EoSModel = SAFTVRMie15,
ionmodel::IonModel = DHBorn,
RSPmodel::RSPModel = ZuoFurst,
charge = String[],
ideal_userlocations = String[],
neutralmodel_userlocations = String[],
ionmodel_userlocations = String[],
RSPmodel_userlocations = String[],
assoc_options::AssocOptions = AssocOptions(),
verbose::Bool = false,
reference_state = nothing)Description
This function is used to create an eSAFTVRMie model which is a combination of the SAFTVR-Mie, Debye-Hückel and Born models.
Input parameters
SAFT-VR Mie Parameters
Mw: Single Parameter (Float64) - Molecular Weight[g·mol⁻¹]segment: Single Parameter (Float64) - Number of segments (no units)sigma: Single Parameter (Float64) - Segment Diameter[Å]epsilon: Single Parameter (Float64) - Reduced dispersion energy[K]lambda_a: Pair Parameter (Float64) - Atractive range parameter (no units)lambda_r: Pair Parameter (Float64) - Repulsive range parameter (no units)k: Pair Parameter (Float64) (optional) - Binary Interaction Parameter (no units)epsilon_assoc: Association Parameter (Float64) - Reduced association energy[K]bondvol: Association Parameter (Float64) - Association Volume[m³]
Debye-Hückel Parameters
sigma: Single Parameter (Float64) - Diameter of closest approach[m]charge: Single Parameter (Float64) - Charge[-]
Born Parameters
sigma_born: Single Parameter (Float64) - Born Diameter[m]charge: Single Parameter (Float64) - Charge[-]
Input models
idealmodel: Ideal Modelneutralmodel: Neutral EoS Modelionmodel: Ion Model
References
- Selam, M., Economou, I., Castier, M. (2018). A thermodynamic model for strong aqueous electrolytes based on the eSAFT-VR Mie equation of state. Fluid Phase Equilibria, 464, 47-63.
Clapeyron.SAFTVREMie — Function
SAFTVREMie(solvents::Array{String,1},
ions::Array{String,1};
idealmodel::IdealModel = BasicIdeal,
neutralmodel::EoSModel = SAFTVRMie,
ionmodel::IonModel = MSABorn,
RSPmodel::RSPModel = Schreckenberg,
charge = String[],
ideal_userlocations = String[],
neutralmodel_userlocations = String[],
ionmodel_userlocations = String[],
RSPmodel_userlocations = String[],
assoc_options::AssocOptions = AssocOptions(),
verbose::Bool = false,
reference_state = nothing)Description
This function is used to create an SAFT-VRE Mie model which is a combination of the SAFT-VR Mie, MSA and Born models.
Input parameters
SAFT-VR Mie Parameters
Mw: Single Parameter (Float64) - Molecular Weight[g·mol⁻¹]segment: Single Parameter (Float64) - Number of segments (no units)sigma: Single Parameter (Float64) - Segment Diameter[Å]epsilon: Single Parameter (Float64) - Reduced dispersion energy[K]lambda_a: Pair Parameter (Float64) - Atractive range parameter (no units)lambda_r: Pair Parameter (Float64) - Repulsive range parameter (no units)k: Pair Parameter (Float64) (optional) - Binary Interaction Parameter (no units)epsilon_assoc: Association Parameter (Float64) - Reduced association energy[K]bondvol: Association Parameter (Float64) - Association Volume[m³]
MSA Parameters
sigma: Single Parameter (Float64) - Diameter of closest approach[m]charge: Single Parameter (Float64) - Charge[-]
Born Parameters
sigma_born: Single Parameter (Float64) - Born Diameter[m]charge: Single Parameter (Float64) - Charge[-]
Input models
idealmodel: Ideal Modelneutralmodel: Neutral EoS Modelionmodel: Ion Model
References
- Eriksen, D.K., Lazarou, G., Galindo, A., Jackson, G., Adjiman, C.S., & Haslam, A.J. (2016). Development of intermolecular potential models for electrolyte solutions using an electrolyte SAFT-VR Mie equation of state. Molecular Physics, 114(18), 2724-2749.
Clapeyron.SAFTgammaEMie — Function
SAFTgammaEMie(solvents::Array{String,1},
ions::Array{String,1};
idealmodel::IdealModel = BasicIdeal,
neutralmodel::EoSModel = SAFTgammaMie,
ionmodel::IonModel = GCMSABorn,
RSPmodel::RSPModel = Schreckenberg,
userlocations::Vector{String} = [],
ideal_userlocations::Vector{String} = [],
assoc_options::AssocOptions = AssocOptions(),
verbose::Bool = false)Description
This function is used to create an SAFT-gammaE Mie model which is a combination of the SAFT-gamma Mie, MSA and Born models.
Input parameters
SAFT-VR Mie Parameters
Mw: Single Parameter (Float64) - Molecular Weight[g·mol⁻¹]vst: Single Parameter (Float64) - Number of segments (no units)S: Single Parameter (Float64) - Shape factor for segment (no units)sigma: Single Parameter (Float64) - Segment Diameter[Å]epsilon: Single Parameter (Float64) - Reduced dispersion energy[K]lambda_a: Pair Parameter (Float64) - Atractive range parameter (no units)lambda_r: Pair Parameter (Float64) - Repulsive range parameter (no units)epsilon_assoc: Association Parameter (Float64) - Reduced association energy[K]bondvol: Association Parameter (Float64) - Association Volume
MSA Parameters
sigma: Single Parameter (Float64) - Diameter of closest approach[m]charge: Single Parameter (Float64) - Charge[-]
Born Parameters
sigma_born: Single Parameter (Float64) - Born Diameter[m]charge: Single Parameter (Float64) - Charge[-]
Input models
idealmodel: Ideal Modelneutralmodel: Neutral EoS Modelionmodel: Ion Model
References
- Haslam, A.J., González-Pérez, A., Di Lecce, S., Khalit, S.H., Perdomo, F.A., Kournopoulos, S., Kohns, M., Lindeboom, T., Wehbe, M., Febra, S., Jackson, G., Adjiman, C.S. & Galind, A. (2020). Expanding the Applications of the SAFT-γ Mie Group-Contribution Equation of State: Prediction of Thermodynamic Properties and Phase Behavior of Mixtures. Journal of Chemical Engineering Data, 65(12), 5862–5890
Relative Static Permittivity Models
Clapeyron.ConstRSP — Type
ConstRSP(solvents::Array{String,1},
ions::Array{String,1};
userlocations::Vector{String}=[],
value::Float64 = 78.38484961,
verbose::Bool=false)
ConstRSP(val::Float64)Input parameters
value::Float64: Constant Relative Static Permittivity[-]
Description
This function is used to create a constant Relative Static Permittivity model, given by value.
Clapeyron.LinMixRSP — Type
LinMixRSP(solvents::Array{String,1},
ions::Array{String,1};
userlocations::Vector{String}=[],
verbose::Bool=false)Input parameters
dielectric_constant::Float64: Constant Relative Static Permittivity[-]
Description
This function is used to create a Linear Mixing-Rule Relative Static Permittivity model, for a mixture of solvents, where each solvent has a dielectric_constant.
Clapeyron.Schreckenberg — Type
Schreckenberg(solvents::Array{String,1},
ions::Array{String,1};
userlocations::Vector{String}=[],
verbose::Bool=false)Input parameters
d_T::Float64: Single Parameter - Temperature dependent parameter[K]d_V::Float64: Single Parameter - Volume dependent parameter[m³·mol⁻¹]
Description
This function is used to create a Schreckenberg model. The Schreckenberg term estimates the dielectric constant for a mixture of solvents.
References
- Schreckenberg, J., Dufal, S., Haslam, A.J., Adjiman, C.S., Jackson, G., Galindo, A. (2014). Modelling of the thermodynamic and solvation properties of electrolyte solutions with the statistical associating fluid theory for potentials of variable range. Molecular Physics, 112(17), 2339-2364.
Clapeyron.ZuoFurst — Type
ZuoFurst(solvents::Array{String,1},
ions::Array{String,1};
userlocations = nothing,
verbose::Bool=false)Description
This function is used to create a Zuo-First model. The Zuo-First expression estimates the dielectric constant of water for a range of temperatures.
References
- Zuo, Y-X., Fürst, W. (1997). Prediction of vapor pressure for nonaqueous electrolyte solutions using an electrolyte equation of state, Fluid Phase Equilibria, 138(1-2), 87-104.