import models/SimpleClassDiagrams as SCD include "primitives.alh" SCD CausalBlockDiagrams_Design{ Class Float { $ if (bool_not(is_physical_float(self))): return "Float has no float value"! else: return "OK"! $ } Class String { $ if (bool_not(is_physical_string(self))): return "String has no string value"! else: return "OK"! $ } Class Block{} Class ICBlock{} Class ConstantBlock{ value : Float { target_lower_cardinality = 1 target_upper_cardinality = 1 } } Class AdditionBlock{} Class NegatorBlock{} Class MultiplyBlock{} Class InverseBlock{} Class DelayBlock{} Class IntegratorBlock{} Class DerivatorBlock{} Class ProbeBlock{ name : String { target_lower_cardinality = 1 target_upper_cardinality = 1 } } Association Link(Block, Block){} Association InitialCondition(Block, ICBlock){ source_lower_cardinality = 1 source_upper_cardinality = 1 } Inheritance (ConstantBlock, Block){} Inheritance (AdditionBlock, Block){} Inheritance (NegatorBlock, Block){} Inheritance (MultiplyBlock, Block){} Inheritance (InverseBlock, Block){} Inheritance (ProbeBlock, Block){} Inheritance (ICBlock, Block){} Inheritance (DelayBlock, ICBlock){} Inheritance (IntegratorBlock, ICBlock){} Inheritance (DerivatorBlock, ICBlock){} } export CausalBlockDiagrams_Design to models/CausalBlockDiagrams_Design