Class PipeCapacityStrategy

java.lang.Object
neqsim.process.equipment.capacity.PipeCapacityStrategy
All Implemented Interfaces:
EquipmentCapacityStrategy

public class PipeCapacityStrategy extends Object implements EquipmentCapacityStrategy
Capacity strategy for pipe and pipeline equipment.

This strategy evaluates pipe capacity based on multiple constraints including:

  • Superficial velocity (erosional velocity limits)
  • Pressure drop (allowable DP)
  • Liquid holdup (for multiphase)
  • Flow regime stability
Version:
1.0
Author:
NeqSim Development Team
  • Field Details

    • DEFAULT_MAX_GAS_VELOCITY

      public static final double DEFAULT_MAX_GAS_VELOCITY
      Default maximum gas velocity (m/s).
      See Also:
    • DEFAULT_MAX_LIQUID_VELOCITY

      public static final double DEFAULT_MAX_LIQUID_VELOCITY
      Default maximum liquid velocity (m/s).
      See Also:
    • DEFAULT_MAX_MULTIPHASE_VELOCITY

      public static final double DEFAULT_MAX_MULTIPHASE_VELOCITY
      Default maximum multiphase velocity (m/s).
      See Also:
    • DEFAULT_MAX_EROSIONAL_RATIO

      public static final double DEFAULT_MAX_EROSIONAL_RATIO
      Default maximum erosional velocity ratio.
      See Also:
    • maxGasVelocity

      private double maxGasVelocity
    • maxLiquidVelocity

      private double maxLiquidVelocity
    • maxMultiphaseVelocity

      private double maxMultiphaseVelocity
    • maxErosionalRatio

      private double maxErosionalRatio
  • Constructor Details

    • PipeCapacityStrategy

      public PipeCapacityStrategy()
      Default constructor.
    • PipeCapacityStrategy

      public PipeCapacityStrategy(double maxGasVelocity, double maxLiquidVelocity, double maxMultiphaseVelocity)
      Constructor with custom velocity limits.
      Parameters:
      maxGasVelocity - maximum gas velocity in m/s
      maxLiquidVelocity - maximum liquid velocity in m/s
      maxMultiphaseVelocity - maximum multiphase velocity in m/s
  • Method Details

    • supports

      public boolean supports(ProcessEquipmentInterface equipment)
      Checks if this strategy supports the given equipment.
      Specified by:
      supports in interface EquipmentCapacityStrategy
      Parameters:
      equipment - the equipment to check
      Returns:
      true if this strategy can evaluate the equipment
    • getPriority

      public int getPriority()
      Gets the priority of this strategy.

      When multiple strategies support the same equipment, the one with higher priority is used. Default priority is 0. Use positive values for more specific strategies.

      Specified by:
      getPriority in interface EquipmentCapacityStrategy
      Returns:
      the priority value (higher = more preferred)
    • getName

      public String getName()
      Gets a descriptive name for this strategy.
      Specified by:
      getName in interface EquipmentCapacityStrategy
      Returns:
      strategy name
    • getEquipmentClass

      public Class<? extends ProcessEquipmentInterface> getEquipmentClass()
      Gets the equipment class this strategy handles.
      Specified by:
      getEquipmentClass in interface EquipmentCapacityStrategy
      Returns:
      the equipment class
    • evaluateCapacity

      public double evaluateCapacity(ProcessEquipmentInterface equipment)
      Evaluates the current capacity utilization of the equipment.

      Returns a value between 0 and 1+ where:

      • 0.0 = no load
      • 1.0 = at design capacity
      • >1.0 = over capacity
      Specified by:
      evaluateCapacity in interface EquipmentCapacityStrategy
      Parameters:
      equipment - the equipment to evaluate
      Returns:
      capacity utilization as a fraction
    • evaluateMaxCapacity

      public double evaluateMaxCapacity(ProcessEquipmentInterface equipment)
      Evaluates the maximum capacity of the equipment.

      Returns the maximum capacity in the equipment's natural units (e.g., flow rate, power, duty).

      Specified by:
      evaluateMaxCapacity in interface EquipmentCapacityStrategy
      Parameters:
      equipment - the equipment to evaluate
      Returns:
      maximum capacity
    • getSuperficialVelocity

      private double getSuperficialVelocity(ProcessEquipmentInterface equipment)
      Gets the superficial velocity from the pipe.
      Parameters:
      equipment - the pipe equipment
      Returns:
      superficial velocity in m/s
    • getApplicableMaxVelocity

      private double getApplicableMaxVelocity(ProcessEquipmentInterface equipment)
      Gets the applicable maximum velocity based on flow type.
      Parameters:
      equipment - the pipe equipment
      Returns:
      maximum velocity in m/s
    • getConstraints

      public Map<String, CapacityConstraint> getConstraints(ProcessEquipmentInterface equipment)
      Gets all capacity constraints for this equipment.

      Returns a map of constraint name to constraint object. The constraints include both the current value and the design/limit values.

      Specified by:
      getConstraints in interface EquipmentCapacityStrategy
      Parameters:
      equipment - the equipment to get constraints for
      Returns:
      map of constraint name to CapacityConstraint
    • getViolations

      public List<CapacityConstraint> getViolations(ProcessEquipmentInterface equipment)
      Gets the list of constraint violations for this equipment.

      Returns only the constraints that are currently violated (utilization > 1.0 or outside limits).

      Specified by:
      getViolations in interface EquipmentCapacityStrategy
      Parameters:
      equipment - the equipment to check
      Returns:
      list of violated constraints
    • getBottleneckConstraint

      public CapacityConstraint getBottleneckConstraint(ProcessEquipmentInterface equipment)
      Gets the bottleneck constraint (highest utilization).
      Specified by:
      getBottleneckConstraint in interface EquipmentCapacityStrategy
      Parameters:
      equipment - the equipment to evaluate
      Returns:
      the constraint with highest utilization, or null if none
    • isWithinHardLimits

      public boolean isWithinHardLimits(ProcessEquipmentInterface equipment)
      Checks if the equipment is operating within all hard limits.
      Specified by:
      isWithinHardLimits in interface EquipmentCapacityStrategy
      Parameters:
      equipment - the equipment to check
      Returns:
      true if no hard limits are violated
    • isWithinSoftLimits

      public boolean isWithinSoftLimits(ProcessEquipmentInterface equipment)
      Checks if the equipment is operating within all soft limits (design values).
      Specified by:
      isWithinSoftLimits in interface EquipmentCapacityStrategy
      Parameters:
      equipment - the equipment to check
      Returns:
      true if no soft limits are violated
    • getMaxGasVelocity

      public double getMaxGasVelocity()
      Gets the maximum gas velocity.
      Returns:
      maximum gas velocity in m/s
    • setMaxGasVelocity

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

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

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

      public double getMaxMultiphaseVelocity()
      Gets the maximum multiphase velocity.
      Returns:
      maximum multiphase velocity in m/s
    • setMaxMultiphaseVelocity

      public void setMaxMultiphaseVelocity(double maxMultiphaseVelocity)
      Sets the maximum multiphase velocity.
      Parameters:
      maxMultiphaseVelocity - maximum multiphase velocity in m/s
    • getMaxErosionalRatio

      public double getMaxErosionalRatio()
      Gets the maximum erosional velocity ratio.
      Returns:
      maximum erosional velocity ratio
    • setMaxErosionalRatio

      public void setMaxErosionalRatio(double maxErosionalRatio)
      Sets the maximum erosional velocity ratio.
      Parameters:
      maxErosionalRatio - maximum erosional velocity ratio