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.
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 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
Model Fatalities — For each scenario, FatalityUtils.js integrates the death probability over concentric rings of 5 m width (up to 10 km), computing using the applicable Probit function.
Exposed Population — ng-calculator.ts computes 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
Stopping criterion
Calculation stops when . If the result is returned as 0 (negligible impact). Code: FatalityUtils.js, lines 111–200.
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
Monotone property
The F-N curve is always a decreasing step function: for all , 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:
| 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
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.
| 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) |
Per-project configuration
Values , , and are configured in Project Settings → Social Risk Criteria and persisted to project.socialRiskCriteria.
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 (NTE-002-CGPC, §14.3)
| 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.sumaFatalidades and fatalidades.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.
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 and its own . On the F-N curve they appear as separate rows: {scenario_name} — {direction}.
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 |