Best for
- Jet-fire, pool-fire, VCE or BLEVE source-term modelling
- Toxic / flammable dispersion to LFL, IDLH, ERPG-2/3 or 1 % fatality contours
- Probit-based fatality probability for thermal radiation, overpressure or toxic dose
equinor/neqsim/.github/skills/neqsim-consequence-analysis/SKILL.md
Quantitative consequence analysis for oil & gas hazards — jet fire, pool fire, vapour cloud explosion (VCE), BLEVE, Gaussian plume and heavy-gas dispersion, probit-based fatality probabilities, individual and societal risk roll-up. USE WHEN: a task requires fire-radiation contours, dispersion to LFL/IDLH/ERPG, BLEVE thermal/missile assessment, or QRA-style risk integration of multiple release outcomes. Anchors on neqsim.process.safety.fire, neqsim.process.safety.dispersion, neqsim.process.safety
Decision brief
Quantitative consequence modelling that converts a release scenario (mass flow, inventory, ignition probability) into thermal radiation contours, overpressure contours, dispersion footprints, and finally individual / societal fatality risk per ISO 17776, NORSOK Z-013, API 752 an…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/equinor/neqsim --skill ".github/skills/neqsim-consequence-analysis"Inspect the Agent Skill "neqsim-consequence-analysis" from https://github.com/equinor/neqsim/blob/9e8d44a141bba600026d2229969b49af50f34237/.github/skills/neqsim-consequence-analysis/SKILL.md at commit 9e8d44a141bba600026d2229969b49af50f34237. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
src/test/java/neqsim/process/safety/{fire,dispersion,qra}/ contain JUnit 5 tests for every model. Run:
Distinct from neqsim-process-safety (HAZOP / LOPA / SIL — frequency side) and neqsim-relief-flare-network (PSV sizing / flare radiation — design side). This skill is the consequence side of QRA.
API 521 §6 — flare and vent radiation, fire heat input
Typical thermal radiation criteria (API 521 / NORSOK S-001):
Review the “Method 2 — Pool Fire” section in the pinned source before continuing.
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 86/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 136 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Quantitative consequence modelling that converts a release scenario (mass flow, inventory, ignition probability) into thermal radiation contours, overpressure contours, dispersion footprints, and finally individual / societal fatality risk per ISO 17776, NORSOK Z-013, API 752 and the CCPS Guidelines for Chemical Process Quantitative Risk Analysis.
Distinct from neqsim-process-safety (HAZOP / LOPA / SIL — frequency side) and
neqsim-relief-flare-network (PSV sizing / flare radiation — design side). This
skill is the consequence side of QRA.
import neqsim.process.safety.fire.JetFireModel;
import neqsim.process.safety.dispersion.ProbitModel;
// 30 kg/s gas leak, 50 MJ/kg HoC, 25 % radiative fraction
JetFireModel jet = new JetFireModel(30.0, 50.0e6, 0.25);
double flux50m = jet.radiationFluxAt(50.0); // W/m²
double dist125 = jet.distanceForFlux(12500.0); // m where flux = 12.5 kW/m²
Typical thermal radiation criteria (API 521 / NORSOK S-001):
| Flux (kW/m²) | Effect | Use |
|---|---|---|
| 1.6 | No discomfort for long exposure | Public area limit |
| 4.7 | Sufficient for evacuation in 30 s | Escape route |
| 12.5 | Wood ignites, equipment failure (5 min) | Process equipment limit |
| 37.5 | Structural failure of process equipment | Damage to steel structure |
import neqsim.process.safety.fire.PoolFireModel;
// 500 kg liquid, burning rate 0.05 kg/m²·s, dike diameter 8 m, η = 0.30
PoolFireModel pool = new PoolFireModel(0.05, 8.0, 50.0e6, 0.30);
double flux = pool.radiationFluxAt(25.0); // W/m² at 25 m
import neqsim.process.safety.fire.VCEModel;
// 200 kg flammable in cloud, congestion class 7 (heavy)
VCEModel vce = new VCEModel(200.0, 50.0e6, 7);
double overpressure = vce.overpressureAt(60.0); // Pa at 60 m
double safeDist = vce.distanceForOverpressure(20684.0); // m for 3 psi
import neqsim.process.safety.fire.BLEVECalculator;
// 50 t propane vessel
BLEVECalculator bleve = new BLEVECalculator(50000.0, 50.0e6, 0.40);
double fireballDiameter = bleve.fireballDiameter(); // m
double fireballDuration = bleve.fireballDuration(); // s
double thermalDose = bleve.thermalDoseAt(150.0); // (W/m²)^(4/3)·s
import neqsim.process.safety.dispersion.GaussianPlume;
// 10 kg/s leak, ground-level source, 4 m/s wind, neutral stability D
GaussianPlume plume = new GaussianPlume(10.0, 0.0, 4.0,
GaussianPlume.Stability.D, GaussianPlume.Terrain.RURAL);
double conc = plume.centerlineGroundConcentration(200.0); // kg/m³
double distLFL = plume.distanceToConcentration(0.044); // m to methane LFL
Stability classes: A (very unstable) … F (stable). RURAL vs URBAN selects Briggs σ
coefficients per Pasquill-Gifford. Use Stability.F for worst-case dispersion
analysis (calm night, low wind).
For dense releases (CO₂, propane, butane) the Gaussian model under-predicts
near-field concentrations. Use HeavyGasDispersion (Britter-McQuaid screening):
import neqsim.process.safety.dispersion.HeavyGasDispersion;
HeavyGasDispersion hgs = new HeavyGasDispersion(
50.0, // continuous release rate [kg/s]
1.98, // gas density at release [kg/m³]
1.20, // ambient density [kg/m³]
4.0); // wind speed [m/s]
double distLFL = hgs.distanceToConcentration(0.05); // m
import neqsim.process.safety.dispersion.ProbitModel;
// Thermal: Y = a + b·ln(t·F^(4/3)), 60 s exposure at 12.5 kW/m²
double pFatality = ProbitModel.thermalFatality()
.fatalityProbability(60.0, 12500.0);
// Toxic H2S: Y = -31.42 + 3.008·ln(C^1.43·t)
ProbitModel h2s = ProbitModel.h2sFatality();
double pH2S = h2s.fatalityProbability(600.0, 5.0e-4); // 10 min, 500 ppm
// Overpressure (lung haemorrhage): Y = -77.1 + 6.91·ln(P)
ProbitModel ovp = ProbitModel.overpressureFatality();
Built-in factories: thermalFatality(), overpressureFatality(),
h2sFatality(), cl2Fatality(), nh3Fatality(), coFatality(). The
ToxicLibrary class centralises probit constants for common toxic gases.
import neqsim.process.safety.qra.ConsequenceAnalysisEngine;
ConsequenceAnalysisEngine e = new ConsequenceAnalysisEngine(
"10 mm gas leak", 1.0e-4); // release frequency [/yr]
e.addJetFire(0.05, jet, ProbitModel.thermalFatality(), 60.0);
e.addJetFire(0.02, pool, ProbitModel.thermalFatality(), 60.0);
e.addToxicCloud(0.01, plume, ProbitModel.h2sFatality(), 600.0);
double IRPA = e.individualFatalityRiskPerYear(50.0); // at 50 m
String text = e.report(50.0);
The engine sums:
IRPA(d) = Σ_outcome f_release · f_branch · P_fatality(d, outcome)
Compare against acceptance criteria:
| Criterion | Limit | Source |
|---|---|---|
| Worker IRPA | 1·10⁻³ /yr (intolerable) | UK HSE R2P2 |
| Worker IRPA | 1·10⁻⁶ /yr (broadly acceptable) | UK HSE R2P2 |
| NORSOK FAR | 10 fatalities / 10⁸ h | NORSOK S-001 |
| Public 1 % fatal | 35 m typical for 12.5 kW/m² | API 752 |
import neqsim.process.safety.fire.Api537FlareFlameModel;
Api537FlareFlameModel flame = new Api537FlareFlameModel(
50.0, 50.0e6, 0.20, 200.0) // mDot[kg/s], HoC[J/kg], radiantFrac, vExit[m/s]
.setStackHeightM(40.0)
.setWindSpeedMPerS(10.0);
double r473 = flame.sterileZoneRadiusM(Api537FlareFlameModel.FLUX_4_73_KW); // property line
double q75 = flame.heatFluxAtGroundDistance(75.0); // W/m²
double spl = flame.soundPressureLevelDb(100.0); // dB at 100 m
Use this instead of the point-source jet-fire form when the source is an elevated flare tip (it accounts for stack height, wind tilt, and flame geometry).
import neqsim.process.safety.dispersion.HazardousAreaCalculator;
import neqsim.process.safety.dispersion.HazardousAreaCalculator.ReleaseGrade;
HazardousAreaCalculator calc = new HazardousAreaCalculator(
0.1, // release mass flow [kg/s]
6.0, // process pressure [bara]
340.0, // temperature [K]
0.044, // LFL [volume fraction]
0.01604) // molar mass [kg/mol]
.setReleaseGrade(ReleaseGrade.SECONDARY) // CONTINUOUS / PRIMARY / SECONDARY
.setSafetyFactor(0.5);
double dHaz = calc.hazardousDistanceM();
String zone = calc.zoneClassification(); // "Zone 0" / "Zone 1" / "Zone 2"
Maps the dispersion result to an Ex zone for electrical-equipment selection. CONTINUOUS → Zone 0, PRIMARY → Zone 1, SECONDARY → Zone 2.
import neqsim.process.safety.fire.PfpDemandCalculator;
import neqsim.process.safety.fire.PfpDemandCalculator.FireType;
import neqsim.process.safety.fire.PfpDemandCalculator.PfpDemandResult;
PfpDemandResult pfp = new PfpDemandCalculator(
100.0e3, // fire heat flux [W/m²] (pool ~100 kW/m², jet ~250+ kW/m²)
0.012) // wall thickness [m]
.setFireType(FireType.POOL) // POOL / JET
.evaluate(3600.0); // required survival time [s]
boolean need = pfp.isPfpRequired();
double thkMm = pfp.getRequiredPfpThicknessMm();
PfpDemandResult.PfpRating rating = pfp.getRating(); // NONE / H60 / J120 ...
Determines whether unprotected steel reaches its critical temperature before the required survival time, and if so the intumescent thickness and H/J rating.
ConsequenceAnalysisEngine.exportSourceTerm() writes a JSON block usable by
PHAST, FLACS, KFX or DNV Safeti containing release rate, momentum, density,
duration and chemistry — the standard handoff format described in
neqsim-agent-handoff.
HeavyGasDispersion when density ratio > 1.2.ProbitModel use CCPS values.src/test/java/neqsim/process/safety/{fire,dispersion,qra}/ contain JUnit 5
tests for every model. Run:
./mvnw test -Dtest=FireModelsTest,GaussianPlumeTest,ProbitModelTest,ConsequenceAnalysisEngineTest,Api537FlareFlameModelTest,HazardousAreaCalculatorTest,PfpDemandCalculatorTest
neqsim-process-safety — frequency side (HAZOP / LOPA / SIL)neqsim-relief-flare-network — PSV sizing and flare radiationneqsim-depressurization-mdmt — emergency depressurization source termsneqsim-agent-handoff — source-term JSON schemaAlternatives
K-Dense-AI/scientific-agent-skills
Build, inspect, test, and analyze bounded process-based discrete-event simulations with SimPy, including events, resources, interrupts, monitoring, replications, warm-up, and reproducible output analysis.
ffroliva/gflow-cli
Multi-dimensional LLM council review of an open PR (default) or a local feature branch (§ 8 branch mode, invoked via `/gflow:branch-review`). Five baseline dimensions (correctness, quality, security, tests, memory-hygiene) plus adaptive dimensions per surface (transports / data / CLI / docs / auth / BDD / scripts / release-gate). Each agent invokes specialized skills (security-review, code-review, verify) for its dimension. Reads files via `git show <sha>:<path>` to avoid stale-working-tree fals
aAAaqwq/AGI-Super-Team
Build and test Polymarket prediction market trading strategies for YES/NO token trading. Provides 6 tools: get_all_prediction_events (browse markets, $0.001), get_prediction_market_data (analyze price history, $0.001), create_prediction_market_strategy (generate code, $1-$4.50), run_prediction_market_backtest (test performance, $0.001). Trade on real-world events (politics, economics, sports, crypto). Currently simulation only (live deployment coming soon).
github/awesome-copilot
Review the implementation source code of MCP (Model Context Protocol) servers, clients, and tool handlers against a security baseline — authentication, sessions, rate limiting, input-schema validation, official-SDK usage, RCE vectors, and the OWASP MCP Top 10 — producing a report with file/line evidence. Use this skill when: - Reviewing an MCP server implementation for security before release - Checking a server against the baseline controls (MCP-01 to MCP-05) and the OWASP MCP Top 10 - Auditing