This documentation covers NeqSimβs comprehensive Operational Risk Simulation Framework for equipment failure analysis, production impact assessment, and process topology analysis.
π Documentation Structure
Core Framework
| Section | Description |
|---|---|
| Overview | Framework architecture and key concepts |
| Equipment Failure Modeling | Failure modes, types, and reliability data |
| Risk Matrix | 5Γ5 risk matrix with probability, consequence, and cost |
| Monte Carlo Simulation | Stochastic simulation for availability analysis |
| Production Impact Analysis | Analyzing failure effects on production |
| Degraded Operation | Optimizing plant operation during outages |
| Process Topology | Graph structure extraction and analysis |
| STID & Functional Location | Equipment tagging following ISO 14224 |
| Dependency Analysis | Cascade failure and cross-installation effects |
| Mathematical Reference | Formulas and statistical methods |
| API Reference | Complete Java API documentation |
Advanced Risk Framework (P1-P7)
| Section | Description |
|---|---|
| Advanced Framework Overview | Overview of the implemented risk-analysis packages |
| P1: Dynamic Simulation | Monte Carlo with transient modeling |
| P2: SIS/SIF Integration | IEC 61508/61511, LOPA, SIL verification |
| P4: Bow-Tie Analysis | Barrier analysis, threat/consequence visualization |
| P6: Condition-Based Reliability | Health monitoring, RUL estimation |
Quick start: a traceable LOPA calculation
The example below is a complete Java 8 program. It applies a BPCS protection layer and a SIL 2 safety instrumented function (SIF) to an initiating-event frequency. The numerical result is transparent:
\[f_{\mathrm{mitigated}} = f_{\mathrm{IE}}\,\mathrm{PFD}_{\mathrm{BPCS}}\,\mathrm{PFD}_{\mathrm{SIF}} = 0.1 \times 0.1 \times 0.005 = 5.0 \times 10^{-5}\ \mathrm{yr}^{-1}\]import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import neqsim.process.safety.risk.RiskEvent;
import neqsim.process.safety.risk.sis.LOPAResult;
import neqsim.process.safety.risk.sis.SISIntegratedRiskModel;
import neqsim.process.safety.risk.sis.SafetyInstrumentedFunction;
public final class RiskFrameworkQuickStart {
private static final Logger logger = LogManager.getLogger(RiskFrameworkQuickStart.class);
private RiskFrameworkQuickStart() {}
public static void main(String[] args) {
String eventName = "HP vessel overpressure";
SISIntegratedRiskModel model = new SISIntegratedRiskModel("HP vessel LOPA");
model.addInitiatingEvent(eventName, 0.1, RiskEvent.ConsequenceCategory.MAJOR);
SISIntegratedRiskModel.IndependentProtectionLayer bpcs =
new SISIntegratedRiskModel.IndependentProtectionLayer(
"BPCS pressure control",
0.1,
SISIntegratedRiskModel.IndependentProtectionLayer.IPLType.BPCS);
bpcs.addApplicableEvent(eventName);
model.addIPL(bpcs);
SafetyInstrumentedFunction esd = SafetyInstrumentedFunction.builder()
.id("SIF-001")
.name("High-pressure ESD")
.description("Isolate the HP vessel on confirmed high pressure")
.sil(2)
.pfd(0.005)
.initiatingEvent(eventName)
.addProtectedEquipment("HP vessel")
.safeState("Isolated")
.build();
model.addSIF(esd);
LOPAResult result = model.performLOPA(eventName);
double expectedFrequency = 0.1 * 0.1 * 0.005;
if (Math.abs(result.getMitigatedFrequency() - expectedFrequency) > 1.0e-12) {
throw new IllegalStateException("LOPA layer multiplication did not close");
}
logger.info("Mitigated frequency: {} per year", result.getMitigatedFrequency());
logger.info("Total risk-reduction factor: {}", result.getTotalRRF());
}
}
This calculation demonstrates software behavior, not approval of an initiating-event frequency, IPL independence,
SIL target, test interval, or safe state. Those inputs require a traceable hazard study and accountable review. For a
process-coupled study, continue with Monte Carlo simulation, dynamic risk,
SIS integration, and process topology. Python users should access these Java
classes through the supported from neqsim import jneqsim gateway; see the
advanced risk notebook for the complete setup.
π Framework Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NeqSim Process Simulation β
β ProcessSystem β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββΌββββββββββββββββββββ
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Equipment β β Production β β Process β
β Failure β β Impact β β Topology β
β Modeling β β Analysis β β Analysis β
ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Reliability β β Degraded β β Dependency β
β Data β β Operation β β Analysis β
β (OREDA) β β Optimizer β β β
ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ
β β β
ββββββββββββββββββββββΌβββββββββββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββ
β Risk Assessment β
β βββββββββββββββββββββββββββ β
β β Monte Carlo β β
β β Simulation β β
β βββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββ β
β β Risk Matrix β β
β β (5Γ5 Visualization) β β
β βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββ
π¦ Package Structure
neqsim.process
βββ equipment.failure
β βββ EquipmentFailureMode - Failure type definitions
β βββ ReliabilityDataSource - OREDA reliability data
β βββ package-info.java
βββ safety.risk
β βββ OperationalRiskSimulator - Monte Carlo engine
β βββ OperationalRiskResult - Simulation results
β βββ RiskMatrix - 5Γ5 risk matrix
βββ util
βββ optimizer
β βββ ProductionImpactAnalyzer - Impact analysis
β βββ ProductionImpactResult - Impact results
β βββ DegradedOperationOptimizer - Degraded optimization
β βββ DegradedOperationResult - Optimization results
βββ topology
βββ ProcessTopologyAnalyzer - Graph extraction
βββ FunctionalLocation - STID parsing
βββ DependencyAnalyzer - Cascade analysis
βββ package-info.java