Class ProcessInterconnectionDesign

java.lang.Object
neqsim.process.mechanicaldesign.ProcessInterconnectionDesign
All Implemented Interfaces:
Serializable

public class ProcessInterconnectionDesign extends Object implements Serializable
Estimates interconnecting piping weight and material for a process system.

This class analyzes the stream connections in a ProcessSystem and estimates:

  • Pipe sizes based on stream flow rates and velocity limits
  • Pipe wall thicknesses based on design pressure per ASME B31.3
  • Pipe length estimates between equipment
  • Total piping weight by size/schedule
  • Valve and fitting counts using typical ratios

References:

  • ASME B31.3 - Process Piping
  • API RP 14E - Recommended Practice for Design and Installation of Offshore Production Piping
Version:
1.0
Author:
NeqSim Development Team
See Also:
  • Field Details

    • serialVersionUID

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

      private static final double STEEL_DENSITY
      Steel density [kg/m³].
      See Also:
    • MAX_GAS_VELOCITY

      private static final double MAX_GAS_VELOCITY
      Maximum gas velocity [m/s] - erosional limit.
      See Also:
    • MAX_LIQUID_VELOCITY

      private static final double MAX_LIQUID_VELOCITY
      Maximum liquid velocity [m/s].
      See Also:
    • MAX_TWOPHASE_VELOCITY

      private static final double MAX_TWOPHASE_VELOCITY
      Maximum two-phase velocity [m/s].
      See Also:
    • ALLOWABLE_STRESS

      private static final double ALLOWABLE_STRESS
      Allowable stress for carbon steel [MPa].
      See Also:
    • JOINT_EFFICIENCY

      private static final double JOINT_EFFICIENCY
      Weld joint efficiency.
      See Also:
    • CORROSION_ALLOWANCE

      private static final double CORROSION_ALLOWANCE
      Corrosion allowance [mm].
      See Also:
    • STANDARD_PIPE_SIZES

      private static final double[] STANDARD_PIPE_SIZES
      Standard pipe sizes in inches (NPS).
    • PIPE_OD_MM

      private static final double[] PIPE_OD_MM
      Pipe outside diameters in mm corresponding to NPS.
    • processSystem

      private ProcessSystem processSystem
    • pipeSegments

      List of pipe segments.
    • totalPipingWeight

      private double totalPipingWeight
      Total piping weight [kg].
    • totalPipingLength

      private double totalPipingLength
      Total piping length [m].
    • weightBySize

      private Map<String,Double> weightBySize
      Weight by pipe size.
    • lengthBySize

      private Map<String,Double> lengthBySize
      Length by pipe size.
    • totalValveCount

      private int totalValveCount
      Total number of valves.
    • totalFlangeCount

      private int totalFlangeCount
      Total number of flanges.
    • totalElbowCount

      private int totalElbowCount
      Total number of elbows.
    • totalTeeCount

      private int totalTeeCount
      Total number of tees.
    • valveWeight

      private double valveWeight
      Estimated valve weight [kg].
    • flangeWeight

      private double flangeWeight
      Estimated flange weight [kg].
    • fittingWeight

      private double fittingWeight
      Estimated fitting weight [kg].
  • Constructor Details

    • ProcessInterconnectionDesign

      public ProcessInterconnectionDesign(ProcessSystem processSystem)
      Constructor for ProcessInterconnectionDesign.
      Parameters:
      processSystem - the process system to analyze
  • Method Details

    • calculatePipingEstimates

      public void calculatePipingEstimates()
      Calculate piping estimates for all streams in the process.
    • analyzeEquipmentConnections

      private void analyzeEquipmentConnections(ProcessEquipmentInterface equipment)
      Analyze connections from an equipment item.
      Parameters:
      equipment - the equipment to analyze
    • createPipeSegment

      private ProcessInterconnectionDesign.PipeSegment createPipeSegment(String fromEquip, String toEquip, StreamInterface stream)
      Create a pipe segment from stream properties.
      Parameters:
      fromEquip - from equipment name
      toEquip - to equipment name
      stream - the stream
      Returns:
      pipe segment or null if unable to create
    • calculateWallThickness

      private double calculateWallThickness(double outsideDiameterMm, double designPressureBara)
      Calculate wall thickness per ASME B31.3.
      Parameters:
      outsideDiameterMm - outside diameter in mm
      designPressureBara - design pressure in bara
      Returns:
      wall thickness in mm
    • selectSchedule

      private String selectSchedule(double designPressureBara)
      Select pipe schedule based on pressure.
      Parameters:
      designPressureBara - design pressure in bara
      Returns:
      schedule designation
    • accumulateSegment

      private void accumulateSegment(ProcessInterconnectionDesign.PipeSegment segment)
      Accumulate segment data.
      Parameters:
      segment - the segment to accumulate
    • calculateFittingEstimates

      private void calculateFittingEstimates()
      Calculate fitting estimates based on typical ratios.
    • getPipeSegments

      Get list of pipe segments.
      Returns:
      list of pipe segments
    • getTotalPipingWeight

      public double getTotalPipingWeight()
      Get total piping weight.
      Returns:
      total weight in kg
    • getTotalPipingLength

      public double getTotalPipingLength()
      Get total piping length.
      Returns:
      total length in meters
    • getWeightBySize

      public Map<String,Double> getWeightBySize()
      Get weight breakdown by pipe size.
      Returns:
      map of size to weight in kg
    • getLengthBySize

      public Map<String,Double> getLengthBySize()
      Get length breakdown by pipe size.
      Returns:
      map of size to length in meters
    • getTotalValveCount

      public int getTotalValveCount()
      Get total valve count.
      Returns:
      number of valves
    • getTotalFlangeCount

      public int getTotalFlangeCount()
      Get total flange count.
      Returns:
      number of flanges
    • getTotalElbowCount

      public int getTotalElbowCount()
      Get total elbow count.
      Returns:
      number of elbows
    • getTotalTeeCount

      public int getTotalTeeCount()
      Get total tee count.
      Returns:
      number of tees
    • getValveWeight

      public double getValveWeight()
      Get valve weight.
      Returns:
      valve weight in kg
    • getFlangeWeight

      public double getFlangeWeight()
      Get flange weight.
      Returns:
      flange weight in kg
    • getFittingWeight

      public double getFittingWeight()
      Get fitting weight.
      Returns:
      fitting weight in kg
    • generatePipingReport

      public String generatePipingReport()
      Generate a piping summary report.
      Returns:
      formatted report string
    • repeat

      private static String repeat(String str, int count)
      Repeat a string n times (Java 8 compatible).
      Parameters:
      str - string to repeat
      count - number of times
      Returns:
      repeated string