Class ProducedWaterDegassingSystem
- All Implemented Interfaces:
Serializable
This class simplifies the setup of multi-stage degassing processes for produced water treatment, automatically calculating greenhouse gas emissions at each stage. Based on the methodology from "Virtual Measurement of Emissions from Produced Water Using an Online Process Simulator" (GFMW 2023).
Norwegian Regulatory Context
This implementation supports compliance with:
- Aktivitetsforskriften Section 70: Measurement and calculation requirements
- Norwegian offshore emission handbook: Replaces conventional solubility factor method
- Norwegian Environment Agency annual emission reporting
Thermodynamic Model
Uses SRK-CPA (Cubic Plus Association) equation of state with:
- Tuned binary interaction parameters (kij) for water-gas systems
- Electrolyte handling for saline produced water
- Validated uncertainty: +/-3.6% for total gas, +/-1% for CO2/CH4 composition
Typical Process
Water from Separator -> Degasser (3-5 barg) -> CFU (1 barg) -> Caisson (atm) -> Sea
| | |
Gas to Flare Gas to Vent Gas to Atmosphere
Usage Example
// Quick setup for a typical 3-stage system
ProducedWaterDegassingSystem system = new ProducedWaterDegassingSystem("Platform PW");
system.setWaterFlowRate(100.0, "m3/hr");
system.setWaterTemperature(80.0, "C");
system.setInletPressure(30.0, "bara");
// Set degassing stage pressures
system.setDegasserPressure(4.0, "bara");
system.setCFUPressure(1.0, "bara");
// Set dissolved gas composition (from PVT analysis)
system.setDissolvedGasComposition(new String[] {"CO2", "methane", "ethane", "propane"},
new double[] {0.51, 0.44, 0.04, 0.01} // mole fractions
);
// Optional: Apply tuned kij parameters from lab calibration
system.setTunedInteractionParameters(true);
// Run and get emissions
system.run();
System.out.println(system.getEmissionsReport());
// Compare with conventional handbook method
System.out.println(system.getMethodComparisonReport());
- Version:
- 1.1
- Author:
- ESOL
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ThreePhaseSeparatorprivate EmissionsCalculatorprivate Heaterprivate doubleprivate ThreePhaseSeparatorprivate EmissionsCalculatorprivate Heaterprivate doubleprivate ThreePhaseSeparatorprivate EmissionsCalculatorprivate Heaterprivate doubleprivate booleanprivate doublestatic final doubleWater-ethane kij parameter.static final doubleWater-propane kij parameter.static final doubleWater-methane kij base parameter (tuned).static final doubleWater-methane kij temperature coefficient.static final doubleWater-CO2 kij base parameter (tuned).static final doubleWater-CO2 kij temperature coefficient.private Doubleprivate Stringprivate ProcessSystemprivate doubleprivate static final longprivate booleanprivate doubleprivate Streamprivate double -
Constructor Summary
ConstructorsConstructorDescriptionCreates a produced water degassing system. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidApply tuned binary interaction parameters to the fluid.voidbuild()Build the process model.private doubleCalculate model Gas-Water Ratio.private voidcheckRun()private doubleconvertPressure(double pressure, String unit) Get emissions calculator for caisson.Get emissions calculator for CFU.Get emissions calculator for degasser.Generate comprehensive emissions report.Generate comparison report between thermodynamic and conventional methods.Get model gas composition (combined from all stages).Get the underlying process system.doubleGet total CO2 emission rate from all stages.doublegetTotalCO2Equivalents(String unit) Get total CO2 equivalents from all stages.doubleGet total methane emission rate from all stages.doubleGet total nmVOC emission rate from all stages.Get validation results comparing model predictions to lab data.private voidvoidrun()Run the simulation.voidRun the simulation with a specific UUID.voidsetCaissonPressure(double pressure, String unit) Set caisson pressure (typically atmospheric).voidsetCFUPressure(double pressure, String unit) Set CFU pressure.voidsetDegasserPressure(double pressure, String unit) Set degasser pressure.voidsetDissolvedGasComposition(String[] components, double[] moleFractions) Set dissolved gas composition.voidsetDissolvedGasComposition(Map<String, Double> composition) Set dissolved gas composition from a map.voidsetInletPressure(double pressure, String unit) Set inlet pressure (from upstream separator).voidsetLabGasComposition(Map<String, Double> composition) Set lab-measured gas composition for validation.voidsetLabGWR(double gwr) Set lab-measured Gas-Water Ratio for validation.voidsetSalinity(double salinity, String unit) Set water salinity.voidsetTunedInteractionParameters(boolean useTuned) Enable or disable tuned binary interaction parameters.voidsetWaterFlowRate(double flowRate, String unit) Set water flow rate.voidsetWaterTemperature(double temperature, String unit) Set water temperature.toMap()Get all results as a map for JSON export.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
name
-
process
-
waterFlowRate_kghr
private double waterFlowRate_kghr -
waterTemperature_K
private double waterTemperature_K -
inletPressure_bara
private double inletPressure_bara -
degasserPressure_bara
private double degasserPressure_bara -
cfuPressure_bara
private double cfuPressure_bara -
caissonPressure_bara
private double caissonPressure_bara -
salinity_wtpct
private double salinity_wtpct -
dissolvedGasComposition
-
useTunedKijParameters
private boolean useTunedKijParameters -
KIJ_WATER_CO2_BASE
public static final double KIJ_WATER_CO2_BASEWater-CO2 kij base parameter (tuned).- See Also:
-
KIJ_WATER_CO2_TEMP
public static final double KIJ_WATER_CO2_TEMPWater-CO2 kij temperature coefficient.- See Also:
-
KIJ_WATER_CH4_BASE
public static final double KIJ_WATER_CH4_BASEWater-methane kij base parameter (tuned).- See Also:
-
KIJ_WATER_CH4_TEMP
public static final double KIJ_WATER_CH4_TEMPWater-methane kij temperature coefficient.- See Also:
-
KIJ_WATER_C2H6
public static final double KIJ_WATER_C2H6Water-ethane kij parameter.- See Also:
-
KIJ_WATER_C3H8
public static final double KIJ_WATER_C3H8Water-propane kij parameter.- See Also:
-
labGWR
-
labGasComposition
-
waterInletStream
-
degasserHeater
-
degasser
-
cfuHeater
-
cfu
-
caissonHeater
-
caisson
-
degasserEmissions
-
cfuEmissions
-
caissonEmissions
-
hasRun
private boolean hasRun
-
-
Constructor Details
-
ProducedWaterDegassingSystem
Creates a produced water degassing system.- Parameters:
name- system name
-
-
Method Details
-
initializeDefaultComposition
private void initializeDefaultComposition() -
setWaterFlowRate
Set water flow rate.- Parameters:
flowRate- flow rate valueunit- "kg/hr", "m3/hr", "bbl/day"
-
setWaterTemperature
Set water temperature.- Parameters:
temperature- temperature valueunit- "C", "K", "F"
-
setInletPressure
Set inlet pressure (from upstream separator).- Parameters:
pressure- pressure in baraunit- "bara", "barg", "psia"
-
setDegasserPressure
Set degasser pressure.- Parameters:
pressure- pressure valueunit- "bara", "barg", "psia"
-
setCFUPressure
Set CFU pressure.- Parameters:
pressure- pressure valueunit- "bara", "barg", "psia"
-
setCaissonPressure
Set caisson pressure (typically atmospheric).- Parameters:
pressure- pressure valueunit- "bara", "barg", "psia"
-
setSalinity
Set water salinity.- Parameters:
salinity- salinity valueunit- "wt%", "ppm", "molal"
-
setDissolvedGasComposition
Set dissolved gas composition.- Parameters:
components- array of component namesmoleFractions- array of mole fractions (should sum to 1.0)
-
setDissolvedGasComposition
-
setTunedInteractionParameters
public void setTunedInteractionParameters(boolean useTuned) Enable or disable tuned binary interaction parameters.When enabled, uses kij parameters calibrated for high-salinity produced water systems per Kristiansen et al. (2023). These parameters improve prediction accuracy for:
- Water-CO2 interactions (kij = -0.24 + 0.001121×T)
- Water-CH4 interactions (kij = -0.72 + 0.002605×T)
- Water-C2H6 interactions (kij = 0.11)
- Water-C3H8 interactions (kij = 0.205)
- Parameters:
useTuned- true to use tuned parameters, false for defaults
-
setLabGWR
public void setLabGWR(double gwr) Set lab-measured Gas-Water Ratio for validation.The lab GWR should be measured from a representative water sample at standard conditions. This value is used to validate the model predictions.
- Parameters:
gwr- Gas-Water Ratio in Sm³ gas per Sm³ water
-
setLabGasComposition
Set lab-measured gas composition for validation.The gas composition should be from analysis of gas released during lab degassing. Component names should match NeqSim naming (e.g., "CO2", "methane", "ethane").
- Parameters:
composition- map of component name to mole fraction
-
getValidationResults
Get validation results comparing model predictions to lab data.Returns deviation metrics for:
- GWR: (model - lab) / lab × 100%
- Component compositions: absolute deviation in mol%
Per Norwegian handbook, acceptable uncertainty is +/-7.5% for regulatory reporting.
- Returns:
- map of validation metrics, or null if no lab data provided
-
calculateModelGWR
private double calculateModelGWR()Calculate model Gas-Water Ratio.- Returns:
- GWR in Sm³/Sm³
-
getModelGasComposition
-
build
public void build()Build the process model. -
run
public void run()Run the simulation. -
run
-
getTotalCO2EmissionRate
Get total CO2 emission rate from all stages.- Parameters:
unit- "kg/hr", "tonnes/year", etc.- Returns:
- total CO2 emission rate
-
getTotalMethaneEmissionRate
Get total methane emission rate from all stages.- Parameters:
unit- "kg/hr", "tonnes/year", etc.- Returns:
- total methane emission rate
-
getTotalNMVOCEmissionRate
Get total nmVOC emission rate from all stages.- Parameters:
unit- "kg/hr", "tonnes/year", etc.- Returns:
- total nmVOC emission rate
-
getTotalCO2Equivalents
Get total CO2 equivalents from all stages.- Parameters:
unit- "kg/hr", "tonnes/year", etc.- Returns:
- total CO2 equivalent emission rate
-
getDegasserEmissions
Get emissions calculator for degasser.- Returns:
- degasser emissions calculator
-
getCFUEmissions
Get emissions calculator for CFU.- Returns:
- CFU emissions calculator
-
getCaissonEmissions
Get emissions calculator for caisson.- Returns:
- caisson emissions calculator
-
getProcessSystem
-
getEmissionsReport
Generate comprehensive emissions report.- Returns:
- formatted report string
-
getMethodComparisonReport
Generate comparison report between thermodynamic and conventional methods.Shows how the NeqSim thermodynamic calculation compares to the conventional Norwegian handbook method. Highlights CO2 that the conventional method misses.
- Returns:
- formatted comparison report
-
toMap
-
applyTunedKijParameters
Apply tuned binary interaction parameters to the fluid.- Parameters:
fluid- the fluid system
-
checkRun
private void checkRun() -
convertPressure
-