Class SafetyValveMechanicalDesign

All Implemented Interfaces:
Serializable

public class SafetyValveMechanicalDesign extends ValveMechanicalDesign
Mechanical design for safety valves based on API 520 gas sizing.
Author:
esol
See Also:
  • Field Details

  • Constructor Details

  • Method Details

    • calcGasOrificeAreaAPI520

      public double calcGasOrificeAreaAPI520(double massFlow, double relievingPressure, double relievingTemperature, double z, double molecularWeight, double k, double kd, double kb, double kw)
      Calculates the required orifice area for gas/vapor service according to API 520.
      Parameters:
      massFlow - mass flow rate at relieving conditions [kg/s]
      relievingPressure - absolute relieving pressure [Pa]
      relievingTemperature - relieving temperature [K]
      z - gas compressibility factor [-]
      molecularWeight - molecular weight [kg/mol]
      k - heat capacity ratio (Cp/Cv) [-]
      kd - discharge coefficient [-]
      kb - back pressure correction factor [-]
      kw - installation correction factor [-]
      Returns:
      required flow area [m^2]
    • calcGasOrificeAreaISO4126

      private double calcGasOrificeAreaISO4126(double massFlow, double relievingPressure, double relievingTemperature, double z, double molecularWeight, double k, double kd, double kb, double kw)
    • calcLiquidOrificeArea

      private double calcLiquidOrificeArea(double massFlow, double relievingPressure, double backPressure, double density, double kd, double kb, double kw)
    • calcHemMultiphaseOrificeArea

      private double calcHemMultiphaseOrificeArea(double massFlow, double relievingPressure, double backPressure, double density, double kd, double kb, double kw)
    • calcDesign

      public void calcDesign()

      calcDesign.

      Overrides:
      calcDesign in class ValveMechanicalDesign
    • getOrificeArea

      public double getOrificeArea()
      Returns the calculated orifice area.
      Returns:
      area [m^2]
    • getControllingOrificeArea

      public double getControllingOrificeArea()
      Returns:
      the largest required orifice area across all configured scenarios
    • getControllingScenarioName

      public String getControllingScenarioName()
      Returns:
      the name of the scenario requiring the maximum area, or null if none
    • getScenarioResults

      Immutable view of scenario sizing results keyed by scenario name.
      Returns:
      map of results
    • getScenarioReports

      Convenience accessor returning a structured report suitable for higher-level analyzers.
      Returns:
      list of report entries preserving scenario insertion order
    • buildContext

    • defaultDischargeCoefficient

      private double defaultDischargeCoefficient(SafetyValve.RelievingScenario scenario)