Class HydrogenPipelineDesign

java.lang.Object
neqsim.process.mechanicaldesign.MechanicalDesign
neqsim.process.mechanicaldesign.pipeline.HydrogenPipelineDesign
All Implemented Interfaces:
Serializable

public class HydrogenPipelineDesign extends MechanicalDesign
Hydrogen pipeline mechanical design per ASME B31.12 and DNV-ST-F101.

Extends the standard pipeline mechanical design with hydrogen-specific considerations:

  • Hydrogen embrittlement derating factors per ASME B31.12
  • Material compatibility assessment for hydrogen service
  • Design factor reduction for hydrogen pipelines
  • Fatigue considerations for cyclic hydrogen loading
  • Permeation rate estimation

Design Standards

  • ASME B31.12 — Hydrogen Piping and Pipelines (primary)
  • DNV-ST-F101 — Submarine Pipeline Systems
  • EIGA 121/14 — Hydrogen Pipeline Systems
  • CGA G-5.6 — Hydrogen Pipeline Systems

Material Compatibility (ASME B31.12 Table IX-5A)

Material grades and hydrogen service compatibility
Material GradeMax Pressure [bar]Derating Factor Compatibility
API 5L X421001.0Excellent
API 5L X521000.95Good
API 5L X60800.90Acceptable
API 5L X65700.85Limited
API 5L X70500.80Not recommended

Usage Example

AdiabaticPipe pipe = new AdiabaticPipe("H2 Pipeline", stream);
pipe.setDiameter(0.508);
pipe.setLength(150000.0);

HydrogenPipelineDesign design = new HydrogenPipelineDesign(pipe);
design.setMaxOperationPressure(100.0);
design.setDesignPressure(110.0);
design.setDesignTemperature(60.0);
design.setMaterialGrade("X52");
design.setHydrogenMoleFraction(1.0);
design.calcDesign();

double wallThickness = design.getRequiredWallThickness();
boolean compatible = design.isMaterialCompatible();
Version:
1.0
Author:
esol
See Also:
  • Field Details

    • serialVersionUID

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

      private double outerDiameter
      Outer diameter [m].
    • designPressure

      private double designPressure
      Design pressure [bara].
    • designTemperature

      private double designTemperature
      Design temperature [C].
    • materialGrade

      private String materialGrade
      Material grade per API 5L.
    • smys

      private double smys
      SMYS of selected material [MPa].
    • smts

      private double smts
      SMTS of selected material [MPa].
    • hydrogenMoleFraction

      private double hydrogenMoleFraction
      Hydrogen mole fraction in transported gas [0-1].
    • designFactor

      private double designFactor
      Design factor per ASME B31.12 (lower than natural gas).
    • jointFactor

      private double jointFactor
      Joint factor (1.0 for seamless or SAW).
    • temperatureDeratingFactor

      private double temperatureDeratingFactor
      Temperature derating factor.
    • hydrogenDeratingFactor

      private double hydrogenDeratingFactor
      Hydrogen derating factor based on material grade.
    • corrosionAllowance

      private double corrosionAllowance
      Corrosion allowance [mm].
    • requiredWallThickness

      private double requiredWallThickness
      Required wall thickness [mm].
    • pipelineLength

      private double pipelineLength
      Pipeline length [m].
    • waterDepth

      private double waterDepth
      Water depth for subsea pipelines [m], 0 for onshore.
    • permeationRate

      private double permeationRate
      Calculated hydrogen permeation rate [mol/(m2 s)].
    • materialCompatible

      private boolean materialCompatible
      Whether the material is compatible with hydrogen.
    • MAX_HARDNESS_HRC

      private static final double MAX_HARDNESS_HRC
      Maximum hardness for hydrogen service per ASME B31.12 [HRC].
      See Also:
    • MAX_SMYS_H2_MPA

      private static final double MAX_SMYS_H2_MPA
      Maximum SMYS for hydrogen service per ASME B31.12 [MPa].
      See Also:
  • Constructor Details

    • HydrogenPipelineDesign

      public HydrogenPipelineDesign(ProcessEquipmentInterface equipment)
      Constructor for HydrogenPipelineDesign.
      Parameters:
      equipment - the pipeline equipment
  • Method Details

    • calcDesign

      public void calcDesign()

      calcDesign.

      Overrides:
      calcDesign in class MechanicalDesign
    • updateMaterialProperties

      private void updateMaterialProperties()
      Look up material SMYS/SMTS based on grade.
    • calculateHydrogenDeratingFactor

      private double calculateHydrogenDeratingFactor(String grade)
      Calculate hydrogen derating factor per ASME B31.12 Table IX-5A.

      Higher strength steels are more susceptible to hydrogen embrittlement.

      Parameters:
      grade - material grade
      Returns:
      derating factor [0-1]
    • checkMaterialCompatibility

      private boolean checkMaterialCompatibility()
      Check material compatibility with hydrogen service.
      Returns:
      true if material is compatible
    • calculatePermeationRate

      private double calculatePermeationRate()
      Calculate hydrogen permeation rate through pipe wall.

      Based on Sieverts' law: J = Phi * sqrt(P) / t, where Phi is the permeability coefficient.

      Returns:
      permeation rate [mol/(m2 s)]
    • getRequiredWallThickness

      public double getRequiredWallThickness()
      Get required wall thickness [mm].
      Returns:
      required wall thickness including corrosion allowance [mm]
    • getHydrogenDeratingFactor

      public double getHydrogenDeratingFactor()
      Get hydrogen derating factor.
      Returns:
      derating factor [0-1]
    • isMaterialCompatible

      public boolean isMaterialCompatible()
      Check if material is compatible with hydrogen service.
      Returns:
      true if compatible
    • getPermeationRate

      public double getPermeationRate()
      Get hydrogen permeation rate.
      Returns:
      permeation rate [mol/(m2 s)]
    • setOuterDiameter

      public void setOuterDiameter(double od)
      Set outer diameter [m].
      Overrides:
      setOuterDiameter in class MechanicalDesign
      Parameters:
      od - outer diameter [m]
    • getOuterDiameter

      public double getOuterDiameter()
      Get outer diameter [m].
      Overrides:
      getOuterDiameter in class MechanicalDesign
      Returns:
      outer diameter [m]
    • setDesignPressure

      public void setDesignPressure(double pressure)
      Set design pressure [bara].
      Parameters:
      pressure - design pressure [bara]
    • setDesignTemperature

      public void setDesignTemperature(double temperature)
      Set design temperature [C].
      Parameters:
      temperature - design temperature [C]
    • setMaterialGrade

      public void setMaterialGrade(String grade)
      Set material grade per API 5L.
      Parameters:
      grade - material grade (e.g. "X42", "X52", "X65")
    • getMaterialGrade

      public String getMaterialGrade()
      Get material grade.
      Returns:
      material grade
    • setHydrogenMoleFraction

      public void setHydrogenMoleFraction(double fraction)
      Set hydrogen mole fraction [0-1].
      Parameters:
      fraction - hydrogen mole fraction
    • setDesignFactor

      public void setDesignFactor(double factor)
      Set design factor per ASME B31.12 (default 0.50 for hydrogen).
      Parameters:
      factor - design factor
    • setCorrosionAllowance

      public void setCorrosionAllowance(double ca)
      Set corrosion allowance [mm].
      Overrides:
      setCorrosionAllowance in class MechanicalDesign
      Parameters:
      ca - corrosion allowance [mm]
    • setPipelineLength

      public void setPipelineLength(double length)
      Set pipeline length [m].
      Parameters:
      length - pipeline length [m]
    • getPipelineLength

      public double getPipelineLength()
      Get pipeline length [m].
      Returns:
      pipeline length [m]
    • setWaterDepth

      public void setWaterDepth(double depth)
      Set water depth for subsea pipelines [m].
      Parameters:
      depth - water depth [m], 0 for onshore
    • getSmys

      public double getSmys()
      Get SMYS [MPa].
      Returns:
      specified minimum yield strength [MPa]
    • getDesignFactor

      public double getDesignFactor()
      Get design factor.
      Returns:
      design factor
    • getDesignResults

      public Map<String,Object> getDesignResults()
      Get design results as a map.
      Returns:
      design results