NGA/RGA case

The Gas Analyzers (RGA, NGA, and LGA) are specific GC configurations that are designed to provide analysis for most gas streams. Customers need to determine the per cent composition and calorific content of their process stream(s).

These computations need usage of a lot of chemical constants.

The difficulty in such an application is to setup the calculation themselves and build the Data Analysis processing method, the Constant file and the formulas consistent in terms of compound and constant naming. Indeed, the way the calibration processing is setup may influence the formulas. Calibration can be done in mole%, vol% or weight% and conversions must be done prior to any further calculations.

The total number of CCs needed is more than 100. The constant file may contain more than 180 compounds and more than 20 constants.

For example, below is the CCs needed to compute the Gross Heat value for NGA/RGA in FPS (Foot per second) at 14.696 psia and 60 °F for amounts calculated in mole%.

Formula of Gross Heat Value

Hgross,v(Pb) =Σ(xi*Hgross,v,i(60°F)*(Pb/14.696))/Zsample

where

Hgross,v,i(60°F)

Gross heat value (BTU/ft3) of compound i at 60°F

Pb

Base Pressure (psia)

Zsample

Compressibility factor of the gas at Pb

Display names and definitions

Base PressureBase Pressure

  • Scope: Sequence

  • Type: Double

  • ID: AppInput_BasePressure

  • Formula: 14.696

Data input modeData input mode

  • Scope: Sequence

  • Type: String

  • ID: AppInput_DataInputMode

  • Formula: "mole"

Apply water correctionApply water correction

  • Scope: Sequence

  • Type: Boolean

  • ID: AppInput_ApplyWaterCorrection

  • Formula: False

(c) WaterPressure at 60°F(c) WaterPressure at 60°F

  • Scope: Sequence

  • Type: Double

  • ID: Constant_WaterPressure

  • Formula: 0.25640

(c) H2O Summation factor(c) H2O Summation factor

  • Scope: Sequence

  • Type: Double

  • ID: Constant_H2O_SummationFactor

  • Formula: 0.0651

Xi for water (not normalized)Xi for water (not normalized)

  • Scope: Injection

  • Type: Double

  • ID: Xi_H2O_NotNormalized

  • Formula: if (AppInput_ApplyWaterCorrection,Constant_WaterPressure / AppInput_BasePressure,0)

Xi Norm for waterXi Norm for water

  • Scope: Injection

  • Type: Double

  • ID: Xi_H2O_Sat

  • Formula: Xi_H2O_NotNormalized

H2O compressibility (Sat)H2O compressibility (Sat)

  • Scope: Injection

  • Type: Double

  • ID: CompoundCompressibility_H2O_Sat

  • Formula: Xi_H2O_Sat *C onstant_H2O_SummationFactor

Compressibility Gas MixtureCompressibility Gas Mixture

  • Scope: Injection

  • Type: Double

  • ID: ZSample_Dry

  • Formula: 1 - AppInput_BasePressure * pow(Sum("CompoundCompressibility_Dry", CurrentInjection.AllIdentifiedPeaks), 2)

Superior Heat Value (dry) in BTU/ft3Superior Heat Value (dry) in BTU/ft3

  • Scope: Injection

  • Type: Double

  • ID: SuperiorHeatValue_Dry_BTU_ft3

  • Formula: Sum("CompoundSuperiorHeatValue_Dry_BTU_ft3", CurrentInjection.AllIdentifiedPeaks)

(c)Molecular Weight(c)Molecular Weight

  • Scope: PeakGroupCompound

  • Type: Double

  • ID: Constant_MolecularWeight

  • Formula: GetConstant("MW")

(c)Superior Heat Value in BTU/ft3(c)Superior Heat Value in BTU/ft3

  • Scope: PeakGroupCompound

  • Type: Double

  • ID: Constant_SuperiorHeatValue_BTU_ft3

  • Formula: GetConstant("Gross BTU/ft^3")

(c)Summation Factor(c)Summation Factor

  • Scope: PeakGroupCompound

  • Type: Double

  • ID: Constant_SummationFactor

  • Formula: GetConstant("sum")

Mole% (compound amount)Mole% (compound amount)

  • Scope: PeakGroupCompound

  • Type: Double

  • ID: MolePercent

  • Formula: if (AppInput_DataInputMode = "mole", Compound_Amount,double.NaN)

Weight% (compound amount)Weight% (compound amount)

  • Scope: PeakGroupCompound

  • Type: Double

  • ID: WeightPerCent

  • Formula: if (AppInput_DataInputMode = "weight",Compound_Amount / Constant_MolecularWeight,double.NaN)

Volume% (compound amount)Volume% (compound amount)

  • Scope: PeakGroupCompound

  • Type: Double

  • ID: VolumePerCent

  • Formula: if (AppInput_DataInputMode = "volume", Compound_Amount / GetConstant("Z (Compress)"),double.NaN)

Mole% (not normalized)Mole% (not normalized)

  • Scope: PeakGroupCompound

  • Type: Double

  • ID: MolePerCentNotNormalized

  • Formula: if (AppInput_DataInputMode = "volume", VolumePerCent, if (AppInput_DataInputMode = "weight", WeightPerCent,MolePercent))

Mole % (Normalized dry)Mole % (Normalized dry)

  • Scope: PeakGroupCompound

  • Type: Double

  • ID:MoleFractionNormalized_Dry

  • Formula: MolePerCentNotNormalized/ Sum("MolePerCentNotNormalized",CurrentInjection.AllIdentifiedPeaks)

Compressibility (dry)Compressibility (dry)

  • Scope: PeakGroupCompound

  • Type: Double

  • ID: CompoundCompressibility_Dry

  • Formula: MoleFractionNormalized_Dry * Constant_SummationFactor

Superior Heat Value (dry) in BTU/ft3Superior Heat Value (dry) in BTU/ft3

  • Scope: PeakGroupCompound

  • Type: Double

  • ID: CompoundSuperiorHeatValue_Dry_BTU_ft3

  • Formula: MoleFractionNormalized_Dry * Constant_SuperiorHeatValue_BTU_ft3 * AppInput_BasePressure / 14.696 / ZSample_Dry