Application module: Physical connectivity layout topology requirement | ISO/TS 10303-1826:2018-11(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N9698 - ISO/TS 10303-1826 Physical connectivity layout topology requirement - EXPRESS ARM
*)
SCHEMA Physical_connectivity_layout_topology_requirement_arm;
USE FROM
Requirement_decomposition_arm;
-- ISO/TS 10303-1740
REFERENCE FROM
Support_resource_arm -- ISO/TS 10303-1800
(bag_to_set);
ENTITY Physical_connectivity_layout_topology_link;
subsequent_node : Physical_connectivity_layout_topology_node;
precedent_node : Physical_connectivity_layout_topology_node;
WHERE
WR1: acyclic_physical_connectivity_layout_topology_link(SELF, [subsequent_node],
'PHYSICAL_CONNECTIVITY_DEFINITION_ARM.PHYSICAL_CONNECTIVITY_LAYOUT_TOPOLOGY_LINK');
END_ENTITY;
ENTITY Physical_connectivity_layout_topology_node;
terminal_type : STRING;
END_ENTITY;
ENTITY Physical_connectivity_layout_topology_requirement
SUBTYPE OF (Predefined_requirement_view_definition);
elements : SET[1:?] OF Physical_connectivity_layout_topology_link;
DERIVE
nodes : SET[1:?] OF Physical_connectivity_layout_topology_node := pcd_get_pcltn(elements);
tree_structure : LOGICAL := (SIZEOF(nodes) = (SIZEOF(elements) + 1));
WHERE
WR1: (tree_structure = TRUE);
END_ENTITY;
FUNCTION acyclic_physical_connectivity_layout_topology_link
(relation : Physical_connectivity_layout_topology_link; relatives : SET[1:?] OF Physical_connectivity_layout_topology_node; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF Physical_connectivity_layout_topology_link := []; END_LOCAL; IF relation.precedent_node IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.precedent_node, 'PHYSICAL_CONNECTIVITY_DEFINITION_ARM.' + 'PHYSICAL_CONNECTIVITY_LAYOUT_TOPOLOGY_LINK.' + 'SUBSEQUENT_NODE')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_physical_connectivity_layout_topology_link(x[i], relatives + relation.precedent_node, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
FUNCTION pcd_get_pcltn
(input : SET[0:?] OF Physical_connectivity_layout_topology_link) : SET[0:?] OF Physical_connectivity_layout_topology_node;
LOCAL pcltn : SET OF Physical_connectivity_layout_topology_node := []; i : INTEGER := 0; END_LOCAL; REPEAT i := 1 TO SIZEOF(input) BY 1; pcltn := pcltn + input[i].precedent_node + input[i].subsequent_node; END_REPEAT; RETURN(pcltn);
END_FUNCTION;
END_SCHEMA; -- Physical_connectivity_layout_topology_requirement_arm
© ISO 2018 — All rights reserved