Overview
NeqSim’s risk framework uses equipment reliability data to calculate failure probabilities, availability, and risk metrics. This guide explains:
- Available built-in data sources
- CSV format specification
- How to import your own data (including OREDA)
- Data source selection guidance
Built-in Data Sources
NeqSim includes three public domain data sources that can be freely used:
1. IEEE 493 (Gold Book) - ieee493_equipment.csv
Source: IEEE Std 493-2007 “Recommended Practice for the Design of Reliable Industrial and Commercial Power Systems”
Scope: Primarily electrical and utility equipment
- Transformers, circuit breakers, switchgear
- Motors (induction, synchronous, DC)
- Generators, cables, bus ducts
- Relays, inverters, rectifiers
- Pumps, compressors, fans
- Instrumentation and process control
~100 equipment records
2. IOGP/OGP Data - iogp_equipment.csv
Source: IOGP Reports 434-series, UK HSE Offshore Statistics, SINTEF summaries
Scope: Oil & gas specific equipment and safety systems
- Offshore platforms and wellheads
- Blowout preventers (BOP)
- Hydrocarbon release frequencies
- Fire/explosion ignition probabilities
- Safety systems (ESD, F&G, PSD)
- Subsea equipment
- Pipelines and risers
- Drilling equipment
~150 equipment records
3. Generic Literature - generic_literature.csv
Source: Lees’ Loss Prevention, CCPS Guidelines, MIL-HDBK-217F, DNV-RP-G101
Scope: Comprehensive process equipment coverage
- Process vessels and piping
- All valve types
- Heat exchangers and condensers
- Rotating equipment details
- Instrumentation and sensors
- Electronics and structural components
- HVAC and utilities
~180 equipment records
4. Representative OREDA Data - oreda_equipment.csv
Source: Representative values based on OREDA Handbook categories
Scope: Offshore equipment reliability
- Compressors, pumps, separators
- Heat exchangers, valves, turbines
- Subsea equipment
- Instrumentation and control
~120 equipment records
Note: These are representative values for demonstration. For actual projects, obtain official OREDA data from www.oreda.com
CSV Format Specification
Required Columns
| Column | Type | Description |
|---|---|---|
EquipmentType |
String | General equipment category (e.g., “Pump”, “Valve”) |
EquipmentClass |
String | Specific type/subclass (e.g., “Centrifugal”, “Ball”) |
FailureMode |
String | Failure mode description (e.g., “All modes”, “Leak”, “Fail to close”) |
FailureRate |
Double | Failures per hour (e.g., 1.14e-5) |
MTBF_hours |
Double | Mean Time Between Failures in hours |
MTTR_hours |
Double | Mean Time To Repair in hours |
DataSource |
String | Data source identifier (e.g., “OREDA-2015”, “IEEE493-2007”) |
Confidence |
String | Data quality: “High”, “Medium”, or “Low” |
Example Records
EquipmentType,EquipmentClass,FailureMode,FailureRate,MTBF_hours,MTTR_hours,DataSource,Confidence
Pump,Centrifugal,All modes,1.83e-4,5464,24,OREDA-2015,High
Pump,Centrifugal,Seal failure,5.71e-5,17513,8,CCPS-1989,High
Valve,Ball,Fail to close,2.85e-6,350880,4,OREDA-2015,High
Compressor,Reciprocating,Critical,5.71e-5,17513,120,IEEE493-2007,High
Comments and Headers
- Lines starting with
#are comments - The first non-comment line should contain column headers (optional but recommended)
Units
| Parameter | Unit |
|---|---|
| FailureRate | failures per hour |
| MTBF_hours | hours |
| MTTR_hours | hours |
Relationship
The following relationship should hold:
FailureRate ≈ 1 / MTBF_hours
Importing Your Own Data
Method 1: Using OREDADataImporter (Recommended)
import neqsim.process.safety.risk.data.OREDADataImporter;
// Load from custom CSV file
OREDADataImporter importer = new OREDADataImporter();
importer.loadFromCSV("path/to/your/reliability_data.csv");
// Query failure data
double failureRate = importer.getFailureRate("Pump", "Centrifugal", "All modes");
double mtbf = importer.getMTBF("Compressor", "Reciprocating", "Critical");
double mttr = importer.getMTTR("Valve", "Safety/Relief", "Fail to open");
// Get full equipment record
EquipmentReliabilityData data = importer.getEquipmentData("Separator", "Three-phase");
Method 2: Programmatic Data Entry
import neqsim.process.safety.risk.data.OREDADataImporter;
OREDADataImporter importer = new OREDADataImporter();
// Add individual records
importer.addEquipmentData(
"Pump", // EquipmentType
"Centrifugal", // EquipmentClass
"Seal failure", // FailureMode
5.71e-5, // FailureRate (per hour)
17513, // MTBF (hours)
8, // MTTR (hours)
"MyCompanyData", // DataSource
"High" // Confidence
);
Method 3: Using a Reliability Data Record
Use ReliabilityDataSource.ReliabilityData to hold descriptive MTBF/MTTR data.
This does not change equipment operation or activate a failure scenario.
The values below are illustrative assumptions, not licensed OREDA observations.
import neqsim.process.equipment.failure.ReliabilityDataSource.ReliabilityData;
ReliabilityData reliability = new ReliabilityData("Pump", "Centrifugal", 5464.0, 24.0);
reliability.setSource("Illustrative assumptions");
reliability.setNotes("Replace with qualified service-specific data before a reliability study.");
double availability = reliability.getAvailability(); // MTBF / (MTBF + MTTR)
double failuresPerMillionHours = reliability.getFailureRate(); // 1e6 / MTBF
double failuresPerHour = failuresPerMillionHours / 1.0e6;
ProcessEquipmentReliability and pump.setReliabilityData(...) are not
implemented APIs. For an operating failure scenario, use the existing
EquipmentFailureMode framework separately. Its application changes equipment
behavior and should not be confused with storing reliability assumptions.
Importing Official OREDA Data
If your organization has access to the official OREDA Handbook, you can import that data:
Step 1: Create CSV from OREDA Tables
Convert OREDA tables to CSV format:
# My Company OREDA Data Import
# Source: OREDA Handbook 6th Edition (2015)
# Converted by: [Your Name]
# Date: [Conversion Date]
EquipmentType,EquipmentClass,FailureMode,FailureRate,MTBF_hours,MTTR_hours,DataSource,Confidence
Pump,Centrifugal (single stage),All modes,1.92e-4,5208,26,OREDA-2015-Vol1-Ch4,High
Pump,Centrifugal (single stage),Critical,4.81e-5,20800,52,OREDA-2015-Vol1-Ch4,High
Step 2: Place File in Appropriate Location
# For project-specific use
<project>/src/main/resources/reliabilitydata/my_oreda_data.csv
# For system-wide use
${user.home}/.neqsim/reliabilitydata/oreda_data.csv
Step 3: Load Data
// Load official OREDA data
OREDADataImporter importer = new OREDADataImporter();
importer.loadFromCSV("reliabilitydata/my_oreda_data.csv");
// Or load from multiple sources
importer.loadFromCSV("reliabilitydata/oreda_equipment.csv"); // Built-in representative
importer.loadFromCSV("reliabilitydata/my_oreda_data.csv"); // Your official OREDA
// Later loaded data takes precedence for matching equipment
OREDA Data Structure Reference
The official OREDA Handbook organizes data into:
| Volume | Content |
|---|---|
| Volume 1 | Topside Equipment (pumps, compressors, valves, etc.) |
| Volume 2 | Subsea Equipment (trees, manifolds, umbilicals, etc.) |
Each equipment entry includes:
- Failure rate (mean, 5th percentile, 95th percentile)
- Active repair time
- Total repair time
- Failure mode breakdown
- Population and operational hours
Data Source Selection Guidance
Which data source to use?
| Scenario | Recommended Source |
|---|---|
| Electrical power systems | IEEE 493 |
| Oil & gas offshore topside | OREDA or IOGP |
| Subsea systems | OREDA or IOGP |
| Safety systems (ESD, F&G) | IOGP |
| Process piping and vessels | Generic Literature / CCPS |
| Generic industrial equipment | IEEE 493 + Generic Literature |
| Fire/explosion risk assessment | IOGP |
Combining Data Sources
// Create combined importer
OREDADataImporter importer = new OREDADataImporter();
// Load in priority order (later files override earlier)
importer.loadFromCSV("reliabilitydata/generic_literature.csv"); // Generic base
importer.loadFromCSV("reliabilitydata/ieee493_equipment.csv"); // Electrical focus
importer.loadFromCSV("reliabilitydata/iogp_equipment.csv"); // O&G specific
importer.loadFromCSV("reliabilitydata/oreda_equipment.csv"); // OREDA data (highest priority)
// Query will return best available data
double pumpFailureRate = importer.getFailureRate("Pump", "Centrifugal", "All modes");
Failure Rate Conversions
Common Conversion Factors
// Failures per year to failures per hour
double failuresPerHour = failuresPerYear / 8760.0;
// Failures per 10^6 hours to failures per hour
double failuresPerHour = failuresPer10e6hours / 1e6;
// MTBF (hours) to failure rate
double failureRate = 1.0 / mtbfHours;
// Availability calculation
double availability = mtbf / (mtbf + mttr);
OREDA Rate Conversion
OREDA reports failure rates per 10^6 hours. To convert:
// OREDA typically reports as "failures per 10^6 hours"
double oredaRate = 183.0; // From OREDA table
double failuresPerHour = oredaRate * 1e-6; // = 1.83e-4
Data Quality and Confidence
Confidence Levels
| Level | Description | Typical Use |
|---|---|---|
| High | Well-established data from large populations | Final design, risk assessment |
| Medium | Reasonable data but limited population | Preliminary design, screening |
| Low | Expert judgment or sparse data | Conceptual studies only |
Uncertainty Handling
// OREDA provides uncertainty bounds
// Use mean for expected values
// Use 95th percentile for conservative estimates
double meanRate = importer.getFailureRate("Pump", "Centrifugal", "All modes");
double conservativeRate = meanRate * 3.0; // Typical factor for 95th percentile
API Reference
OREDADataImporter Class
public class OREDADataImporter {
// Loading methods
void loadFromCSV(String filepath);
void loadFromResource(String resourcePath);
void addEquipmentData(String type, String class, String mode,
double rate, double mtbf, double mttr,
String source, String confidence);
// Query methods
double getFailureRate(String type, String equipClass, String mode);
double getMTBF(String type, String equipClass, String mode);
double getMTTR(String type, String equipClass, String mode);
String getDataSource(String type, String equipClass, String mode);
String getConfidence(String type, String equipClass, String mode);
EquipmentReliabilityData getEquipmentData(String type, String equipClass);
// Listing methods
List<String> getEquipmentTypes();
List<String> getEquipmentClasses(String type);
List<String> getFailureModes(String type, String equipClass);
}
Legal Disclaimer
- IEEE 493: Based on publicly available standard summaries. For official use, purchase IEEE Std 493-2007.
- IOGP Data: Based on publicly available IOGP reports from www.iogp.org.
- OREDA: Representative values only. For official OREDA data, membership or purchase is required from www.oreda.com.
- Generic Literature: Compiled from various public domain sources cited in the data files.
Users are responsible for ensuring they have appropriate licenses for any proprietary data used in their projects.
References
- IEEE Std 493-2007, “IEEE Recommended Practice for the Design of Reliable Industrial and Commercial Power Systems (Gold Book)”
- OREDA Handbook 6th Edition (2015), SINTEF/DNV/OREDA Participants
- IOGP Report 434-series, “Safety Performance Indicators”
- CCPS, “Guidelines for Process Equipment Reliability Data” (1989)
- Lees’ Loss Prevention in the Process Industries, 4th Edition (2012)
- MIL-HDBK-217F, “Reliability Prediction of Electronic Equipment”
- DNV-RP-G101, “Risk Based Inspection of Offshore Topsides Static Mechanical Equipment”