Social Risk & F-N Curve

Technical documentation for Social Risk quantification, F-N Curve construction, ALARP criteria evaluation, and Individual Risk calculation in industrial QRA

1. Introduction

Social Risk quantifies the hazard that an industrial facility poses to the surrounding community. Unlike Individual Risk (which evaluates the probability that a specific person will die), Social Risk expresses the relationship between the frequency of an accident and the number of fatalities it could cause.

The primary tool for visualizing and evaluating Social Risk is the F-N Curve (frequency-number chart):

  • X-axis (N): Number of fatalities in a single event
  • Y-axis (F): Cumulative frequency F(N)F(N) = annual frequency of events causing at least N fatalities [events/year]

Both axes use a logarithmic scale.

Regulatory requirement

F-N Curves are required by major QRA standards worldwide (UK R2P2, Netherlands RIVM, Mexico ASEA, Australia HIPAP, Hong Kong HKSAR) for operating permits and land-use planning around hazardous facilities.


2. Key Concepts

Scenario Frequency P(As)

Annual rate [events/year] at which accidental scenario AsA_s is expected to occur — from LOPA, fault trees, or historical databases (OREDA, TNO FACTS)

Expected Fatalities E[F(As)]

Expected number of deaths given that AsA_s occurs — computed by consequence models via concentric ring integration with Probit functions

Exposed Population Ng

Number of people within the risk radius — defined by the 1% Probit radius for thermal/overpressure models, or by the LFL area for Flash Fire

Average Individual Risk RIg

Annual probability that an average person in the exposed population will die — RIg=E[Fa]/NgRI_g = E[F_a] / N_g

2.1 Formal Definitions

E[F(As)]=riPdeath(ri)ρpopAring(ri)E[F(A_s)] = \sum_{r_i} P_{death}(r_i) \cdot \rho_{pop} \cdot A_{ring}(r_i) Ng=πr1%2ρpop(Probit models)Ng=ALFLρpop(Flash Fire)N_g = \pi \cdot r_{1\%}^2 \cdot \rho_{pop} \quad \text{(Probit models)} \qquad N_g = A_{LFL} \cdot \rho_{pop} \quad \text{(Flash Fire)} RIg=E[Fa]Ng,whereE[Fa]=sP(As)E[F(As)]RI_g = \frac{E[F_a]}{N_g}, \quad \text{where} \quad E[F_a] = \sum_s P(A_s) \cdot E[F(A_s)]

3. Calculation Sequence

Cargando diagrama...

Model Fatalities — For each scenario, FatalityUtils.js integrates the death probability over concentric rings of 5 m width (up to 10 km), computing E[F(As)]=iFiE[F(A_s)] = \sum_i F_i using the applicable Probit function.

Exposed Population NgN_gng-calculator.ts computes NgN_g using the 1% Probit radius for thermal/overpressure models, the LFL polygon area for Flash Fire, or the weighted wind-rose sum for multi-directional scenarios.

F-N Curve ConstructioncalculateFnCurve() collects all (fs,Ns)(f_s, N_s) pairs and computes F(Nk)=s:NsNkfsF(N_k) = \sum_{s:\,N_s \geq N_k} f_s for each unique NN value, producing a decreasing log-log step function.

ALARP EvaluationanalyzeUnacceptableScenarios() compares each curve point against the upper limit Flim(N)=C1/NnF_{lim}(N) = C_1/N^{|n|}, computes excess frequency ΔF\Delta F, and generates frequency reduction recommendations per scenario.


4. Fatality Calculation by Concentric Rings

4.1 Ring Geometry and Thermal Dose

The study area is divided into concentric rings of 5 m width, from the emission point to the maximum radius (default 10 km):

Aring(ri)=π(ri+12ri2)[m2]A_{ring}(r_i) = \pi \left(r_{i+1}^2 - r_i^2\right) \quad [\text{m}^2]

The accumulated thermal dose in each ring:

Ddose=texp[q(ri)×103]4/3[(W/m2)4/3s]D_{dose} = t_{exp} \cdot \left[q(r_i) \times 10^3\right]^{4/3} \quad \left[(\text{W/m}^2)^{4/3} \cdot \text{s}\right]

Code: FatalityUtils.jscalculateFatalities().

4.2 Fatality Probit Functions

CCPS Methodology (Eisenberg):

Pr=14.9+2.56ln ⁣(Ddose10000)Pr = -14.9 + 2.56 \cdot \ln\!\left(\frac{D_{dose}}{10\,000}\right)

Reference: CCPS, Guidelines for CPQRA, 2nd Ed., p. 269.

TNO Methodology:

Pr=36.38+2.56ln(Ddose)Pr = -36.38 + 2.56 \cdot \ln(D_{dose})

Reference: TNO Green Book (CPR 14E), 1997, p. 20, eq. 3.5.

4.3 Probit to Fatality Percentage

Pfatal%=50(1+Pr5Pr5erf ⁣(Pr52))P_{fatal}\% = 50 \left(1 + \frac{Pr-5}{|Pr-5|} \cdot \text{erf}\!\left(\frac{|Pr-5|}{\sqrt{2}}\right)\right)

4.4 Fatalities per Ring

Fi=Pfatal,i100ρpopAring(ri)F_i = \frac{P_{fatal,i}}{100} \cdot \rho_{pop} \cdot A_{ring}(r_i)

Stopping criterion

Calculation stops when Pfatal<0.1%P_{fatal} < 0.1\%. If Fi<0.6\sum F_i < 0.6 the result is returned as 0 (negligible impact). Code: FatalityUtils.js, lines 111–200.


5. Exposed Population — NgN_g

5.1 PoolFire, JetFire, VCE, FireBall

Interpolates model results to find the 1% death probability radius r1%r_{1\%}:

Ng=πr1%2ρpopN_g = \pi \cdot r_{1\%}^2 \cdot \rho_{pop}

Linear interpolation between adjacent rings where fatal percentage crosses 1%:

r1%=ri+1%PiPi+1Pi(ri+1ri)r_{1\%} = r_i + \frac{1\% - P_i}{P_{i+1} - P_i} \cdot (r_{i+1} - r_i)

Code: ng-calculator.tscalculateNgForProbitModel().


6. F-N Curve Construction

6.1 Formal Definition

Given SS accidental scenarios, each with frequency fsf_s [events/year] and fatalities NsN_s [persons]:

F(N)=s:  NsNfs\boxed{F(N) = \sum_{s:\; N_s \geq N} f_s}

F(N)F(N) is the sum of frequencies of all scenarios that produce at least NN fatalities.

Code: social-risk-table.tsxcalculateFnCurve().

6.2 Algorithm

Collect all scenarios with their pairs (fs,Ns)(f_s, N_s): frequency and fatalities for each

Extract the unique set of NN values, sorted in descending order

For each NkN_k: compute F(Nk)=fsF(N_k) = \sum f_s where NsNkN_s \geq N_k

Plot the pairs (Nk,F(Nk))(N_k,\, F(N_k)) as a decreasing step function on log-log axes

Monotone property

The F-N curve is always a decreasing step function: F(N)F(N1)F(N) \leq F(N-1) for all NN, since larger fatality thresholds can only be met by fewer scenarios.


7. Tolerance Zones and ALARP Criteria

7.1 Limit Lines

The tolerability lines are power functions on the log-log plane:

Flim(N)=CNnF_{lim}(N) = \frac{C}{N^{|n|}}
LineFormulaMeaning
Upper limitFupper(N)=C1/NnF_{upper}(N) = C_1 / N^{\lvert n \rvert}Boundary between Unacceptable and ALARP zones
Lower limitFlower(N)=C2/NnF_{lower}(N) = C_2 / N^{\lvert n \rvert}Boundary between ALARP and Acceptable zones

Code: fn-curve-analysis.tscalculateUpperLimit(); fn-curve-chartjs.tsxdrawLimitLines().

7.2 ALARP Zones

ALARP principle

ALARP (As Low As Reasonably Practicable) — risk must be reduced as far as reasonably practicable. Being in the ALARP zone does not mean risk is acceptable; it must be demonstrated that further reduction is not reasonably practicable.

ZoneCriterionRequired action
UnacceptableF(N)>Fupper(N)F(N) > F_{upper}(N)Mandatory risk reduction
ALARPFlower(N)<F(N)Fupper(N)F_{lower}(N) < F(N) \leq F_{upper}(N)Reduce unless disproportionately costly
AcceptableF(N)Flower(N)F(N) \leq F_{lower}(N)No further action required

7.3 International Standard Criteria

ParameterValue
C1C_1 (upper)10210^{-2} events/year
C2C_2 (lower)10410^{-4} events/year
Slope nn1-1
ReferenceR2P2 (2001)

Per-project configuration

Values C1C_1, C2C_2, and nn are configured in Project Settings → Social Risk Criteria and persisted to project.socialRiskCriteria.


8. Unacceptable Scenario Analysis

A point (N,F(N))(N, F(N)) is unacceptable when F(N)>C1/NnF(N) > C_1 / N^{|n|}.

Identify unacceptable point — Find all (Nk,F(Nk))(N_k, F(N_k)) where F(Nk)>Fupper(Nk)F(N_k) > F_{upper}(N_k)

Apply ALARP target — Set objective with 10% safety margin below upper limit: Ftarget(N)=Fupper(N)(1m),m=0.10F_{target}(N) = F_{upper}(N) \cdot (1 - m), \quad m = 0.10

Compute excess frequency: ΔF(N)=F(N)Ftarget(N)\Delta F(N) = F(N) - F_{target}(N)

Required reduction per scenario — For contributing scenario ss: frequired,s=fcurrent,sΔF(N),RFs=fcurrent,sfrequired,sf_{required,s} = f_{current,s} - \Delta F(N), \quad RF_s = \frac{f_{current,s}}{f_{required,s}} If frequired,s0f_{required,s} \leq 0, the scenario alone cannot fix the problem — combined reductions are required.

Code: fn-curve-analysis.tsanalyzeUnacceptablePoint(), lines 60–127.


9. Individual Risk

9.1 Calculation

E[Fa]=sP(As)E[F(As)],RIg=E[Fa]NgE[F_a] = \sum_{s} P(A_s) \cdot E[F(A_s)], \qquad RI_g = \frac{E[F_a]}{N_g}

9.2 Classification (NTE-002-CGPC, §14.3)

ClassificationCriterion
AcceptableRIg<tolerable thresholdRI_g < \text{tolerable threshold}
ALARPtolerableRIg<intolerable\text{tolerable} \leq RI_g < \text{intolerable}
UnacceptableRIgintolerable thresholdRI_g \geq \text{intolerable threshold}

Code: individual-risk-summary.tsxevaluateRiskStatus().

9.3 Criteria by Country / Standard

GroupIntolerableTolerable
Public10410^{-4}/year10610^{-6}/year
Workers10310^{-3}/year10610^{-6}/year

Reference: R2P2 (2001)

Code: individual-risk-presets.ts.


10. How to Use in the System

Define scenarios — For each source, create RiskModels with event type (PoolFire, JetFire, FlashFire, VCE, FireBall) and assign frequency P(As)P(A_s).

Run consequence calculations — Execute each model to obtain fatalidades.sumaFatalidades and fatalidades.resultados.

Configure criteria — In Project Settings → Social Risk Criteria, select the international standard or enter custom C1C_1, C2C_2, and nn values.

Visualize the F-N Curve — In the Social Risk tab → F-N Curve sub-tab, the table automatically computes NN and F(N)F(N) for each scenario and plots them.

Interpret zones — Points above the upper line (F>C1/NnF > C_1/N^{|n|}) are unacceptable. The system generates automatic frequency reduction recommendations.

Individual Risk — In the Individual Risk sub-tab, enter NgN_g or let the system calculate it automatically, then verify RIgRI_g against the country criterion.

Flash Fire with wind rose (petals)

For Flash Fire events with uncertain wind direction, activate the wind rose in the model panel. The system expands the scenario into up to 16 sub-scenarios — one per wind direction — each with effective frequency P(As)×Pdir,iP(A_s) \times P_{dir,i} and its own Ng,iN_{g,i}. On the F-N curve they appear as separate rows: {scenario_name} — {direction}.


11. Applications of the F-N Curve

ApplicationDescription
Industrial QRAQuantitative risk assessment of petrochemical facilities, process plants, and storage terminals
Land-use planningDetermining restriction zones and safety distances around hazardous facilities
Operating permitsComparing facility risk against national regulatory criteria to obtain permits
Safeguard designIdentifying which scenarios need additional protection layers (SIL, safety valves, PLC)
Alternative comparisonEvaluating the impact of different plant configurations, materials, or technologies
Regulatory communicationPresenting QRA results to regulators (ASEA, HSE, INERIS) in a standardized format
Industrial insuranceQuantifying PML (Probable Maximum Loss) for insurance premium calculation
Emergency planningDetermining evacuation zones based on concentration/radiation isopleths

12. Analysis Limitations


13. Bibliographic References