Class SafetyEnvelopeCalculator

java.lang.Object
neqsim.process.safety.envelope.SafetyEnvelopeCalculator

public class SafetyEnvelopeCalculator extends Object
Calculator for generating safety envelopes from fluid properties.

Computes P-T curves for various safety limits including:

  • Hydrate formation temperature vs pressure
  • Wax appearance temperature (WAT) vs pressure
  • CO2 solid formation boundary
  • Minimum design metal temperature (MDMT) curves
  • Phase envelope (bubble/dew points)

Example Usage:


SafetyEnvelopeCalculator calc = new SafetyEnvelopeCalculator(gasSystem);

SafetyEnvelope hydrateEnv = calc.calculateHydrateEnvelope(1.0, 150.0, 20);
hydrateEnv.exportToCSV("hydrate_curve.csv");

// Check operating point
boolean safe = hydrateEnv.isOperatingPointSafe(50.0, 280.0);

Author:
NeqSim team
  • Field Details

    • fluid

      private final SystemInterface fluid
    • safetyMarginHydrate

      private double safetyMarginHydrate
    • safetyMarginWax

      private double safetyMarginWax
    • safetyMarginMDMT

      private double safetyMarginMDMT
    • safetyMarginCO2

      private double safetyMarginCO2
  • Constructor Details

    • SafetyEnvelopeCalculator

      public SafetyEnvelopeCalculator(SystemInterface fluid)
      Creates a new calculator for the specified fluid.
      Parameters:
      fluid - the thermodynamic system to analyze
  • Method Details

    • setHydrateSafetyMargin

      public void setHydrateSafetyMargin(double marginK)
      Sets the safety margin for hydrate calculations.
      Parameters:
      marginK - margin in Kelvin
    • setWaxSafetyMargin

      public void setWaxSafetyMargin(double marginK)
      Sets the safety margin for wax calculations.
      Parameters:
      marginK - margin in Kelvin
    • setMDMTSafetyMargin

      public void setMDMTSafetyMargin(double marginK)
      Sets the safety margin for MDMT calculations.
      Parameters:
      marginK - margin in Kelvin
    • calculateHydrateEnvelope

      public SafetyEnvelope calculateHydrateEnvelope(double minPressure, double maxPressure, int numPoints)
      Calculates the hydrate formation envelope.
      Parameters:
      minPressure - minimum pressure in bara
      maxPressure - maximum pressure in bara
      numPoints - number of points to calculate
      Returns:
      hydrate formation envelope
    • calculateWaxEnvelope

      public SafetyEnvelope calculateWaxEnvelope(double minPressure, double maxPressure, int numPoints)
      Calculates the wax appearance temperature envelope.
      Parameters:
      minPressure - minimum pressure in bara
      maxPressure - maximum pressure in bara
      numPoints - number of points to calculate
      Returns:
      WAT envelope
    • calculateCO2FreezingEnvelope

      public SafetyEnvelope calculateCO2FreezingEnvelope(double minPressure, double maxPressure, int numPoints)
      Calculates the CO2 freezing envelope.

      Uses the CO2 triple point and sublimation curve to determine solid formation risk.

      Parameters:
      minPressure - minimum pressure in bara
      maxPressure - maximum pressure in bara
      numPoints - number of points to calculate
      Returns:
      CO2 freezing envelope
    • calculatePhaseEnvelope

      public SafetyEnvelope calculatePhaseEnvelope(int numPoints)
      Calculates the phase envelope (bubble and dew point curves).
      Parameters:
      numPoints - number of points per curve
      Returns:
      phase envelope
    • calculateMDMTEnvelope

      public SafetyEnvelope calculateMDMTEnvelope(double minPressure, double maxPressure, double designTemp, int numPoints)
      Calculates MDMT envelope based on fluid composition and metallurgy.

      MDMT calculation considers:

      • Joule-Thomson cooling during depressurization
      • Auto-refrigeration from liquid flashing
      • Material impact testing requirements (e.g., ASME UCS-66)
      Parameters:
      minPressure - minimum pressure in bara
      maxPressure - maximum pressure in bara
      designTemp - design temperature in K
      numPoints - number of points to calculate
      Returns:
      MDMT envelope
    • calculateAllEnvelopes

      public SafetyEnvelope[] calculateAllEnvelopes(double minPressure, double maxPressure, int numPoints)
      Calculates a combined safety envelope with all applicable limits.
      Parameters:
      minPressure - minimum pressure in bara
      maxPressure - maximum pressure in bara
      numPoints - number of points per envelope
      Returns:
      array of all calculated envelopes
    • isOperatingPointSafe

      public static boolean isOperatingPointSafe(SafetyEnvelope[] envelopes, double pressureBara, double temperatureK)
      Checks if an operating point is safe with respect to all calculated envelopes.
      Parameters:
      envelopes - array of envelopes to check
      pressureBara - operating pressure
      temperatureK - operating temperature
      Returns:
      true if safe for all envelopes
    • getMostLimitingEnvelope

      public static SafetyEnvelope getMostLimitingEnvelope(SafetyEnvelope[] envelopes, double pressureBara, double temperatureK)
      Finds the most limiting envelope at given conditions.
      Parameters:
      envelopes - array of envelopes to check
      pressureBara - operating pressure
      temperatureK - operating temperature
      Returns:
      the envelope with smallest margin, or null if all have infinite margin
    • getFluidDescription

      private String getFluidDescription()