scram::core
Namespaces
| Name |
|---|
| scram::core::pdag |
| scram::core::zbdd |
Classes
| Name | |
|---|---|
| class | scram::core::Analysis <br>Base abstract class for all analysis with settings. |
| class | scram::core::Bdd <br>Analysis of PDAGs with Binary Decision Diagrams. |
| class | scram::core::CacheTable <br>A hash table without collision resolution. |
| class | scram::core::Constant <br>Representation of a node that is a Boolean constant TRUE. |
| class | scram::core::CustomPreprocessor <br>Undefined template class for specialization of Preprocessor for needs of specific analysis algorithms. |
| class | scram::core::CustomPreprocessor< Bdd > <br>Specialization of preprocessing for BDD based analyses. |
| class | scram::core::CustomPreprocessor< Mocus > <br>Specialization of preprocessing for MOCUS based analyses. |
| class | scram::core::CustomPreprocessor< Zbdd > <br>Specialization of preprocessing for ZBDD based analyses. |
| class | scram::core::CutSetProbabilityCalculator <br>Quantitative calculator of a probability value of a single cut set. |
| class | scram::core::EventTreeAnalysis <br>Event tree analysis functionality. |
| class | scram::core::FaultTreeAnalysis <br>Fault tree analysis functionality. |
| class | scram::core::FaultTreeAnalyzer <br>Fault tree analysis facility with specific algorithms. |
| class | scram::core::Gate <br>An indexed gate for use in a PDAG. |
| class | scram::core::ImportanceAnalysis <br>Analysis of importance factors of risk model variables. |
| class | scram::core::ImportanceAnalyzer <br>Analyzer of importance factors with the help from probability analyzers. |
| class | scram::core::ImportanceAnalyzer< Bdd > <br>Specialization of importance analyzer with Binary Decision Diagrams. |
| class | scram::core::ImportanceAnalyzerBase <br>Base class for analyzers of importance factors with the help from probability analyzers. |
| struct | scram::core::ImportanceFactors <br>Collection of importance factors for variables. |
| struct | scram::core::ImportanceRecord <br>Mapping of an event and its importance. |
| struct | scram::core::IntrusivePtrCast <br>Provides pointer and reference cast wrappers for intrusive Vertex pointers. |
| class | scram::core::Ite <br>Representation of non-terminal if-then-else vertices in BDD graphs. |
| struct | scram::core::Literal <br>Event or its complement that may appear in products. |
| class | scram::core::McubCalculator <br>Quantitative calculator of probability values with the Min-Cut-Upper Bound approximation. |
| class | scram::core::Mocus <br>This class analyzes normalized, preprocessed, and indexed fault trees to generate minimal cut sets with the MOCUS algorithm. |
| class | scram::core::Node <br>An abstract base class that represents a node in a PDAG. |
| class | scram::core::NodeParentManager <br>A manager of information about parents. |
| class | scram::core::NonTerminal <br>Representation of non-terminal vertices in BDD graphs. |
| struct | scram::core::PairHash <br>Function for hashing a pair of ordered numbers. |
| class | scram::core::Pdag <br>PDAG is a propositional directed acyclic graph. |
| class | scram::core::Preprocessor <br>The class provides main preprocessing operations over a PDAG to simplify the fault tree and to help analysis run more efficiently. |
| class | scram::core::ProbabilityAnalysis <br>Main quantitative analysis class. |
| class | scram::core::ProbabilityAnalyzer <br>Fault-tree-analysis-aware probability analyzer. |
| class | scram::core::ProbabilityAnalyzer< Bdd > <br>Specialization of probability analyzer with Binary Decision Diagrams. |
| class | scram::core::ProbabilityAnalyzerBase <br>Base class for Probability analyzers. |
| class | scram::core::Product <br>Collection of unique literals. |
| class | scram::core::ProductContainer <br>A container of analysis result products with Literals. |
| class | scram::core::RareEventCalculator <br>Quantitative calculator of probability values with the Rare-Event approximation. |
| class | scram::core::RiskAnalysis <br>Main system that performs analyses. |
| class | scram::core::SetNode <br>Representation of non-terminal nodes in ZBDD. |
| class | scram::core::Settings <br>Builder for analysis settings. |
| struct | scram::core::Sil <br>Safety Integrity Level metrics. |
| class | scram::core::Terminal <br>Representation of terminal vertices in BDD graphs. |
| struct | scram::core::TripletHash <br>Functor for hashing triplets of ordered numbers. |
| class | scram::core::UncertaintyAnalysis <br>Uncertainty analysis and statistics for top event or gate probabilities with probability distributions of basic events. |
| class | scram::core::UncertaintyAnalyzer <br>Uncertainty analysis facility. |
| class | scram::core::UniqueTable <br>A hash table for keeping BDD reduced. |
| class | scram::core::Variable <br>Boolean variables in a Boolean formula or graph. |
| class | scram::core::Vertex <br>Representation of a vertex in BDD graphs. |
| class | scram::core::WeakIntrusivePtr <br>A weak pointer to store in BDD unique tables. |
| class | scram::core::Zbdd <br>Zero-Suppressed Binary Decision Diagrams for set manipulations. |
Types
| Name | |
|---|---|
| enum std::uint8_t | Connective { kAnd = 0, kOr, kAtleast, kXor, kNot, kNand, kNor, kNull}<br>Boolean connectives of gates for representation, preprocessing, and analysis purposes. |
| enum class std::uint8_t | Algorithm { kBdd = 0, kZbdd, kMocus}<br>Qualitative analysis algorithms. |
| enum class std::uint8_t | Approximation { kNone = 0, kRareEvent, kMcub}<br>Quantitative analysis approximations. |
| template <class T > <br>using boost::intrusive_ptr< T > | IntrusivePtr <br>The default management of BDD vertices. |
| using IntrusivePtr< Ite > | ItePtr <br>Shared if-then-else vertices. |
| using std::shared_ptr< Gate > | GatePtr <br>Shared gates in the graph. |
| using std::weak_ptr< Gate > | GateWeakPtr <br>An acyclic ptr to parent gates. |
| using std::shared_ptr< Node > | NodePtr <br>Shared base nodes in the graph. |
| using std::shared_ptr< Constant > | ConstantPtr <br>Shared Boolean constants. |
| using std::shared_ptr< Variable > | VariablePtr <br>Shared Boolean variables. |
| using IntrusivePtr< SetNode > | SetNodePtr <br>Shared ZBDD set nodes. |
| template <typename Value > <br>using std::unordered_map< std::pair< int, int >, Value, PairHash > | PairTable <br>Hash table with pairs of numbers as keys. |
| using std::array< int, 3 > | Triplet <br>Triplet of numbers for functions. |
| template <typename Value > <br>using std::unordered_map< Triplet, Value, TripletHash > | TripletTable <br>Hash table with triplets of numbers as keys. |
Functions
| Name | |
|---|---|
| std::ostream & | operator<<(std::ostream & os, const Constant & constant)<br>Prints PDAG nodes in the Aralia format. |
| std::ostream & | operator<<(std::ostream & os, const Variable & variable) |
| std::ostream & | operator<<(std::ostream & os, const GatePtr & gate) |
| template <bool Mark =true,typename T > <br>void | TraverseGates(const GatePtr & gate, T && visit)<br>Traverses and visits gates and nodes in the graph. |
| template <typename T > <br>void | TraverseNodes(const GatePtr & gate, T && visit) |
| int | GetPrimeNumber(int n)<br>Prime number generation for hash tables. |
| void | Print(const ProductContainer & products)<br>Prints a collection of products to the standard error. |
| std::ostream & | operator<<(std::ostream & os, Pdag * graph)<br>Prints the PDAG as a fault tree in the Aralia format. |
Attributes
| Name | |
|---|---|
| const int | kNumConnectives <br>The number of connectives in the enum. |
| const char *const[] | kAlgorithmToString <br>String representations for algorithms. |
| const char *const[] | kApproximationToString <br>String representations for approximations. |
Types Documentation
enum Connective
| Enumerator | Value | Description |
|---|---|---|
| kAnd | 0 | AND gate. |
| kOr | OR gate. | |
| kAtleast | Combination, K/N, or Vote gate representation. | |
| kXor | Exclusive OR gate with two inputs. | |
| kNot | Boolean negation. | |
| kNand | NAND gate. | |
| kNor | NOR gate. | |
| kNull | Special pass-through or NULL gate. This is not NULL set. |
Boolean connectives of gates for representation, preprocessing, and analysis purposes.
Warning: If a new connective is added, all the preprocessing and PDAG algorithms must be reviewed and updated. The algorithms may assume for performance and simplicity reasons that these are the only kinds of connectives possible.
The connective defines a type and logic of a gate.
enum Algorithm
| Enumerator | Value | Description |
|---|---|---|
| kBdd | 0 | |
| kZbdd | ||
| kMocus |
Qualitative analysis algorithms.
enum Approximation
| Enumerator | Value | Description |
|---|---|---|
| kNone | 0 | |
| kRareEvent | ||
| kMcub |
Quantitative analysis approximations.
using IntrusivePtr
template <class T >
using scram::core::IntrusivePtr = typedef boost::intrusive_ptr<T>;The default management of BDD vertices.
Template Parameters:
- T The type of the main functional BDD vertex.
using ItePtr
using scram::core::ItePtr = typedef IntrusivePtr<Ite>;Shared if-then-else vertices.
using GatePtr
using scram::core::GatePtr = typedef std::shared_ptr<Gate>;Shared gates in the graph.
using GateWeakPtr
using scram::core::GateWeakPtr = typedef std::weak_ptr<Gate>;An acyclic ptr to parent gates.
using NodePtr
using scram::core::NodePtr = typedef std::shared_ptr<Node>;Shared base nodes in the graph.
using ConstantPtr
using scram::core::ConstantPtr = typedef std::shared_ptr<Constant>;Shared Boolean constants.
using VariablePtr
using scram::core::VariablePtr = typedef std::shared_ptr<Variable>;Shared Boolean variables.
using SetNodePtr
using scram::core::SetNodePtr = typedef IntrusivePtr<SetNode>;Shared ZBDD set nodes.
using PairTable
template <typename Value >
using scram::core::PairTable = typedef std::unordered_map<std::pair<int, int>, Value, PairHash>;Hash table with pairs of numbers as keys.
Template Parameters:
- Value Type of values to be stored in the table.
using Triplet
using scram::core::Triplet = typedef std::array<int, 3>;Triplet of numbers for functions.
using TripletTable
template <typename Value >
using scram::core::TripletTable = typedef std::unordered_map<Triplet, Value, TripletHash>;Hash table with triplets of numbers as keys.
Template Parameters:
- Value Type of values to be stored in the table.
Functions Documentation
function operator<<
std::ostream & operator<<(
std::ostream & os,
const Constant & constant
)Prints PDAG nodes in the Aralia format.
function operator<<
std::ostream & operator<<(
std::ostream & os,
const Variable & variable
)function operator<<
std::ostream & operator<<(
std::ostream & os,
const GatePtr & gate
)function TraverseGates
template <bool Mark =true,
typename T >
void TraverseGates(
const GatePtr & gate,
T && visit
)Traverses and visits gates and nodes in the graph.
Parameters:
- gate The starting gate.
- visit The visitor for graph nodes.
Template Parameters:
- Mark The "visited" gate mark.
- T The visitor type.
function TraverseNodes
template <typename T >
void TraverseNodes(
const GatePtr & gate,
T && visit
)function GetPrimeNumber
int GetPrimeNumber(
int n
)Prime number generation for hash tables.
Parameters:
- n The starting candidate for a prime number.
Return: Probable prime number >= n.
function Print
void Print(
const ProductContainer & products
)Prints a collection of products to the standard error.
Parameters:
- products Valid, unique collection of analysis results.
This is a helper function for easier debugging and visual comparison of analysis results. Summary of the number of products and its size distribution is printed first. Then, all products are grouped by size and sorted. The literals of a product are sorted by their names.
function operator<<
std::ostream & operator<<(
std::ostream & os,
Pdag * graph
)Prints the PDAG as a fault tree in the Aralia format.
Parameters:
- os Output stream.
- graph The PDAG to be printed.
Return: The provided output stream in its original state.
Warning: Visits of nodes must be clean. Visit information may get changed.
This function is mostly for debugging purposes.
Attributes Documentation
variable kNumConnectives
const int kNumConnectives = 8;The number of connectives in the enum.
This number is useful for optimizations and algorithms.
variable kAlgorithmToString
const char *const[] kAlgorithmToString = {"bdd", "zbdd", "mocus"};String representations for algorithms.
variable kApproximationToString
const char *const[] kApproximationToString = {"none", "rare-event", "mcub"};String representations for approximations.
Updated on 2025-11-11 at 16:51:07 +0000
