138 * @brief This class is a collection of time marks to manage various events occurring during simulation time.
139 *
140 * <b> TimeMark and their types </b>
141 *
142 * One TimeMark consists of time and type (TimeMark::Type), see the constructor TimeMark::TimeMark.
143 * The type of mark is bitmap where individual bits corresponds to some base event types like changing a BC, output solution, coupling time with another
144 * equation and so on. Base types can be combined by bitwise or (operator|).
145 *
146 * Special types are predefined in TimeMarks class. These are returned by their getters:
147 * - type_fixed_time() - marks of this type are considered as fixed times by a TimeGovernor which is connected to particular TimeMarks object.
148 * - type_output() - this type marks times at which solution should be computed and written to output.
149 * - type_bc_change() - this type marks times at which BC is is changed and model has to be updated.
150 *
151 * <b> TimeMarks collection </b>
152 *
153 * TimeMarks collect marks of various types and provides methods for iterating over stored marks. You can selectively access only marks matching given
154 * type mask. See TimeMark::match_mask.
155 *
156 * You can add one new mark through method add or add evenly spaced marks of same type by TimeMarks::add_time_marks.
157 *
158 * You can allocate new TimeMark::Type in the context of one TimeMarks object by TimeMarks::new_mark_type.
159 *
160 * For a given TimeGovernor (not necessarily connected one) you can ask about existence of mark in current time interval (TimeMarks::is_current) and see TimeMarks
161 * close to the current time (TimeMarks::next and TimeMarks::last). The current time interval is left-open and right-closed: (t,t+dt]. Repeatedly used TimeMarks::next always returns the same TimeMark if the time of the TimeGovernor is not changed.
162 *
163 * In most cases there will be only one TimeMarks object for the whole solved problem and used by TimeGovernors of individual equations. However