import models/SimpleClassDiagrams as SCD include "primitives.alh" SCD CausalBlockDiagrams_Runtime{ AttributeValue Float { constraint = $ String constraint(model : Element, name : String): if (bool_not(is_physical_float(model["model"][name]))): return "Float has no float value"! else: return "OK"! $ } AttributeValue String { constraint = $ String constraint(model : Element, name : String): if (bool_not(is_physical_string(model["model"][name]))): return "String has no string value"! else: return "OK"! $ } Class Block{ signal : Float } Class ICBlock{ last_in : Float } Class ConstantBlock{ value : Float } Class ProbeBlock{ name : String } Class AdditionBlock{} Class NegatorBlock{} Class MultiplyBlock{} Class InverseBlock{} Class DelayBlock{} Class IntegratorBlock{ last_out? : Float } Class DerivatorBlock{} Class Time{ lower_cardinality = 1 upper_cardinality = 1 start_time : Float current_time : Float } Association Link(Block, Block){ } Association InitialCondition(Block, ICBlock){ source_lower_cardinality = 0 source_upper_cardinality = 1 } Inheritance (ConstantBlock, Block){} Inheritance (AdditionBlock, Block){} Inheritance (NegatorBlock, Block){} Inheritance (MultiplyBlock, Block){} Inheritance (InverseBlock, Block){} Inheritance (ICBlock, Block){} Inheritance (DelayBlock, ICBlock){} Inheritance (DerivatorBlock, ICBlock){} Inheritance (IntegratorBlock, ICBlock){} Inheritance (ProbeBlock, Block){} } export CausalBlockDiagrams_Runtime to models/CausalBlockDiagrams_Runtime