Class FireProtectionDesign

java.lang.Object
neqsim.process.mechanicaldesign.designstandards.FireProtectionDesign
All Implemented Interfaces:
Serializable

public class FireProtectionDesign extends Object implements Serializable
Fire protection design utilities per NORSOK S-001 and API 2510 / API 521.

Provides calculations for:

  • Passive fire protection (PFP) thickness for structural steel and vessels
  • Firewater demand estimation
  • Depressuring segment identification and blowdown time
  • Jet fire and pool fire thermal radiation

References:

  • NORSOK S-001: Technical Safety
  • API 521: Pressure-relieving and Depressuring Systems
  • API 2510: Design and Construction of LPG Installations
  • PD 7974-1: Application of fire safety engineering (pool fire model)
Version:
1.0
Author:
esol
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    Holds results from a comprehensive fire scenario assessment.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final double
    Standard heat flux for hydrocarbon pool fire per API 521, kW/m2.
    private static final double
    Standard heat flux for jet fire per NORSOK S-001, kW/m2.
    private static final long
    Serialization version UID.
    private static final double
    Temperature limit for structural steel without PFP in Celsius.
    private static final double
    Stefan-Boltzmann constant in W/(m2*K4).
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    assessFireScenarios(String equipmentName, double inventoryKg, double operatingPressureBara, double vesselVolumeM3, double poolDiameterM, double releaseRateKgS, double heatingValueKJKg, double massBurningRateKgM2s)
    Execute a comprehensive fire scenario assessment for a single equipment item.
    static double
    bleveFireballDiameter(double flammableMassKg)
    Calculate BLEVE fireball diameter using CCPS correlation.
    static double
    bleveFireballDuration(double flammableMassKg)
    Calculate BLEVE fireball duration using CCPS correlation.
    static double
    bleveOverpressure(double pressureBara, double volumeM3, double distanceM)
    Calculate BLEVE peak overpressure using TNT-equivalence method.
    static double
    blowdownTime(double inventoryKg, double initialPressureBara, double targetPressureBara, double orificeAreaMm2, double molecularWeightKgKmol, double temperatureK)
    Calculate emergency depressuring (blowdown) time estimate.
    static String
    Run fire scenario assessment for a list of equipment and return combined JSON report.
    static double
    firewaterDemand(double protectedAreaM2, double applicationRateLpmM2, int numberOfHydrants, double hydrantFlowLpm)
    Estimate firewater demand for an area.
    static double
    jetFireFlameLength(double massReleaseKgS, double heatOfCombustionKJKg)
    Calculate jet fire flame length using the Chamberlain model.
    static boolean
    meetsBlowdownRequirement(double inventoryKg, double initialPressureBara, double targetPressureBara, double orificeAreaMm2, double molecularWeightKgKmol, double temperatureK)
    Check whether blowdown meets NORSOK S-001 15-minute requirement.
    static double
    pfpThickness(double fireTempC, double steelCriticalTempC, double exposureTimeMin, double pfpConductivity, double sectionFactorM)
    Calculate PFP thickness required to keep steel below critical temperature.
    static double
    pointSourceRadiation(double heatReleaseRateKW, double fractionRadiated, double distanceM)
    Calculate thermal radiation from a point-source fire model.
    static double
    poolFireHeatRelease(double poolDiameterM, double massBurningRateKgM2s, double heatOfCombustionKJKg, double combustionEfficiency)
    Calculate pool fire heat release rate.
    static double
    safeDistance(double heatReleaseRateKW, double fractionRadiated, double thresholdKwM2)
    Determine safe separation distance for a given radiation threshold.
    static double
    vesselPfpThickness(double vesselODMm, double wallThicknessMm, double fireRatingMinutes, double pfpConductivity)
    Calculate PFP thickness for a vessel or pipe.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • serialVersionUID

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

      private static final double STEFAN_BOLTZMANN
      Stefan-Boltzmann constant in W/(m2*K4).
      See Also:
    • HC_POOL_FIRE_HEAT_FLUX

      private static final double HC_POOL_FIRE_HEAT_FLUX
      Standard heat flux for hydrocarbon pool fire per API 521, kW/m2.
      See Also:
    • JET_FIRE_HEAT_FLUX

      private static final double JET_FIRE_HEAT_FLUX
      Standard heat flux for jet fire per NORSOK S-001, kW/m2.
      See Also:
    • STEEL_CRITICAL_TEMP_C

      private static final double STEEL_CRITICAL_TEMP_C
      Temperature limit for structural steel without PFP in Celsius.
      See Also:
  • Constructor Details

    • FireProtectionDesign

      public FireProtectionDesign()
  • Method Details

    • pfpThickness

      public static double pfpThickness(double fireTempC, double steelCriticalTempC, double exposureTimeMin, double pfpConductivity, double sectionFactorM)
      Calculate PFP thickness required to keep steel below critical temperature.

      Uses one-dimensional steady-state heat conduction through an insulation layer exposed to fire temperature on one side and critical steel temperature on the other.

      Parameters:
      fireTempC - fire temperature in Celsius (typically 1100 for HC fire)
      steelCriticalTempC - maximum allowable steel temperature in Celsius (default 400)
      exposureTimeMin - fire rating time in minutes (e.g. H-60, H-120)
      pfpConductivity - PFP thermal conductivity in W/(m*K), typical 0.12 for cementitious
      sectionFactorM - section factor Hp/A in 1/m for steel member
      Returns:
      required PFP thickness in mm
    • vesselPfpThickness

      public static double vesselPfpThickness(double vesselODMm, double wallThicknessMm, double fireRatingMinutes, double pfpConductivity)
      Calculate PFP thickness for a vessel or pipe.

      Simplified calculation assuming H-120 rating and standard HC fire curve for uninsulated equipment.

      Parameters:
      vesselODMm - vessel or pipe outer diameter in mm
      wallThicknessMm - steel wall thickness in mm
      fireRatingMinutes - required fire rating in minutes (60, 90, or 120)
      pfpConductivity - PFP thermal conductivity in W/(m*K)
      Returns:
      required PFP thickness in mm
    • firewaterDemand

      public static double firewaterDemand(double protectedAreaM2, double applicationRateLpmM2, int numberOfHydrants, double hydrantFlowLpm)
      Estimate firewater demand for an area.

      Based on NORSOK S-001 requirements for deluge and hydrant systems.

      Parameters:
      protectedAreaM2 - equipment surface area requiring water spray in m2
      applicationRateLpmM2 - water application rate in L/(min*m2), typical 10 for vessels
      numberOfHydrants - number of fire hydrants to operate simultaneously (typically 2-3)
      hydrantFlowLpm - flow per hydrant in L/min (typically 1200 for NORSOK)
      Returns:
      total firewater demand in m3/hr
    • blowdownTime

      public static double blowdownTime(double inventoryKg, double initialPressureBara, double targetPressureBara, double orificeAreaMm2, double molecularWeightKgKmol, double temperatureK)
      Calculate emergency depressuring (blowdown) time estimate.

      Uses API 521 / NORSOK S-001 guidance for reducing pressure to below the level where stress rupture would occur under fire exposure. Target is typically 6.9 barg (100 psig) within 15 minutes.

      Parameters:
      inventoryKg - total hydrocarbon inventory in the segment in kg
      initialPressureBara - initial operating pressure in bara
      targetPressureBara - target blowdown pressure (typically 6.9 barg + 1 = 7.9 bara)
      orificeAreaMm2 - blowdown orifice area in mm2
      molecularWeightKgKmol - gas molecular weight in kg/kmol
      temperatureK - gas temperature in Kelvin
      Returns:
      estimated blowdown time in minutes
    • meetsBlowdownRequirement

      public static boolean meetsBlowdownRequirement(double inventoryKg, double initialPressureBara, double targetPressureBara, double orificeAreaMm2, double molecularWeightKgKmol, double temperatureK)
      Check whether blowdown meets NORSOK S-001 15-minute requirement.
      Parameters:
      inventoryKg - total hydrocarbon inventory in kg
      initialPressureBara - initial pressure in bara
      targetPressureBara - target pressure in bara (default 7.9)
      orificeAreaMm2 - blowdown orifice area in mm2
      molecularWeightKgKmol - gas molecular weight in kg/kmol
      temperatureK - gas temperature in Kelvin
      Returns:
      true if blowdown completes within 15 minutes
    • pointSourceRadiation

      public static double pointSourceRadiation(double heatReleaseRateKW, double fractionRadiated, double distanceM)
      Calculate thermal radiation from a point-source fire model.

      q = F * Q_fire / (4 * pi * r^2)

      Parameters:
      heatReleaseRateKW - total fire heat release rate in kW
      fractionRadiated - fraction of heat radiated (0.15-0.35 typical)
      distanceM - distance from fire center in meters
      Returns:
      incident thermal radiation in kW/m2
    • safeDistance

      public static double safeDistance(double heatReleaseRateKW, double fractionRadiated, double thresholdKwM2)
      Determine safe separation distance for a given radiation threshold.
      Parameters:
      heatReleaseRateKW - total fire heat release rate in kW
      fractionRadiated - fraction of heat radiated (typically 0.2 for gas)
      thresholdKwM2 - acceptable radiation level in kW/m2 (4.7 for escape, 12.5 for equipment)
      Returns:
      minimum safe distance in meters
    • poolFireHeatRelease

      public static double poolFireHeatRelease(double poolDiameterM, double massBurningRateKgM2s, double heatOfCombustionKJKg, double combustionEfficiency)
      Calculate pool fire heat release rate.

      Q = m_dot * A * deltaH_c * chi

      Parameters:
      poolDiameterM - pool diameter in meters
      massBurningRateKgM2s - mass burning rate in kg/(m2*s), typical 0.055 for LNG
      heatOfCombustionKJKg - heat of combustion in kJ/kg
      combustionEfficiency - combustion efficiency (typically 0.8-0.95)
      Returns:
      heat release rate in kW
    • jetFireFlameLength

      public static double jetFireFlameLength(double massReleaseKgS, double heatOfCombustionKJKg)
      Calculate jet fire flame length using the Chamberlain model.

      L = 0.08 * (Q_total)^0.4, where Q is the total heat release rate in kW. The 0.08 coefficient and 0.4 exponent give flame lengths consistent with Shell FRED predictions for gaseous releases up to about 50 kg/s.

      Parameters:
      massReleaseKgS - release rate in kg/s
      heatOfCombustionKJKg - lower heating value in kJ/kg
      Returns:
      jet fire flame length in meters
    • bleveFireballDiameter

      public static double bleveFireballDiameter(double flammableMassKg)
      Calculate BLEVE fireball diameter using CCPS correlation.

      D = 5.8 * M^(1/3), where M is the flammable liquid mass in kg.

      Parameters:
      flammableMassKg - total flammable liquid mass in the vessel in kg
      Returns:
      fireball diameter in meters
    • bleveFireballDuration

      public static double bleveFireballDuration(double flammableMassKg)
      Calculate BLEVE fireball duration using CCPS correlation.

      t = 0.45 * M^(1/3), where M is the flammable mass in kg.

      Parameters:
      flammableMassKg - total flammable liquid mass in kg
      Returns:
      fireball duration in seconds
    • bleveOverpressure

      public static double bleveOverpressure(double pressureBara, double volumeM3, double distanceM)
      Calculate BLEVE peak overpressure using TNT-equivalence method.

      Converts stored energy to TNT equivalent and looks up scaled overpressure. A simplified Hopkin diagram is implemented via the Sachs-Glasstone model.

      Parameters:
      pressureBara - vessel failure pressure in bara
      volumeM3 - vessel volume in m3
      distanceM - distance from vessel in meters
      Returns:
      estimated peak overpressure in kPa
    • assessFireScenarios

      public static FireProtectionDesign.FireScenarioResult assessFireScenarios(String equipmentName, double inventoryKg, double operatingPressureBara, double vesselVolumeM3, double poolDiameterM, double releaseRateKgS, double heatingValueKJKg, double massBurningRateKgM2s)
      Execute a comprehensive fire scenario assessment for a single equipment item.

      Calculates pool fire, jet fire, and BLEVE impacts based on equipment parameters.

      Parameters:
      equipmentName - equipment tag name
      inventoryKg - hydrocarbon inventory in kg
      operatingPressureBara - operating pressure in bara
      vesselVolumeM3 - vessel volume in m3 (0 if pipe/compact)
      poolDiameterM - estimated pool diameter in meters
      releaseRateKgS - leak rate in kg/s for jet fire
      heatingValueKJKg - lower heating value in kJ/kg
      massBurningRateKgM2s - pool fire burning rate in kg/(m2*s), typically 0.055
      Returns:
      fire scenario assessment result
    • fireScenarioReport

      public static String fireScenarioReport(List<FireProtectionDesign.FireScenarioResult> scenarios)
      Run fire scenario assessment for a list of equipment and return combined JSON report.
      Parameters:
      scenarios - list of fire scenario results
      Returns:
      JSON array string with all scenario results