Application module: Thermal network definition | ISO/TS 10303-1752:2018-11(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N8227 - ISO/TS 10303-1752 Thermal network definition - EXPRESS ARM
Supersedes
ISO/TC 184/SC 4/WG 12 N7622
*)
SCHEMA Thermal_network_definition_arm;
USE FROM
Component_feature_arm;
-- ISO/TS 10303-1657
USE FROM
Network_functional_design_view_arm;
-- ISO/TS 10303-1704
USE FROM
Non_feature_shape_element_arm;
-- ISO/TS 10303-1706
REFERENCE FROM
Support_resource_arm -- ISO/TS 10303-1800
(bag_to_set);
TYPE tnd_location_select =
EXTENSIBLE
GENERIC_ENTITY
SELECT
(Cartesian_point,
Part_feature,
Non_feature_shape_element,
Component_feature);
END_TYPE;
ENTITY Thermal_functional_unit_network_node_definition
SUBTYPE OF (Functional_unit_network_node_definition);
SELF\Functional_unit_network_node_definition.associated_functional_unit_definition : Thermal_network_definition;
location :
OPTIONAL
tnd_location_select;
used_model :
OPTIONAL
shape_model;
WHERE
WR1: SIZEOF(USEDIN(SELF, 'NETWORK_FUNCTIONAL_DESIGN_VIEW_ARM.BUS_ELEMENT_LINK.PRECEDENT_ELEMENT' ))
+ SIZEOF(USEDIN(SELF, 'NETWORK_FUNCTIONAL_DESIGN_VIEW_ARM.BUS_ELEMENT_LINK.SUBSEQUENT_ELEMENT' )) = 0;
WR2: NOT('ELEMENTAL_GEOMETRIC_SHAPE_ARM.CARTESIAN_POINT' IN TYPEOF(location)) OR
(used_model IN using_representations(location));
WR3: NOT('ELEMENTAL_GEOMETRIC_SHAPE_ARM.CARTESIAN_POINT' IN TYPEOF(location)) OR
(SIZEOF(QUERY(sda <* USEDIN(used_model, 'PROPERTY_ASSIGNMENT_ARM.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
|
sda\Property_definition_representation.definition = SELF\Functional_unit_network_node_definition.associated_functional_unit_definition))
= 1);
WR4: NOT(('ELEMENTAL_GEOMETRIC_SHAPE_ARM.CARTESIAN_POINT' IN TYPEOF(location)) XOR
EXISTS(used_model));
END_ENTITY;
ENTITY Thermal_network_definition
SUBTYPE OF (Functional_unit_network_definition);
END_ENTITY;
FUNCTION using_items
(item : Representation_item; checked_items : SET[0:?] OF Representation_item) : SET[0:?] OF Representation_item;
LOCAL new_check_items : SET OF Representation_item; result_items : SET OF Representation_item; next_items : SET OF Representation_item; END_LOCAL; result_items := []; new_check_items := checked_items + item; -- Find the set of representation_items or founded_items -- in which item is used directly. next_items := QUERY(z <* bag_to_set( USEDIN(item , '')) | ('FOUNDATION_REPRESENTATION_ARM.REPRESENTATION_ITEM' IN TYPEOF(z))); -- If the set of next_items is not empty; IF SIZEOF(next_items) > 0 THEN -- For each element in the set, find the using_items recursively REPEAT i := 1 TO HIINDEX(next_items); -- Check for loop in data model, i.e. one of the next_items -- occurred earlier in the set of check_items; IF NOT(next_items[i] IN new_check_items) THEN result_items := result_items + next_items[i] + using_items(next_items[i],new_check_items); END_IF; END_REPEAT; END_IF; -- return the set of representation_items or founded_items -- in which the input item is used directly and indirectly. RETURN (result_items);
END_FUNCTION;
FUNCTION using_representations
(item : Representation_item) : SET[0:?] OF Representation;
LOCAL results : SET OF Representation; result_bag : BAG OF Representation; intermediate_items : SET OF Representation_item; END_LOCAL; -- Find the representations in which the item is used and add to the -- results set. results := []; result_bag := USEDIN(item,'FOUNDATION_REPRESENTATION_ARM.REPRESENTATION.ITEMS'); IF SIZEOF(result_bag) > 0 THEN REPEAT i := 1 TO HIINDEX(result_bag); results := results + result_bag[i]; END_REPEAT; END_IF; -- Find all representation_items or founded_items -- by which item is referenced directly or indirectly. intermediate_items := using_items(item,[]); -- If the set of intermediate items is not empty; IF SIZEOF(intermediate_items) > 0 THEN -- For each element in the set, add the -- representations of that element. REPEAT i := 1 TO HIINDEX(intermediate_items); result_bag := USEDIN(intermediate_items[i], 'FOUNDATION_REPRESENTATION_ARM.REPRESENTATION.ITEMS'); IF SIZEOF(result_bag) > 0 THEN REPEAT j := 1 TO HIINDEX(result_bag); results := results + result_bag[j]; END_REPEAT; END_IF; END_REPEAT; END_IF; -- Return the set of representation in which the input item is -- used directly and indirectly (through intervening -- representation_items or founded items). RETURN (results);
END_FUNCTION;
END_SCHEMA; -- Thermal_network_definition_arm
© ISO 2018 — All rights reserved