Skip to the content.

NOG 070 SIL, STS-0131 Gate and ESD Response Time

These classes support safety-integrity verification for Norwegian-shelf projects:

Class Purpose Standard
Nog070SilCatalogue Pre-determined minimum SIL for typical SIFs NOG 070 (Norsk olje og gass 070)
Nog070SilDetermination Map PFD → achieved SIL and check against the catalogue minimum IEC 61508 / IEC 61511
Sts0131Gate Aggregate PSV-margin, MDMT, SIL and custom checks into one pass/fail gate Equinor STS-0131
EsdResponseTimeSimulator Detection → logic → final-element response-time budget IEC 61511 / NOG 070

All classes live under neqsim.process.safety.risk.sis.nog070, neqsim.process.safety.compliance, and neqsim.process.safety.esd.

NOG 070 pre-determined SIL

NOG 070 assigns a typical minimum SIL to common offshore SIFs. Look up the minimum and verify an achieved SIL from a calculated PFD:

import neqsim.process.safety.risk.sis.nog070.Nog070SifType;
import neqsim.process.safety.risk.sis.nog070.Nog070SilCatalogue;
import neqsim.process.safety.risk.sis.nog070.Nog070SilDetermination;

// Catalogue minimum for a HIPPS pipeline function (SIL 3)
int minSil = Nog070SilCatalogue.getMinimumSil(Nog070SifType.HIPPS_PIPELINE);

// Achieved SIL from PFD, checked against the catalogue minimum
Nog070SilDetermination r =
    Nog070SilDetermination.evaluate(Nog070SifType.HIPPS_PIPELINE, 1.0e-4);
int achieved = r.getAchievedSil();   // 3
int minimum  = r.getMinimumSil();    // 3
boolean ok   = r.isCompliant();      // true
String json  = r.toJson();

Nog070SifType covers HIPPS_PIPELINE, ESD_SUBSEA_ISOLATION, BLOWDOWN_HYDROCARBON_SEGMENT, PSD_PROCESS_SEGMENT, and CUSTOM. For a custom SIF, pass an explicit minimum with the three-argument evaluate(type, pfd, explicitMinSil). The static helper Nog070SilDetermination.pfdToSil(0.2) maps a PFD to an integer SIL band directly.

STS-0131 technical-safety gate

Sts0131Gate aggregates the project safety acceptance checks into a single pass/fail decision. Each addXxx call records a finding; the gate fails if any finding fails.

import neqsim.process.safety.compliance.Sts0131Gate;
import neqsim.process.safety.risk.sis.nog070.Nog070SifType;
import neqsim.process.safety.risk.sis.nog070.Nog070SilDetermination;

Sts0131Gate gate = new Sts0131Gate();
gate.addPsvSizingMargin(1.0, 1.15, 0.10);   // required, available, minMargin
gate.addMdmt(-20.0, -29.0);                 // operating MDMT vs design min [°C]
gate.addSil(Nog070SilDetermination.evaluate(Nog070SifType.PSD_PROCESS_SEGMENT, 5.0e-3));
gate.addCustom("Fire case", true, "Heat input within API 521 envelope");

boolean acceptable = gate.isAcceptable();
int failures = gate.countFailures();
String json = gate.toJson();

The MDMT check fails when the operating minimum temperature is below the design MDMT (e.g. addMdmt(-60.0, -29.0)), and the PSV check fails when the available margin is below the required minimum (e.g. addPsvSizingMargin(1.0, 1.05, 0.10)).

ESD response-time budget

EsdResponseTimeSimulator sums the detection, logic-solver, and final-element contributions and compares the total against the allowable ESD response time.

import neqsim.process.safety.esd.EsdResponseTimeSimulator;
import neqsim.process.safety.esd.EsdResponseTimeSimulator.EsdResponseTimeResult;

EsdResponseTimeResult res = new EsdResponseTimeSimulator()
    .setSifTag("ESD-1234")
    .addDetection("PT-1001 high-pressure", 1.0)         // sensor delay [s]
    .addLogic("Logic solver scan + 2oo3 vote", 0.5)     // logic delay [s]
    .addValve("ESDV-2001", 0.5, 8.0)                    // command delay + stroke time [s]
    .setAllowableResponseTimeS(15.0)
    .evaluate();

double detection = res.getDetectionTimeS();      // 1.0
double logic     = res.getLogicTimeS();          // 0.5
double element   = res.getFinalElementTimeS();   // 8.5
double total     = res.getTotalResponseTimeS();  // 10.0
double margin    = res.getMarginS();             // 5.0
boolean within   = res.isWithinBudget();         // true

Verification

These examples are exercised by the unit tests:

./mvnw test -Dtest=Nog070SilCatalogueTest,Sts0131GateTest,EsdResponseTimeSimulatorTest