Safety Systems Package
Documentation for safety systems modeling in NeqSim.
Table of Contents
- Overview
- Safety Equipment
- Emergency Shutdown (ESD)
- Blowdown Systems
- Pressure Safety Valves
- Release and Gas Dispersion Scenarios
- CFD Source-Term Handoff
- Open Drain Review
- HIPPS
Overview
Location: neqsim.process.equipment.safety, neqsim.process.safety
NeqSim provides equipment and logic for modeling process safety systems:
- Pressure Safety Valves (PSV)
- Relief valves
- Emergency Shutdown (ESD) systems
- Blowdown and depressuring systems
- High Integrity Pressure Protection Systems (HIPPS)
- NORSOK S-001 Clause 9 open-drain review from NeqSim-calculated liquid and hydraulic evidence
- Automatic release source terms and gas dispersion screening from process streams
- Formal CFD source-term JSON handoff cases for OpenFOAM, FLACS, KFX, PHAST, and Safeti workflows
The release, dispersion, and CFD handoff workflow is intended for screening, case generation, and auditable source-term transfer. Final facility layout, regulatory QRA, and CFD conclusions still require project-specific validation, site geometry, leak-frequency data, and approved consequence-analysis methods.
Safety Equipment
Pressure Safety Valve (PSV)
import neqsim.process.equipment.valve.SafetyValve;
SafetyValve psv = new SafetyValve("PSV-100", vessel);
psv.setOpeningPressure(95.0, "barg"); // Set pressure
psv.setFullOpenPressure(100.0, "barg"); // Overpressure
psv.setBlowdownPressure(85.0, "barg"); // Reseating pressure
Rupture Disk
import neqsim.process.equipment.valve.RuptureDisk;
RuptureDisk disk = new RuptureDisk("RD-100", vessel);
disk.setBurstPressure(110.0, "barg");
disk.setDiameter(150.0, "mm");
Emergency Shutdown (ESD)
ESD Logic and Dynamic Evidence
ESDValve inletValve = new ESDValve("ESD Inlet Isolation", feed);
inletValve.setStrokeTime(4.0);
inletValve.setCv(500.0);
ESDLogic esdLogic = new ESDLogic("ESD Level 1");
esdLogic.addAction(new TripValveAction(inletValve), 0.0);
Use neqsim.process.safety.esd.EmergencyShutdownTestRunner when the ESD sequence needs a
structured dynamic evidence report with monitored time series, tagreader comparisons, standards
references, and acceptance criteria.
ESD Levels
| Level | Description | Actions |
|---|---|---|
| ESD-0 | Total shutdown | Full plant shutdown |
| ESD-1 | Process shutdown | Process area isolation |
| ESD-2 | Unit shutdown | Single unit isolation |
| ESD-3 | Equipment shutdown | Single equipment stop |
Blowdown Systems
Depressuring Calculation
import neqsim.process.equipment.valve.BlowdownValve;
BlowdownValve blowdown = new BlowdownValve("BDV-100", vessel);
blowdown.setDownstreamPressure(1.0, "barg"); // Flare pressure
blowdown.setOrificeSize(100.0, "mm");
// Run depressuring transient
for (double t = 0; t < 900; t += 1.0) {
blowdown.runTransient();
double P = vessel.getPressure("barg");
double T = vessel.getTemperature("C");
if (P < 7.0) { // 15 minute rule target
System.out.println("Reached target at " + t + " seconds");
break;
}
}
Fire Case Calculation
// Calculate heat input from fire
double wettedArea = 50.0; // m²
double Q = 43200 * Math.pow(wettedArea, 0.82); // API 521 formula
vessel.setHeatInput(Q, "W");
Pressure Safety Valves
PSV Sizing
// Calculate required relief rate
double reliefRate = psv.getReliefRate("kg/hr");
// API 520 sizing
double area = psv.getRequiredOrificeArea("mm2");
String orifice = psv.getAPIOrificeLetter();
System.out.println("Required area: " + area + " mm²");
System.out.println("API orifice: " + orifice);
Multiple Relief Scenarios
| Scenario | Description |
|---|---|
| Blocked outlet | Outlet valve closed |
| Fire case | External fire exposure |
| Tube rupture | Heat exchanger tube failure |
| Power failure | Loss of cooling/control |
| Thermal relief | Liquid expansion |
HIPPS
High Integrity Pressure Protection System.
import neqsim.process.safety.HIPPS;
HIPPS hipps = new HIPPS("HIPPS-1");
// Add sensors (2oo3 voting)
hipps.addPressureSensor(pt1);
hipps.addPressureSensor(pt2);
hipps.addPressureSensor(pt3);
// Set trip point
hipps.setTripPressure(95.0, "barg");
// Add final elements
hipps.addIsolationValve(sdv1);
hipps.addIsolationValve(sdv2);
// Set voting logic
hipps.setVotingLogic("2oo3"); // 2 out of 3
Example: ESD Dynamic Test Evidence
OperationalTagMap tagMap = new OperationalTagMap()
.addBinding(OperationalTagBinding.builder("xv_opening")
.automationAddress("ESD Inlet Isolation.percentValveOpening")
.unit("%")
.role(InstrumentTagRole.BENCHMARK)
.build());
EmergencyShutdownTestPlan plan = EmergencyShutdownTestPlan.builder("ESD1 isolation closure")
.duration(8.0)
.timeStep(1.0)
.tagMap(tagMap)
.enableLogic("ESD Level 1")
.triggerLogic("ESD Level 1")
.criterion(EmergencyShutdownTestCriterion.finalAtMost(
"ESD-XV-CLOSED", "xv_opening", 5.0, "%"))
.criterion(EmergencyShutdownTestCriterion.logicCompleted(
"ESD-LOGIC-COMPLETE", "ESD Level 1"))
.build();
EmergencyShutdownTestResult report = EmergencyShutdownTestRunner.run(process, plan, esdLogic);
Related Documentation
- Process Package - Process simulation overview
- Release and Gas Dispersion Scenarios - Automatic source-term and cloud endpoint screening from ProcessSystem streams
- Open Drain Review - NORSOK S-001 Clause 9 review with NeqSim stream evidence and normalized STID/tagreader inputs
- ESD Dynamic Testing Workflow - ESD transient testing with process logic, tagreader evidence, and criteria reports
- ESD Blowdown System - Detailed ESD guide
- HIPPS Summary - HIPPS overview
- PSV Dynamic Sizing - PSV sizing example