scram::mef::CcfGroup
Abstract base class for all common cause failure models.
#include <ccf_group.h>
Inherits from scram::mef::Id, scram::mef::Element, scram::mef::Role, scram::mef::ContainerElement, boost::noncopyable
Inherited by scram::mef::AlphaFactorModel, scram::mef::BetaFactorModel, scram::mef::MglModel, scram::mef::PhiFactorModel
Protected Types
| Name | |
|---|---|
| using std::vector< std::pair< int, Expression * > > | ExpressionMap <br>Mapping expressions and their application levels. |
Public Functions
| Name | |
|---|---|
| virtual | ~CcfGroup() =default |
| const std::vector< BasicEvent * > & | members() const |
| void | AddMember(BasicEvent * basic_event)<br>Adds a basic event into this CCF group. |
| void | AddDistribution(Expression * distr)<br>Adds the distribution that describes the probability of basic events in this CCF group. |
| void | AddFactor(Expression * factor, std::optional< int > level ={})<br>Adds a CCF factor for the specified model. |
| void | Validate() const<br>Validates the setup for the CCF model and group. |
| void | ApplyModel()<br>Processes the given factors and members to create common cause failure probabilities and new events that can replace the members in a fault tree. |
| Id(std::string name, std::string base_path ="", RoleSpecifier role =RoleSpecifier::kPublic)<br>Constructs an element with an original name. |
Protected Functions
| Name | |
|---|---|
| template <class T ,typename... Ts> <br>Expression * | Register(Ts &&... args)<br>Registers a new expression for ownership by the group. |
| template <class T > <br>Expression * | Register(std::initializer_list< Expression * > args) |
| Expression * | distribution() const |
| const ExpressionMap & | factors() const |
Public Attributes
| Name | |
|---|---|
| constexpr const char * | kTypeString <br>Type string for error messages. |
Additional inherited members
Public Functions inherited from scram::mef::Id
| Name | |
|---|---|
| const std::string & | unique_name(const Element & element)<br>Produces unique name for the model element within the same type. |
| const std::string & | unique_name(const Id & element) |
| const std::string & | id() const |
| std::string_view | id_view() const |
| std::string_view | full_path() const |
| void | id(std::string name)<br>Resets the element ID. |
Protected Functions inherited from scram::mef::Id
| Name | |
|---|---|
| ~Id() =default |
Public Types inherited from scram::mef::Element
| Name | |
|---|---|
| using ext::linear_set< Attribute, AttributeKey > | AttributeMap <br>Unique attribute map keyed with the attribute names. |
Public Functions inherited from scram::mef::Element
| Name | |
|---|---|
| Element(std::string name)<br>Constructs an element with an original name. | |
| const std::string & | name() const |
| std::string_view | name_view() const |
| const std::string & | label() const |
| void | label(std::string label)<br>Sets the element label. |
| const AttributeMap & | attributes() const |
| void | AddAttribute(Attribute attr)<br>Adds an attribute to the attribute map of this element. |
| void | SetAttribute(Attribute attr)<br>Sets an attribute to the attribute map. |
| const Attribute * | GetAttribute(std::string_view name) const |
| std::optional< Attribute > | RemoveAttribute(std::string_view name)<br>Removes an attribute of this element. |
Protected Functions inherited from scram::mef::Element
| Name | |
|---|---|
| ~Element() =default | |
| void | name(std::string name)<br>Resets the element name. |
Public Functions inherited from scram::mef::Role
| Name | |
|---|---|
| Role(RoleSpecifier role =RoleSpecifier::kPublic, std::string base_path ="")<br>Sets the role of an element upon creation. | |
| RoleSpecifier | role() const |
| const std::string & | base_path() const |
Protected Functions inherited from scram::mef::Role
| Name | |
|---|---|
| ~Role() =default |
Protected Functions inherited from scram::mef::ContainerElement
| Name | |
|---|---|
| const Element * | container() const |
Friends inherited from scram::mef::ContainerElement
| Name | |
|---|---|
| class | Container |
Protected Types Documentation
using ExpressionMap
using scram::mef::CcfGroup::ExpressionMap = std::vector<std::pair<int, Expression*> >;Mapping expressions and their application levels.
Public Functions Documentation
function ~CcfGroup
virtual ~CcfGroup() =defaultfunction members
inline const std::vector< BasicEvent * > & members() constReturn: Members of the CCF group with original names as keys.
function AddMember
void AddMember(
BasicEvent * basic_event
)Adds a basic event into this CCF group.
Parameters:
- basic_event A member basic event.
Exceptions:
- DuplicateElementError The basic event is already in the group.
- LogicError The probability distribution or factors for this CCF group are already defined. No more members are accepted.
This function asserts that each basic event has unique string id.
function AddDistribution
void AddDistribution(
Expression * distr
)Adds the distribution that describes the probability of basic events in this CCF group.
Parameters:
- distr The probability distribution of this group.
Exceptions:
- ValidityError Not enough members.
- LogicError The distribution has already been defined.
All basic events should be added as members before defining their probabilities. No more basic events can be added after this function.
function AddFactor
void AddFactor(
Expression * factor,
std::optional< int > level ={}
)Adds a CCF factor for the specified model.
Parameters:
- factor A factor for the CCF model.
- level The level of the passed factor.
Exceptions:
- ValidityError The level is invalid.
- ValidityError The factor for the level already exists.
- LogicError The level is not positive, or the CCF group members are undefined.
All basic events should be added as members before defining the CCF factors. No more basic events can be added after this function.
function Validate
void Validate() constValidates the setup for the CCF model and group.
Exceptions:
- DomainError The numeric values are invalid.
- ValidityError There is an issue with the setup.
- LogicError The primary distribution, event, factors are not set.
Checks if the provided distribution is between 0 and 1.
This check must be performed before validating basic events that are members of this CCF group to give more precise error messages.
function ApplyModel
void ApplyModel()Processes the given factors and members to create common cause failure probabilities and new events that can replace the members in a fault tree.
Precondition: The CCF is validated.
function Id
explicit Id(
std::string name,
std::string base_path ="",
RoleSpecifier role =RoleSpecifier::kPublic
)Constructs an element with an original name.
Parameters:
- name The local identifier name.
- role A role specifier of the element.
- base_path The series of containers to get this event.
Exceptions:
- LogicError The name is required and empty.
- ValidityError The name is malformed.
- ValidityError The base path string is malformed.
- ValidityError Private element at model/global scope.
The name is expected to conform to identifier requirements described in the MEF documentation and additions.
Sets the role of an element upon creation.
The base reference path must be formatted according to the MEF documentation and additions.
Mangles the element name into a unique id. Private elements get their full path as their ids, while public elements retain their name as ids.
Protected Functions Documentation
function Register
template <class T ,
typename... Ts>
inline Expression * Register(
Ts &&... args
)Registers a new expression for ownership by the group.
function Register
template <class T >
inline Expression * Register(
std::initializer_list< Expression * > args
)function distribution
inline Expression * distribution() constReturn: The probability distribution of the events.
function factors
inline const ExpressionMap & factors() constReturn: CCF factors of the model.
Public Attributes Documentation
variable kTypeString
static constexpr const char * kTypeString = "CCF group";Type string for error messages.
Updated on 2025-11-11 at 16:51:08 +0000
