Skip to the content.

Thermodynamic Models in NeqSim

This document provides a comprehensive overview of the thermodynamic models available in NeqSim, their theoretical foundations, and practical guidance on when and how to use each model. Models are classified into categories based on their mathematical formulation and application domain.

Table of Contents

  1. Introduction
  2. Model Categories Overview
  3. Cubic Equations of State
  4. CPA (Cubic Plus Association) Models
  5. Reference Equations (Helmholtz-Based)
  6. Activity Coefficient (GE) Models
  7. Electrolyte Models
  8. Mixing Rules
  9. Auto-Select Model Feature
  10. Model Selection Guidelines
  11. Complete Reference Tables

1. Introduction

NeqSim (Non-Equilibrium Simulator) provides a rich library of thermodynamic models for simulating phase equilibria, physical properties, and process operations. Choosing the appropriate thermodynamic model is crucial for obtaining accurate results in process simulation.

General Workflow

import neqsim.thermo.system.SystemSrkEos;
import neqsim.thermo.system.SystemInterface;

// 1. Choose and instantiate the thermodynamic model
SystemInterface fluid = new SystemSrkEos(298.15, 10.0);  // T [K], P [bara]

// 2. Add components
fluid.addComponent("methane", 0.90);
fluid.addComponent("ethane", 0.10);

// 3. Set an appropriate mixing rule
fluid.setMixingRule("classic");

// 4. Initialize and perform calculations
fluid.init(0);

2. Model Categories Overview

Category Mathematical Basis Key Use Cases Examples
Cubic EoS $P = \frac{RT}{v-b} - \frac{a(T)}{(v+\epsilon b)(v+\sigma b)}$ General hydrocarbons, gas processing SRK, PR
CPA Cubic EoS + Association term Polar/associating fluids (water, glycols, alcohols) SRK-CPA, PR-CPA
Reference EoS Helmholtz free energy explicit High-accuracy metering, CCS GERG-2008, EOS-CG
Activity Coefficient Excess Gibbs energy ($G^E$) Non-ideal liquid mixtures UNIFAC, NRTL
Electrolyte CPA + Electrostatic contributions Aqueous salt solutions Electrolyte-CPA, Pitzer
Specialized Modified equations Specific applications Søreide-Whitson

3. Cubic Equations of State

3.1 Theoretical Foundation

Cubic equations of state express pressure as a function of temperature and molar volume in a cubic polynomial form:

\[P = \frac{RT}{v - b} - \frac{a(T)}{(v + \epsilon b)(v + \sigma b)}\]

Where:

The energy parameter typically uses an alpha function:

\[a(T) = a_c \cdot \alpha(T_r, \omega)\]

Where $T_r = T/T_c$ is the reduced temperature and $\omega$ is the acentric factor.

3.2 Soave-Redlich-Kwong (SRK) Family

For SRK: $\epsilon = 0$, $\sigma = 1$

\[P = \frac{RT}{v - b} - \frac{a(T)}{v(v + b)}\]
Class Description Best For
SystemSrkEos Standard SRK General gas/light hydrocarbon
SystemSrkPenelouxEos SRK with Peneloux volume correction Improved liquid density
SystemSrkMathiasCopeman SRK with Mathias-Copeman alpha function Better vapor pressure
SystemSrkTwuCoonEos SRK with Twu-Coon alpha function Polar components
SystemSrkSchwartzentruberEos SRK-Schwartzentruber Polar/associated fluids

Example: Standard SRK

SystemInterface fluid = new SystemSrkEos(300.0, 50.0);
fluid.addComponent("methane", 0.85);
fluid.addComponent("CO2", 0.10);
fluid.addComponent("nitrogen", 0.05);
fluid.setMixingRule("classic");

3.3 Peng-Robinson (PR) Family

For PR: $\epsilon = 1 - \sqrt{2}$, $\sigma = 1 + \sqrt{2}$

\[P = \frac{RT}{v - b} - \frac{a(T)}{v(v + b) + b(v - b)}\]
Class Description Best For
SystemPrEos Standard PR General oil & gas
SystemPrEos1978 Original 1978 formulation Classic applications
SystemPrMathiasCopeman PR with Mathias-Copeman alpha Polar components
SystemPrDanesh Modified PR Heavy oil systems
SystemPrEosvolcor PR with volume correction Liquid density
SystemPrEosDelft1998 Delft 1998 modification Gas condensates

Example: Peng-Robinson

SystemInterface fluid = new SystemPrEos(350.0, 150.0);
fluid.addComponent("methane", 0.70);
fluid.addComponent("n-heptane", 0.20);
fluid.addComponent("n-decane", 0.10);
fluid.setMixingRule("classic");

3.4 Other Cubic EoS

Class Description
SystemRKEos Original Redlich-Kwong (historical)
SystemTSTEos Twu-Sim-Tassone equation
SystemBWRSEos Benedict-Webb-Rubin-Starling (extended virial)

4. CPA (Cubic Plus Association) Models

4.1 Theoretical Foundation

CPA (Cubic Plus Association) extends cubic EoS to handle hydrogen bonding in polar molecules like water, alcohols, and glycols. The pressure is expressed as:

\[P = P_{\text{cubic}} + P_{\text{association}}\]

The association term accounts for hydrogen bonding:

\[P_{\text{association}} = -\frac{1}{2} RT \rho \sum_i x_i \sum_{A_i} \left( 1 - X_{A_i} \right) \frac{\partial \ln g}{\partial v}\]

Where:

The non-bonded site fraction $X_{A_i}$ is determined by solving:

\[X_{A_i} = \frac{1}{1 + \rho \sum_j x_j \sum_{B_j} X_{B_j} \Delta^{A_i B_j}}\]

Where $\Delta^{A_i B_j}$ is the association strength between site A on molecule $i$ and site B on molecule $j$.

4.2 Available CPA Models

Class Description Mixing Rule
SystemSrkCPAstatoil Recommended Equinor SRK-CPA implementation 10
SystemSrkCPA Standard SRK-CPA 7
SystemSrkCPAs Alternative SRK-CPA 7
SystemPrCPA Peng-Robinson with CPA 7
SystemUMRCPAEoS UMR-CPA with UNIFAC -

4.3 Association Schemes

Scheme Sites Examples
4C 2 donors + 2 acceptors Water, glycols
2B 1 donor + 1 acceptor Alcohols
CR-1 Cross-association Water-MEG, Water-methanol

4.4 Example: Water-Hydrocarbon System

import neqsim.thermo.system.SystemSrkCPAstatoil;

SystemInterface fluid = new SystemSrkCPAstatoil(323.15, 50.0);
fluid.addComponent("methane", 0.70);
fluid.addComponent("ethane", 0.10);
fluid.addComponent("propane", 0.05);
fluid.addComponent("water", 0.10);
fluid.addComponent("MEG", 0.05);  // Mono-ethylene glycol

// Use mixing rule 10 (recommended for CPA)
fluid.setMixingRule(10);  // CLASSIC_TX_CPA

ThermodynamicOperations ops = new ThermodynamicOperations(fluid);
ops.TPflash();

5. Reference Equations (Helmholtz-Based)

5.1 Theoretical Foundation

Reference equations of state are explicit in the dimensionless Helmholtz free energy $\alpha$:

\[\alpha(\delta, \tau, \bar{x}) = \frac{a(\rho, T, \bar{x})}{RT} = \alpha^0(\delta, \tau, \bar{x}) + \alpha^r(\delta, \tau, \bar{x})\]

Where:

The residual contribution is fitted to high-accuracy experimental data:

\[\alpha^r(\delta, \tau, \bar{x}) = \sum_{i=1}^{N} x_i \alpha_{0i}^r(\delta, \tau) + \sum_{i=1}^{N-1} \sum_{j=i+1}^{N} x_i x_j F_{ij} \alpha_{ij}^r(\delta, \tau)\]

These models provide superior accuracy for density, speed of sound, and heat capacity compared to cubic EoS.

5.2 GERG-2008

Standard: ISO 20765-2
Application: Natural gas custody transfer, fiscal metering
Accuracy: ±0.1% in density for typical natural gas

Supported Components (21): Methane, Nitrogen, CO2, Ethane, Propane, n-Butane, i-Butane, n-Pentane, i-Pentane, n-Hexane, n-Heptane, n-Octane, n-Nonane, n-Decane, Hydrogen, Oxygen, CO, Water, Helium, Argon

import neqsim.thermo.system.SystemGERG2008Eos;

SystemInterface fluid = new SystemGERG2008Eos(288.15, 50.0);
fluid.addComponent("methane", 0.92);
fluid.addComponent("ethane", 0.04);
fluid.addComponent("propane", 0.02);
fluid.addComponent("nitrogen", 0.01);
fluid.addComponent("CO2", 0.01);
fluid.createDatabase(true);

ThermodynamicOperations ops = new ThermodynamicOperations(fluid);
ops.TPflash();

// Access GERG-specific high-accuracy density
double gergDensity = fluid.getPhase(0).getDensity_GERG2008();

5.3 GERG-2008-H2 (Hydrogen Enhanced)

Extension for hydrogen-rich blends with improved H2 binary parameters:

SystemGERG2008Eos fluid = new SystemGERG2008Eos(300.0, 50.0);
fluid.addComponent("methane", 0.7);
fluid.addComponent("hydrogen", 0.3);

// Enable hydrogen-enhanced model
fluid.useHydrogenEnhancedModel();

ThermodynamicOperations ops = new ThermodynamicOperations(fluid);
ops.TPflash();

5.4 EOS-CG

Application: Carbon Capture and Storage (CCS), combustion gases
Extension: Includes SO2, NO, NO2, HCl, Cl2, COS in addition to GERG-2008 components

import neqsim.thermo.system.SystemEOSCGEos;

SystemInterface fluid = new SystemEOSCGEos(300.0, 100.0);
fluid.addComponent("CO2", 0.95);
fluid.addComponent("nitrogen", 0.03);
fluid.addComponent("SO2", 0.02);
fluid.createDatabase(true);

ThermodynamicOperations ops = new ThermodynamicOperations(fluid);
ops.TPflash();

double density = fluid.getPhase(0).getDensity_EOSCG();

5.5 Other Reference Equations

Class Description Application
SystemSpanWagnerEos Span-Wagner equation Pure CO2
SystemLeachmanEos Leachman equation Pure hydrogen
SystemVegaEos Vega equation Specialized applications
SystemAmmoniaEos Ammonia-specific Ammonia systems

6. Activity Coefficient (GE) Models

6.1 Theoretical Foundation

Activity coefficient models describe non-ideal liquid behavior through the excess Gibbs energy:

\[G^E = RT \sum_i x_i \ln \gamma_i\]

Where $\gamma_i$ is the activity coefficient of component $i$.

6.2 UNIFAC (Universal Functional Activity Coefficient)

Group contribution method that predicts activity coefficients from molecular group interactions:

\[\ln \gamma_i = \ln \gamma_i^C + \ln \gamma_i^R\]

Where the combinatorial ($C$) and residual ($R$) contributions are calculated from group properties.

import neqsim.thermo.system.SystemUNIFAC;

SystemInterface fluid = new SystemUNIFAC(300.0, 1.0);
fluid.addComponent("methanol", 0.3);
fluid.addComponent("water", 0.7);

6.3 NRTL (Non-Random Two-Liquid)

Local composition model with binary interaction parameters:

\[\ln \gamma_i = \frac{\sum_j x_j \tau_{ji} G_{ji}}{\sum_k x_k G_{ki}} + \sum_j \frac{x_j G_{ij}}{\sum_k x_k G_{kj}} \left( \tau_{ij} - \frac{\sum_m x_m \tau_{mj} G_{mj}}{\sum_k x_k G_{kj}} \right)\]
import neqsim.thermo.system.SystemNRTL;

SystemInterface fluid = new SystemNRTL(300.0, 1.0);
fluid.addComponent("ethanol", 0.4);
fluid.addComponent("water", 0.6);

6.4 Other GE Models

Class Description
SystemGEWilson Wilson equation
SystemUNIFACpsrk UNIFAC with PSRK parameters
SystemUMRPRUEos Peng-Robinson with UNIFAC mixing
SystemUMRPRUMCEos UMR-PRU with Mathias-Copeman

7. Electrolyte Models

7.1 Theoretical Foundation

Electrolyte models extend CPA with electrostatic contributions for aqueous salt solutions:

\[A^{res} = A^{CPA} + A^{elec}\]

The electrostatic contribution typically includes:

\[A^{elec} = A^{MSA} + A^{Born} + A^{SR}\]

Where:

Born Solvation Term:

\[\frac{A^{Born}}{RT} = -\frac{e^2 N_A}{8\pi\varepsilon_0 k_B T} \sum_i n_i \frac{z_i^2}{\sigma_i} \left(1 - \frac{1}{\varepsilon_r}\right)\]

7.2 Electrolyte-CPA (Equinor)

Recommended for: Aqueous electrolyte solutions with associating solvents

import neqsim.thermo.system.SystemElectrolyteCPAstatoil;

SystemInterface system = new SystemElectrolyteCPAstatoil(298.15, 1.01325);
system.addComponent("water", 55.5);
system.addComponent("Na+", 1.0);
system.addComponent("Cl-", 1.0);
system.chemicalReactionInit();  // Enable pH and speciation
system.createDatabase(true);
system.setMixingRule(10);  // Required for electrolyte CPA

ThermodynamicOperations ops = new ThermodynamicOperations(system);
ops.TPflash();

// Access activity coefficients
double meanGamma = system.getPhase(0).getMeanIonicActivityCoefficient("Na+", "Cl-");

7.3 Søreide-Whitson Model

Application: Sour gas systems with brine

Uses salinity-dependent binary interaction parameters for CO2-water, H2S-water, and hydrocarbon-water systems:

\[k_{ij,\text{CO}_2-\text{water}} = -0.31092(1 + 0.156 S^{0.75}) + 0.236(1 + 0.178 S^{0.98}) T_r - 21.26 e^{-6.72^{T_r} - S}\]
import neqsim.thermo.system.SystemSoreideWhitson;

SystemSoreideWhitson fluid = new SystemSoreideWhitson(350.0, 200.0);
fluid.addComponent("methane", 0.70);
fluid.addComponent("CO2", 0.15);
fluid.addComponent("H2S", 0.05);
fluid.addComponent("water", 0.10);
fluid.addSalinity(2.0, "mole/sec");  // Add NaCl salinity
fluid.setMixingRule(11);  // Søreide-Whitson mixing rule

7.4 Other Electrolyte Models

Class Description Use Case
SystemPitzer Pitzer model Concentrated brines
SystemDesmukhMather Desmukh-Mather Amine systems
SystemKentEisenberg Kent-Eisenberg CO2/H2S in amines
SystemDuanSun Duan-Sun CO2 solubility in brine
SystemFurstElectrolyteEos Fürst electrolyte EoS General electrolytes

8. Mixing Rules

8.1 Overview

Mixing rules determine how pure-component parameters are combined for mixtures. The choice of mixing rule is as important as the choice of equation of state.

8.2 Classic Mixing Rules

van der Waals One-Fluid Mixing Rule:

\[a_{mix} = \sum_i \sum_j x_i x_j a_{ij}\] \[b_{mix} = \sum_i x_i b_i\]

With combining rule:

\[a_{ij} = \sqrt{a_i a_j}(1 - k_{ij})\]
Type Name Description
1 NO All $k_{ij} = 0$ (no interactions)
2 CLASSIC Classic with database $k_{ij}$
8 CLASSIC_T Temperature-dependent: $k_{ij}(T) = k_{ij,0} + k_{ij,T} \cdot T$
12 CLASSIC_T2 Inverse T-dependency: $k_{ij}(T) = k_{ij,0} + k_{ij,T}/T$

8.3 Huron-Vidal Mixing Rules

Combines cubic EoS with activity coefficient models at infinite pressure:

\[a_{mix} = b_{mix} \left( \sum_i x_i \frac{a_i}{b_i} - \frac{G^E}{\Lambda} \right)\]

Where $\Lambda \approx 0.693$ for SRK.

Type Name Description
3 CLASSIC_HV Huron-Vidal with database NRTL parameters
4 HV HV with temperature-dependent parameters

Usage with GE model:

fluid.setMixingRule("HV", "UNIFAC_UMRPRU");
fluid.setMixingRule("HV", "NRTL");

8.4 Wong-Sandler Mixing Rule

Matches both second virial coefficient and excess Gibbs energy:

\[b_{mix} = \frac{\sum_i \sum_j x_i x_j \left( b - \frac{a}{RT} \right)_{ij}}{1 - \frac{A_\infty^E}{CRT} - \sum_i x_i \frac{a_i}{RTb_i}}\]
Type Name Description
5 WS Wong-Sandler (NRTL-based)
fluid.setMixingRule("WS", "NRTL");

8.5 CPA Mixing Rules

Type Name Description
7 CPA_MIX Classic for CPA systems
9 CLASSIC_T_CPA Temperature-dependent CPA
10 CLASSIC_TX_CPA Recommended T and x dependent for CPA

Mixing Rule 10 Auto-Selection:

Mixing rule 10 automatically selects the appropriate sub-type:

Condition Sub-Type Description
Symmetric $k_{ij}$, no T-dependency classic-CPA Simple symmetric
Symmetric $k_{ij}$, with T-dependency classic-CPA_T Temperature-dependent
Asymmetric $k_{ij}$ ($k_{ij} \neq k_{ji}$) classic-CPA_Tx Full asymmetric

8.6 Søreide-Whitson Mixing Rule

Type Name Description
11 SOREIDE_WHITSON Salinity-dependent for sour gas/brine

8.7 Setting Mixing Rules

// By integer value
fluid.setMixingRule(2);

// By name
fluid.setMixingRule("classic");
fluid.setMixingRule("HV");
fluid.setMixingRule("WS");

// By enum
fluid.setMixingRule(EosMixingRuleType.CLASSIC);

// With GE model (for HV/WS)
fluid.setMixingRule("HV", "UNIFAC_UMRPRU");
fluid.setMixingRule("WS", "NRTL");

8.8 Setting Custom kij Values

EosMixingRulesInterface mixRule = fluid.getPhase(0).getMixingRule();

// Set symmetric kij
mixRule.setBinaryInteractionParameter(0, 1, 0.12);

// Set asymmetric kij (for CPA)
mixRule.setBinaryInteractionParameterij(0, 1, 0.08);  // kij
mixRule.setBinaryInteractionParameterji(0, 1, 0.12);  // kji

// Set temperature-dependent kij
mixRule.setBinaryInteractionParameter(0, 1, 0.10);      // kij0
mixRule.setBinaryInteractionParameterT1(0, 1, 0.001);   // kijT

9. Auto-Select Model Feature

9.1 Overview

NeqSim provides an autoSelectModel() method that automatically chooses an appropriate thermodynamic model based on the components in your fluid. This is useful for quick setups or when you’re unsure which model to use.

9.2 Auto-Selection Logic

The autoSelectModel() method follows this decision tree:

public SystemInterface autoSelectModel() {
    if (hasComponent("MDEA") && hasComponent("water") && hasComponent("CO2")) {
        return setModel("Electrolyte-ScRK-EOS");  // Amine systems
    } 
    else if (hasComponent("water") || hasComponent("methanol") || 
             hasComponent("MEG") || hasComponent("TEG") || 
             hasComponent("ethanol") || hasComponent("DEG")) {
        if (hasComponent("Na+") || hasComponent("K+") || 
            hasComponent("Br-") || hasComponent("Mg++") || 
            hasComponent("Cl-") || hasComponent("Ca++") || 
            hasComponent("Fe++") || hasComponent("SO4--")) {
            return setModel("Electrolyte-CPA-EOS-statoil");  // Electrolytes
        } else {
            return setModel("CPAs-SRK-EOS-statoil");  // Polar/associating
        }
    }
    else if (hasComponent("water")) {
        return setModel("ScRK-EOS");  // Water present
    }
    else if (hasComponent("mercury")) {
        return setModel("SRK-TwuCoon-Statoil-EOS");  // Mercury
    }
    else {
        return setModel("SRK-EOS");  // Default: standard SRK
    }
}

9.3 Model Selection Summary

Components Present Selected Model
MDEA + water + CO2 Electrolyte-ScRK-EOS
Water/glycols + ions Electrolyte-CPA-EOS-statoil
Water/glycols (no ions) CPAs-SRK-EOS-statoil
Only water (no glycols) ScRK-EOS
Mercury SRK-TwuCoon-Statoil-EOS
Default (hydrocarbons only) SRK-EOS

9.4 Usage

import neqsim.thermo.Fluid;

// Method 1: Using Fluid builder with autoSelectModel
Fluid fluidBuilder = new Fluid();
fluidBuilder.setAutoSelectModel(true);
SystemInterface fluid = fluidBuilder.create("black oil with water");

// Method 2: Calling autoSelectModel() on existing fluid
SystemInterface gas = new SystemSrkEos(300.0, 50.0);
gas.addComponent("methane", 0.80);
gas.addComponent("water", 0.15);
gas.addComponent("MEG", 0.05);
gas.createDatabase(true);

// Auto-select will switch to CPA model
SystemInterface optimizedFluid = gas.autoSelectModel();

9.5 Auto-Select Mixing Rule

There is also an autoSelectMixingRule() method that selects an appropriate mixing rule based on the model type:

fluid.autoSelectMixingRule();  // Automatically sets appropriate mixing rule

10. Model Selection Guidelines

10.1 Quick Reference Table

System Type Recommended Model Mixing Rule Notes
Dry natural gas SystemSrkEos classic (2) Simple, fast
Wet gas / condensate SystemPrEos classic (2) Better for C7+
Black oil with TBP SystemPrEos classic (2) With characterization
Water-hydrocarbon SystemSrkCPAstatoil CLASSIC_TX_CPA (10) Handles association
Glycol dehydration SystemSrkCPAstatoil CPA_MIX (7) or (10) MEG, TEG, DEG
Sour gas with brine SystemSoreideWhitson SOREIDE_WHITSON (11) Salinity-dependent
Amine gas treating SystemSrkEos HV (4) With NRTL
Fiscal metering SystemGERG2008Eos N/A ISO 20765-2
CCS / CO2 transport SystemEOSCGEos N/A Flue gas components
Electrolyte solutions SystemElectrolyteCPAstatoil (10) With chemicalReactionInit
Polar organics SystemUNIFAC N/A Group contribution
High-pressure polar SystemPrEos WS (5) Wong-Sandler

10.2 Decision Flow

1. Is high accuracy required for custody transfer?
   └─ YES → Use GERG-2008 or EOS-CG

2. Does the system contain electrolytes (Na+, Cl-, etc.)?
   └─ YES → Use Electrolyte-CPA

3. Does the system contain water, glycols, or alcohols?
   └─ YES → Use CPA models (SystemSrkCPAstatoil)

4. Is it a sour gas system with brine?
   └─ YES → Use Søreide-Whitson

5. Is it a non-ideal organic mixture?
   └─ YES → Use UNIFAC or NRTL with HV/WS mixing

6. Is it a standard hydrocarbon system?
   └─ YES → Use SRK or PR with classic mixing

10.3 Performance vs. Accuracy Trade-offs

Model Type Speed Accuracy Memory
Cubic (SRK/PR) ⚡⚡⚡ Fast ★★★ Good Low
CPA ⚡⚡ Medium ★★★★ Very Good Medium
GERG-2008 ⚡ Slow ★★★★★ Excellent High
UNIFAC ⚡⚡ Medium ★★★ Good Medium
Electrolyte-CPA ⚡ Slow ★★★★ Very Good High

11. Complete Reference Tables

11.1 All System Classes

Class Category Description
SystemSrkEos Cubic Standard SRK
SystemSrkPenelouxEos Cubic SRK with volume correction
SystemSrkMathiasCopeman Cubic SRK with MC alpha function
SystemSrkTwuCoonEos Cubic SRK with Twu-Coon alpha
SystemSrkTwuCoonParamEos Cubic SRK Twu-Coon parameterized
SystemSrkTwuCoonStatoilEos Cubic SRK Twu-Coon Equinor version
SystemSrkSchwartzentruberEos Cubic SRK-Schwartzentruber
SystemSrkEosvolcor Cubic SRK with volume correction
SystemPrEos Cubic Standard PR
SystemPrEos1978 Cubic Original 1978 PR
SystemPrMathiasCopeman Cubic PR with MC alpha
SystemPrDanesh Cubic Modified PR
SystemPrEosvolcor Cubic PR with volume correction
SystemPrEosDelft1998 Cubic Delft 1998 PR
SystemPrGassemEos Cubic Gassem PR
SystemRKEos Cubic Original RK
SystemTSTEos Cubic Twu-Sim-Tassone
SystemBWRSEos Cubic Benedict-Webb-Rubin-Starling
SystemCSPsrkEos Cubic CSP-SRK
SystemPsrkEos Cubic PSRK
SystemSrkCPA CPA Standard SRK-CPA
SystemSrkCPAs CPA Alternative SRK-CPA
SystemSrkCPAstatoil CPA Recommended Equinor SRK-CPA
SystemPrCPA CPA PR-CPA
SystemUMRCPAEoS CPA UMR-CPA
SystemPCSAFT SAFT PC-SAFT
SystemPCSAFTa SAFT PC-SAFT variant
SystemGERG2008Eos Reference GERG-2008 (ISO 20765-2)
SystemGERG2004Eos Reference GERG-2004 (older version)
SystemGERGwaterEos Reference GERG with water
SystemEOSCGEos Reference EOS-CG for CCS
SystemSpanWagnerEos Reference Span-Wagner for CO2
SystemLeachmanEos Reference Leachman for H2
SystemVegaEos Reference Vega equation
SystemAmmoniaEos Reference Ammonia-specific
SystemBnsEos Reference BNS equation
SystemUNIFAC GE UNIFAC
SystemUNIFACpsrk GE UNIFAC-PSRK
SystemNRTL GE NRTL
SystemGEWilson GE Wilson
SystemUMRPRUEos GE-EoS UMR-PRU
SystemUMRPRUMCEos GE-EoS UMR-PRU-MC
SystemElectrolyteCPA Electrolyte Electrolyte CPA
SystemElectrolyteCPAstatoil Electrolyte Recommended Equinor Electrolyte CPA
SystemElectrolyteCPAMM Electrolyte Electrolyte CPA-MM
SystemFurstElectrolyteEos Electrolyte Fürst electrolyte
SystemFurstElectrolyteEosMod2004 Electrolyte Modified Fürst (2004)
SystemSoreideWhitson Electrolyte Søreide-Whitson for sour gas
SystemPitzer Electrolyte Pitzer model
SystemDesmukhMather Electrolyte Desmukh-Mather
SystemKentEisenberg Electrolyte Kent-Eisenberg
SystemDuanSun Electrolyte Duan-Sun
SystemIdealGas Ideal Ideal gas law
SystemWaterIF97 Water IF-97 for steam

11.2 All Mixing Rules

Type Name String Key Best For
1 NO "NO" Ideal mixtures
2 CLASSIC "classic" General hydrocarbons
3 CLASSIC_HV "CLASSIC_HV" Polar mixtures
4 HV "HV" Alcohol-water-HC
5 WS "WS" High-pressure polar
7 CPA_MIX "CPA_MIX" CPA systems
8 CLASSIC_T "CLASSIC_T" T-dependent kij
9 CLASSIC_T_CPA "CLASSIC_T_CPA" CPA with T-dependency
10 CLASSIC_TX_CPA "CLASSIC_TX_CPA" Recommended for CPA
11 SOREIDE_WHITSON "SOREIDE_WHITSON" Sour gas, brine
12 CLASSIC_T2 "CLASSIC_T2" Inverse T-dependency

See Also


Last updated: January 2026