Class NorsokM001MaterialSelection
java.lang.Object
neqsim.process.corrosion.NorsokM001MaterialSelection
- All Implemented Interfaces:
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 Summary
FieldsModifier and TypeFieldDescriptionAlternative material options.private doublepH of aqueous phase.private doubleChloride concentration in mg/L (ppm).private StringChloride SCC risk level.private doubleCO2 corrosion rate in mm/yr (from NORSOK M-506 or equivalent model).private doubleCO2 partial pressure in bar (for CRA selection criteria).private doubleDesign life in years.private doubleDesign temperature in degrees Celsius.private booleanWhether the system has free water present.private doubleH2S partial pressure in bar.private booleanWhether evaluation has been performed.private doubleMaximum temperature for recommended material in degrees C.private doubleMaximum design temperature in degrees Celsius.Key notes and warnings.private doubleRecommended corrosion allowance in mm.private StringRecommended material grade.private static final longSerialization version UID.private StringService category string.private StringSour service classification per NACE MR0175. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new NorsokM001MaterialSelection with default parameters. -
Method Summary
Modifier and TypeMethodDescriptionprivate StringAssesses chloride stress corrosion cracking (SCC) risk.private voidCalculates the recommended corrosion allowance per NORSOK M-001.private StringClassifies sour service severity per NACE MR0175/ISO 15156.private StringDetermines the overall service category.private voidEnsures evaluation has been performed.voidevaluate()Evaluates the service environment and recommends material grade and corrosion allowance.Returns the list of alternative material options.Returns the chloride SCC risk level.doubleReturns the maximum temperature limit for the recommended material.getNotes()Returns the notes and warnings from the evaluation.doubleReturns the recommended corrosion allowance.Returns the recommended material grade.Returns the service category classification.Returns the sour service classification.private voidSelects the recommended material and alternatives based on service conditions.private voidselectSourServiceMaterial(boolean isSevereSour, boolean highChloride, boolean veryHighChloride) Selects material for sour service per NORSOK M-001 and NACE MR0175/ISO 15156.private voidselectSweetServiceMaterial(boolean highChloride, boolean veryHighChloride) Selects material for sweet (CO2 only) service per NORSOK M-001.voidsetAqueousPH(double pH) Sets the aqueous phase pH.voidsetChlorideConcentrationMgL(double concentrationMgL) Sets the chloride concentration in formation/produced water.voidsetCO2CorrosionRateMmyr(double rateMmyr) Sets the CO2 corrosion rate (from NORSOK M-506 model or measured).voidsetCO2PartialPressureBar(double pressureBar) Sets the CO2 partial pressure (for CRA selection criteria).voidsetDesignLifeYears(double years) Sets the design life for corrosion allowance calculation.voidsetDesignTemperatureC(double temperatureC) Sets the design temperature.voidsetFreeWaterPresent(boolean present) Sets whether free water is present in the system.voidsetH2SPartialPressureBar(double pressureBar) Sets the H2S partial pressure.voidsetMaxDesignTemperatureC(double temperatureC) Sets the maximum design temperature.toJson()Returns a comprehensive JSON report of all recommendations and classifications.toMap()Returns all evaluation results as a map.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
co2CorrosionRateMmyr
private double co2CorrosionRateMmyrCO2 corrosion rate in mm/yr (from NORSOK M-506 or equivalent model). -
h2sPartialPressureBar
private double h2sPartialPressureBarH2S partial pressure in bar. -
designTemperatureC
private double designTemperatureCDesign temperature in degrees Celsius. -
maxDesignTemperatureC
private double maxDesignTemperatureCMaximum design temperature in degrees Celsius. -
chlorideConcentrationMgL
private double chlorideConcentrationMgLChloride concentration in mg/L (ppm). -
designLifeYears
private double designLifeYearsDesign life in years. -
aqueousPH
private double aqueousPHpH of aqueous phase. -
co2PartialPressureBar
private double co2PartialPressureBarCO2 partial pressure in bar (for CRA selection criteria). -
freeWaterPresent
private boolean freeWaterPresentWhether the system has free water present. -
serviceCategory
Service category string. -
recommendedMaterial
Recommended material grade. -
alternativeMaterials
-
recommendedCorrosionAllowanceMm
private double recommendedCorrosionAllowanceMmRecommended corrosion allowance in mm. -
materialMaxTemperatureC
private double materialMaxTemperatureCMaximum temperature for recommended material in degrees C. -
sourClassification
Sour service classification per NACE MR0175. -
chlorideSCCRisk
Chloride SCC risk level. -
notes
-
hasBeenEvaluated
private boolean hasBeenEvaluatedWhether 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
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
Determines the overall service category.- Returns:
- service category 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/LveryHighChloride- 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 barhighChloride- true if Cl greater than 1000 mg/LveryHighChloride- 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
Returns the service category classification.- Returns:
- service category string
-
getRecommendedMaterial
Returns the recommended material grade.- Returns:
- recommended material string
-
getAlternativeMaterials
-
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
Returns the sour service classification.- Returns:
- sour classification string per NACE MR0175
-
getChlorideSCCRisk
Returns the chloride SCC risk level.- Returns:
- SCC risk classification string
-
getNotes
-
toMap
-
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.
-