Skip to content

Ionic Liquids (PC-SAFT)

DWSIM Plus

Available with a DWSIM Plus (Patreon) subscription.

PC-SAFT for ionic liquids used as physical solvents (no chemical reaction with the solute). Each ionic liquid is a neutral ion pair with two association sites (2B). The package is the open PC-SAFT package with two embedded tables added on top of pcsaft.dat and pcsaft_ip.dat: il_pcsaft.dat (pure-component parameters of the ionic liquids, plus H2) and il_pcsaft_ip.dat (binary parameters with CO2, CH4, N2, H2, H2S and water, kij(T) = kij + kij_T (T - 298.15 K)). The ionic liquid compounds themselves are the JSON files the package ships in addcomps.

DWSIM.Extensions.PropertyPackages.IonicLiquids.IonicLiquidsPropertyPackage
Assembly DWSIM.Extensions.PropertyPackages.IonicLiquids.dll · Object ← PropertyPackage ← PCSAFT2PropertyPackage ← IonicLiquidsPropertyPackage
Name in the flowsheet Ionic Liquids (PC-SAFT) · FluentAPI PropertyPackages.Plus.IonicLiquids

Scope

The package describes ionic liquids used as physical solvents for CO2, H2S, CH4, N2, H2 and water: CO2 removal from natural gas, syngas or biogas, where the gas dissolves in the liquid without reacting and is released again by lowering the pressure or by mild heating. It is the PC-SAFT package with two parameter tables of its own (il_pcsaft.dat for the pure compounds, il_pcsaft_ip.dat for the pairs) and a viscosity rule for phases that hold an ionic liquid. The equation of state, the flash and the caloric properties are those of the PC-SAFT package.

Each ionic liquid is one neutral compound, the ion pair, with two association sites (scheme 2B). The association energy and volume are the same for all of them, εAB/k = 3134 K and κAB = 0.026; the segment number, diameter and dispersion energy were fitted to the NIST ILThermo liquid densities over temperature and pressure. The package also supplies PC-SAFT parameters for H2, which the general PC-SAFT table lacks.

Ionic liquids shipped (29, one compound file each in the addcomps folder, listed with the other compounds):

Family Ionic liquids
Tetrafluoroborates [emim], [bmim], [hmim], [omim][BF4]
Hexafluorophosphates [bmim], [hmim], [omim][PF6]
Bis(trifluoromethylsulfonyl)imides [emim], [bmim], [hmim], [omim], [dmim], [bmpyrr], [N4111], [P66614][Tf2N]
Trifluoromethanesulfonates [emim], [bmim], [hmim][OTf]
Acetates [emim], [bmim][Ac]
Dicyanamides, thiocyanates, tricyanomethanides [emim] and [bmim] with [DCA], [SCN], [TCM]
Others [emim][EtSO4], [bmim][MeSO4], [P66614][Cl]

Binary parameters. kij(T) = kij + kij,T (T - 298.15 K), fitted for each ionic liquid with CO2, CH4, N2, H2, H2S and water to the ILThermo gas solubilities, Henry constants and water vapor-liquid data. A CH4, N2, H2 or H2S pair without data takes the median of the fitted pairs of the same gas; a CO2 or water pair without data has kij = 0. Water cross-associates with the ionic liquid.

Viscosity. A liquid phase that holds an ionic liquid (a shipped one, or a compound tagged Ionic liquid) takes a logarithmic blend of the compound viscosities weighted by mass fraction, so a few percent of dissolved gas lowers the solvent viscosity about as much as measured. Phases without an ionic liquid use the rule of the PC-SAFT package.

Accuracy against ILThermo. Liquid density within 0.5 % on average, viscosity 4.3 % (median), heat capacity 1.1 %. CO2 solubility 9.5 % (median) on the data fitted and 16 % on the data held out; H2S and H2 within a few percent, CH4 and N2 within about 6 to 14 %. The heat of absorption of CO2 agrees with the Henry-constant data within 1 to 2 kJ/mol for most ionic liquids.

Limitations

  • Physical absorption only: the chemical absorption of CO2 and H2S by the acetates is not represented, and their predicted solubilities of these two gases are far below the measured ones.
  • Between the vapor pressure and the critical temperature of CO2, the CO2-rich phase is a dense liquid that the vapor-liquid flash reports as the vapor. Above about 190 bar the model may give a single phase.
  • Liquid-liquid equilibrium of water with the hydrophobic ionic liquids is not fitted.
  • Keep regeneration below about 150 °C: the long-term stability of ionic liquids lies 100 to 150 K below the decomposition onset measured by thermogravimetry.

Adding an ionic liquid

Copy one of the IL_*.json compound files, give it a name and a CAS number of its own (the package finds every parameter by CAS number), keep the tag Ionic liquid, and import it into the simulation. Then enter m, σ, ε/k and the association parameters in the package editor (the shipped values κAB = 0.026 and εAB/k = 3134 K are a consistent choice), and kij, kij,T for each pair. These parameters are saved with the flowsheet (CompoundParameters and InteractionParameters below); the tables of the package are not edited.

Example

This code runs on every build of this site, and the output below is what it printed.

IL = "1-butyl-3-methylimidazolium bis(trifluoromethylsulfonyl)imide"    # [bmim][Tf2N]
fs = (Flowsheet.Create("IonicLiquidExample")
      .WithCompounds("Carbon dioxide", IL)
      .WithPropertyPackage(PropertyPackages.Plus.IonicLiquids))

# 1 mol/s of CO2 over 1 mol/s of ionic liquid: more CO2 than the liquid takes up at 30 bar,
# so the flash leaves a CO2 vapor in equilibrium with the loaded solvent
loaded = (fs.AddMaterialStream("CO2 + IL")
          .At(Q.Kelvin(313.15), Q.Bar(30.0))
          .SetCompoundMolarFlow("Carbon dioxide", 1.0)
          .SetCompoundMolarFlow(IL, 1.0))
# the solvent alone, for comparison
pure = (fs.AddMaterialStream("IL")
        .At(Q.Kelvin(313.15), Q.Bar(30.0))
        .SetCompoundMolarFlow(IL, 1.0))

fs.Solve()

s = loaded.Object
liquid, vapor = s.Phases[3], s.Phases[2]     # liquid phase 1 holds the ionic liquid
solvent = pure.Object.Phases[3]
print(f"Vapor fraction       = {vapor.Properties.molarfraction:.4f}")
print(f"CO2 in the liquid    = {liquid.Compounds['Carbon dioxide'].MoleFraction:.4f} (mole fraction)")
print(f"IL in the vapor      = {vapor.Compounds[IL].MoleFraction:.1e} (mole fraction)")
print(f"Liquid density       = {liquid.Properties.density:.1f} kg/m3 (solvent alone {solvent.Properties.density:.1f})")
print(f"Liquid viscosity     = {liquid.Properties.viscosity * 1000.0:.1f} mPa s (solvent alone {solvent.Properties.viscosity * 1000.0:.1f})")

Output

Vapor fraction       = 0.0766
CO2 in the liquid    = 0.4585 (mole fraction)
IL in the vapor      = 1.7e-12 (mole fraction)
Liquid density       = 1371.7 kg/m3 (solvent alone 1419.8)
Liquid viscosity     = 16.9 mPa s (solvent alone 28.6)

DWSIM 10.2.11.0, generated 2026-10-08.

Property methods

How the package calculates each property, as it reports it in PropertyMethodsInfo (the property package editor shows the same list).

Property Method
Vapor fugacity PC-SAFT EOS
Liquid fugacity PC-SAFT EOS
Vapor enthalpy, entropy, Cp/Cv PC-SAFT EOS
Liquid enthalpy, entropy, Cp/Cv PC-SAFT EOS
Vapor density PC-SAFT EOS
Liquid density PC-SAFT EOS
Vapor viscosity Experimental / Lucas / Jossi-Stiel-Thodos
Liquid viscosity Experimental / mass-fraction logarithmic blend for phases with an ionic liquid
Vapor thermal conductivity Experimental / Ely-Hanley
Liquid thermal conductivity Experimental / Latini
Surface tension Experimental / Brock-Bird
Solid density Experimental Data / User-Defined
Solid enthalpy, entropy, Cp/Cv Experimental Solid Cp / From Liquid Phase Enthalpy + Enthalpy of Fusion

Default flash algorithm: Universal.

Configuration saved with the flowsheet

The package writes its settings to the simulation file (SaveData) and reads them back on load (LoadData). The elements below are the ones this package adds to those of every property package, as written for the example.

Element Content in the example What it holds
UseLeeKeslerEnthalpy true Lee-Kesler enthalpy and entropy when the mixture has no associating compound or polymer; ionic liquids associate, so with one in the flowsheet the PC-SAFT departure functions are used
UseLeeKeslerCpCv true The same switch for Cp and Cv
InteractionParameters 1 InteractionParameter entry (Compound1, Compound2, CAS1, CAS2, Value, ValueT) kij (Value) and kij,T (ValueT, 1/K) of the pairs of the flowsheet compounds, from the package tables or entered in the editor
CompoundParameters 2 CompoundParameterSet entries (Compound, CAS_ID, MW, m, sigma, epsilon_k, assocparam, kAiBi, epsilon_AiBi, m_over_M, scheme, copolymer, coseq) PC-SAFT parameters of the flowsheet compounds (m, σ in Å, ε/k in K, association volume kAiBi and energy epsilon_AiBi)
First InteractionParameter of InteractionParameters in the example
<InteractionParameter Compound1="carbon dioxide" Compound2="1-butyl-3-methylimidazolium bis(trifluoromethylsulfonyl)imide" CAS1="124-38-9" CAS2="174899-83-3" Value="0.027354" ValueT="0.0002669" />
First CompoundParameterSet of CompoundParameters in the example
<CompoundParameterSet Compound="carbon dioxide" CAS_ID="124-38-9" MW="44.01" m="2.0729" sigma="2.7852" epsilon_k="169.21" assocparam="2|[0 0; 0 0]|[0 0; 0 0]" kAiBi="0" epsilon_AiBi="0" m_over_M="0" scheme="" copolymer="" coseq="" />
Settings common to every property package, as saved for the example
Element Value
Type 74 characters
ComponentName Ionic Liquids (PC-SAFT)
ComponentDescription 120 characters
Tag Ionic Liquids (PC-SAFT)
UseHenryConstants true
AutoEstimateMissingNRTLUNIQUACParameters true
UseImmiscibleListForLiquid2InitialEstimates true
SingleCompoundCheckThreshold 0.99999
OverrideKvalFugCoeff false
OverrideEnthalpyCalculation false
OverrideEntropyCalculation false
LiquidDensityCalculationMode_Subcritical Rackett_and_ExpData
LiquidDensityCalculationMode_Supercritical Rackett_and_ExpData
LiquidDensity_CorrectExpDataForPressure true
LiquidDensity_UsePenelouxVolumeTranslation true
LiquidViscosityCalculationMode_Subcritical ExpData
LiquidViscosityCalculationMode_Supercritical Letsou_Stiel
LiquidViscosity_CorrectExpDataForPressure true
LiquidViscosity_MixingRule MoleAverage
VaporPhaseFugacityCalculationMode Ideal
SolidPhaseFugacityCalculationMethod FromLiquidFugacity
SolidPhaseFugacity_UseIdealLiquidPhaseFugacity false
SolidPhaseEnthalpy_UsesCp false
EnthalpyEntropyCpCvCalculationMode LeeKesler
LiquidEnthalpyEntropyCpCvCalculationMode_EOS EOS
LiquidFugacity_UsePoyntingCorrectionFactor true
ActivityCoefficientModels_IgnoreMissingInteractionParameters false
IgnoreVaporFractionLimit false
IgnoreSalinityLimit false
CalculateAdditionalMaterialStreamProperties true
FlashCalculationApproach NestedLoops
DisplayMissingCompoundPropertiesWarning false
ForcedSolids []
PropertyOverrides {}
FlashSettings 36 Setting entries

Learn more

API members

Public members declared by this class. Inherited members are documented on the base classes.

Constructors

IonicLiquidsPropertyPackage()
public IonicLiquidsPropertyPackage()
Public Sub New()

Methods

AUX_LIQVISCm(double, double, int): Liquid viscosity of a phase that holds an ionic liquid: logarithmic blend weighted by mass fraction.

Liquid viscosity of a phase that holds an ionic liquid: logarithmic blend weighted by mass fraction. The base rule weights by mole fraction, which lets a few percent of dissolved gas (light, low viscosity, but a large mole fraction) cut the viscosity of the solvent far more than measured. Phases without an ionic liquid use the base rule.

Parameter Type Description
T Double
P Double
phaseid Int32
public override double AUX_LIQVISCm(double T, double P, int phaseid = 3)
Public Overrides Function AUX_LIQVISCm(T As Double, P As Double, phaseid As Integer = 3) As Double

Clone()
public override PropertyPackage Clone()
Public Overrides Function Clone() As PropertyPackage

IsIonicLiquid(ICompoundConstantProperties): True for an ionic liquid of the package, or a compound tagged as one by the user.

True for an ionic liquid of the package, or a compound tagged as one by the user.

Parameter Type Description
cp ICompoundConstantProperties
public bool IsIonicLiquid(ICompoundConstantProperties cp)
Public Function IsIonicLiquid(cp As ICompoundConstantProperties) As Boolean

IsIonicLiquid(string): True when the CAS number is one of the ionic liquids of the package.

True when the CAS number is one of the ionic liquids of the package.

Parameter Type Description
cas String
public bool IsIonicLiquid(string cas)
Public Function IsIonicLiquid(cas As String) As Boolean

ReturnInstance(string)
Parameter Type Description
typename String
public override object ReturnInstance(string typename)
Public Overrides Function ReturnInstance(typename As String) As Object

SaveData()
public override List<XElement> SaveData()
Public Overrides Function SaveData() As List(Of XElement)

Fields

ClassId
public const string ClassId = "5B0E3C27-8D41-4F6A-A2B9-71C4E06D9F35"
Public Const ClassId As String = "5B0E3C27-8D41-4F6A-A2B9-71C4E06D9F35"

IonicLiquidTag: The tag that marks a user-defined compound as an ionic liquid (the shipped compounds carry it too).

The tag that marks a user-defined compound as an ionic liquid (the shipped compounds carry it too).

public const string IonicLiquidTag = "Ionic liquid"
Public Const IonicLiquidTag As String = "Ionic liquid"

PackageName
public const string PackageName = "Ionic Liquids (PC-SAFT)"
Public Const PackageName As String = "Ionic Liquids (PC-SAFT)"