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
| Page | Content |
|---|---|
| Code Architecture | The modules and how they interact |
| Simulation Flow | The simulation objects, the per-sequence loop, the evaluation step, restart of a new sequence |
| Source Code Layout | Directories, libraries and their dependencies |
| System Module, Control Panel Module, Hardware Reliability Module, Crew Module | The four main simulation modules |
| Procedures | How operating procedures are represented and followed |
| Communication Place, Command Control Center | Communication 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 Generation | How branch points and branches are generated and stored |
| Scheduler | Options, directories and sequence termination criteria |
| Output Data Handling | What is written, when, and how MPI runs consolidate it |
| Crew/Branch Content Ownership | Ownership rules for crew and branch content objects |
| ReasonMachine: Status and Gating | What of the knowledge-based reasoning model executes |
| Fortran/C++ Interface | Data exchange and calls between RELAP5 and the C++ engine |
| Adding Branch Channels | Step-by-step instructions for a new type of branch |
| File Formats, Input & Output Layout | Format specifications of input files and the directory structure |
| CLion Docker Environment | A 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.