Class RiskModel
java.lang.Object
neqsim.process.safety.risk.RiskModel
Probabilistic risk model for process safety analysis.
Provides Monte Carlo simulation, event tree analysis, and sensitivity analysis capabilities for quantitative risk assessment (QRA). Integrates with NeqSim's process simulation and safety scenario framework.
Typical Usage:
RiskModel model = new RiskModel("HP Separator Study");
model.setProcessSystem(processSystem);
// Add initiating events with frequencies (per year)
model.addEvent(RiskEvent.builder().name("Small Leak").initiatingEvent(InitiatingEvent.LEAK_SMALL)
.frequency(1e-3).consequenceCategory(ConsequenceCategory.MINOR).build());
// Run Monte Carlo analysis
RiskResult result = model.runMonteCarloAnalysis(10000);
result.exportToCSV("risk_results.csv");
- Author:
- NeqSim team
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate final Stringprivate doubleprivate ProcessSystemprivate longprivate boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddConditionalEvent(String name, RiskEvent parentEvent, double probability, RiskEvent.ConsequenceCategory category) Adds a conditional event (branch in event tree).voidAdds a risk event to the model.addInitiatingEvent(String name, double frequency, RiskEvent.ConsequenceCategory category) Creates and adds a simple initiating event.static RiskModel.Builderbuilder()Builder pattern for RiskModel.private doubleGets all events in the model.Gets only initiating events (no parent).getName()private doubleRuns deterministic risk calculation using point estimates.runMonteCarloAnalysis(int iterations) Runs Monte Carlo simulation with uncertainty propagation.runSensitivityAnalysis(double lowFactor, double highFactor) Runs sensitivity analysis on event frequencies.runSensitivityAnalysis(double lowFactor, double highFactor, int numPoints) Runs sensitivity analysis with specified number of points.Runs simulation-based analysis for events with attached scenarios.private doublesampleLogNormal(Random random, double median, double errorFactor) private doublesampleTruncatedNormal(Random random, double mean, double stdDev) voidsetFrequencyUncertaintyFactor(double factor) voidsetProbabilityUncertaintyStdDev(double stdDev) voidsetProcessSystem(ProcessSystem system) voidsetRandomSeed(long seed) voidsetStoreMonteCarloSamples(boolean store) toString()
-
Field Details
-
name
-
events
-
processSystem
-
randomSeed
private long randomSeed -
storeMonteCarloSamples
private boolean storeMonteCarloSamples -
frequencyUncertaintyFactor
private double frequencyUncertaintyFactor -
probabilityUncertaintyStdDev
private double probabilityUncertaintyStdDev
-
-
Constructor Details
-
RiskModel
-
-
Method Details
-
builder
-
setProcessSystem
-
setRandomSeed
public void setRandomSeed(long seed) -
setFrequencyUncertaintyFactor
public void setFrequencyUncertaintyFactor(double factor) -
setProbabilityUncertaintyStdDev
public void setProbabilityUncertaintyStdDev(double stdDev) -
setStoreMonteCarloSamples
public void setStoreMonteCarloSamples(boolean store) -
addEvent
Adds a risk event to the model.- Parameters:
event- the risk event to add
-
addInitiatingEvent
public RiskEvent addInitiatingEvent(String name, double frequency, RiskEvent.ConsequenceCategory category) Creates and adds a simple initiating event.- Parameters:
name- event namefrequency- annual frequencycategory- consequence category- Returns:
- the created event
-
addConditionalEvent
public RiskEvent addConditionalEvent(String name, RiskEvent parentEvent, double probability, RiskEvent.ConsequenceCategory category) Adds a conditional event (branch in event tree).- Parameters:
name- event nameparentEvent- the parent eventprobability- conditional probabilitycategory- consequence category if this branch occurs- Returns:
- the created event
-
getEvents
-
getInitiatingEvents
-
runDeterministicAnalysis
Runs deterministic risk calculation using point estimates.- Returns:
- risk result with point estimates
-
runMonteCarloAnalysis
Runs Monte Carlo simulation with uncertainty propagation.Frequencies are sampled from log-normal distributions. Probabilities are sampled from truncated normal distributions.
- Parameters:
iterations- number of Monte Carlo iterations- Returns:
- risk result with statistical metrics
-
runSensitivityAnalysis
Runs sensitivity analysis on event frequencies.Varies each event frequency by the specified factors and observes the effect on total risk.
- Parameters:
lowFactor- multiplier for low case (e.g., 0.1)highFactor- multiplier for high case (e.g., 10.0)- Returns:
- sensitivity analysis result
-
runSensitivityAnalysis
Runs sensitivity analysis with specified number of points.- Parameters:
lowFactor- multiplier for low casehighFactor- multiplier for high casenumPoints- number of points between low and high (including endpoints)- Returns:
- sensitivity analysis result
-
runSimulationBasedAnalysis
Runs simulation-based analysis for events with attached scenarios.For events that have ProcessSafetyScenario attached, uses the scenario consequence category. Future implementation could integrate with ProcessScenarioRunner for dynamic simulation.
- Returns:
- risk result with scenario-based consequences
-
calculateTotalRisk
private double calculateTotalRisk() -
getTotalFrequency
private double getTotalFrequency() -
sampleLogNormal
-
sampleTruncatedNormal
-
getName
-
toString
-