Class SeparatorMechanicalDesign

java.lang.Object
neqsim.process.mechanicaldesign.MechanicalDesign
neqsim.process.mechanicaldesign.separator.SeparatorMechanicalDesign
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
AbsorberMechanicalDesign, GasScrubberMechanicalDesign

public class SeparatorMechanicalDesign extends MechanicalDesign

SeparatorMechanicalDesign class.

Version:
$Id: $Id
Author:
esol
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • gasLoadFactor

      double gasLoadFactor
      Gas load factor (K-factor) for Souders-Brown equation [m/s]. Default 0.107 for mesh demister.
    • volumeSafetyFactor

      double volumeSafetyFactor
      Volume safety factor for design flow calculations. Default 1.0 (no margin).
    • Fg

      double Fg
      Gas area fraction (1 - liquid level fraction). Default 0.5 for 50% liquid level.
    • retentionTime

      double retentionTime
      Liquid retention time in seconds. Default 120s (2 minutes).
    • designPressureMargin

      private double designPressureMargin
      Design pressure margin factor (e.g., 1.10 for 10% margin).
    • designTemperatureMarginC

      private double designTemperatureMarginC
      Design temperature margin above max operating in Celsius.
    • minDesignTemperatureC

      private double minDesignTemperatureC
      Minimum design temperature in Celsius (material limit).
    • foamAllowanceFactor

      private double foamAllowanceFactor
      Foam allowance factor for liquid level (1.0 = no foam, 1.5 = 50% foam).
    • dropletDiameterGasLiquid

      private double dropletDiameterGasLiquid
      Design droplet diameter for gas-liquid separation in micrometers.
    • dropletDiameterLiquidLiquid

      private double dropletDiameterLiquidLiquid
      Design droplet diameter for liquid-liquid separation in micrometers.
    • maxGasVelocity

      private double maxGasVelocity
      Maximum gas velocity limit in m/s.
    • maxLiquidVelocity

      private double maxLiquidVelocity
      Maximum liquid outlet velocity in m/s.
    • minOilRetentionTime

      private double minOilRetentionTime
      Minimum oil retention time in minutes.
    • minWaterRetentionTime

      private double minWaterRetentionTime
      Minimum water retention time in minutes.
    • demisterPressureDrop

      private double demisterPressureDrop
      Demister pad pressure drop in mbar.
    • demisterVoidFraction

      private double demisterVoidFraction
      Wire mesh demister void fraction (typically 0.97-0.99).
    • demisterThickness

      private double demisterThickness
      Demister pad thickness in mm.
    • demisterWireDiameter

      private double demisterWireDiameter
      Demister pad wire diameter in mm.
    • inletDeviceKFactor

      private double inletDeviceKFactor
      Inlet device K-factor reduction (1.0 = no reduction).
    • demisterType

      private String demisterType
      Demister type: "wire_mesh", "vane_pack", "cyclone".
    • hhllFraction

      private double hhllFraction
      High-High Liquid Level (HHLL) as fraction of ID. Typically ~0.80-0.85.
    • hllFraction

      private double hllFraction
      High Liquid Level (HLL) as fraction of ID. Typically ~0.70-0.75.
    • nllFraction

      private double nllFraction
      Normal Liquid Level (NLL) as fraction of ID. Typically ~0.50-0.60.
    • lllFraction

      private double lllFraction
      Low Liquid Level (LLL) as fraction of ID. Typically ~0.30-0.40.
    • llllFraction

      private double llllFraction
      Low-Low Liquid Level (LLLL) as fraction of ID. Typically ~0.15-0.20.
    • hilFraction

      private double hilFraction
      High Interface Level (HIL) - oil/water interface.
    • nilFraction

      private double nilFraction
      Normal Interface Level (NIL) - oil/water interface.
    • lilFraction

      private double lilFraction
      Low Interface Level (LIL) - oil/water interface.
    • weirFraction

      private double weirFraction
      Weir height as fraction of ID.
    • effectiveLengthLiquid

      private double effectiveLengthLiquid
      Effective length for liquid separation/retention [m].
    • effectiveLengthGas

      private double effectiveLengthGas
      Effective length for gas separation/demisting [m].
    • inletToPerforatedPlate

      private double inletToPerforatedPlate
      Distance from inlet to perforated plate [m].
    • perforatedPlateToWeir

      private double perforatedPlateToWeir
      Distance from perforated plate to weir plate [m].
    • inletToGasDemister

      private double inletToGasDemister
      Distance from inlet to gas demister [m].
    • inletNozzleID

      private double inletNozzleID
      Inlet nozzle internal diameter [m].
    • gasOutletNozzleID

      private double gasOutletNozzleID
      Gas outlet nozzle internal diameter [m].
    • oilOutletNozzleID

      private double oilOutletNozzleID
      Oil outlet nozzle internal diameter [m].
    • waterOutletNozzleID

      private double waterOutletNozzleID
      Water outlet nozzle internal diameter [m].
  • Constructor Details

  • Method Details

    • readDesignSpecifications

      public void readDesignSpecifications()

      readDesignSpecifications.

      Overrides:
      readDesignSpecifications in class MechanicalDesign
    • displayResults

      public void displayResults()

      displayResults.

      Overrides:
      displayResults in class MechanicalDesign
    • calcDesign

      public void calcDesign()

      calcDesign.

      Overrides:
      calcDesign in class MechanicalDesign
    • performSizingCalculations

      public void performSizingCalculations()
      Performs the sizing calculations without reading design specifications. This method is called by autoSize() after design specs have been read and any user overrides have been applied.
    • setDesign

      public void setDesign()

      setDesign.

      Overrides:
      setDesign in class MechanicalDesign
    • getResponse

      public SeparatorMechanicalDesignResponse getResponse()
      Get the mechanical design response object.

      This method returns a MechanicalDesignResponse object that can be further customized or combined with other data before serialization.

      Returns a separator-specific response with additional fields for vessel sizing, internals, and process design data.

      Overrides:
      getResponse in class MechanicalDesign
      Returns:
      MechanicalDesignResponse object
    • toJson

      public String toJson()
      Export mechanical design data to JSON format.

      This method creates a MechanicalDesignResponse object and serializes it to JSON using Gson. The JSON includes equipment identification, weight breakdown, design conditions, dimensions, and materials information.

      Usage example:

      
      MechanicalDesign mecDesign = separator.getMechanicalDesign();
      mecDesign.calcDesign();
      String json = mecDesign.toJson();
      
      

      Returns JSON with separator-specific fields.

      Overrides:
      toJson in class MechanicalDesign
      Returns:
      JSON string representation of the mechanical design
    • getGasLoadFactor

      public double getGasLoadFactor()
      Get gas load factor (K-factor).
      Returns:
      gas load factor
    • setGasLoadFactor

      public void setGasLoadFactor(double gasLoadFactor)
      Set gas load factor (K-factor).
      Parameters:
      gasLoadFactor - gas load factor [m/s], typically 0.07-0.15 for horizontal separators
    • getVolumeSafetyFactor

      public double getVolumeSafetyFactor()
      Get volume safety factor.
      Returns:
      volume safety factor
    • setVolumeSafetyFactor

      public void setVolumeSafetyFactor(double volumeSafetyFactor)
      Set volume safety factor for design flow calculations.
      Parameters:
      volumeSafetyFactor - safety factor (typically 1.1-1.3)
    • getFg

      public double getFg()
      Get liquid level fraction (Fg).
      Returns:
      liquid level fraction
    • setFg

      public void setFg(double fg)
      Set liquid level fraction (Fg = 1 - liquid level).
      Parameters:
      fg - gas area fraction
    • getRetentionTime

      public double getRetentionTime()
      Get retention time in seconds.
      Returns:
      retention time
    • setRetentionTime

      public void setRetentionTime(double retentionTime)
      Set retention time in seconds.
      Parameters:
      retentionTime - liquid retention time in seconds (typically 60-300s)
    • getHHLL

      public double getHHLL()
      Calculate the High-High Liquid Level (HHLL) in meters. HHLL is the maximum safe operating level before emergency shutdown.
      Returns:
      HHLL height in meters
    • getHLL

      public double getHLL()
      Calculate the High Liquid Level (HLL) in meters. HLL triggers high level alarm.
      Returns:
      HLL height in meters
    • getNLL

      public double getNLL()
      Calculate the Normal Liquid Level (NLL) in meters. NLL is the target operating level during normal operation.
      Returns:
      NLL height in meters
    • getLLL

      public double getLLL()
      Calculate the Low Liquid Level (LLL) in meters. LLL triggers low level alarm.
      Returns:
      LLL height in meters
    • getLLLL

      public double getLLLL()
      Calculate the Low-Low Liquid Level (LLLL) in meters. LLLL triggers emergency shutdown to prevent pump dry-running.
      Returns:
      LLLL height in meters
    • getWeirHeight

      public double getWeirHeight()
      Calculate the weir height in meters. The weir separates oil and water compartments in three-phase separators.
      Returns:
      weir height in meters
    • getHIL

      public double getHIL()
      Calculate the High Interface Level (HIL) in meters. HIL is the high oil/water interface level alarm point.
      Returns:
      HIL height in meters
    • getNIL

      public double getNIL()
      Calculate the Normal Interface Level (NIL) in meters. NIL is the target oil/water interface level.
      Returns:
      NIL height in meters
    • getLIL

      public double getLIL()
      Calculate the Low Interface Level (LIL) in meters. LIL is the low oil/water interface level alarm point.
      Returns:
      LIL height in meters
    • getEffectiveLengthLiquid

      public double getEffectiveLengthLiquid()
      Calculate effective length for liquid separation. This is typically: TanTan length - inlet device length - weir plate distance.
      Returns:
      effective liquid separation length in meters
    • getEffectiveLengthGas

      public double getEffectiveLengthGas()
      Calculate effective length for gas separation. This is typically: TanTan length - inlet device length - demister position.
      Returns:
      effective gas separation length in meters
    • calcLiquidRetentionTime

      public double calcLiquidRetentionTime()
      Calculate liquid retention time based on effective length and NLL.
      Returns:
      liquid retention time in seconds
    • calcLiquidVolumeAtLevel

      public double calcLiquidVolumeAtLevel(double levelHeight)
      Calculate liquid volume at a given level height for horizontal cylindrical vessel.
      Parameters:
      levelHeight - liquid level height in meters
      Returns:
      liquid volume in m³
    • calcSurgeVolume

      public double calcSurgeVolume()
      Calculate surge volume between NLL and HLL. This volume provides time buffer for control system response.
      Returns:
      surge volume in m³
    • calcSurgeTime

      public double calcSurgeTime()
      Calculate surge time based on surge volume and liquid flow rate.
      Returns:
      surge time in seconds
    • calcInletNozzleID

      public double calcInletNozzleID()
      Calculate inlet nozzle diameter based on inlet momentum. Uses API 12J recommendations for maximum momentum.
      Returns:
      inlet nozzle ID in meters
    • calcGasOutletNozzleID

      public double calcGasOutletNozzleID()
      Calculate gas outlet nozzle diameter. Based on gas velocity limit (typically 15-20 m/s).
      Returns:
      gas outlet nozzle ID in meters
    • calcOilOutletNozzleID

      public double calcOilOutletNozzleID()
      Calculate oil outlet nozzle diameter. Based on liquid velocity limit (typically 1-2 m/s).
      Returns:
      oil outlet nozzle ID in meters
    • setHHLLFraction

      public void setHHLLFraction(double fraction)
      Set HHLL fraction of internal diameter.
      Parameters:
      fraction - HHLL as fraction of ID (0-1)
    • setHLLFraction

      public void setHLLFraction(double fraction)
      Set HLL fraction of internal diameter.
      Parameters:
      fraction - HLL as fraction of ID (0-1)
    • setNLLFraction

      public void setNLLFraction(double fraction)
      Set NLL fraction of internal diameter.
      Parameters:
      fraction - NLL as fraction of ID (0-1)
    • setLLLFraction

      public void setLLLFraction(double fraction)
      Set LLL fraction of internal diameter.
      Parameters:
      fraction - LLL as fraction of ID (0-1)
    • setLLLLFraction

      public void setLLLLFraction(double fraction)
      Set LLLL fraction of internal diameter.
      Parameters:
      fraction - LLLL as fraction of ID (0-1)
    • setWeirFraction

      public void setWeirFraction(double fraction)
      Set weir height fraction of internal diameter.
      Parameters:
      fraction - weir height as fraction of ID (0-1)
    • setHILFraction

      public void setHILFraction(double fraction)
      Set HIL fraction of internal diameter.
      Parameters:
      fraction - HIL as fraction of ID (0-1)
    • setNILFraction

      public void setNILFraction(double fraction)
      Set NIL fraction of internal diameter.
      Parameters:
      fraction - NIL as fraction of ID (0-1)
    • setLILFraction

      public void setLILFraction(double fraction)
      Set LIL fraction of internal diameter.
      Parameters:
      fraction - LIL as fraction of ID (0-1)
    • setEffectiveLengthLiquid

      public void setEffectiveLengthLiquid(double length)
      Set effective length for liquid separation.
      Parameters:
      length - effective length in meters
    • setEffectiveLengthGas

      public void setEffectiveLengthGas(double length)
      Set effective length for gas separation.
      Parameters:
      length - effective length in meters
    • setInletNozzleID

      public void setInletNozzleID(double id)
      Set inlet nozzle ID.
      Parameters:
      id - inlet nozzle internal diameter in meters
    • setGasOutletNozzleID

      public void setGasOutletNozzleID(double id)
      Set gas outlet nozzle ID.
      Parameters:
      id - gas outlet nozzle internal diameter in meters
    • setOilOutletNozzleID

      public void setOilOutletNozzleID(double id)
      Set oil outlet nozzle ID.
      Parameters:
      id - oil outlet nozzle internal diameter in meters
    • setWaterOutletNozzleID

      public void setWaterOutletNozzleID(double id)
      Set water outlet nozzle ID.
      Parameters:
      id - water outlet nozzle internal diameter in meters
    • getHHLLFraction

      public double getHHLLFraction()
      Get HHLL (High-High Liquid Level) fraction.
      Returns:
      HHLL fraction
    • getHLLFraction

      public double getHLLFraction()
      Get HLL (High Liquid Level) fraction.
      Returns:
      HLL fraction
    • getNLLFraction

      public double getNLLFraction()
      Get NLL (Normal Liquid Level) fraction.
      Returns:
      NLL fraction
    • getLLLFraction

      public double getLLLFraction()
      Get LLL (Low Liquid Level) fraction.
      Returns:
      LLL fraction
    • getLLLLFraction

      public double getLLLLFraction()
      Get LLLL (Low-Low Liquid Level) fraction.
      Returns:
      LLLL fraction
    • getWeirFraction

      public double getWeirFraction()
      Get weir fraction.
      Returns:
      weir fraction
    • getHILFraction

      public double getHILFraction()
      Get HIL (High Interface Level) fraction.
      Returns:
      HIL fraction
    • getNILFraction

      public double getNILFraction()
      Get NIL (Normal Interface Level) fraction.
      Returns:
      NIL fraction
    • getLILFraction

      public double getLILFraction()
      Get LIL (Low Interface Level) fraction.
      Returns:
      LIL fraction
    • getInletNozzleID

      public double getInletNozzleID()
      Get inlet nozzle internal diameter.
      Returns:
      inlet nozzle ID in meters
    • getGasOutletNozzleID

      public double getGasOutletNozzleID()
      Get gas outlet nozzle internal diameter.
      Returns:
      gas outlet nozzle ID in meters
    • getOilOutletNozzleID

      public double getOilOutletNozzleID()
      Get oil outlet nozzle internal diameter.
      Returns:
      oil outlet nozzle ID in meters
    • getWaterOutletNozzleID

      public double getWaterOutletNozzleID()
      Get water outlet nozzle internal diameter.
      Returns:
      water outlet nozzle ID in meters
    • setLiquidLevelsFromHeights

      public void setLiquidLevelsFromHeights(double hhll, double hll, double nll, double lll)
      Configure liquid levels based on provided values (heights in meters). Automatically calculates fractions based on internal diameter.
      Parameters:
      hhll - High-High Liquid Level in meters
      hll - High Liquid Level in meters
      nll - Normal Liquid Level in meters
      lll - Low Liquid Level in meters
    • setInterfaceLevelsFromHeights

      public void setInterfaceLevelsFromHeights(double hil, double nil, double lil, double weir)
      Configure interface levels for three-phase separator based on heights.
      Parameters:
      hil - High Interface Level in meters
      nil - Normal Interface Level in meters
      lil - Low Interface Level in meters
      weir - Weir height in meters
    • calculateDefaultLevelFractions

      public void calculateDefaultLevelFractions()
      Calculate all level fractions based on the actual internal diameter. Uses typical design ratios from API 12J and NORSOK.
    • setFromExistingDesign

      public void setFromExistingDesign(double id, double tanTanLength, double wallThick)
      Configure all separator dimensions from an existing pre-designed separator. This allows importing a complete design from external sources (e.g., vendor data).
      Parameters:
      id - Inner diameter in meters
      tanTanLength - Tan-tan length in meters
      wallThick - Wall thickness in meters
    • setFromExistingDesign

      public void setFromExistingDesign(double id, double tanTanLength, double wallThick, double lEffLiquid, double lEffGas, double inletNozzle, double gasNozzle, double oilNozzle, double waterNozzle)
      Configure all separator dimensions and levels from an existing design. This is the comprehensive method for importing a complete pre-designed separator.
      Parameters:
      id - Inner diameter in meters
      tanTanLength - Tan-tan length in meters
      wallThick - Wall thickness in meters
      lEffLiquid - Effective length for liquid separation in meters
      lEffGas - Effective length for gas separation in meters
      inletNozzle - Inlet nozzle ID in meters
      gasNozzle - Gas outlet nozzle ID in meters
      oilNozzle - Oil outlet nozzle ID in meters
      waterNozzle - Water outlet nozzle ID in meters (0 for two-phase)
    • setAllLiquidLevelsFromHeights

      public void setAllLiquidLevelsFromHeights(double hhll, double hll, double nll, double lll, double llll)
      Configure all liquid levels from heights in meters. Automatically calculates fractions based on internal diameter.
      Parameters:
      hhll - High-High Liquid Level in meters
      hll - High Liquid Level in meters
      nll - Normal Liquid Level in meters
      lll - Low Liquid Level in meters
      llll - Low-Low Liquid Level in meters
    • setFromDesignSpec

      public void setFromDesignSpec(double id, double length, double lEffLiquid, double lEffGas, double inletNozzleId, double hhll, double hll, double nll, double lll, double weir, double hil, double nil, double lil)
      Set all design parameters from a Python-style dictionary-like specification. This method mirrors the Python dict format: {'ID': 3.154, 'L': 13.1, ...}.
      Parameters:
      id - Inner diameter in meters
      length - Tan-tan length in meters
      lEffLiquid - Effective length for liquid separation in meters
      lEffGas - Effective length for gas separation in meters
      inletNozzleId - Inlet nozzle ID in meters
      hhll - HHLL height in meters
      hll - HLL height in meters
      nll - NLL height in meters
      lll - LLL height in meters
      weir - Weir height in meters
      hil - HIL height in meters
      nil - NIL height in meters
      lil - LIL height in meters
    • setInletToPerforatedPlate

      public void setInletToPerforatedPlate(double distance)
      Set distance from inlet to perforated plate.
      Parameters:
      distance - distance in meters
    • getInletToPerforatedPlate

      public double getInletToPerforatedPlate()
      Get distance from inlet to perforated plate.
      Returns:
      distance in meters
    • setPerforatedPlateToWeir

      public void setPerforatedPlateToWeir(double distance)
      Set distance from perforated plate to weir.
      Parameters:
      distance - distance in meters
    • getPerforatedPlateToWeir

      public double getPerforatedPlateToWeir()
      Get distance from perforated plate to weir.
      Returns:
      distance in meters
    • setInletToGasDemister

      public void setInletToGasDemister(double distance)
      Set distance from inlet to gas demister.
      Parameters:
      distance - distance in meters
    • getInletToGasDemister

      public double getInletToGasDemister()
      Get distance from inlet to gas demister.
      Returns:
      distance in meters
    • calculateEffectiveLengthsFromInternals

      public void calculateEffectiveLengthsFromInternals()
      Calculate effective lengths from internal positions. Call this after setting inlet-to-perforated-plate and perforated-plate-to-weir distances.
    • validateDesign

      public boolean validateDesign()
      Validate that the design parameters are within acceptable ranges.
      Returns:
      true if design is valid
    • getDesignSummary

      public String getDesignSummary()
      Get a complete design summary as a formatted string.
      Returns:
      design summary
    • getDesignPressureMargin

      public double getDesignPressureMargin()
      Gets the design pressure margin factor.
      Returns:
      design pressure margin (e.g., 1.10 for 10% margin)
    • setDesignPressureMargin

      public void setDesignPressureMargin(double margin)
      Sets the design pressure margin factor.
      Parameters:
      margin - margin factor (e.g., 1.10 for 10%)
    • getDesignTemperatureMarginC

      public double getDesignTemperatureMarginC()
      Gets the design temperature margin in Celsius.
      Returns:
      temperature margin in Celsius
    • setDesignTemperatureMarginC

      public void setDesignTemperatureMarginC(double marginC)
      Sets the design temperature margin in Celsius.
      Parameters:
      marginC - temperature margin in Celsius
    • getMinDesignTemperatureC

      public double getMinDesignTemperatureC()
      Gets the minimum design temperature in Celsius.
      Returns:
      minimum design temperature in Celsius
    • setMinDesignTemperatureC

      public void setMinDesignTemperatureC(double tempC)
      Sets the minimum design temperature in Celsius.
      Parameters:
      tempC - minimum design temperature in Celsius
    • getFoamAllowanceFactor

      public double getFoamAllowanceFactor()
      Gets the foam allowance factor.
      Returns:
      foam allowance factor (1.0 = no foam)
    • setFoamAllowanceFactor

      public void setFoamAllowanceFactor(double factor)
      Sets the foam allowance factor.
      Parameters:
      factor - foam allowance factor (typically 1.0-1.5)
    • getDropletDiameterGasLiquid

      public double getDropletDiameterGasLiquid()
      Gets the design droplet diameter for gas-liquid separation.
      Returns:
      droplet diameter in micrometers
    • setDropletDiameterGasLiquid

      public void setDropletDiameterGasLiquid(double diameterUm)
      Sets the design droplet diameter for gas-liquid separation.
      Parameters:
      diameterUm - droplet diameter in micrometers
    • getDropletDiameterLiquidLiquid

      public double getDropletDiameterLiquidLiquid()
      Gets the design droplet diameter for liquid-liquid separation.
      Returns:
      droplet diameter in micrometers
    • setDropletDiameterLiquidLiquid

      public void setDropletDiameterLiquidLiquid(double diameterUm)
      Sets the design droplet diameter for liquid-liquid separation.
      Parameters:
      diameterUm - droplet diameter in micrometers
    • getMaxGasVelocityLimit

      public double getMaxGasVelocityLimit()
      Gets the maximum gas velocity limit.
      Returns:
      maximum gas velocity in m/s
    • setMaxGasVelocityLimit

      public void setMaxGasVelocityLimit(double velocity)
      Sets the maximum gas velocity limit.
      Parameters:
      velocity - maximum velocity in m/s
    • getMaxLiquidVelocity

      public double getMaxLiquidVelocity()
      Gets the maximum liquid outlet velocity.
      Returns:
      maximum liquid velocity in m/s
    • setMaxLiquidVelocity

      public void setMaxLiquidVelocity(double velocity)
      Sets the maximum liquid outlet velocity.
      Parameters:
      velocity - maximum velocity in m/s
    • getMinOilRetentionTime

      public double getMinOilRetentionTime()
      Gets the minimum oil retention time.
      Returns:
      retention time in minutes
    • setMinOilRetentionTime

      public void setMinOilRetentionTime(double minutes)
      Sets the minimum oil retention time.
      Parameters:
      minutes - retention time in minutes
    • getMinWaterRetentionTime

      public double getMinWaterRetentionTime()
      Gets the minimum water retention time.
      Returns:
      retention time in minutes
    • setMinWaterRetentionTime

      public void setMinWaterRetentionTime(double minutes)
      Sets the minimum water retention time.
      Parameters:
      minutes - retention time in minutes
    • getDemisterPressureDrop

      public double getDemisterPressureDrop()
      Gets the demister pressure drop.
      Returns:
      pressure drop in mbar
    • setDemisterPressureDrop

      public void setDemisterPressureDrop(double pressureDrop)
      Sets the demister pressure drop.
      Parameters:
      pressureDrop - pressure drop in mbar
    • getDemisterVoidFraction

      public double getDemisterVoidFraction()
      Gets the demister void fraction.
      Returns:
      void fraction (0.0-1.0)
    • setDemisterVoidFraction

      public void setDemisterVoidFraction(double voidFraction)
      Sets the demister void fraction.
      Parameters:
      voidFraction - void fraction (typically 0.97-0.99)
    • getDemisterThickness

      public double getDemisterThickness()
      Gets the demister pad thickness.
      Returns:
      thickness in mm
    • setDemisterThickness

      public void setDemisterThickness(double thickness)
      Sets the demister pad thickness.
      Parameters:
      thickness - thickness in mm
    • getDemisterWireDiameter

      public double getDemisterWireDiameter()
      Gets the demister wire diameter.
      Returns:
      wire diameter in mm
    • setDemisterWireDiameter

      public void setDemisterWireDiameter(double diameter)
      Sets the demister wire diameter.
      Parameters:
      diameter - wire diameter in mm
    • getInletDeviceKFactor

      public double getInletDeviceKFactor()
      Gets the inlet device K-factor reduction.
      Returns:
      K-factor reduction (1.0 = no reduction)
    • setInletDeviceKFactor

      public void setInletDeviceKFactor(double factor)
      Sets the inlet device K-factor reduction.
      Parameters:
      factor - K-factor reduction (typically 0.8-1.0)
    • getDemisterType

      public String getDemisterType()
      Gets the demister type.
      Returns:
      demister type ("wire_mesh", "vane_pack", or "cyclone")
    • setDemisterType

      public void setDemisterType(String type)
      Sets the demister type.
      Parameters:
      type - demister type ("wire_mesh", "vane_pack", or "cyclone")
    • calculateDesignPressure

      public double calculateDesignPressure()
      Calculates the design pressure from maximum operating pressure.
      Returns:
      design pressure in barg
    • calculateDesignTemperature

      public double calculateDesignTemperature()
      Calculates the design temperature from maximum operating temperature.
      Returns:
      design temperature in Celsius
    • calculateMinDesignTemperature

      public double calculateMinDesignTemperature()
      Calculates the minimum design temperature considering material limits.
      Returns:
      minimum design temperature in Celsius
    • calculateStokesVelocity

      public double calculateStokesVelocity(double dropletDiameterUm, double continuousDensity, double dispersedDensity, double continuousViscosity)
      Calculates the terminal settling velocity for a droplet using Stokes' law.
      Parameters:
      dropletDiameterUm - droplet diameter in micrometers
      continuousDensity - density of continuous phase in kg/m³
      dispersedDensity - density of dispersed phase in kg/m³
      continuousViscosity - viscosity of continuous phase in Pa·s
      Returns:
      terminal velocity in m/s
    • calculateSoudersBrownVelocity

      public double calculateSoudersBrownVelocity(double gasDensity, double liquidDensity)
      Calculates the maximum allowable gas velocity using Souders-Brown equation.
      Parameters:
      gasDensity - gas density in kg/m³
      liquidDensity - liquid density in kg/m³
      Returns:
      maximum gas velocity in m/s
    • calculateFoamAdjustedVolume

      public double calculateFoamAdjustedVolume(double baseLiquidVolume)
      Calculates the adjusted liquid volume accounting for foam.
      Parameters:
      baseLiquidVolume - base liquid volume in m³
      Returns:
      adjusted volume with foam allowance in m³
    • loadProcessDesignParameters

      public void loadProcessDesignParameters()
      Loads process design parameters from the TechnicalRequirements_Process database.
    • validateGasVelocity

      public boolean validateGasVelocity(double actualVelocity)
      Validates that the actual gas velocity is within acceptable limits.
      Parameters:
      actualVelocity - actual gas velocity in m/s
      Returns:
      true if velocity is acceptable, false if too high
    • validateLiquidVelocity

      public boolean validateLiquidVelocity(double actualVelocity)
      Validates that the actual liquid outlet velocity is within acceptable limits.
      Parameters:
      actualVelocity - actual liquid velocity in m/s
      Returns:
      true if velocity is acceptable, false if too high
    • validateRetentionTime

      public boolean validateRetentionTime(double actualRetentionMinutes, boolean isOil)
      Validates that the actual retention time meets minimum requirements.
      Parameters:
      actualRetentionMinutes - actual retention time in minutes
      isOil - true for oil retention, false for water retention
      Returns:
      true if retention time is sufficient
    • validateDropletDiameter

      public boolean validateDropletDiameter(double actualDropletDiameterUm, boolean isGasLiquid)
      Validates that the droplet diameter is appropriate for separation.
      Parameters:
      actualDropletDiameterUm - actual droplet diameter in micrometers
      isGasLiquid - true for gas-liquid separation, false for liquid-liquid
      Returns:
      true if droplet diameter is at or above design diameter
    • validateDesignComprehensive

      public SeparatorMechanicalDesign.SeparatorValidationResult validateDesignComprehensive()
      Performs comprehensive validation of separator design against process requirements.
      Returns:
      ValidationResult with status and any issues found