High-performance WebAssembly implementation of the GERG-2008 equation of state and AGA8 methods for natural gas properties calculations. This package provides JavaScript/TypeScript bindings to the industry-standard algorithms for precise gas property calculations.
-
Three Calculation Methods:
- 📊 GERG-2008 (Reference equations for high-accuracy calculations)
- 🔍 Detail (AGA8 Part 1 method for precise gas mixtures)
- 📈 Gross (AGA8 Part 2 method for simplified calculations)
-
Complete Gas Support:
- 🧪 Full support for all 21 gas components defined by AGA8
- 🎯 High-precision calculations for natural gas mixtures
- 🌡️ Wide range of temperature and pressure conditions
-
Technical Excellence:
- ⚡ WebAssembly-powered for near-native performance
- 📦 Tree-shakeable npm package
- 💪 TypeScript type definitions included
- 📚 Comprehensive API documentation
Try it now at Lasersmart AGA8!
View the demo source code in our Vue.js implementation.
npm install @sctg/aga8-js
import AGA8wasm, { type GasMixture } from '@sctg/aga8-js';
// Initialize AGA8 module
const AGA8 = await AGA8wasm();
AGA8.SetupGERG();
// Define gas mixture (94% methane, 5% CO2, 1% helium)
const mixture: GasMixture = {
methane: 0.94,
nitrogen: 0,
carbon_dioxide: 0.05,
ethane: 0,
propane: 0,
isobutane: 0,
n_butane: 0,
isopentane: 0,
n_pentane: 0,
n_hexane: 0,
n_heptane: 0,
n_octane: 0,
n_nonane: 0,
n_decane: 0,
hydrogen: 0,
oxygen: 0,
carbon_monoxide: 0,
water: 0,
hydrogen_sulfide: 0,
helium: 0.01,
argon: 0
}
// Calculate properties
const molarMass = AGA8.MolarMassGERG(mixture);
const { D: density } = AGA8.DensityGERG(0, 400, 50000, mixture);
const properties = AGA8.PropertiesGERG(400, density, mixture);
console.log('Results:', {
molarMass: `${molarMass.toFixed(4)} g/mol`,
density: `${density.toFixed(4)} mol/L`,
compressibility: properties.Z.toFixed(6),
soundSpeed: `${properties.W.toFixed(2)} m/s`
});
- sonic-nozzle-flow.ts: Calculate the flow rate through a sonic nozzle
- gas-properties-calculations.ts: Calculate gas properties for a mixture using GERG-2008
- Node.js ≥ 22.0.0
- Emscripten SDK ≥ 4.0.0
- CMake ≥ 3.10
# Emscripten SDK installation
# Clone repository
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
# Download and install the 4.0.1 SDK
./emsdk install 4.0.1
./emsdk activate 4.0.1
source ./emsdk_env.sh
# WebAssembly module build
# Clone repository
git clone https://github.com/sctg-development/aga8-js.git
cd aga8-js
# Install dependencies
npm install
# Build WebAssembly module
npm run build
# Run tests
npm test
We welcome contributions!
- AGA8-JS: GNU Affero General Public License v3.0
- Original AGA8 Implementation: Public Domain (NIST)
- Original AGA8 implementation by the National Institute of Standards and Technology (NIST)
- WebAssembly port, AGA8 modifications and maintenance by Ronan LE MEILLAT
- Create an Issue