Class FireProtectionDesign
- All Implemented Interfaces:
Serializable
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 ClassesModifier and TypeClassDescriptionstatic classHolds results from a comprehensive fire scenario assessment. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final doubleStandard heat flux for hydrocarbon pool fire per API 521, kW/m2.private static final doubleStandard heat flux for jet fire per NORSOK S-001, kW/m2.private static final longSerialization version UID.private static final doubleTemperature limit for structural steel without PFP in Celsius.private static final doubleStefan-Boltzmann constant in W/(m2*K4). -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionassessFireScenarios(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 doublebleveFireballDiameter(double flammableMassKg) Calculate BLEVE fireball diameter using CCPS correlation.static doublebleveFireballDuration(double flammableMassKg) Calculate BLEVE fireball duration using CCPS correlation.static doublebleveOverpressure(double pressureBara, double volumeM3, double distanceM) Calculate BLEVE peak overpressure using TNT-equivalence method.static doubleblowdownTime(double inventoryKg, double initialPressureBara, double targetPressureBara, double orificeAreaMm2, double molecularWeightKgKmol, double temperatureK) Calculate emergency depressuring (blowdown) time estimate.static StringRun fire scenario assessment for a list of equipment and return combined JSON report.static doublefirewaterDemand(double protectedAreaM2, double applicationRateLpmM2, int numberOfHydrants, double hydrantFlowLpm) Estimate firewater demand for an area.static doublejetFireFlameLength(double massReleaseKgS, double heatOfCombustionKJKg) Calculate jet fire flame length using the Chamberlain model.static booleanmeetsBlowdownRequirement(double inventoryKg, double initialPressureBara, double targetPressureBara, double orificeAreaMm2, double molecularWeightKgKmol, double temperatureK) Check whether blowdown meets NORSOK S-001 15-minute requirement.static doublepfpThickness(double fireTempC, double steelCriticalTempC, double exposureTimeMin, double pfpConductivity, double sectionFactorM) Calculate PFP thickness required to keep steel below critical temperature.static doublepointSourceRadiation(double heatReleaseRateKW, double fractionRadiated, double distanceM) Calculate thermal radiation from a point-source fire model.static doublepoolFireHeatRelease(double poolDiameterM, double massBurningRateKgM2s, double heatOfCombustionKJKg, double combustionEfficiency) Calculate pool fire heat release rate.static doublesafeDistance(double heatReleaseRateKW, double fractionRadiated, double thresholdKwM2) Determine safe separation distance for a given radiation threshold.static doublevesselPfpThickness(double vesselODMm, double wallThicknessMm, double fireRatingMinutes, double pfpConductivity) Calculate PFP thickness for a vessel or pipe.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
STEFAN_BOLTZMANN
private static final double STEFAN_BOLTZMANNStefan-Boltzmann constant in W/(m2*K4).- See Also:
-
HC_POOL_FIRE_HEAT_FLUX
private static final double HC_POOL_FIRE_HEAT_FLUXStandard heat flux for hydrocarbon pool fire per API 521, kW/m2.- See Also:
-
JET_FIRE_HEAT_FLUX
private static final double JET_FIRE_HEAT_FLUXStandard heat flux for jet fire per NORSOK S-001, kW/m2.- See Also:
-
STEEL_CRITICAL_TEMP_C
private static final double STEEL_CRITICAL_TEMP_CTemperature 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 cementitioussectionFactorM- 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 mmwallThicknessMm- steel wall thickness in mmfireRatingMinutes- 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 m2applicationRateLpmM2- water application rate in L/(min*m2), typical 10 for vesselsnumberOfHydrants- 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 kginitialPressureBara- initial operating pressure in baratargetPressureBara- target blowdown pressure (typically 6.9 barg + 1 = 7.9 bara)orificeAreaMm2- blowdown orifice area in mm2molecularWeightKgKmol- gas molecular weight in kg/kmoltemperatureK- 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 kginitialPressureBara- initial pressure in baratargetPressureBara- target pressure in bara (default 7.9)orificeAreaMm2- blowdown orifice area in mm2molecularWeightKgKmol- gas molecular weight in kg/kmoltemperatureK- 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 kWfractionRadiated- 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 kWfractionRadiated- 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 metersmassBurningRateKgM2s- mass burning rate in kg/(m2*s), typical 0.055 for LNGheatOfCombustionKJKg- heat of combustion in kJ/kgcombustionEfficiency- 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/sheatOfCombustionKJKg- 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 baravolumeM3- vessel volume in m3distanceM- 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 nameinventoryKg- hydrocarbon inventory in kgoperatingPressureBara- operating pressure in baravesselVolumeM3- vessel volume in m3 (0 if pipe/compact)poolDiameterM- estimated pool diameter in metersreleaseRateKgS- leak rate in kg/s for jet fireheatingValueKJKg- lower heating value in kJ/kgmassBurningRateKgM2s- pool fire burning rate in kg/(m2*s), typically 0.055- Returns:
- fire scenario assessment result
-
fireScenarioReport
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
-