Application module: Physical node requirement to implementing component allocation ISO/TS 10303-1723: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 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
F Change history
Bibliography
Index

(*
ISO/TC 184/SC 4/WG 12 N9459 - ISO/TS 10303-1723 Physical node requirement to implementing component allocation - EXPRESS ARM
Supersedes ISO/TC 184/SC 4/WG 12 N8197
*)



SCHEMA Physical_node_requirement_to_implementing_component_allocation_arm;

USE FROM Assembly_module_with_packaged_connector_component_arm;    -- ISO/TS 10303-1645

USE FROM Assembly_technology_arm;    -- ISO/TS 10303-1649

USE FROM Physical_connectivity_definition_arm;    -- ISO/TS 10303-1755


ENTITY Assembly_to_part_connectivity_structure_allocation;
  name : STRING;
  assembly_element : Physical_connectivity_element;
  part_element : Part_connected_terminals_element;
  assembly_context : Physical_connectivity_definition;
UNIQUE
  UR1: name, assembly_context;
END_ENTITY;

ENTITY Physical_node_branch_requirement_to_implementing_component_allocation;
  name : STRING;
  physical_node_branch_requirement : Physical_connectivity_element;
  implementation_component : Assembly_component;
  part_element : Part_connected_terminals_element;
  implementation_interface_joint_set : OPTIONAL SET[1:?] OF Interface_mounted_join;
  implementation_joint_set : OPTIONAL SET[1:?] OF Assembly_joint;
UNIQUE
  UR1: name, implementation_component;
END_ENTITY;

ENTITY Physical_node_requirement_to_implementing_component_allocation;
  physical_node_requirement : Physical_connectivity_definition;
  implementation_component : Assembly_component;
  implementation_interface_joint_set : OPTIONAL SET[1:?] OF Interface_mounted_join;
  implementation_joint_set : OPTIONAL SET[1:?] OF Assembly_joint;
DERIVE
  implementation_connection_definition_1 : SET[0:1] OF Part_connected_terminals_definition := get_pctd(implementation_component, implementation_joint_set);
  implementation_connection_definition_2 : SET[0:1] OF Packaged_connector_terminal_relationship := get_pctr(implementation_component, implementation_interface_joint_set);
WHERE
  WR1: EXISTS(implementation_interface_joint_set) XOR EXISTS(implementation_joint_set);
  WR2: (SIZEOF(implementation_connection_definition_1) + SIZEOF(implementation_connection_definition_2) = 1) OR (('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.INTERFACE_COMPONENT' IN TYPEOF(implementation_component)) AND ('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.PHYSICAL_COMPONENT_INTERFACE_TERMINAL' IN TYPEOF(get_cit(implementation_component,implementation_joint_set)))) OR ('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.ROUTED_INTERCONNECT_COMPONENT' IN TYPEOF(implementation_component));
  WR3: SIZEOF(QUERY(pct <* physical_node_requirement.associated_terminals | pct\Component_feature.associated_definition = implementation_component)) = 0;
END_ENTITY;

FUNCTION get_cit
 (ac : Assembly_component; ajb : SET[0:?] OF Assembly_joint) : Physical_component_interface_terminal;
LOCAL
      cf  : LIST[1:2] OF component_feature := [ajb[1].assembly_feature_1,
                                               ajb[1].assembly_feature_2];
      cit : Physical_component_interface_terminal;
    END_LOCAL;

    REPEAT i := 1 TO 2 BY 1;
      IF ac :=: cf[i].associated_definition THEN
        IF ('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.INTERFACE_COMPONENT' IN TYPEOF(cf[i].associated_definition)) THEN
          RETURN(cf[i]);
        ELSE
          RETURN(?);
        END_IF;
      ELSE
        RETURN(?);
      END_IF;
    END_REPEAT;
    RETURN(?);
END_FUNCTION;

FUNCTION get_pctd
 (ac : Assembly_component; ajb : SET[0:?] OF Assembly_joint) : SET[0:?] OF Part_connected_terminals_definition;
LOCAL
      cf  : LIST[1:2] OF Component_feature := [ajb[1].assembly_feature_1,
                                               ajb[1].assembly_feature_2];
      pctd : SET OF Part_connected_terminals_definition := [];
    END_LOCAL;

    REPEAT i := 1 TO 2 BY 1;
      IF ac :=: cf[i].associated_definition THEN
        IF ('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.PART_TERMINAL' IN TYPEOF(cf[i]\Component_feature.definition)) THEN
          pctd := cf[i]\Component_feature.definition\Part_terminal.connection_requirement;
          RETURN(pctd);
        ELSE
          RETURN(pctd);
        END_IF;
      ELSE
        RETURN(pctd);
      END_IF;
    END_REPEAT;
    RETURN(?);
END_FUNCTION;

FUNCTION get_pctr
 (ac : Assembly_component; imjb : SET[0:?] OF Interface_mounted_join) : SET[0:?] OF Packaged_connector_terminal_relationship;
LOCAL
      cf   : Component_feature;
      pctr : SET OF packaged_connector_terminal_relationship := [];
    END_LOCAL;

    cf := imjb[1]\Interface_mounted_join.connection_to_interconnect_module_component;
    IF ac :=: cf\Component_feature.associated_definition THEN
      IF ('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.PACKAGED_PART_INTERFACE_TERMINAL' IN TYPEOF(cf\Component_feature.definition)) THEN
        pctr := cf\Component_feature.definition\Packaged_part_interface_terminal.external_connector_function;
        RETURN(pctr);
      ELSE
        RETURN(pctr);
      END_IF;
    ELSE
      RETURN(pctr);
    END_IF;
END_FUNCTION;

END_SCHEMA;  -- Physical_node_requirement_to_implementing_component_allocation_arm


© ISO 2018 — All rights reserved