import models/SimpleClassDiagrams as SCD include "primitives.alh" SCD CausalBlockDiagrams_Runtime{ Class Float { $ if (bool_not(is_physical_float(self))): return "Float has no float value"! else: return "OK"! $ } Class Natural { $ if (bool_not(is_physical_int(self))): return "Natural has no integer value"! else: return "OK"! $ } Class Block{ signal : Float { target_lower_cardinality = 1 target_upper_cardinality = 1 } } Class ConstantBlock{ value : Float { target_lower_cardinality = 1 target_upper_cardinality = 1 } } Class AdditionBlock{} Class NegatorBlock{} Class MultiplyBlock{} Class InverseBlock{} Class DelayBlock{ memory : Float { target_lower_cardinality = 0 target_upper_cardinality = 1 } } Class Time{ lower_cardinality = 1 upper_cardinality = 1 start_time : Natural { target_lower_cardinality = 1 target_upper_cardinality = 1 } current_time : Natural { target_lower_cardinality = 1 target_upper_cardinality = 1 } termination_time : Natural { target_lower_cardinality = 1 target_upper_cardinality = 1 } } Association Link(Block, Block){ } Association InitialCondition(Block, DelayBlock){ source_lower_cardinality = 0 source_upper_cardinality = 1 } Inheritance (ConstantBlock, Block){} Inheritance (AdditionBlock, Block){} Inheritance (NegatorBlock, Block){} Inheritance (MultiplyBlock, Block){} Inheritance (InverseBlock, Block){} Inheritance (DelayBlock, Block){} } export CausalBlockDiagrams_Runtime to models/CausalBlockDiagrams_Runtime