Class PipingStressAnalysis

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

public class PipingStressAnalysis extends Object implements Serializable
Piping stress analysis utilities per ASME B31.3 (Process Piping).

Provides calculations for thermal expansion stress, pipe support spacing (span tables), sustained stress checks, and flexibility analysis. These are screening-level calculations suitable for preliminary design; detailed analysis should use dedicated piping stress software.

References:

  • ASME B31.3: Process Piping
  • ASME B31.1: Power Piping
Version:
1.0
Author:
esol
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final double
    Steel coefficient of thermal expansion at 20C in mm/(m*C).
    private static final double
    Young's modulus for carbon steel at ambient in MPa.
    private static final double
    Gravitational acceleration in m/s2.
    private static final double
    Density of steel in kg/m3.
    private static final double
    Density of water for hydro-test in kg/m3.
    private static final long
    Serialization version UID.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static double
    allowableExpansionStressRange(double scMPa, double shMPa, double f)
    Calculate allowable thermal expansion stress range per ASME B31.3 Eq. (1a).
    static boolean
    codeStressCheck(double sustainedStressMPa, double expansionStressMPa, double allowableHotMPa, double allowableExpansionMPa)
    Check whether code stress requirements are met.
    static double
    expansionLoopLength(double expansionMm, double pipeODMm, double allowableStressMPa)
    Calculate required expansion loop length for a straight pipe run.
    static double
    maxSupportSpan(double pipeODMm, double wallThicknessMm, double contentDensityKgM3, double insulationThicknessMm, double insulationDensityKgM3, double maxDeflectionMm, double allowableStressMPa)
    Calculate maximum allowable support span for a pipe.
    static double
    momentOfInertia(double pipeODMm, double wallThicknessMm)
    Calculate moment of inertia of pipe cross-section.
    static double
    sectionModulus(double pipeODMm, double wallThicknessMm)
    Calculate section modulus of pipe cross-section.
    static double
    sustainedStress(double pressureMPa, double pipeODMm, double wallThicknessMm, double bendingMomentNm, double stressIntensificationFactor)
    Calculate sustained (longitudinal) stress per ASME B31.3.
    static double
    thermalExpansion(double lengthM, double installTempC, double operatingTempC)
    Calculate thermal expansion using default carbon steel coefficient.
    static double
    thermalExpansion(double lengthM, double installTempC, double operatingTempC, double coefficientMmMC)
    Calculate thermal expansion of a pipe run.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • serialVersionUID

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

      private static final double ALPHA_STEEL
      Steel coefficient of thermal expansion at 20C in mm/(m*C).
      See Also:
    • E_STEEL_MPA

      private static final double E_STEEL_MPA
      Young's modulus for carbon steel at ambient in MPa.
      See Also:
    • RHO_STEEL

      private static final double RHO_STEEL
      Density of steel in kg/m3.
      See Also:
    • RHO_WATER

      private static final double RHO_WATER
      Density of water for hydro-test in kg/m3.
      See Also:
    • G

      private static final double G
      Gravitational acceleration in m/s2.
      See Also:
  • Constructor Details

    • PipingStressAnalysis

      public PipingStressAnalysis()
  • Method Details

    • thermalExpansion

      public static double thermalExpansion(double lengthM, double installTempC, double operatingTempC, double coefficientMmMC)
      Calculate thermal expansion of a pipe run.
      Parameters:
      lengthM - pipe length in meters
      installTempC - installation temperature in Celsius
      operatingTempC - operating temperature in Celsius
      coefficientMmMC - thermal expansion coefficient in mm/(m*C), default 0.012 for CS
      Returns:
      thermal expansion in mm
    • thermalExpansion

      public static double thermalExpansion(double lengthM, double installTempC, double operatingTempC)
      Calculate thermal expansion using default carbon steel coefficient.
      Parameters:
      lengthM - pipe length in meters
      installTempC - installation temperature in Celsius
      operatingTempC - operating temperature in Celsius
      Returns:
      thermal expansion in mm
    • allowableExpansionStressRange

      public static double allowableExpansionStressRange(double scMPa, double shMPa, double f)
      Calculate allowable thermal expansion stress range per ASME B31.3 Eq. (1a).

      S_A = f * (1.25 * S_c + 0.25 * S_h)

      Parameters:
      scMPa - basic allowable stress at minimum (cold) temperature in MPa
      shMPa - basic allowable stress at maximum (hot) temperature in MPa
      f - stress range reduction factor (1.0 for less than 7000 cycles)
      Returns:
      allowable expansion stress range in MPa
    • sustainedStress

      public static double sustainedStress(double pressureMPa, double pipeODMm, double wallThicknessMm, double bendingMomentNm, double stressIntensificationFactor)
      Calculate sustained (longitudinal) stress per ASME B31.3.

      S_L = P*D/(4*t) + 0.75*i*M_A/Z

      Parameters:
      pressureMPa - internal design pressure in MPa
      pipeODMm - pipe outer diameter in mm
      wallThicknessMm - pipe wall thickness in mm
      bendingMomentNm - sustained bending moment at point in N*m (use 0 for straight pipe)
      stressIntensificationFactor - SIF (1.0 for straight pipe)
      Returns:
      sustained stress in MPa
    • sectionModulus

      public static double sectionModulus(double pipeODMm, double wallThicknessMm)
      Calculate section modulus of pipe cross-section.
      Parameters:
      pipeODMm - pipe outer diameter in mm
      wallThicknessMm - pipe wall thickness in mm
      Returns:
      section modulus in mm3
    • momentOfInertia

      public static double momentOfInertia(double pipeODMm, double wallThicknessMm)
      Calculate moment of inertia of pipe cross-section.
      Parameters:
      pipeODMm - pipe outer diameter in mm
      wallThicknessMm - pipe wall thickness in mm
      Returns:
      moment of inertia in mm4
    • maxSupportSpan

      public static double maxSupportSpan(double pipeODMm, double wallThicknessMm, double contentDensityKgM3, double insulationThicknessMm, double insulationDensityKgM3, double maxDeflectionMm, double allowableStressMPa)
      Calculate maximum allowable support span for a pipe.

      Based on simple-beam deflection formula with a maximum allowable midspan deflection of 3mm and bending stress limit. Returns the lesser of deflection-limited and stress-limited spans.

      Parameters:
      pipeODMm - pipe outer diameter in mm
      wallThicknessMm - pipe wall thickness in mm
      contentDensityKgM3 - density of pipe contents in kg/m3
      insulationThicknessMm - insulation thickness in mm (0 if none)
      insulationDensityKgM3 - insulation density in kg/m3 (0 if none)
      maxDeflectionMm - maximum allowable midspan deflection in mm (typically 3)
      allowableStressMPa - allowable bending stress in MPa
      Returns:
      maximum support span in meters
    • expansionLoopLength

      public static double expansionLoopLength(double expansionMm, double pipeODMm, double allowableStressMPa)
      Calculate required expansion loop length for a straight pipe run.

      Using the simplified formula: L_loop = sqrt(3 * E * D * delta / S_A)

      Parameters:
      expansionMm - total thermal expansion to absorb in mm
      pipeODMm - pipe outer diameter in mm
      allowableStressMPa - allowable expansion stress in MPa
      Returns:
      required loop leg length in meters
    • codeStressCheck

      public static boolean codeStressCheck(double sustainedStressMPa, double expansionStressMPa, double allowableHotMPa, double allowableExpansionMPa)
      Check whether code stress requirements are met.
      Parameters:
      sustainedStressMPa - calculated sustained stress in MPa
      expansionStressMPa - calculated expansion stress in MPa
      allowableHotMPa - allowable stress at hot temperature in MPa
      allowableExpansionMPa - allowable expansion stress range in MPa
      Returns:
      true if both sustained and expansion stresses are within limits