Mass Transfer Modeling in NeqSim
This document provides detailed documentation of the mass transfer models implemented in the NeqSim fluid mechanics package, focusing on diffusivity correlations and reactive mass transfer.
Related Documentation:
- MassTransferAPI.md - API reference for interfacial area and kL/kG methods
- InterphaseHeatMassTransfer.md - Theory for interphase transfer
- EvaporationDissolutionTutorial.md - Practical tutorial
Table of Contents
- Overview
- Theoretical Background
- Single-Phase Mass Transfer
- Two-Phase Mass Transfer
- Multicomponent Mass Transfer
- Reactive Mass Transfer
- Implementation Classes
- Usage Examples
- References
Overview
NeqSim implements rigorous multicomponent mass transfer models based on non-equilibrium thermodynamics. The models are suitable for:
- Gas-liquid absorption and stripping
- Condensation and evaporation in pipelines
- Distillation and packed column simulation
- High-pressure natural gas processing
The theoretical foundation is described in:
Solbraa, E. (2002). Equilibrium and Non-Equilibrium Thermodynamics of Natural Gas Processing. Dr.ing. thesis, NTNU. Available at NVA
Theoretical Background
Fick’s Law vs Maxwell-Stefan
For binary systems, Fick’s law is adequate:
\[J_A = -D_{AB} \cdot c_t \cdot \nabla x_A\]For multicomponent systems, NeqSim uses the Maxwell-Stefan equations:
\[-\frac{c_t}{RT} \nabla \mu_i = \sum_{j=1, j \neq i}^{n} \frac{x_i N_j - x_j N_i}{c_t D_{ij}}\]Where:
- $c_t$ = total molar concentration (mol/m³)
- $\mu_i$ = chemical potential of component i
- $x_i$ = mole fraction of component i
- $N_i$ = molar flux of component i (mol/m²·s)
- $D_{ij}$ = Maxwell-Stefan diffusion coefficient (m²/s)
Film Theory
The film theory assumes mass transfer occurs across a stagnant film of thickness $\delta$:
\[N_i = k_i \cdot c_t \cdot (x_{i,bulk} - x_{i,interface})\]Where $k_i = D_i / \delta$ is the mass transfer coefficient.
Penetration Theory
For unsteady-state mass transfer (short contact times):
\[k_L = 2 \sqrt{\frac{D}{\pi t_c}}\]Where $t_c$ is the contact time.
Single-Phase Mass Transfer
Wall Mass Transfer
Mass transfer from a flowing fluid to a solid wall (pipe wall, packing surface):
Dimensionless Numbers
| Number | Definition | Physical Meaning |
|---|---|---|
| Sherwood (Sh) | $k_c \cdot d / D$ | Ratio of convective to diffusive mass transfer |
| Schmidt (Sc) | $\nu / D$ | Ratio of momentum to mass diffusivity |
| Reynolds (Re) | $\rho v d / \mu$ | Ratio of inertial to viscous forces |
Correlations
Laminar Flow (Re < 2300): \(Sh = 3.66\)
Turbulent Flow (Re > 10000): \(Sh = 0.023 \cdot Re^{0.83} \cdot Sc^{0.33}\)
Transition Region (2300 < Re < 4000): Linear interpolation between laminar and turbulent values.
Diffusion Coefficients
Gas Phase
Chapman-Enskog theory for binary diffusion:
\[D_{AB} = \frac{0.00266 \cdot T^{3/2}}{P \cdot M_{AB}^{1/2} \cdot \sigma_{AB}^2 \cdot \Omega_D}\]Where:
- $T$ = temperature (K)
- $P$ = pressure (bar)
- $M_{AB}$ = reduced molecular weight
- $\sigma_{AB}$ = collision diameter (Å)
- $\Omega_D$ = collision integral
Liquid Phase
NeqSim provides multiple liquid-phase diffusivity models, each optimized for different applications:
1. Wilke-Chang Correlation (Default)
\[D_{AB} = 7.4 \times 10^{-8} \cdot \frac{(\phi M_B)^{0.5} \cdot T}{\mu_B \cdot V_A^{0.6}}\]Where:
- $\phi$ = association factor (2.6 for water, 1.0 for non-associated)
- $M_B$ = molecular weight of solvent
- $\mu_B$ = viscosity of solvent (cP)
- $V_A$ = molar volume of solute at boiling point (cm³/mol)
2. Siddiqi-Lucas Method
Uses group contribution based on molecular weight and solvent viscosity:
- Aqueous systems: $D_{AB} = 2.98 \times 10^{-7} \cdot V_A^{-0.5473} \cdot \mu_B^{-1.026}$
- Non-aqueous systems: $D_{AB} = 9.89 \times 10^{-8} \cdot V_A^{-0.791} \cdot \mu_B^{-0.907}$
Best for: General aqueous and organic liquid systems at low to moderate pressures.
3. Hayduk-Minhas Method
Optimized for hydrocarbon systems (Hayduk & Minhas, 1982):
- Paraffin solvents: $D_{AB} = 13.3 \times 10^{-8} \cdot \frac{T^{1.47} \cdot \mu_B^{(\epsilon_B)}}{V_A^{0.71}}$
- Where: $\epsilon_B = \frac{10.2}{V_A} - 0.791$
- Aqueous solvents: $D_{AB} = 1.25 \times 10^{-8} \cdot (V_A^{-0.19} - 0.292) \cdot T^{1.52} \cdot \mu_B^{\epsilon}$
- Where: $\epsilon = \frac{9.58}{V_A} - 1.12$
Best for: Hydrocarbon-hydrocarbon diffusion in oil/gas applications.
// Example: Using Hayduk-Minhas for oil system
PhysicalProperties physProps = system.getPhase(1).getPhysicalProperties();
Diffusivity diffModel = new HaydukMinhasDiffusivity(physProps);
diffModel.calcDiffusionCoefficients(0, 0); // binaryMethod, multicomponentMethod
double Dij = diffModel.getMaxwellStefanBinaryDiffusionCoefficient(0, 1);
4. CO2-Water (Tamimi Correlation)
Specialized for CO2 diffusion in water, validated against experimental data:
\[D_{CO_2} = 2.35 \times 10^{-6} \cdot \exp\left(\frac{-2119}{T}\right)\]Best for: Carbon capture applications, CO2 absorption/desorption studies.
5. High-Pressure Correction
For reservoir and deep-water conditions (>100 bar), apply Mathur-Thodos correction:
\[D_P = D_0 \cdot f(\rho_r)\]The correction factor accounts for increased molecular crowding at high pressures and can reduce diffusivity by 10× at 400 bar.
// Example: High-pressure diffusivity
PhysicalProperties physProps = system.getPhase(1).getPhysicalProperties();
HighPressureDiffusivity hpModel = new HighPressureDiffusivity(physProps);
hpModel.calcDiffusionCoefficients(0, 0); // applies HP correction automatically
double correctionFactor = hpModel.getPressureCorrectionFactor();
Model Selection Guide
| Application | Recommended Model | Notes |
|---|---|---|
| General aqueous | Siddiqi-Lucas (aqueous) | Well-validated for dilute solutions |
| General organic | Siddiqi-Lucas (non-aqueous) | Good for organic solvents |
| Oil/gas hydrocarbons | Hayduk-Minhas (paraffin) | 2-3× higher than Siddiqi-Lucas, physically appropriate for oils |
| CO2 in water | CO2-water (Tamimi) | Best accuracy (±11% of literature) |
| Reservoir conditions | High-pressure + Hayduk-Minhas | Critical for P > 100 bar |
Model Comparison Results
Based on validation testing at 300 K, 1 atm for CO2 in water (literature: 1.9×10⁻⁹ m²/s):
| Model | Predicted (m²/s) | Error |
|---|---|---|
| Hayduk-Minhas (aqueous) | 1.71×10⁻⁹ | -10% |
| CO2-water (Tamimi) | 2.12×10⁻⁹ | +11% |
| Siddiqi-Lucas | 1.39×10⁻⁹ | -27% |
For hydrocarbon systems, Hayduk-Minhas produces values 2-3.5× higher than Siddiqi-Lucas, which is consistent with the different physical basis of the correlations.
Automatic Model Selection
The DiffusivityModelSelector class can automatically choose the optimal model:
// Automatic model selection based on composition and conditions
PhaseInterface phase = system.getPhase(1);
PhysicalProperties physProps = phase.getPhysicalProperties();
DiffusivityModelSelector.DiffusivityModelType modelType =
DiffusivityModelSelector.selectOptimalModel(phase);
Diffusivity model = DiffusivityModelSelector.createModel(physProps, modelType);
// Or use auto-selection directly:
Diffusivity autoModel = DiffusivityModelSelector.createAutoSelectedModel(physProps);
Selection criteria:
- Detects CO2-water systems → uses CO2-water model
- Detects predominantly hydrocarbon → uses Hayduk-Minhas
- Falls back to Siddiqi-Lucas for other systems
- Applies high-pressure correction when P > 100 bar
Future Development Possibilities
-
Concentration-dependent diffusivity (Vignes mixing rule): \(D_{AB,mix} = D_{AB}^{x_B} \cdot D_{BA}^{x_A}\) Currently implemented but may cause numerical issues with very different diffusivities.
-
Binary interaction parameters: Allow user-tuning for specific component pairs.
- Additional correlations:
- Tyn-Calus for associated liquids
- Scheibel for high-viscosity systems
- He-Yu for supercritical fluids
- Temperature extrapolation warnings: Alert users when operating outside correlation validity ranges (typically 273-400 K).
Two-Phase Mass Transfer
Interphase Mass Transfer
At the gas-liquid interface, mass transfer occurs from both sides:
Gas Bulk | Interface | Liquid Bulk
| |
x_i,G,bulk --|-- x_i,I ----|-- x_i,L,bulk
| |
k_G | Equilibrium| k_L
| K_i |
Two-Resistance Model
The overall mass transfer coefficient combines gas and liquid resistances:
\[\frac{1}{K_{OG}} = \frac{1}{k_G} + \frac{m}{k_L}\] \[\frac{1}{K_{OL}} = \frac{1}{k_L} + \frac{1}{m \cdot k_G}\]Where $m = dy/dx$ is the slope of the equilibrium line.
Flow Regime Dependence
The mass transfer coefficients depend strongly on the flow regime:
| Flow Regime | Interfacial Area | Gas-side $k_G$ | Liquid-side $k_L$ |
|---|---|---|---|
| Stratified | $A_i = W \cdot L$ (flat interface) | Smooth surface correlation | Penetration theory |
| Annular | $A_i = \pi d L$ (film on wall) | Core flow correlation | Film flow correlation |
| Droplet/Mist | $A_i = 6\epsilon/d_p$ (droplet surface) | External mass transfer | Internal circulation |
| Bubble | $A_i = 6\epsilon/d_b$ (bubble surface) | External mass transfer | Higbie penetration |
| Slug | Combined film + slug | Varies with position | Varies with position |
Stratified Flow
For stratified gas-liquid flow in pipes:
Gas-side (smooth interface): \(Sh_G = 0.023 \cdot Re_G^{0.83} \cdot Sc_G^{0.33}\)
Liquid-side (penetration theory): \(k_L = 2 \sqrt{\frac{D_L \cdot v_L}{\pi \cdot L}}\)
Annular Flow
For annular flow with liquid film:
Gas core: \(Sh_G = 0.023 \cdot Re_G^{0.8} \cdot Sc_G^{0.33} \cdot \left(1 + 0.1 \cdot (d/\delta)^{0.5}\right)\)
Liquid film: \(k_L = \frac{D_L}{\delta} \cdot f(Re_{film})\)
Multicomponent Mass Transfer
Krishna-Standart Model
NeqSim implements the Krishna-Standart multicomponent mass transfer model. For a system with $n$ components:
Binary Mass Transfer Coefficients
First, calculate binary coefficients from correlations:
for (int i = 0; i < nComponents; i++) {
for (int j = 0; j < nComponents; j++) {
// Schmidt number
Sc[i][j] = kinematicViscosity / D[i][j];
// Binary mass transfer coefficient
k_binary[i][j] = calcInterphaseMassTransferCoefficient(phase, Sc[i][j], node);
}
}
Mass Transfer Coefficient Matrix
Build the $(n-1) \times (n-1)$ matrix $[\mathbf{k}]$:
\[k_{ii} = \sum_{j \neq i} \frac{x_j}{k_{ij}} + \frac{x_i}{k_{in}}\] \[k_{ij} = -x_i \left(\frac{1}{k_{ij}} - \frac{1}{k_{in}}\right) \quad (i \neq j)\]Where component $n$ is the reference (typically the most abundant).
Flux Calculation
The molar flux vector:
\[\mathbf{N} = c_t [\mathbf{k}]^{-1} (\mathbf{x}_{bulk} - \mathbf{x}_{interface})\]Corrections
Thermodynamic Correction
For non-ideal solutions, the driving force includes activity coefficient gradients:
\[[\Gamma] = [\delta_{ij} + x_i \frac{\partial \ln \gamma_i}{\partial x_j}]\]The corrected flux: \(\mathbf{N} = c_t [\mathbf{k}][\Gamma]^{-1} (\mathbf{x}_{bulk} - \mathbf{x}_{interface})\)
Finite Flux Correction (Stefan Flow)
For high mass transfer rates, the film theory correction:
\[[\Xi] = [\Phi](e^{[\Phi]} - I)^{-1}\]Where $[\Phi]$ is the rate factor matrix.
Reactive Mass Transfer
Enhancement Factor
Chemical reactions in the liquid phase enhance mass transfer:
\[N_A = E \cdot k_L \cdot (C_{A,i} - C_{A,bulk})\]Where $E \geq 1$ is the enhancement factor.
Hatta Number
The Hatta number characterizes the reaction regime:
\[Ha = \frac{\sqrt{k_{rxn} \cdot D_A}}{k_L}\]| Ha Range | Regime | Location of Reaction |
|---|---|---|
| Ha < 0.3 | Slow | Bulk liquid |
| 0.3 < Ha < 3 | Intermediate | Film and bulk |
| Ha > 3 | Fast | Within film |
| Ha » 3 | Instantaneous | At interface |
Enhancement Factor Models
Pseudo-First Order (Fast Reaction)
\[E = \frac{Ha}{\tanh(Ha)}\]Instantaneous Reaction
\[E_{\infty} = 1 + \frac{D_B \cdot C_{B,bulk}}{\nu_B \cdot D_A \cdot C_{A,i}}\]Where $\nu_B$ is the stoichiometric coefficient.
General Case (Danckwerts)
\[E = \frac{\sqrt{1 + Ha^2 \cdot (E_{\infty} - 1)/E_{\infty}}}{1 + (E_{\infty} - 1)^{-1}}\]CO₂-Amine Systems
NeqSim includes specific models for CO₂ absorption:
Reaction Mechanism (MDEA)
CO₂ + MDEA + H₂O ⇌ MDEAH⁺ + HCO₃⁻ (slow, base-catalyzed)
CO₂ + OH⁻ ⇌ HCO₃⁻ (parallel)
Reaction Kinetics
\[r_{CO2} = k_2 \cdot [CO_2] \cdot [MDEA]\]With Arrhenius temperature dependence:
\[k_2 = A \cdot \exp\left(-\frac{E_a}{RT}\right)\]| Amine | A (m³/mol·s) | Eₐ (kJ/mol) | Source |
|---|---|---|---|
| MDEA | 4.01×10⁸ | 42.0 | Rinker et al. (1995) |
| MEA | 4.4×10¹¹ | 50.5 | Hikita et al. (1977) |
| DEA | 1.3×10¹⁰ | 47.5 | Blauwhoff et al. (1984) |
High-Pressure Effects
From the thesis work, high-pressure effects on CO₂ absorption include:
- Reduced CO₂ capacity at high total pressure (up to 40% reduction at 200 bar)
- Thermodynamic non-ideality must be modeled consistently
- Reaction kinetics relatively unaffected by pressure (with N₂ as inert)
Implementation Classes
Class Hierarchy
FluidBoundary (abstract)
├── EquilibriumFluidBoundary
└── NonEquilibriumFluidBoundary (abstract)
└── KrishnaStandartFilmModel
└── ReactiveKrishnaStandartFilmModel
└── ReactiveFluidBoundary
Key Classes
| Class | Location | Purpose |
|---|---|---|
FluidBoundary |
flownode.fluidboundary.heatmasstransfercalc |
Base class for interphase calculations |
NonEquilibriumFluidBoundary |
...nonequilibriumfluidboundary |
Non-equilibrium base |
KrishnaStandartFilmModel |
...filmmodelboundary |
Multicomponent film model |
ReactiveKrishnaStandartFilmModel |
...reactivefilmmodel |
With chemical reactions |
EnhancementFactor |
...enhancementfactor |
Enhancement factor calculations |
Key Methods
// FluidBoundary
public abstract void solve();
public double[] getMolarFlux();
public double[] getHeatFlux();
// KrishnaStandartFilmModel
public double calcBinarySchmidtNumbers(int phase);
public double calcBinaryMassTransferCoefficients(int phase);
public double calcMassTransferCoefficients(int phase);
public void calcPhiMatrix(int phase); // Finite flux correction
Usage Examples
Basic Two-Phase Mass Transfer
import neqsim.fluidmechanics.flownode.twophasenode.twophasepipeflownode.AnnularFlow;
import neqsim.fluidmechanics.geometrydefinitions.pipe.PipeData;
import neqsim.thermo.system.SystemSrkEos;
// Create two-phase system
SystemSrkEos fluid = new SystemSrkEos(300.0, 50.0);
fluid.addComponent("methane", 0.90);
fluid.addComponent("CO2", 0.05);
fluid.addComponent("water", 0.05);
fluid.setMixingRule("classic");
// Create pipe geometry
PipeData pipe = new PipeData(0.1); // 0.1 m diameter
// Create flow node
AnnularFlow node = new AnnularFlow(fluid, pipe);
node.init();
node.initFlowCalc();
// Enable mass transfer
node.getFluidBoundary().setMassTransferCalc(true);
node.getFluidBoundary().solve();
// Get results
double[] molarFlux = node.getFluidBoundary().getMolarFlux();
System.out.println("CO2 flux: " + molarFlux[1] + " mol/m²·s");
With Thermodynamic Corrections
// Enable activity coefficient corrections
node.getFluidBoundary().setThermodynamicCorrections(0, true); // Gas
node.getFluidBoundary().setThermodynamicCorrections(1, true); // Liquid
// Enable Stefan flow correction
node.getFluidBoundary().setFiniteFluxCorrection(0, true);
node.getFluidBoundary().setFiniteFluxCorrection(1, true);
node.getFluidBoundary().solve();
CO₂ Absorption with Reaction
import neqsim.thermo.system.SystemSrkCPAstatoil;
// Create system with amine
SystemSrkCPAstatoil fluid = new SystemSrkCPAstatoil(313.15, 30.0);
fluid.addComponent("nitrogen", 0.85);
fluid.addComponent("CO2", 0.10);
fluid.addComponent("water", 0.04);
fluid.addComponent("MDEA", 0.01);
fluid.setMixingRule(10); // CPA mixing rule
// Use reactive film model
// The enhancement factor is calculated automatically
// based on reaction kinetics and Hatta number
References
-
Solbraa, E. (2002). Equilibrium and Non-Equilibrium Thermodynamics of Natural Gas Processing. Dr.ing. thesis, NTNU. NVA
-
Krishna, R., Standart, G.L. (1976). Mass and energy transfer in multicomponent systems. Chem. Eng. Commun., 3(4-5), 201-275.
-
Taylor, R., Krishna, R. (1993). Multicomponent Mass Transfer. Wiley.
-
Danckwerts, P.V. (1970). Gas-Liquid Reactions. McGraw-Hill.
-
Poling, B.E., Prausnitz, J.M., O’Connell, J.P. (2001). The Properties of Gases and Liquids. 5th ed. McGraw-Hill.
-
Rinker, E.B., Ashour, S.S., Sandall, O.C. (1995). Kinetics and modelling of carbon dioxide absorption into aqueous solutions of N-methyldiethanolamine. Chem. Eng. Sci., 50(5), 755-768.
Related Documentation
- Heat Transfer Modeling - Companion heat transfer documentation
- Fluid Mechanics Overview - Main fluid mechanics documentation
- Physical Properties - Diffusivity models
- Thermodynamics - Activity coefficients and phase equilibria