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%.
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 |
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