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 = annual frequency of events causing at least N fatalities [events/year]
Both axes use a logarithmic scale.
2. Key Concepts#
Scenario Frequency P(As)
Annual rate [events/year] at which accidental scenario 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 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 —
2.1 Formal Definitions#
3. Calculation Sequence#
flowchart TD A["Risk Models<br/>(PoolFire, JetFire, VCE, FlashFire, FireBall)<br/>with frequency P(As) per scenario"] --> B["Step 1: Model Fatalities<br/>FatalityUtils.js<br/>Concentric rings 5m wide, up to 10 km<br/>E[F(As)] = Σ Fatal_i"] B --> C["Step 2: Exposed Population Ng<br/>ng-calculator.ts<br/>Probit: Ng = π×r₁%²×ρ_pop<br/>Flash Fire: Ng = A_LFL×ρ_pop<br/>Wind rose: Ng = Σ Ng_i×P(dir_i)"] C --> D["Step 3: F-N Curve Construction<br/>social-risk-table.tsx<br/>F(N) = Σ fs for all s where Ns ≥ N<br/>Decreasing step function on log-log axes"] D --> E["Step 4: ALARP Criteria Evaluation<br/>fn-curve-analysis.ts<br/>Upper limit: F_lim(N) = C₁/N^|n|<br/>Excess: ΔF(N) = F(N) − F_obj(N)"] style A fill:#e1f5fe style E fill:#c8e6c9 style D fill:#fff3e0
Model Fatalities — For each scenario,
FatalityUtils.jsintegrates the death probability over concentric rings of 5 m width (up to 10 km), computing using the applicable Probit function.Exposed Population —
ng-calculator.tscomputes 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 Construction —
calculateFnCurve()collects all pairs and computes for each unique value, producing a decreasing log-log step function.ALARP Evaluation —
analyzeUnacceptableScenarios()compares each curve point against the upper limit , computes excess frequency , 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):
The accumulated thermal dose in each ring:
Code: FatalityUtils.js → calculateFatalities().
4.2 Fatality Probit Functions#
CCPS Methodology (Eisenberg):
Reference: CCPS, Guidelines for CPQRA, 2nd Ed., p. 269.
TNO Methodology:
Reference: TNO Green Book (CPR 14E), 1997, p. 20, eq. 3.5.
4.3 Probit to Fatality Percentage#
4.4 Fatalities per Ring#
5. Exposed Population — #
5.1 PoolFire, JetFire, VCE, FireBall#
Interpolates model results to find the 1% death probability radius :
Linear interpolation between adjacent rings where fatal percentage crosses 1%:
Code: ng-calculator.ts → calculateNgForProbitModel().
6. F-N Curve Construction#
6.1 Formal Definition#
Given accidental scenarios, each with frequency [events/year] and fatalities [persons]:
is the sum of frequencies of all scenarios that produce at least fatalities.
Code: social-risk-table.tsx → calculateFnCurve().
6.2 Algorithm#
Collect all scenarios with their pairs : frequency and fatalities for each
Extract the unique set of values, sorted in descending order
For each : compute where
Plot the pairs as a decreasing step function on log-log axes
7. Tolerance Zones and ALARP Criteria#
7.1 Limit Lines#
The tolerability lines are power functions on the log-log plane:
| Line | Formula | Meaning |
|---|---|---|
| Upper limit | Boundary between Unacceptable and ALARP zones | |
| Lower limit | Boundary between ALARP and Acceptable zones |
Code: fn-curve-analysis.ts → calculateUpperLimit(); fn-curve-chartjs.tsx → drawLimitLines().
7.2 ALARP Zones#
| Zone | Criterion | Required action |
|---|---|---|
| Unacceptable | Mandatory risk reduction | |
| ALARP | Reduce unless disproportionately costly | |
| Acceptable | No further action required |
7.3 International Standard Criteria#
| Parameter | Value |
|---|---|
| (upper) | events/year |
| (lower) | events/year |
| Slope | |
| Reference | R2P2 (2001) |
8. Unacceptable Scenario Analysis#
A point is unacceptable when .
Identify unacceptable point — Find all where
Apply ALARP target — Set objective with 10% safety margin below upper limit:
Compute excess frequency:
Required reduction per scenario — For contributing scenario : If , the scenario alone cannot fix the problem — combined reductions are required.
Code: fn-curve-analysis.ts → analyzeUnacceptablePoint(), lines 60–127.
9. Individual Risk#
9.1 Calculation#
9.2 Classification#
| Classification | Criterion |
|---|---|
| Acceptable | |
| ALARP | |
| Unacceptable |
Code: individual-risk-summary.tsx → evaluateRiskStatus().
9.3 Criteria by Country / Standard#
| Group | Intolerable | Tolerable |
|---|---|---|
| Public | /year | /year |
| Workers | /year | /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 .
Run consequence calculations — Execute each model to obtain
fatalidades.sumaFatalidadesandfatalidades.resultados.Configure criteria — In Project Settings → Social Risk Criteria, select the international standard or enter custom , , and values.
Visualize the F-N Curve — In the Social Risk tab → F-N Curve sub-tab, the table automatically computes and for each scenario and plots them.
Interpret zones — Points above the upper line () are unacceptable. The system generates automatic frequency reduction recommendations.
Individual Risk — In the Individual Risk sub-tab, enter or let the system calculate it automatically, then verify against the country criterion.
11. Applications of the F-N Curve#
| Application | Description |
|---|---|
| Industrial QRA | Quantitative risk assessment of petrochemical facilities, process plants, and storage terminals |
| Land-use planning | Determining restriction zones and safety distances around hazardous facilities |
| Operating permits | Comparing facility risk against national regulatory criteria to obtain permits |
| Safeguard design | Identifying which scenarios need additional protection layers (SIL, safety valves, PLC) |
| Alternative comparison | Evaluating the impact of different plant configurations, materials, or technologies |
| Regulatory communication | Presenting QRA results to regulators (ASEA, HSE, INERIS) in a standardized format |
| Industrial insurance | Quantifying PML (Probable Maximum Loss) for insurance premium calculation |
| Emergency planning | Determining evacuation zones based on concentration/radiation isopleths |