Class NorsokM001MaterialSelection

java.lang.Object
neqsim.process.corrosion.NorsokM001MaterialSelection
All Implemented Interfaces:
Serializable

public class NorsokM001MaterialSelection extends Object implements Serializable
Material selection helper per NORSOK M-001 "Materials selection".

Provides material grade recommendations for pipelines and process piping based on the corrosion environment (CO2 corrosion rate, H2S partial pressure, chloride content, temperature). Integrates with NorsokM506CorrosionRate for CO2 corrosion rate input.

NORSOK M-001 classifies service environments and maps them to suitable material grades:

  • Sweet service (CO2 only): carbon steel with corrosion allowance, or 13Cr/duplex for high rates
  • Sour service (H2S present per NACE MR0175/ISO 15156): material restrictions based on hardness and SSC resistance
  • Chloride-containing: pitting and SCC risk for austenitic stainless steels

Usage example:


NorsokM001MaterialSelection selector = new NorsokM001MaterialSelection();
selector.setCO2CorrosionRateMmyr(2.5);
selector.setH2SPartialPressureBar(0.05);
selector.setChlorideConcentrationMgL(50000);
selector.setDesignTemperatureC(80.0);
selector.setDesignLifeYears(25);
selector.evaluate();

String material = selector.getRecommendedMaterial();
String category = selector.getServiceCategory();
double ca = selector.getRecommendedCorrosionAllowanceMm();
String json = selector.toJson();

Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

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

      private double co2CorrosionRateMmyr
      CO2 corrosion rate in mm/yr (from NORSOK M-506 or equivalent model).
    • h2sPartialPressureBar

      private double h2sPartialPressureBar
      H2S partial pressure in bar.
    • designTemperatureC

      private double designTemperatureC
      Design temperature in degrees Celsius.
    • maxDesignTemperatureC

      private double maxDesignTemperatureC
      Maximum design temperature in degrees Celsius.
    • chlorideConcentrationMgL

      private double chlorideConcentrationMgL
      Chloride concentration in mg/L (ppm).
    • designLifeYears

      private double designLifeYears
      Design life in years.
    • aqueousPH

      private double aqueousPH
      pH of aqueous phase.
    • co2PartialPressureBar

      private double co2PartialPressureBar
      CO2 partial pressure in bar (for CRA selection criteria).
    • freeWaterPresent

      private boolean freeWaterPresent
      Whether the system has free water present.
    • serviceCategory

      private String serviceCategory
      Service category string.
    • recommendedMaterial

      private String recommendedMaterial
      Recommended material grade.
    • alternativeMaterials

      private List<String> alternativeMaterials
      Alternative material options.
    • recommendedCorrosionAllowanceMm

      private double recommendedCorrosionAllowanceMm
      Recommended corrosion allowance in mm.
    • materialMaxTemperatureC

      private double materialMaxTemperatureC
      Maximum temperature for recommended material in degrees C.
    • sourClassification

      private String sourClassification
      Sour service classification per NACE MR0175.
    • chlorideSCCRisk

      private String chlorideSCCRisk
      Chloride SCC risk level.
    • notes

      private List<String> notes
      Key notes and warnings.
    • hasBeenEvaluated

      private boolean hasBeenEvaluated
      Whether evaluation has been performed.
  • Constructor Details

    • NorsokM001MaterialSelection

      public NorsokM001MaterialSelection()
      Creates a new NorsokM001MaterialSelection with default parameters.
  • Method Details

    • setCO2CorrosionRateMmyr

      public void setCO2CorrosionRateMmyr(double rateMmyr)
      Sets the CO2 corrosion rate (from NORSOK M-506 model or measured).
      Parameters:
      rateMmyr - CO2 corrosion rate in mm/yr
    • setH2SPartialPressureBar

      public void setH2SPartialPressureBar(double pressureBar)
      Sets the H2S partial pressure.
      Parameters:
      pressureBar - H2S partial pressure in bar
    • setDesignTemperatureC

      public void setDesignTemperatureC(double temperatureC)
      Sets the design temperature.
      Parameters:
      temperatureC - design temperature in Celsius
    • setMaxDesignTemperatureC

      public void setMaxDesignTemperatureC(double temperatureC)
      Sets the maximum design temperature.
      Parameters:
      temperatureC - maximum design temperature in Celsius
    • setChlorideConcentrationMgL

      public void setChlorideConcentrationMgL(double concentrationMgL)
      Sets the chloride concentration in formation/produced water.
      Parameters:
      concentrationMgL - chloride concentration in mg/L (ppm)
    • setDesignLifeYears

      public void setDesignLifeYears(double years)
      Sets the design life for corrosion allowance calculation.
      Parameters:
      years - design life in years (typically 20-30)
    • setAqueousPH

      public void setAqueousPH(double pH)
      Sets the aqueous phase pH.
      Parameters:
      pH - aqueous phase pH (3.0 to 7.0)
    • setCO2PartialPressureBar

      public void setCO2PartialPressureBar(double pressureBar)
      Sets the CO2 partial pressure (for CRA selection criteria).
      Parameters:
      pressureBar - CO2 partial pressure in bar
    • setFreeWaterPresent

      public void setFreeWaterPresent(boolean present)
      Sets whether free water is present in the system.
      Parameters:
      present - true if free water is present
    • evaluate

      public void evaluate()
      Evaluates the service environment and recommends material grade and corrosion allowance.

      This method classifies the service conditions (sweet/sour, chloride risk), evaluates the corrosion severity, and selects the appropriate material grade per NORSOK M-001 guidelines.

    • classifySourService

      private String classifySourService()
      Classifies sour service severity per NACE MR0175/ISO 15156.

      Classification based on H2S partial pressure:

      • Non-sour: H2S pp less than 0.3 kPa (0.003 bar)
      • Mild sour (SSC Region 0): 0.003 to 0.01 bar
      • Moderate sour (SSC Region 1): 0.01 to 0.1 bar
      • Severe sour (SSC Region 2/3): greater than 0.1 bar
      Returns:
      sour service classification string
    • determineServiceCategory

      private String determineServiceCategory()
      Determines the overall service category.
      Returns:
      service category string
    • assessChlorideSCCRisk

      private String assessChlorideSCCRisk()
      Assesses chloride stress corrosion cracking (SCC) risk.

      Per NORSOK M-001, SCC risk for austenitic and duplex stainless steels depends on chloride concentration and temperature:

      • Low risk: Cl less than 50 mg/L or temperature below 60 degrees C
      • Medium risk: 50-1000 mg/L Cl at 60-100 degrees C
      • High risk: greater than 1000 mg/L Cl at temperatures above 80 degrees C
      • Very high: greater than 50000 mg/L (saturated brine) at elevated temperature
      Returns:
      SCC risk classification
    • selectMaterial

      private void selectMaterial()
      Selects the recommended material and alternatives based on service conditions.
    • selectSweetServiceMaterial

      private void selectSweetServiceMaterial(boolean highChloride, boolean veryHighChloride)
      Selects material for sweet (CO2 only) service per NORSOK M-001.
      Parameters:
      highChloride - true if Cl greater than 1000 mg/L
      veryHighChloride - true if Cl greater than 50000 mg/L
    • selectSourServiceMaterial

      private void selectSourServiceMaterial(boolean isSevereSour, boolean highChloride, boolean veryHighChloride)
      Selects material for sour service per NORSOK M-001 and NACE MR0175/ISO 15156.
      Parameters:
      isSevereSour - true if H2S pp greater than 0.1 bar
      highChloride - true if Cl greater than 1000 mg/L
      veryHighChloride - true if Cl greater than 50000 mg/L
    • calculateCorrosionAllowance

      private void calculateCorrosionAllowance()
      Calculates the recommended corrosion allowance per NORSOK M-001.

      Guidelines per NORSOK M-001:

      • Minimum CA for carbon steel: 1.0 mm
      • Standard CA: corrosion rate * design life
      • Maximum practical CA: 6.0 mm (above this, CRA is usually more economic)
      • CRA materials: 0 mm CA (inherently resistant)
      • Sour service CS: additional 1.0 mm for pitting/localized attack
    • getServiceCategory

      public String getServiceCategory()
      Returns the service category classification.
      Returns:
      service category string
    • getRecommendedMaterial

      public String getRecommendedMaterial()
      Returns the recommended material grade.
      Returns:
      recommended material string
    • getAlternativeMaterials

      public List<String> getAlternativeMaterials()
      Returns the list of alternative material options.
      Returns:
      list of alternative material strings
    • getRecommendedCorrosionAllowanceMm

      public double getRecommendedCorrosionAllowanceMm()
      Returns the recommended corrosion allowance.
      Returns:
      corrosion allowance in mm
    • getMaterialMaxTemperatureC

      public double getMaterialMaxTemperatureC()
      Returns the maximum temperature limit for the recommended material.
      Returns:
      maximum temperature in degrees Celsius
    • getSourClassification

      public String getSourClassification()
      Returns the sour service classification.
      Returns:
      sour classification string per NACE MR0175
    • getChlorideSCCRisk

      public String getChlorideSCCRisk()
      Returns the chloride SCC risk level.
      Returns:
      SCC risk classification string
    • getNotes

      public List<String> getNotes()
      Returns the notes and warnings from the evaluation.
      Returns:
      list of notes and warning strings
    • toMap

      public Map<String,Object> toMap()
      Returns all evaluation results as a map.
      Returns:
      map of all parameters and recommendations
    • toJson

      public String toJson()
      Returns a comprehensive JSON report of all recommendations and classifications.
      Returns:
      JSON string with all material selection results
    • ensureEvaluated

      private void ensureEvaluated()
      Ensures evaluation has been performed.