Class OperationalRiskSimulator
java.lang.Object
neqsim.process.safety.risk.OperationalRiskSimulator
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
DynamicRiskSimulator
Monte Carlo simulator for operational risk and production availability analysis.
Simulates equipment failures over time to estimate:
- Expected production over a time horizon
- Production availability (uptime percentage)
- Expected downtime events and durations
- Production loss distribution (P10/P50/P90)
Example Usage
OperationalRiskSimulator simulator = new OperationalRiskSimulator(processSystem);
simulator.setFeedStreamName("Well Feed");
simulator.setProductStreamName("Export Gas");
// Add equipment with failure rates
simulator.addEquipmentReliability("HP Compressor", 0.02, 24.0); // 2% failures/year, 24hr MTTR
simulator.addEquipmentReliability("LP Compressor", 0.02, 24.0);
// Run simulation
OperationalRiskResult result = simulator.runSimulation(1000, 365.0); // 1000 iterations, 1 year
System.out.println("Expected Availability: " + result.getAvailability() + "%");
System.out.println("P50 Production: " + result.getP50Production() + " kg");
- Version:
- 1.0
- Author:
- NeqSim Development Team
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classEquipment reliability data holder.private static classstatic classSingle point in a production forecast.static classProduction forecast with time-series data.private static class -
Field Summary
FieldsModifier and TypeFieldDescriptionEquipment reliability data.private StringFeed stream name.private static final doubleHours per year for calculations.private ProductionImpactAnalyzerProduction impact analyzer.private static final org.apache.logging.log4j.LoggerLogger.private ProcessSystemThe process system to simulate.private StringProduct stream name.private longRandom seed for reproducibility.private static final long -
Constructor Summary
ConstructorsConstructorDescriptionOperationalRiskSimulator(ProcessSystem processSystem) Creates an operational risk simulator. -
Method Summary
Modifier and TypeMethodDescriptionaddEquipmentMtbf(String equipmentName, double mtbf, double mttr) Adds equipment reliability using OREDA-style data.addEquipmentReliability(String equipmentName, double failureRate, double mttr) Adds equipment reliability data.private voidgenerateForecast(int days, int iterations) Generates a production forecast with confidence intervals.private doubleGets the equipment reliability data.runSimulation(int iterations, double timeHorizonDays) Runs the Monte Carlo simulation.setFeedStreamName(String name) Sets the feed stream name.setProductStreamName(String name) Sets the product stream name.setRandomSeed(long seed) Sets the random seed for reproducibility.simulateIteration(Random random, double timeHorizonHours, double baselineProduction, Map<String, Double> productionWithFailure)
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
logger
private static final org.apache.logging.log4j.Logger loggerLogger. -
processSystem
The process system to simulate. -
equipmentReliability
Equipment reliability data. -
impactAnalyzer
Production impact analyzer. -
feedStreamName
Feed stream name. -
productStreamName
Product stream name. -
randomSeed
private long randomSeedRandom seed for reproducibility. -
HOURS_PER_YEAR
private static final double HOURS_PER_YEARHours per year for calculations.- See Also:
-
-
Constructor Details
-
OperationalRiskSimulator
Creates an operational risk simulator.- Parameters:
processSystem- the process system to simulate
-
-
Method Details
-
autoDetectStreams
private void autoDetectStreams() -
setFeedStreamName
Sets the feed stream name.- Parameters:
name- the feed stream name- Returns:
- this simulator for chaining
-
setProductStreamName
Sets the product stream name.- Parameters:
name- the product stream name- Returns:
- this simulator for chaining
-
setRandomSeed
Sets the random seed for reproducibility.- Parameters:
seed- the random seed- Returns:
- this simulator for chaining
-
addEquipmentReliability
public OperationalRiskSimulator addEquipmentReliability(String equipmentName, double failureRate, double mttr) Adds equipment reliability data.- Parameters:
equipmentName- name of the equipmentfailureRate- failures per yearmttr- mean time to repair in hours- Returns:
- this simulator for chaining
-
addEquipmentMtbf
Adds equipment reliability using OREDA-style data.- Parameters:
equipmentName- equipment namemtbf- mean time between failures in hoursmttr- mean time to repair in hours- Returns:
- this simulator for chaining
-
getEquipmentReliability
Gets the equipment reliability data.- Returns:
- map of equipment name to reliability data
-
runSimulation
Runs the Monte Carlo simulation.- Parameters:
iterations- number of Monte Carlo iterationstimeHorizonDays- simulation time horizon in days- Returns:
- simulation result
-
simulateIteration
private OperationalRiskSimulator.SimulationState simulateIteration(Random random, double timeHorizonHours, double baselineProduction, Map<String, Double> productionWithFailure) -
getBaselineProductionRate
private double getBaselineProductionRate() -
generateForecast
Generates a production forecast with confidence intervals.- Parameters:
days- number of days to forecastiterations- Monte Carlo iterations- Returns:
- production forecast
-