Skip to content

Introduction to ADS-IDAC Development ​

These pages give source-code information for those who want to change the ADS-IDAC engine. The engine is a tool for research on simulation-based dynamic probabilistic risk assessment (PRA) and dynamic human reliability analysis (HRA). It couples a thermal-hydraulic plant model (RELAP5/MOD3.3, or a solver behind the REST interface) with a crew behaviour model (the IDAC cognitive model) and with hardware reliability models, and it generates a discrete dynamic event tree.

Names are identifiers, and case matters

Inside the engine all information is identified by name: system information (parameters, alarms, controls, components) and operator information (diagnoses, pieces of knowledge). Each name must be unique and is compared case-sensitively: Alarm_Hi_P_RCS and Alarm_Hi_p_RCS are different names. The input files are text files written by hand, so a misspelled name is the most common input error. The adsmd tool (tools/adsmd/) checks an input tree for such errors before a run.

Page map ​

PageContent
Code ArchitectureThe modules and how they interact
Simulation FlowThe simulation objects, the per-sequence loop, the evaluation step, restart of a new sequence
Source Code LayoutDirectories, libraries and their dependencies
System Module, Control Panel Module, Hardware Reliability Module, Crew ModuleThe four main simulation modules
ProceduresHow operating procedures are represented and followed
Communication Place, Command Control CenterCommunication between the modules. The Communication Place works like a white board on which each module puts information marked with a sender and an intended receiver; every module and operator checks it at every step. The Command Control Center models the time an activity takes to execute. Every branch shown in the event tree goes through it
Branch GenerationHow branch points and branches are generated and stored
SchedulerOptions, directories and sequence termination criteria
Output Data HandlingWhat is written, when, and how MPI runs consolidate it
Crew/Branch Content OwnershipOwnership rules for crew and branch content objects
ReasonMachine: Status and GatingWhat of the knowledge-based reasoning model executes
Fortran/C++ InterfaceData exchange and calls between RELAP5 and the C++ engine
Adding Branch ChannelsStep-by-step instructions for a new type of branch
File Formats, Input & Output LayoutFormat specifications of input files and the directory structure
CLion Docker EnvironmentA containerized development environment

The pages on the four simulation modules, procedures, communication, branch generation, file formats and the input layout follow the text of the ADS-IDAC developer manual, and they refer to constants by the manual's V... names (for example VSUCCEED). The code defines these constants in src/ADSIDAC/Global/SimConstants.h (sim::State::Succeed); the Term Conversions page lists both forms. Where those pages name a global object such as Indicator or Branch_center, the object is the member of the same name of g_sim.

ADS-IDAC Engine Documentation