Class ProducedWaterTreatmentTrain

All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, SimulationInterface, NamedInterface

public class ProducedWaterTreatmentTrain extends ProcessEquipmentBaseClass
Produced water treatment train for offshore oil and gas facilities.

Models a typical produced water treatment process including:

  • Hydrocyclone - Primary oil removal (bulk separation)
  • Flotation unit - Secondary treatment for fine droplets
  • Skim tank - Polishing for final discharge spec

Norwegian Continental Shelf Discharge Limits

  • Oil-in-water: 30 mg/L monthly weighted average
  • Dispersed oil: Monitored daily
  • Zero harmful discharge target

Typical Equipment Performance

Equipment Removal Efficiency
Equipment Droplet Size Efficiency
Hydrocyclone >20 μm 90-98%
IGF/DGF >5 μm 80-95%
Skim Tank >50 μm 60-80%
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • NCS_OIW_LIMIT_MGL

      public static final double NCS_OIW_LIMIT_MGL
      NCS monthly average OIW limit (mg/L).
      See Also:
    • OSPAR_OIW_LIMIT_MGL

      public static final double OSPAR_OIW_LIMIT_MGL
      OSPAR limit (mg/L).
      See Also:
    • stages

    • inletStream

      private StreamInterface inletStream
    • treatedWaterStream

      private StreamInterface treatedWaterStream
    • recoveredOilStream

      private StreamInterface recoveredOilStream
    • inletOilConcentrationMgL

      private double inletOilConcentrationMgL
    • outletOilConcentrationMgL

      private double outletOilConcentrationMgL
    • waterFlowRateM3h

      private double waterFlowRateM3h
    • recoveredOilM3h

      private double recoveredOilM3h
    • overallEfficiency

      private double overallEfficiency
    • isCompliant

      private boolean isCompliant
  • Constructor Details

    • ProducedWaterTreatmentTrain

      public ProducedWaterTreatmentTrain(String name)
      Creates a produced water treatment train.
      Parameters:
      name - equipment name
    • ProducedWaterTreatmentTrain

      public ProducedWaterTreatmentTrain(String name, StreamInterface inletStream)
      Creates a produced water treatment train with inlet stream.
      Parameters:
      name - equipment name
      inletStream - water stream from production separator
  • Method Details

    • setInletStream

      public void setInletStream(StreamInterface stream)
      Sets the inlet water stream.
      Parameters:
      stream - produced water stream
    • getInletStream

      public StreamInterface getInletStream()
      Gets the inlet stream.
      Returns:
      inlet stream
    • setInletOilConcentration

      public void setInletOilConcentration(double oiwMgL)
      Sets the inlet oil-in-water concentration.
      Parameters:
      oiwMgL - oil concentration in mg/L (ppm by mass for water)
    • setWaterFlowRate

      public void setWaterFlowRate(double flowRateM3h)
      Sets the water flow rate.
      Parameters:
      flowRateM3h - water flow rate in m³/h
    • addStage

      Adds a treatment stage.
      Parameters:
      stage - treatment stage to add
    • clearStages

      public void clearStages()
      Clears default stages and allows custom configuration.
    • setStageEfficiency

      public void setStageEfficiency(String stageName, double efficiency)
      Sets stage efficiency by name.
      Parameters:
      stageName - stage name
      efficiency - efficiency (0.0-1.0)
    • run

      public void run(UUID id)

      In this method all thermodynamic and unit operations will be calculated in a steady state calculation.

      Parameters:
      id - UUID
    • getOilInWaterMgL

      public double getOilInWaterMgL()
      Gets outlet oil-in-water concentration.
      Returns:
      OIW in mg/L
    • getOilInWaterPpm

      public double getOilInWaterPpm()
      Gets outlet oil-in-water concentration in ppm.
      Returns:
      OIW in ppm (same as mg/L for water)
    • isDischargeCompliant

      public boolean isDischargeCompliant()
      Checks if discharge meets NCS limits.
      Returns:
      true if OIW < 30 mg/L
    • isCompliantWith

      public boolean isCompliantWith(double limitMgL)
      Checks compliance against a specific limit.
      Parameters:
      limitMgL - OIW limit in mg/L
      Returns:
      true if compliant
    • getOverallEfficiency

      public double getOverallEfficiency()
      Gets overall treatment efficiency.
      Returns:
      efficiency (0.0-1.0)
    • getRecoveredOilM3h

      public double getRecoveredOilM3h()
      Gets recovered oil flow rate.
      Returns:
      recovered oil in m³/h
    • getAnnualOilDischargeTonnes

      public double getAnnualOilDischargeTonnes(double operatingHoursPerYear)
      Gets annual oil discharge.
      Parameters:
      operatingHoursPerYear - annual operating hours
      Returns:
      annual oil discharge in tonnes
    • getTreatedWaterStream

      public StreamInterface getTreatedWaterStream()
      Gets treated water stream.
      Returns:
      treated water outlet
    • getRecoveredOilStream

      public StreamInterface getRecoveredOilStream()
      Gets recovered oil stream.
      Returns:
      recovered oil outlet
    • getStages

      Gets list of treatment stages.
      Returns:
      treatment stages
    • generateReport

      public String generateReport()
      Generates treatment summary report.
      Returns:
      markdown formatted report