Skip to the content.

Hydrate Models in NeqSim

This document describes the gas hydrate thermodynamic models implemented in NeqSim for predicting hydrate formation, stability, and phase equilibrium.

Table of Contents


Overview

Gas hydrates (clathrate hydrates) are ice-like crystalline compounds formed when water molecules create cage structures that encapsulate gas molecules (guest molecules) under high pressure and low temperature conditions. NeqSim provides comprehensive models for:


Hydrate Structures

NeqSim supports two common hydrate crystal structures:

Structure I (sI)

Property Small Cavity (5¹²) Large Cavity (5¹²6²)
Coordination Number 20 24
Cavity Radius (Å) 3.95 4.33
Number per Unit Cell 2 6
Water per Cavity 1/23 3/23

Typical Guest Molecules: Methane, ethane, CO₂, H₂S

Unit Cell Formula: 46 H₂O · 8 guest molecules (2 small + 6 large cavities)

Structure II (sII)

Property Small Cavity (5¹²) Large Cavity (5¹²6⁴)
Coordination Number 20 28
Cavity Radius (Å) 3.91 4.73
Number per Unit Cell 16 8
Water per Cavity 2/17 1/17

Typical Guest Molecules: Propane, isobutane, natural gas mixtures

Unit Cell Formula: 136 H₂O · 24 guest molecules (16 small + 8 large cavities)

Structure Selection

The algorithm automatically selects the most stable structure based on Gibbs energy minimization. For mixed gases, the structure depends on composition:

// Get the stable hydrate structure (1 = sI, 2 = sII)
int structure = fluid.getPhase(PhaseType.HYDRATE).getComponent("methane").getHydrateStructure();

Thermodynamic Framework

van der Waals-Platteeuw Theory

NeqSim implements the classical van der Waals-Platteeuw (vdWP) statistical thermodynamic model as the foundation for hydrate calculations.

The chemical potential difference between water in hydrate and empty hydrate lattice:

\[\Delta\mu_w^H = -RT \sum_{i=1}^{N_{cav}} \nu_i \ln\left(1 - \sum_{j=1}^{N_g} Y_{ij}\right)\]

where:

Cavity Occupancy (Langmuir Adsorption)

The cavity occupancy follows the Langmuir isotherm:

\[Y_{ij} = \frac{C_{ij} f_j}{1 + \sum_{k=1}^{N_g} C_{ik} f_k}\]

where:

Langmuir Constants

The Langmuir constants are calculated from the cell potential:

\[C_{ij}(T) = \frac{4\pi}{k_B T} \int_0^{R_{cell}} \exp\left(-\frac{w(r)}{k_B T}\right) r^2 dr\]

where $w(r)$ is the spherically averaged Kihara cell potential.


Available Hydrate Models

CPA Hydrate Model (Statoil/Equinor)

Class: ComponentHydrateGF, ComponentHydrateStatoil

The CPA (Cubic Plus Association) hydrate model is the recommended model for systems containing polar components like water, MEG, and methanol. It uses the CPA equation of state for fugacity calculations.

Key Features:

Usage:

SystemInterface fluid = new SystemSrkCPAstatoil(273.15, 100.0);
fluid.addComponent("methane", 0.9);
fluid.addComponent("water", 0.1);
fluid.setMixingRule(10);  // CPA mixing rule
fluid.setHydrateCheck(true);

PVTsim Hydrate Model

Class: ComponentHydratePVTsim

The default hydrate model based on the PVTsim approach, suitable for hydrocarbon-water systems.

Key Features:

Usage:

SystemInterface fluid = new SystemSrkEos(273.15, 100.0);
fluid.addComponent("methane", 0.9);
fluid.addComponent("water", 0.1);
fluid.setMixingRule("classic");
fluid.setHydrateCheck(true);

Ballard Model

Class: ComponentHydrateBallard

Based on the work of Ballard (2002), this model uses an improved approach for Langmuir constant calculation.

Kluda Model

Class: ComponentHydrateKluda

Alternative hydrate model with different parameterization for specific applications.


Component Parameters

Hydrate-specific parameters are stored in the component database:

Parameter Description Unit
LJdiameterHYDRATE Lennard-Jones diameter for hydrate cavity Å
LJepsHYDRATE Lennard-Jones energy parameter K
sphericalCoreRadius Kihara spherical core radius Å

Hydrate Formers

Components that can occupy hydrate cavities (hydrate formers):

Component Structure Small Cavity Large Cavity
Methane sI, sII
Ethane sI -
Propane sII -
i-Butane sII -
CO₂ sI
H₂S sI, sII
Nitrogen sII

Check if a component is a hydrate former:

boolean isFormer = fluid.getPhase(0).getComponent("methane").isHydrateFormer();

Hydrate Inhibitors

NeqSim supports thermodynamic hydrate inhibitors that shift the hydrate equilibrium curve:

Supported Inhibitors

Inhibitor Common Name Effect
MEG Monoethylene glycol Lowers hydrate temperature
TEG Triethylene glycol Lowers hydrate temperature
methanol Methanol Strong temperature depression
ethanol Ethanol Moderate temperature depression
NaCl Salt Salinity effect

Hu-Lee-Sum Universal Correlation

NeqSim implements the Hu-Lee-Sum universal correlation for hydrate suppression temperature (AIChE Journal 2017, 2018). This correlation relates hydrate temperature depression to water activity:

\[\frac{\Delta T}{T_0 T} = -\beta_{gas} \ln(a_w)\]

Where:

Additive Water Activity Effects

For combined salt + organic inhibitor systems, the water activity effects are additive:

\[\ln(a_w^{combined}) = \ln(a_w^{salt}) + \ln(a_w^{OI})\]

Where:

This means that combining MEG/methanol with salt gives more hydrate inhibition than either alone.

Electrolyte CPA Model for Combined Inhibitors

The SystemElectrolyteCPAstatoil class correctly predicts the additive behavior through fitted organic inhibitor-ion (OI-ion) interaction parameters. These ensure:

System Expected Behavior Model Validation
MEG + NaCl Lower hydrate T than MEG alone ✅ ~16°C additional depression
Methanol + NaCl Lower hydrate T than methanol alone ✅ ~0.8°C additional depression
Ethanol + NaCl Lower hydrate T than ethanol alone ✅ Additive effects

Example - Combined MEG + Salt Inhibition:

SystemInterface fluid = new SystemElectrolyteCPAstatoil(273.15 + 10.0, 100.0);
fluid.addComponent("methane", 0.80);
fluid.addComponent("ethane", 0.05);
fluid.addComponent("water", 0.12);
fluid.addComponent("MEG", 0.03);        // Organic inhibitor
fluid.addComponent("Na+", 0.01);        // Salt (NaCl)
fluid.addComponent("Cl-", 0.01);
fluid.setMixingRule(10);
fluid.setHydrateCheck(true);

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

// Combined effect: MEG + salt gives more depression than either alone
System.out.println("Hydrate T with MEG+salt: " + fluid.getTemperature("C") + " °C");

Inhibitor Calculations

// Calculate required MEG concentration for target temperature
SystemInterface fluid = new SystemSrkCPAstatoil(273.15 + 5.0, 80.0);
fluid.addComponent("methane", 0.85);
fluid.addComponent("ethane", 0.05);
fluid.addComponent("water", 0.08);
fluid.addComponent("MEG", 0.02);
fluid.setMixingRule(10);
fluid.setHydrateCheck(true);

ThermodynamicOperations ops = new ThermodynamicOperations(fluid);

// Calculate inhibitor concentration needed to prevent hydrate at 5°C
ops.hydrateInhibitorConcentration("MEG", 273.15 + 5.0);
double requiredMEGwt = fluid.getPhase("aqueous").getComponent("MEG").getwtfrac();

Usage Examples

Basic Hydrate Check

import neqsim.thermo.system.SystemSrkCPAstatoil;
import neqsim.thermodynamicoperations.ThermodynamicOperations;

// Create fluid at potential hydrate conditions
SystemInterface fluid = new SystemSrkCPAstatoil(273.15 + 5.0, 100.0);
fluid.addComponent("methane", 0.85);
fluid.addComponent("ethane", 0.08);
fluid.addComponent("propane", 0.04);
fluid.addComponent("water", 0.03);
fluid.setMixingRule(10);
fluid.setHydrateCheck(true);  // Enable hydrate phase

ThermodynamicOperations ops = new ThermodynamicOperations(fluid);

// Calculate hydrate formation temperature
ops.hydrateFormationTemperature();
System.out.println("Hydrate formation T: " + fluid.getTemperature("C") + " °C");

Hydrate Equilibrium Curve

// Generate hydrate PT curve
double[] pressures = {10, 20, 50, 100, 150, 200}; // bar
System.out.println("P (bar)\tT_hydrate (°C)");

for (double P : pressures) {
    fluid.setPressure(P);
    fluid.setTemperature(280.0);  // Initial guess
    ops.hydrateFormationTemperature();
    System.out.println(P + "\t" + fluid.getTemperature("C"));
}

Cavity Occupancy

// Get cavity occupancy for each guest molecule
PhaseInterface hydratePhase = fluid.getPhase(PhaseType.HYDRATE);

for (int i = 0; i < hydratePhase.getNumberOfComponents(); i++) {
    if (hydratePhase.getComponent(i).isHydrateFormer()) {
        ComponentHydrate comp = (ComponentHydrate) hydratePhase.getComponent(i);
        double smallCavity = comp.calcYKI(0, 0, hydratePhase);  // Structure I, small cavity
        double largeCavity = comp.calcYKI(0, 1, hydratePhase);  // Structure I, large cavity
        System.out.println(comp.getName() + 
            " - Small: " + smallCavity + ", Large: " + largeCavity);
    }
}

Electrolyte CPA Hydrate Model Validation

The electrolyte CPA model has been extensively validated for hydrate equilibrium calculations with various inhibitor combinations.

Test Matrix and Results (December 2024)

Test Case Description Result Notes
Pure hydrocarbon + water Basic hydrate formation ✅ ~20°C at 100 bar Baseline
With NaCl salt Salt inhibition ✅ ~4°C depression Correct salting-out
With MEG Glycol inhibition ✅ ~22°C depression Strong inhibition
With methanol Alcohol inhibition ✅ ~17°C depression Strong inhibition
MEG + NaCl combined Additive effects ✅ ~16°C additional Per Hu-Lee-Sum
Methanol + NaCl combined Additive effects ✅ ~0.8°C additional Per Hu-Lee-Sum
Natural gas with N₂ Inert gas ✅ Correct hydrate T N₂ partitioning
Gas-condensate with oil Heavy fractions ✅ ~19°C at 100 bar C4+ handling
Offshore scenario Full complexity ✅ Complete solution All components

Water Activity Validation (Hu-Lee-Sum Correlation)

The model correctly predicts additive water activity behavior:

System Water Activity (a_w) ln(a_w)
Pure water reference 0.997 -0.003
With NaCl only 0.662 -0.413
With MEG only 0.649 -0.432
Combined MEG + NaCl 0.413 -0.884
Expected additive - -0.843

The actual combined ln(a_w) of -0.884 is slightly more negative than the expected -0.843, indicating the model predicts slightly stronger than additive inhibition, which is physically reasonable.

Gas-Ion Interaction Parameters (Salting-Out Effect)

The electrolyte CPA model includes fitted gas-ion interaction parameters (Wij) to correctly predict the salting-out effect of dissolved gases:

Gas k_s (L/mol) W_cation W_anion
CO₂ 0.10 1.05e-4 1.05e-4
CH₄ 0.12 1.10e-4 1.10e-4
C₂H₆ 0.13 1.13e-4 1.13e-4
C₃H₈ 0.14 1.15e-4 1.15e-4
C₄ 0.15 1.20e-4 1.20e-4
C₅+ 0.16 1.25e-4 1.25e-4
N₂ 0.10-0.12 1.05e-4 1.05e-4
H₂S 0.06-0.08 1.10e-4 1.10e-4

Organic Inhibitor-Ion Parameters

For combined salt + organic inhibitor systems, explicit OI-ion interaction parameters ensure additive hydrate inhibition:

Inhibitor W_cation W_anion Notes
Methanol 1.5e-4 1.5e-4 Fitted for additive behavior
MEG 0.0 0.0 Default calculation works
Ethanol 1.3e-4 1.3e-4 Interpolated

References

  1. van der Waals, J.H., Platteeuw, J.C. (1959). “Clathrate Solutions.” Advances in Chemical Physics, 2, 1-57.

  2. Sloan, E.D., Koh, C.A. (2008). Clathrate Hydrates of Natural Gases, 3rd ed. CRC Press.

  3. Ballard, A.L., Sloan, E.D. (2002). “The next generation of hydrate prediction: I. Hydrate standard states and incorporation of spectroscopy.” Fluid Phase Equilibria, 194-197, 371-383.

  4. Kontogeorgis, G.M., et al. (2006). “Ten Years with the CPA (Cubic-Plus-Association) Equation of State.” Industrial & Engineering Chemistry Research, 45, 4855-4868.

  5. Munck, J., Skjold-Jørgensen, S., Rasmussen, P. (1988). “Computations of the formation of gas hydrates.” Chemical Engineering Science, 43, 2661-2672.

  6. Hu, Y., Lee, B.R., Sum, A.K. (2017). “Universal correlation for gas hydrates suppression temperature of inhibited systems: I. Single salts.” AIChE Journal, 63(11), 5111-5124. DOI: 10.1002/aic.15868

  7. Hu, Y., Lee, B.R., Sum, A.K. (2018). “Universal correlation for gas hydrates suppression temperature of inhibited systems: II. Mixed salts and structure type.” AIChE Journal, 64(6), 2240-2250. DOI: 10.1002/aic.16generalized



Last updated: February 2026