Application module: Assembly component | ISO/TS 10303-1802:2018-11(E) © ISO |
This clause specifies the information requirements for the Assembly component application module. The information requirements are specified as the Application Reference Model (ARM) of this application module.
NOTE 1 A graphical representation of the information requirements is given in Annex C.
NOTE 2 The mapping specification is specified in 5.1. It shows how the information requirements are met by using common resources and constructs defined or imported in the MIM schema of this application module.
This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following begins the Assembly_component_arm schema and identifies the necessary external references.
EXPRESS specification:
*)
SCHEMA Assembly_component_arm;
(*
The following EXPRESS interface statements specify the elements imported from the ARMs of other application modules.
EXPRESS specification:
*)
USE FROM
Component_grouping_arm;
--
ISO/TS 10303-1656
USE FROM
Assembly_shape_arm;
--
ISO/TS 10303-1808
(*
NOTE 1 The schemas referenced above are specified in the following part of ISO 10303:
Component_grouping_arm ISO/TS 10303-1656 Assembly_shape_arm ISO/TS 10303-1808
NOTE 2 See Annex C, Figures C.1and C.2 for a graphical representation of this schema.
This subclause specifies the ARM entities for this module. Each ARM application entity is an atomic element that embodies a unique application concept and contains attributes specifying the data elements of the entity. The ARM entities and definitions are specified below.
An Assembly_component is a type of Definition_based_product_occurrence. An Assembly_component is the occurrence of a Part_view_definition or Template_definition in an assembly or in an interconnect. An Assembly_component may include additional product data over that defined in Part_view_definition or Template_definition. An Assembly_component that is no other type is intended to be an instance of a Part_view_definition and not of a Template_definition. Requirements and parameters may be assigned directly to an Assembly_component in which case the interpretation shall be that the assignment is valid for all design views related to the Assembly_component. Requirements and parameters may be assigned through a member of Assembly_component_relationship in which case the interpretation shall be that the assignment is valid for only that design view.
EXPRESS specification:
*)
ENTITY Assembly_component
SUBTYPE OF (Definition_based_product_occurrence);
DERIVE
assemblies : SET[0:?] OF Product_view_definition := ac_get_assemblies(SELF);
groups : SET[0:?] OF Assembly_group_component := ac_get_groups(SELF);
versions : SET[0:?] OF Product_version := ac_get_versions(assemblies);
product : SET[0:?] OF Product := ac_get_products(versions);
INVERSE
SELF\Product_occurrence.occurrence_contexts : SET[1:?] OF Assembly_component_relationship FOR related_view;
WHERE
WR1: NOT(('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.FOOTPRINT_OCCURRENCE' IN TYPEOF(SELF)) XOR ('FOOTPRINT_DEFINITION_ARM.FOOTPRINT_DEFINITION'
IN TYPEOF(derived_from))) OR
NOT(('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.PADSTACK_OCCURRENCE' IN TYPEOF(SELF)) XOR ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.PADSTACK_DEFINITION'
IN TYPEOF(SELF\Definition_based_product_occurrence.derived_from)));
WR2: SELF\Product_view_definition.defined_version :=: SELF\Definition_based_product_occurrence.derived_from.defined_version;
WR3: SIZEOF(assemblies) = SIZEOF(versions);
WR4: SIZEOF(product) = 1;
WR5: (('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRUCTURED_LAYOUT_COMPONENT_SUB_ASSEMBLY_RELATIONSHIP' IN TYPEOF(SELF\Assembly_component.occurrence_contexts[1]))
OR
(SIZEOF(groups) = 0) OR
(ac_get_group_assemblies(groups) = assemblies));
END_ENTITY;
(*
Attribute definitions:
assemblies: the set of assemblies the Assembly_component helps to directly compose. The value of this attribute need not be specified.
groups: the set of component groupings the Assembly_component helps to directly compose. The value of this attribute need not be specified.
versions: the set of versions of the product which the Assembly_component helps to define. The value of this attribute need not be specified.
product: the set of products, versions of which the Assembly_component helps to define. The value of this attribute need not be specified.
occurrence_contexts: an inverse relationship that specifies that the existence of the Assembly_component is dependent on the existence of the Assembly_component_relationship that specifies the Assembly_component as its related_view. There shall be one or more Assembly_component_relationship for an Assembly_component.
NOTE This cardinality supports multiple versions of the design, with the same member of Assembly_component.
Formal propositions:
WR1: Only a Footprint_occurrence shall reference a Footprint_definition and only a Padstack_occurrence shall reference a Padstack_definition.
WR2: The member referenced by the inherited attribute defined_version shall be the same member as that referenced by defined_version referenced by the Product_view_definition referenced by the inherited attribute derived_from.
WR3: Each member of versions shall be reference by one member of assemblies.
WR4: An Assembly_component shall help to compose definitions and versions for one product.
WR5: If an Assembly_component is not used by one or more Structured_layout_component_sub_assembly_relationship, and if an Assembly_component is used in one or more groups, then each group shall be used in an assembly that is in the set of assemblies which the Assembly_component is directly helping to compose.
NOTE Some types of Assembly_component may have both a direct relationship to an assembly and an indirect relationship to that assembly through a grouping mechanism.
A Component_make_from_relationship is a type of View_definition_relationship. A Component_make_from_relationship is the association between one Assembly_component and another Assembly_component, where one Assembly_component results from full or partial reuse of the other.
NOTE The main use of this concept is design reuse where the modification consists of the fact that the Assembly_component is in a different assembly from the original design, or where the original design is a reference design.
EXPRESS specification:
*)
ENTITY Component_make_from_relationship
SUBTYPE OF (View_definition_relationship);
SELF\View_definition_relationship.relating_view RENAMED reusable_component : Assembly_component;
SELF\View_definition_relationship.related_view RENAMED resultant_component : Assembly_component;
WHERE
WR1: resultant_component <> reusable_component;
END_ENTITY;
(*
Attribute definitions:
reusable_component: specifies the Assembly_component that is reused to create the resultant_component in the Component_make_from_relationship.
resultant_component: specifies the Assembly_component that results from the reuse of the reusable_component in the Component_make_from_relationship.
Formal propositions:
WR1: The reusable_component shall not be the resultant_component.
EXPRESS specification:
*)
ENTITY Physical_component
SUBTYPE OF (Assembly_component);
END_ENTITY;
(*
A Thermal_component is a type of Assembly_component that is included in the design in order to satisfy a heat flow requirement.
NOTE An Assembly_component utilized as a Thermal_component may be another type of Assembly_component as well.
EXAMPLE A heatsink, thermal grease, a thermal via, an active thermal cooler (such as a fan), or a thermoelectric cooler.
EXPRESS specification:
*)
ENTITY Thermal_component
SUBTYPE OF (Assembly_component);
END_ENTITY;
(*
This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.
EXPRESS specification:
*)
FUNCTION ac_get_assemblies (input : Assembly_component) : SET[0:?] OF Product_view_definition;
LOCAL acr : SET OF Assembly_component_relationship := input\Assembly_component.occurrence_contexts; pvd : SET OF Product_view_definition := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(acr) BY 1; IF NOT('COMPONENT_GROUPING_ARM.' + 'ASSEMBLY_GROUP_COMPONENT' IN TYPEOF(acr[i]\Product_occurrence_definition_relationship.relating_view)) THEN pvd := pvd + acr[i]\Product_occurrence_definition_relationship.relating_view; ELSE pvd := pvd + get_assemblies(acr[i]\Product_occurrence_definition_relationship.relating_view); END_IF; END_REPEAT; RETURN (pvd);
END_FUNCTION;
(*
Argument definitions:
input: the set of Assembly_components.
EXPRESS specification:
*)
FUNCTION ac_get_group_assemblies (input : SET[0:?] OF Assembly_group_component) : SET[0:?] OF Product_view_definition;
LOCAL acr : SET OF Assembly_component_relationship := []; pvd : SET OF Product_view_definition := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(input) BY 1; acr := input[i]\Assembly_component.occurrence_contexts; END_REPEAT; REPEAT i := 1 TO HIINDEX(acr) BY 1; IF NOT('COMPONENT_GROUPING_ARM.' + 'ASSEMBLY_GROUP_COMPONENT' IN TYPEOF(acr[i]\Product_occurrence_definition_relationship.relating_view)) THEN pvd := pvd + acr[i]\Product_occurrence_definition_relationship.relating_view; ELSE pvd := pvd + get_assemblies(acr[i]\Product_occurrence_definition_relationship.relating_view); END_IF; END_REPEAT; RETURN (pvd);
END_FUNCTION;
(*
Argument definitions:
input: the set of Assembly_group_components.
EXPRESS specification:
*)
FUNCTION ac_get_groups (input : Assembly_component) : SET[0:?] OF Assembly_group_component;
LOCAL acr : SET OF Assembly_component_relationship := input\Assembly_component.occurrence_contexts; agc : SET OF Assembly_group_component := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(acr) BY 1; IF ('COMPONENT_GROUPING_ARM.' + 'ASSEMBLY_GROUP_COMPONENT' IN TYPEOF(acr[i]\Product_occurrence_definition_relationship.relating_view)) THEN agc := agc + acr[i]\Product_occurrence_definition_relationship.relating_view; END_IF; END_REPEAT; RETURN (agc);
END_FUNCTION;
(*
Argument definitions:
input: the set of Assembly_components.
EXPRESS specification:
*)
FUNCTION ac_get_products (input : SET[0:?] OF Product_version) : SET[0:?] OF Product;
LOCAL p : SET OF Product := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(input) BY 1; p := p + input[i]\Product_version.of_product; END_REPEAT; RETURN (p);
END_FUNCTION;
(*
Argument definitions:
input: the set of Product_versions.
EXPRESS specification:
*)
FUNCTION ac_get_versions (input : SET[0:?] OF Product_view_definition) : SET[0:?] OF Product_version;
LOCAL pv : SET OF Product_version := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(input) BY 1; pv := pv + input[i]\Product_view_definition.defined_version; END_REPEAT; RETURN (pv);
END_FUNCTION;
(*
Argument definitions:
input: the set of Product_view_definitions.
EXPRESS specification:
*)
FUNCTION get_assemblies (input : Assembly_component) : SET[0:?] OF Product_view_definition;
LOCAL acr : SET OF Assembly_component_relationship := input\Assembly_component.occurrence_contexts; pvd : SET OF Product_view_definition := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(acr) BY 1; IF NOT('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.' + 'STRUCTURED_LAYOUT_COMPONENT' IN TYPEOF(acr[i]\Product_occurrence_definition_relationship.relating_view)) THEN pvd := pvd + acr[i]\Product_occurrence_definition_relationship.relating_view; ELSE pvd := pvd + get_assemblies(acr[i]\Product_occurrence_definition_relationship.relating_view); END_IF; END_REPEAT; RETURN (pvd);
END_FUNCTION;
(*
Argument definitions:
input: the specified Assembly_component.
*)
END_SCHEMA; -- Assembly_component_arm
(*
© ISO 2018 — All rights reserved