Application module: Physical connectivity layout topology requirement ISO/TS 10303-1826:2018-11(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM entity definitions
   4.3 ARM function definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definition
     5.2.2 MIM entity definitions

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
Bibliography
Index

(*
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