Skip to the content.

Standards Package

The NeqSim standards package implements international standards for gas and oil quality calculations, enabling compliance verification and sales contract management.

Table of Contents


Overview

Location: neqsim.standards

The standards package provides implementations of:

  1. Gas Quality Standards - ISO 6976, ISO 6974, ISO 6578, ISO 15403, ISO 18453
  2. Oil Quality Standards - ASTM D6377 for vapor pressure
  3. Sales Contracts - Specification verification against contractual limits

Key Applications:


Package Structure

standards/
├── Standard.java                    # Abstract base class
├── StandardInterface.java           # Interface definition
│
├── gasquality/                      # Gas quality standards
│   ├── Standard_ISO6976.java        # Calorific values & Wobbe index
│   ├── Standard_ISO6976_2016.java   # ISO 6976:2016 edition
│   ├── Standard_ISO6974.java        # Gas chromatography composition
│   ├── Standard_ISO6578.java        # LNG density calculation
│   ├── Standard_ISO15403.java       # CNG fuel quality (MON, methane number)
│   ├── Draft_ISO18453.java          # Water dew point (GERG-water)
│   ├── Draft_GERG2004.java          # GERG-2004 EoS properties
│   ├── BestPracticeHydrocarbonDewPoint.java  # HC dew point
│   ├── GasChromotograpyhBase.java   # Gas composition base class
│   ├── SulfurSpecificationMethod.java  # H2S and sulfur content
│   └── UKspecifications_ICF_SI.java # UK ICF/SI specifications
│
├── oilquality/                      # Oil quality standards
│   └── Standard_ASTM_D6377.java     # Reid vapor pressure (RVP)
│
└── salescontract/                   # Contract management
    ├── BaseContract.java            # Contract implementation
    ├── ContractInterface.java       # Contract interface
    └── ContractSpecification.java   # Individual specifications

Sub-Documentation

Detailed guides for each major standard:

Guide Description
ISO 6976 - Calorific Values GCV, LCV, Wobbe index, density from composition
ISO 6578 - LNG Density LNG density calculation method
ISO 15403 - CNG Quality Methane number and MON for vehicle fuel
Dew Point Standards Water and hydrocarbon dew point methods
ASTM D6377 - RVP Reid vapor pressure for crude and condensate
Sales Contracts Contract specification and compliance checking

Core Concepts

StandardInterface

All standards implement StandardInterface:

public interface StandardInterface {
    void calculate();                              // Run calculation
    double getValue(String parameter);             // Get result
    double getValue(String parameter, String unit); // Get result with unit
    String getUnit(String parameter);              // Get unit string
    boolean isOnSpec();                            // Check compliance
    
    ContractInterface getSalesContract();          // Get attached contract
    void setSalesContract(ContractInterface contract);
    SystemInterface getThermoSystem();             // Get fluid
}

Standard Base Class

Standards extend Standard:

public abstract class Standard extends NamedBaseClass implements StandardInterface {
    protected SystemInterface thermoSystem;
    protected ThermodynamicOperations thermoOps;
    protected ContractInterface salesContract;
    protected String standardDescription;
    private String referenceState = "real";  // or "ideal"
    private double referencePressure = 70.0;
}

Reference States

Most gas quality standards support:

standard.setReferenceState("real");   // Default
standard.setReferenceState("ideal");  // Ideal gas assumption

Quick Start

ISO 6976 - Calorific Values

import neqsim.thermo.system.SystemSrkEos;
import neqsim.standards.gasquality.Standard_ISO6976;

// Create gas composition
SystemInterface gas = new SystemSrkEos(273.15 + 15, 1.01325);
gas.addComponent("methane", 0.90);
gas.addComponent("ethane", 0.05);
gas.addComponent("propane", 0.02);
gas.addComponent("nitrogen", 0.02);
gas.addComponent("CO2", 0.01);
gas.setMixingRule("classic");

// Create standard
// Parameters: system, volumeRefT(°C), energyRefT(°C), referenceType
Standard_ISO6976 iso6976 = new Standard_ISO6976(gas, 15, 15, "volume");
iso6976.setReferenceState("real");

// Calculate
iso6976.calculate();

// Get results
double gcv = iso6976.getValue("GCV");           // Gross calorific value [kJ/m³]
double lcv = iso6976.getValue("LCV");           // Net calorific value [kJ/m³]
double wobbe = iso6976.getValue("SuperiorWobbeIndex");  // Wobbe index [kJ/m³]
double relDens = iso6976.getValue("RelativeDensity");   // Relative density [-]
double Z = iso6976.getValue("CompressionFactor");       // Compressibility [-]
double molarMass = iso6976.getValue("MolarMass");       // g/mol

System.out.printf("GCV = %.2f kJ/m³%n", gcv);
System.out.printf("Wobbe Index = %.2f kJ/m³%n", wobbe);
System.out.printf("Relative Density = %.4f%n", relDens);

LNG Density (ISO 6578)

import neqsim.standards.gasquality.Standard_ISO6578;

// LNG composition
SystemInterface lng = new SystemSrkEos(110, 1.01325);  // -163°C
lng.addComponent("methane", 0.92);
lng.addComponent("ethane", 0.05);
lng.addComponent("propane", 0.02);
lng.addComponent("nitrogen", 0.01);
lng.setMixingRule("classic");

// Calculate density
Standard_ISO6578 iso6578 = new Standard_ISO6578(lng);
iso6578.calculate();

double density = iso6578.getValue("density", "kg/m3");
System.out.printf("LNG Density = %.2f kg/m³%n", density);

Water Dew Point (ISO 18453)

import neqsim.standards.gasquality.Draft_ISO18453;

// Natural gas with water
SystemInterface wetGas = new SystemSrkCPA(273.15 + 20, 70.0);
wetGas.addComponent("methane", 0.95);
wetGas.addComponent("water", 50e-6);  // 50 ppm water
wetGas.setMixingRule("CPA-EoS");

// Calculate water dew point
Draft_ISO18453 waterDewPoint = new Draft_ISO18453(wetGas);
waterDewPoint.calculate();

double wdp = waterDewPoint.getValue("dewPointTemperature");
System.out.printf("Water Dew Point = %.1f °C%n", wdp);

Reid Vapor Pressure (ASTM D6377)

import neqsim.standards.oilquality.Standard_ASTM_D6377;

// Crude oil / condensate
SystemInterface crude = new SystemSrkEos(273.15 + 15, 1.0);
crude.addComponent("methane", 0.02);
crude.addComponent("ethane", 0.03);
crude.addComponent("propane", 0.05);
crude.addComponent("n-butane", 0.08);
crude.addComponent("n-pentane", 0.10);
crude.addTBPfraction("C6", 0.15, 86/1000.0, 0.66);
crude.addTBPfraction("C10", 0.30, 142/1000.0, 0.78);
crude.addTBPfraction("C20", 0.27, 282/1000.0, 0.85);
crude.setMixingRule("classic");

// Calculate RVP
Standard_ASTM_D6377 rvpStandard = new Standard_ASTM_D6377(crude);
rvpStandard.setMethodRVP("VPCR4");  // Options: VPCR4, RVP_ASTM_D6377, RVP_ASTM_D323_82
rvpStandard.calculate();

double rvp = rvpStandard.getValue("RVP", "bara");
double tvp = rvpStandard.getValue("TVP", "bara");
System.out.printf("RVP = %.3f bara%n", rvp);
System.out.printf("TVP = %.3f bara%n", tvp);

Sales Contracts

Creating a Contract

import neqsim.standards.salescontract.BaseContract;
import neqsim.standards.salescontract.ContractInterface;

// Create contract from database
ContractInterface contract = new BaseContract(gas, "Kaarstoe", "Norway");

// Run compliance check
contract.runCheck();

// Get results
String[][] results = contract.getResultTable();
int numSpecs = contract.getSpecificationsNumber();

// Display results
contract.display();

Attaching Contract to Standard

Standard_ISO6976 standard = new Standard_ISO6976(gas);
standard.setSalesContract(contract);
standard.calculate();

// Check if on specification
boolean onSpec = standard.isOnSpec();

Custom Contract Specifications

import neqsim.standards.salescontract.ContractSpecification;

// Create custom specification
ContractSpecification spec = new ContractSpecification(
    "Water Dew Point",           // Name
    "Maximum water dew point",   // Description
    "Norway",                    // Country
    "Kaarstoe",                  // Terminal
    waterDewPointStandard,       // Standard method
    -20.0,                       // Min value
    -8.0,                        // Max value
    "°C",                        // Unit
    15.0,                        // Reference T measurement
    15.0,                        // Reference T combustion
    70.0,                        // Reference pressure
    "At 70 bar"                  // Comments
);

Available Return Parameters

ISO 6976

Parameter Description Unit
GCV / SuperiorCalorificValue Gross calorific value kJ/m³
LCV / InferiorCalorificValue Net calorific value kJ/m³
SuperiorWobbeIndex Superior Wobbe index kJ/m³
InferiorWobbeIndex Inferior Wobbe index kJ/m³
WI Wobbe index (alias) kJ/m³
RelativeDensity Relative density (air=1) -
CompressionFactor Compressibility factor Z -
MolarMass Average molar mass g/mol
DensityIdeal Ideal gas density kg/m³
DensityReal Real gas density kg/m³

ISO 6578

Parameter Description Unit
density LNG density kg/m³

ASTM D6377

Parameter Description Unit
RVP Reid vapor pressure bara
TVP True vapor pressure bara
VPCR4 Vapor pressure at V/L=4 bara

Reference Conditions

Standard Temperature/Pressure

Standard Volume Ref T Energy Ref T Pressure
ISO 6976 0, 15, 20°C 0, 15, 20, 25°C, 60°F 1.01325 bar
ISO 6578 -160 to -140°C - 1.01325 bar
ASTM D6377 37.8°C (100°F) - -

Setting Reference Conditions

// ISO 6976 with specific reference conditions
Standard_ISO6976 standard = new Standard_ISO6976(
    gas,
    15.0,      // Volume reference temperature (°C)
    25.0,      // Energy reference temperature (°C)  
    "volume"   // Reference type: "volume", "mass", or "molar"
);

// Modify reference conditions after creation
standard.setVolRefT(0.0);      // Volume at 0°C
standard.setEnergyRefT(15.0);  // Combustion at 15°C

Best Practices

Composition Normalization

Component Coverage

Reference State Selection

Contract Database


References

  1. ISO 6976:2016 - Natural gas — Calculation of calorific values, density, relative density and Wobbe indices from composition
  2. ISO 6578:2017 - Refrigerated hydrocarbon liquids — Static measurement — Calculation procedure
  3. ISO 15403-1:2006 - Natural gas — Natural gas for use as a compressed fuel for vehicles
  4. ISO 18453:2004 - Natural gas — Correlation between water content and water dew point
  5. ASTM D6377 - Standard Test Method for Determination of Vapor Pressure of Crude Oil
  6. GERG-2004 - The GERG-2004 Wide-Range Equation of State for Natural Gases and Other Mixtures