{"id":224,"date":"2020-09-10T16:24:31","date_gmt":"2020-09-10T20:24:31","guid":{"rendered":"https:\/\/ne.ncsu.edu\/prag\/?page_id=224"},"modified":"2026-09-24T15:04:32","modified_gmt":"2026-09-24T19:04:32","slug":"ads-idac","status":"publish","type":"page","link":"https:\/\/ne.ncsu.edu\/prag\/software\/ads-idac\/","title":{"rendered":"ADS-IDAC"},"content":{"rendered":"\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-logo-800x800.png\" alt=\"\" class=\"wp-image-1576\" style=\"aspect-ratio:1;width:96px;height:auto\" srcset=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-logo-800x800.png 800w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-logo-600x600.png 600w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-logo-150x150.png 150w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-logo-768x768.png 768w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-logo-350x350.png 350w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-logo-45x45.png 45w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-logo.png 960w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Dynamic PRA simulation engine<\/strong><\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<p class=\"wp-block-paragraph\">Dynamic probabilistic risk assessment (PRA) simulation methods can improve nuclear power plant PRAs by providing rich contextual information and an explicit consideration of feedback arising from complex equipment dependencies and operator actions. The Accident Dynamics Simulator paired with the Information, Decision, and Action in a Crew context cognitive model (ADS-IDAC) is one such computational method that can be used for nuclear power plant probabilistic risk assessments.<\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Compared to more traditional risk assessment methods such as statically linked event and fault tree approaches, dynamic PRA methods offer a number of significant advantages:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A simulation model can provide a more realistic representation of plant accident response. Therefore,&nbsp;the time available for operator actions, the presence (or absence) of key diagnostic cues, and contextual information about accident scenarios can be more directly assessed in support of human reliability analysis.&nbsp;Plant procedures and skill- and rule-based actions can be directly simulated in order to better account for feedback from the nuclear plant to the operations crew and assist in the identification of situational contexts where operators may commit errors of commission.<\/li>\n\n\n\n<li>Given the dynamic methods explicitly represent the timing and sequencing of events, they can directly simulate the impact of variations of hardware and operator performance on the plant model, and are capable of capturing complex interdependencies.&nbsp;System success criteria are more realistic and do not include conservatisms due to scenario binning that are sometimes found in traditional PRA models.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">It couples a thermal-hydraulic plant model with models of hardware reliability and of the operating crew&#8217;s cognition. It generates a discrete dynamic event tree in which every sequence is a complete, time-resolved simulation of the plant and its crew, and every branch carries a probability.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> <b>Release:<\/b> 5.0.0, September 2026<br><\/li>\n\n\n\n<li> <b>Code:<\/b> C++17 with RELAP5\/MOD3.3 in Fortran<br><\/li>\n\n\n\n<li> <b>Runs:<\/b> serial or MPI, on Linux and macOS<br><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/\">Read the documentation<\/a> &nbsp;|&nbsp; <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/api\/html\/index.html\">API reference<\/a><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1026\" height=\"800\" src=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-event-tree-1026x800.png\" alt=\"\" class=\"wp-image-1572\" style=\"aspect-ratio:1.285140562248996;width:640px;height:auto\" srcset=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-event-tree-1026x800.png 1026w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-event-tree-600x468.png 600w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-event-tree-768x599.png 768w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-event-tree.png 1280w\" sizes=\"auto, (max-width: 1026px) 100vw, 1026px\" \/><figcaption class=\"wp-element-caption\">Schematic of a discrete dynamic event tree. Branch points sit on a time grid, every line is one simulated sequence, and one sequence is highlighted from the initiating event to its end state.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\n    <small>Markers: square, hardware state; triangle, crew decision; circle, crew action or timing; open square, end state; filled square, sequence that ended before the mission time.<\/small>\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why dynamic PRA<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A classical PRA links event trees and fault trees that analysts build ahead of time. A dynamic PRA simulates the accident and lets the scenarios emerge from the interaction of the plant, its equipment and its operators. Two benefits follow.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Context for human reliability analysis<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The simulation provides the time available for each operator action, the diagnostic cues that are present or missing when a decision is made, and the context of the scenario the crew is in. Procedures and skill- and rule-based actions are simulated directly, so feedback from the plant to the crew is part of the model, and the situations in which operators may commit errors of commission can be identified.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Timing and dependencies made explicit<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The timing and order of events are simulated, so variations in hardware and operator performance act on the plant model itself and complex dependencies are captured. Success criteria come from the simulated plant response and carry none of the conservatism that scenario binning can introduce in a static model.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How ADS-IDAC works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ADS-IDAC advances the plant, the control room and the crew together in time. As the simulation advances, the thermal-hydraulic solver computes the plant state, the control panel turns it into the indications and alarms a crew would see, the crew model perceives, diagnoses, decides and acts, and the reliability models decide whether equipment responds as demanded. Whenever one of these models offers more than one outcome, the scheduler opens a branch of the event tree.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"554\" src=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-architecture-1200x554.png\" alt=\"\" class=\"wp-image-1570\" style=\"aspect-ratio:2.1645021645021645;width:1080px;height:auto\" srcset=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-architecture-1200x554.png 1200w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-architecture-600x277.png 600w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-architecture-768x355.png 768w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-architecture-1536x710.png 1536w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-architecture.png 2000w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n<\/div>\n\n\n<dl>\n    <dt>\n        <b>Scheduler<\/b>\n    <\/dt>\n    <dd>Drives the event tree. It collects branching events, computes branch probabilities, applies the truncation rules, saves the state at every branch point and picks the next sequence to run.<\/dd>\n    <dt>\n        <b>System module and solver interface<\/b>\n    <\/dt>\n    <dd>Holds the plant state and exchanges it with the thermal-hydraulic solver through one interface. RELAP5\/MOD3.3 runs inside the engine, and any other solver can be attached over a REST API.<\/dd>\n    <dt>\n        <b>Control panel<\/b>\n    <\/dt>\n    <dd>Indicators, alarms and controls. The crew sees the plant and acts on it through the control panel.<\/dd>\n    <dt>\n        <b>Crew module<\/b>\n    <\/dt>\n    <dd>The IDAC model of the operators: their knowledge base, procedures, mental state and communication.<\/dd>\n    <dt>\n        <b>Hardware reliability<\/b>\n    <\/dt>\n    <dd>Failures on demand, failures while running, recovery, and the support systems that front-line equipment depends on.<\/dd>\n    <dt>\n        <b>Causal models<\/b>\n    <\/dt>\n    <dd>Fault trees stand in for the systems and components that the plant model does not simulate, and a Bayesian network quantifies human failure events. Inference runs on the hybrid causal logic library or on BNCore, the group&#8217;s exact junction-tree engine.<\/dd>\n<\/dl>\n\n\n\n<p class=\"wp-block-paragraph\">ADS-IDAC includes a plant model of a three-loop pressurized water reactor with its control panel, emergency procedures and crew knowledge base. It is the reference case of the documentation and of the test suite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The discrete dynamic event tree<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A sequence starts at the initiating event and runs until the mission time, a consequence or the probability cutoff ends it. At a branch point the running sequence continues with the first alternative. The engine saves the state of the plant and the crew, and later restarts one child sequence from that state for every other alternative. A restarted child receives the content of its own alternative, so it differs from its siblings from the branch point onward.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The probability of a sequence is the product of the conditional probabilities of its branches. A sequence that falls below the probability cutoff stops there and is kept as an end state, so its probability stays in the record.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1160\" height=\"704\" src=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-branch-point.png\" alt=\"\" class=\"wp-image-1571\" style=\"aspect-ratio:1.6477272727272727;width:580px;height:auto\" srcset=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-branch-point.png 1160w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-branch-point-600x364.png 600w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-branch-point-768x466.png 768w\" sizes=\"auto, (max-width: 1160px) 100vw, 1160px\" \/><figcaption class=\"wp-element-caption\">A branch point with three alternatives. Probabilities multiply along a sequence, and a sequence below the cutoff stays in the results as a truncated end state.<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">What opens a branch<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>Hardware.<\/b> A component fails when it is demanded, fails while it runs, or is recovered, and a support system is lost. The probability can come from a fault tree.<br><\/li>\n\n\n\n<li><b>Crew decisions.<\/b> A procedure step is carried out or skipped, and a control is set to one of several values.<br><\/li>\n\n\n\n<li> <b>Timing.<\/b> An action is taken, or a mental procedure is activated, at one of several times.<br><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What a run records<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For every sequence: the end state with its probability, the pivotal events along the path, and time histories of the control panel indicators, of the crew&#8217;s confidence in each diagnosis and of the dynamic performance influencing factors.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fault trees for what is not simulated<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A thermal-hydraulic model cannot hold the whole plant. Support systems such as emergency AC power, service water and instrument air are outside it, and so is the inner logic of many components, for example the trains of a diesel generator and their common causes. ADS-IDAC represents what is not simulated by fault trees, the model a classical PRA uses, and links them to the simulation.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"478\" src=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-fault-tree-link-1200x478.png\" alt=\"\" class=\"wp-image-1573\" style=\"aspect-ratio:2.512562814070352;width:1000px;height:auto\" srcset=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-fault-tree-link-1200x478.png 1200w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-fault-tree-link-600x239.png 600w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-fault-tree-link-768x306.png 768w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-fault-tree-link-1536x611.png 1536w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-fault-tree-link.png 2000w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><figcaption class=\"wp-element-caption\">A fault tree linked to the simulation. When the scenario demands the system, the top event supplies the probability of the failure branch. In the failed sequence the control panel shows the loss, and the crew meets it where a procedure tells them to look.<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Support systems<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Each support system is a fault tree whose top event is the loss of the system. The reliability module quantifies the tree and drives a display on the control panel with the result. A procedure step such as &#8220;verify emergency AC buses energized&#8221; reads that display, so the crew responds to the state it finds.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Components<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A component can take its failure probability from the top event of a fault tree instead of a single distribution. When the scenario demands the component, the tree supplies the probability of the failure branch, and the failure reaches the simulated plant through the component&#8217;s controller.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Either way the outcome becomes a branch of the event tree, and the plant and the crew live with it from that moment on. The trees are quantified exactly: the group&#8217;s fault tree library compiles a tree into a Bayesian network on BNCore, so an event that feeds several gates, such as a common cause, is counted once.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The IDAC crew model<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">IDAC (Information, Decision, and Action in a Crew context) represents each operator as a cognitive agent and the control room crew as a team. It combines a heuristic cognitive engine with a reasoning module.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> <b>Cognitive engine.<\/b> Forms a situational assessment from perceived information, selects goals that fit the assessment, selects strategies for reaching the goals, and sets priorities and resolves conflicts among them.<br><\/li>\n\n\n\n<li> <b>Reasoning module.<\/b> Extends knowledge-based behavior with an attention mechanism in the perception channels, which captures limited cognitive resources and top-down control of attention. It simulates an operator making sense of perceived information, connecting pieces of it into a picture of the plant situation, and diagnosing the accident.<br><\/li>\n\n\n\n<li> <b>Knowledge base.<\/b> Holds the training and experience of each operator: the information needed to assess the plant state, to carry out procedure steps, and to match memorized responses to perceived plant needs.<br><\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1160\" height=\"712\" src=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-idac-operator.png\" alt=\"\" class=\"wp-image-1575\" style=\"aspect-ratio:1.6292134831460674;width:580px;height:auto\" srcset=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-idac-operator.png 1160w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-idac-operator-600x368.png 600w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-idac-operator-768x471.png 768w\" sizes=\"auto, (max-width: 1160px) 100vw, 1160px\" \/><figcaption class=\"wp-element-caption\">One IDAC operator. Solid arrows carry information and actions. Dashed arrows are the mutual influence of the mental state and the three stages of the response.<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">The crew as a team<\/h3>\n\n\n\n<dl>\n    <dt>\n        <b>Decision maker<\/b>\n    <\/dt>\n    <dd>Shift supervisor. Leads the response and moves the crew from one procedure to the next.<\/dd>\n    <dt>\n        <b>Action taker<\/b>\n    <\/dt>\n    <dd>Reactor operator. Reads the control panel and operates the controls.<\/dd>\n    <dt>\n        <b>Consultant<\/b>\n    <\/dt>\n    <dd>Shift technical advisor. Supports diagnosis and decisions.<\/dd>\n<\/dl>\n\n\n\n<p class=\"wp-block-paragraph\">The operators collect information together, decide together, and distribute the execution of actions among themselves.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quantifying human failure events<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A Bayesian network quantifies human failure events. Ten performance shaping factors, among them time constraint load, information load, task complexity, stress and fatigue, set the failure probabilities of fourteen crew activities, from gathering information and diagnosis to carrying out a procedure step. The probabilities enter the branch probabilities of the event tree, so they follow the scenario.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"744\" src=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-hfe-network.png\" alt=\"\" class=\"wp-image-1574\" style=\"aspect-ratio:1.6129032258064515;width:600px;height:auto\" srcset=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-hfe-network.png 1200w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-hfe-network-600x372.png 600w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-hfe-network-768x476.png 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><figcaption class=\"wp-element-caption\">The network behind the human failure event probabilities: ten performance shaping factors, fourteen crew activities.<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Engine capabilities in version 5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Version 5 takes ADS-IDAC from a single workstation to anything between a laptop and a cluster. The purpose is to make three kinds of study practical: plant models at production scale, mission times long enough for recovery actions to play out, and campaigns of many trees for uncertainty quantification.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Parallel tree generation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Under MPI one rank schedules the tree from metadata alone. Workers run the sequences and pass restart states directly to each other, so the scheduler&#8217;s memory does not grow with the tree. A thermodynamic table cache and in-memory restart, both on by default, take most file traffic out of a run.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <code>mpirun -n N adsidac \u2026<\/code>\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/getting-started\/running.html#mpi-parallel-mode\">Running in parallel<\/a>\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Checkpoint and resume<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A run can stop and continue later: serial to serial, serial to MPI, or MPI to MPI with a different number of ranks. A configuration fingerprint refuses a resume against changed inputs. A long study runs as a chain of job slices inside ordinary batch limits.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <code>--checkpoint-dir<\/code>\n    <code>--checkpoint-interval<\/code>\n    <code>--checkpoint-stop<\/code>\n    <code>--resume<\/code>\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/getting-started\/running.html#checkpoint-and-resume-options\">Checkpoint and resume options<\/a>\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Memory control<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A memory limit moves new restart images to files once resident memory passes a bound. LZ4 compression shrinks the images that are queued and transferred, and payload trimming sends one restart record per transfer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <code>--memory-limit<\/code>\n    <code>--compress-queue<\/code>\n    <code>ADS_RESTART_TRIM=1<\/code>\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/getting-started\/running.html#performance-options\">Performance options<\/a>\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Output at scale<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pivotal-event nodes can be written as records in one file per worker instead of one file per node, which keeps a large tree inside a file-count quota. The workers&#8217; output is merged in parallel at the end of the job, serially on the scheduling rank, or later as a separate step.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <code>--aggregate-pe<\/code>\n    <code>--merge=now|serial|defer<\/code>\n    <code>--merge-only<\/code>\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/developer\/output-layouts.html\">Output layouts<\/a>\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Live views and instruments<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A web server on the scheduling rank streams the growing event tree and the pivotal-event graph to a browser. An occupancy log records queue depth and busy workers for scaling studies, and a finished run can notify you through ntfy or Discord.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <code>--viz-port<\/code>\n    <code>--viz-outputs<\/code>\n    <code>--occupancy-log<\/code>\n    <code>--notify-ntfy<\/code>\n    <code>--notify-discord<\/code>\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/getting-started\/running.html#visualization-options-mpi-only\">Visualization options<\/a>\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Solver interface<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The engine reaches its thermal-hydraulic solver through one interface. RELAP5\/MOD3.3 runs in process, another code can be attached over a REST API, and a standalone mock solver with a lumped-parameter PWR model runs the whole event tree machinery without Fortran.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <code>--solver=relap|mock<\/code>\n    <code>--solver-url<\/code>\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/developer\/mock-solver-architecture.html\">Mock solver architecture<\/a>\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exact inference<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">BNCore, the group&#8217;s junction-tree engine, evaluates the crew&#8217;s Bayesian network exactly and builds on every platform the engine supports. A companion library built on it quantifies fault trees exactly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <code>src\/BNCore<\/code>\n    <code>src\/FaultTree<\/code>\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/developer\/fault-tree-quantification.html\">Fault tree quantification<\/a>\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Input validation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\n    A plant model is hundreds of hand-edited text files that refer to each other. \n    <code>adsmd<\/code>\n    , a companion tool written in Rust, parses a project and reports structural errors, dangling cross-references and out-of-range values before a simulation runs.\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">38 rules. Reports as terminal text, JSON, SARIF or HTML.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/tools\/adsmd\/\">adsmd documentation<\/a>\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Portable builds<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GNU, Intel oneAPI and Apple Clang toolchains, serial-only builds, pre-built RELAP5 libraries for sites without the Fortran source, portable tarballs that carry a self-test, and Docker images.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <code>package.sh<\/code>\n    <code>--compiler=gnu|intel<\/code>\n    <code>--mpi=on|off<\/code>\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/getting-started\/installation.html\">Installation guide<\/a>\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Scale in practice<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">35,000 sequences in one job of under an hour<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A steam generator tube rupture study that covers 3,600 s of plant and crew response, with crew procedure, timing and recovery branches. The tree of about 35,000 sequences is generated and its output merged in a single job on NC State&#8217;s Hazel cluster.<\/p>\n\n\n\n<dl>\n    <dt>\n        <b>Mission time<\/b>\n    <\/dt>\n    <dd>3,600 s<\/dd>\n    <dt>\n        <b>MPI ranks<\/b>\n    <\/dt>\n    <dd>512 to 768<\/dd>\n    <dt>\n        <b>Wall time<\/b>\n    <\/dt>\n    <dd>51 to 59 minutes, tree and merge<\/dd>\n    <dt>\n        <b>Engine<\/b>\n    <\/dt>\n    <dd>version 5.0<\/dd>\n<\/dl>\n\n\n\n<h2 class=\"wp-block-heading\">More than 30 years of development<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ADS-IDAC grew out of research on dynamic event trees and on cognitive models of operating crews that started in the early 1990s. The platform was developed at multiple institutions over the years, and it is now developed by the <a href=\"https:\/\/ne.ncsu.edu\/prag\/\">Probabilistic Risk Assessment Group<\/a> at NC State.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\n    The solver interface is the path to physics codes other than RELAP5, and work is under way to connect the engine to the group&#8217;s open-source \n    <a href=\"https:\/\/openpra.org\">OpenPRA<\/a>\n     ecosystem.\n<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"519\" src=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-timeline-1200x519.png\" alt=\"\" class=\"wp-image-1577\" style=\"aspect-ratio:2.310924369747899;width:1100px;height:auto\" srcset=\"https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-timeline-1200x519.png 1200w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-timeline-600x260.png 600w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-timeline-768x332.png 768w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-timeline-1536x665.png 1536w, https:\/\/ne.ncsu.edu\/prag\/wp-content\/uploads\/sites\/16\/2026\/09\/ads-idac-timeline-2048x886.png 2048w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><figcaption class=\"wp-element-caption\">Milestones on the way to ADS-IDAC 5.0, drawn on a true time scale.<\/figcaption><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>1991.<\/strong> Dynamic event tree analysis method (MIT \u00b7 Acosta, Siu)<\/li>\n\n\n\n<li><strong>1992.<\/strong> COSIMO cognitive simulation model (JRC Ispra, Italy \u00b7 Cacciabue et al.)<\/li>\n\n\n\n<li><strong>1996.<\/strong> Accident Dynamics Simulator (ADS) (University of Maryland \u00b7 Hsueh, Mosleh)<\/li>\n\n\n\n<li><strong>1997.<\/strong> IDA cognitive model and error taxonomy (University of Maryland \u00b7 Smidts, Shen, Mosleh)<\/li>\n\n\n\n<li><strong>2004.<\/strong> Model-based human reliability analysis (University of Maryland \u00b7 Chang, Mosleh)<\/li>\n\n\n\n<li><strong>2005.<\/strong> ADS coupled with RELAP5 (University of Maryland \u00b7 Chang, Mosleh)<\/li>\n\n\n\n<li><strong>2007.<\/strong> IDAC model (University of Maryland \u00b7 Chang, Mosleh)<\/li>\n\n\n\n<li><strong>2009.<\/strong> ADS-IDAC 2.0 (University of Maryland \u00b7 Coyne, Mosleh)<\/li>\n\n\n\n<li><strong>2013.<\/strong> ADS-IDAC 3.0 (University of Maryland \u00b7 Li, Mosleh)<\/li>\n\n\n\n<li><strong>2017.<\/strong> ADS-IDAC 4.0 (UCLA \u00b7 Diaconeasa, Mosleh)<\/li>\n\n\n\n<li><strong>2026.<\/strong> ADS-IDAC 5.0 (NC State \u00b7 Tezbasaran, Diaconeasa)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Documentation and access<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/getting-started\/installation.html\"><b>Getting started<\/b><\/a>: Build, run, outputs, cluster use, troubleshooting<br><\/li>\n\n\n\n<li><a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/introduction\/overview.html\"><b>Introduction<\/b><\/a>: Modeling elements, process flowcharts, user notes<br><\/li>\n\n\n\n<li><a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/input-files\/\"><b>Input file reference<\/b><\/a>: Content and format of every input file<br><\/li>\n\n\n\n<li><a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/developer\/internals\/introduction.html\"><b>Developer guide<\/b><\/a>: Simulation flow, modules, Fortran and C++ interface<br><\/li>\n\n\n\n<li><a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/api\/html\/index.html\"><b>API reference<\/b><\/a>: Doxygen for the engine, BNCore and the fault tree library<br><\/li>\n\n\n\n<li><a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/getting-started\/reference-baselines.html\"><b>Reference baselines<\/b><\/a>: Tree sizes to check a build against<br><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">A first run<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">    <code># serial<br>    .\/adsidac --project-dir=..\/tests\/BV4 \\<br>              --input-deck=..\/tests\/BV4\/BV4.i<br><br>    # parallel: one scheduling rank and three workers<br>    mpirun -n 512 .\/adsidac --project-dir=..\/tests\/BV4 \\<br>              --input-deck=..\/tests\/BV4\/BV4.i<\/code><br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The reference case gives 36 sequences and 97 pivotal events at a truncation time of 15.5 s, in serial and in parallel. The test suite checks these counts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Access and status<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The documentation is public. The source code is kept in a private repository of the group. Write to us to request access or to discuss a collaboration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ADS-IDAC is research software under development. Verification and validation are ongoing, and users should verify results independently.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Platforms and toolchains<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Platform<\/th><th>Toolchain<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Linux x86_64<\/td><td>GNU (gcc, gfortran, Open MPI)<\/td><td>Recommended. gfortran optimizes RELAP5, which makes it 2 to 2.5 times faster than the Intel build.<\/td><\/tr><tr><td>Linux x86_64<\/td><td>Intel oneAPI (icpx, icx, ifx, Intel MPI)<\/td><td>RELAP5 is compiled without Fortran optimization.<\/td><\/tr><tr><td>macOS on Apple Silicon<\/td><td>Apple Clang with Homebrew gfortran, Open MPI<\/td><td>Bayesian network inference on BNCore.<\/td><\/tr><tr><td>Clusters<\/td><td>Portable tarball or pre-built RELAP5 libraries<\/td><td>MPI and system libraries come from the site.<\/td><\/tr><tr><td>Containers<\/td><td>Docker images<\/td><td>Build, development, GNU validation, documentation.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Selected publications<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>C. Acosta and N. Siu, &#8220;Dynamic event trees in accident sequence analysis: application to steam generator tube rupture,&#8221; <i>Reliability Engineering &amp; System Safety<\/i>, vol. 41, pp. 135-154, 1993.<br><\/li>\n\n\n\n<li>K.-S. Hsueh and A. Mosleh, &#8220;The development and application of the accident dynamic simulator for dynamic probabilistic risk assessment of nuclear power plants,&#8221; <i>Reliability Engineering &amp; System Safety<\/i>, vol. 52, pp. 297-314, 1996.<br><\/li>\n\n\n\n<li>C. Smidts, S. H. Shen and A. Mosleh, &#8220;The IDA cognitive model for the analysis of nuclear power plant operator response under accident conditions. Part I: Problem solving and decision making model,&#8221; <i>Reliability Engineering &amp; System Safety<\/i>, vol. 55, pp. 51-71, 1997.<br><\/li>\n\n\n\n<li>A. Mosleh and Y. H. Chang, &#8220;Model-based human reliability analysis: prospects and requirements,&#8221; <i>Reliability Engineering &amp; System Safety<\/i>, vol. 83, pp. 241-253, 2004.<br><\/li>\n\n\n\n<li>Y. H. J. Chang and A. Mosleh, &#8220;Cognitive modeling and dynamic probabilistic simulation of operating crew response to complex system accidents,&#8221; Parts 1 to 5, <i>Reliability Engineering &amp; System Safety<\/i>, vol. 92, pp. 997-1101, 2007.<br><\/li>\n\n\n\n<li>D. Zhu, Y. H. Chang and A. Mosleh, &#8220;The use of distributed computing for dynamic PRA: the ADS approach,&#8221; <i>PSAM 9<\/i>, Hong Kong, 2008.<br><\/li>\n\n\n\n<li>K. Coyne, <a href=\"https:\/\/drum.lib.umd.edu\/items\/944266b3-f85b-4f69-a2d8-2221107397c9\">&#8220;A predictive model of nuclear power plant crew decision-making and performance in a dynamic simulation environment,&#8221;<\/a> Ph.D. dissertation, University of Maryland, 2009.<br><\/li>\n\n\n\n<li>K. Coyne and A. Mosleh, &#8220;Nuclear plant control room operator modeling within the ADS-IDAC, Version 2, dynamic PRA environment: Part 1 &#8211; General description and cognitive foundations,&#8221; <i>International Journal of Performability Engineering<\/i>, vol. 10, no. 7, pp. 691-703, 2014.<br><\/li>\n\n\n\n<li>M. A. Diaconeasa, <br> <a href=\"https:\/\/escholarship.org\/uc\/item\/9wc84881\">&#8220;Integration of qualitative and quantitative hybrid causal logic into a simulation-based platform for probabilistic risk assessment of nuclear power plants,&#8221;<\/a> Ph.D. dissertation, University of California, Los Angeles, 2017.<br><\/li>\n\n\n\n<li>Y. Li and A. Mosleh, &#8220;Dynamic simulation of knowledge based reasoning of nuclear power plant operator in accident conditions: Modeling and simulation foundations,&#8221; <i>Safety Science<\/i>, vol. 119, pp. 315-329, 2019.<br><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><br> The <a href=\"https:\/\/ncsu-ne-prag.github.io\/ads-idac-engine\/references\/\">reference list of the input manual<\/a> gives the full bibliography.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dynamic PRA simulation engine Dynamic probabilistic risk assessment (PRA) simulation methods can improve nuclear power plant PRAs by providing rich contextual information and an explicit&#8230;<\/p>\n","protected":false},"author":220,"featured_media":0,"parent":134,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"page-fullwidth.php","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"footnotes":""},"class_list":["post-224","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/ne.ncsu.edu\/prag\/wp-json\/wp\/v2\/pages\/224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ne.ncsu.edu\/prag\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ne.ncsu.edu\/prag\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ne.ncsu.edu\/prag\/wp-json\/wp\/v2\/users\/220"}],"replies":[{"embeddable":true,"href":"https:\/\/ne.ncsu.edu\/prag\/wp-json\/wp\/v2\/comments?post=224"}],"version-history":[{"count":10,"href":"https:\/\/ne.ncsu.edu\/prag\/wp-json\/wp\/v2\/pages\/224\/revisions"}],"predecessor-version":[{"id":1601,"href":"https:\/\/ne.ncsu.edu\/prag\/wp-json\/wp\/v2\/pages\/224\/revisions\/1601"}],"up":[{"embeddable":true,"href":"https:\/\/ne.ncsu.edu\/prag\/wp-json\/wp\/v2\/pages\/134"}],"wp:attachment":[{"href":"https:\/\/ne.ncsu.edu\/prag\/wp-json\/wp\/v2\/media?parent=224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}