stepcode/data/ap227/ap227.exp
2009-03-12 15:53:52 +00:00

6520 lines
251 KiB
Text

(* Annex A
(normative)
AIM EXPRESS expanded listing
The following EXPRESS is the expanded form of the short form schema given in 5.2. In the event of
any discrepancy between the short form and this expanded listing, the expanded listing shall be
used.
*)
SCHEMA plant_spatial_configuration;
TYPE ahead_or_behind = ENUMERATION OF
(ahead,
behind);
END_TYPE; -- ahead_or_behind
TYPE amount_of_substance_measure = REAL;
END_TYPE; -- amount_of_substance_measure
TYPE angle_relator = ENUMERATION OF
(equal,
large,
small);
END_TYPE; -- angle_relator
TYPE approval_item = SELECT
(change_action,
versioned_action_request);
END_TYPE; -- approval_item
TYPE area_measure = REAL;
END_TYPE; -- area_measure
TYPE axis2_placement = SELECT
(axis2_placement_2d,
axis2_placement_3d);
END_TYPE; -- axis2_placement
TYPE b_spline_curve_form = ENUMERATION OF
(polyline_form,
circular_arc,
elliptic_arc,
parabolic_arc,
hyperbolic_arc,
unspecified);
END_TYPE; -- b_spline_curve_form
TYPE b_spline_surface_form = ENUMERATION OF
(plane_surf,
cylindrical_surf,
conical_surf,
spherical_surf,
toroidal_surf,
surf_of_revolution,
ruled_surf,
generalised_cone,
quadric_surf,
surf_of_linear_extrusion,
unspecified);
END_TYPE; -- b_spline_surface_form
TYPE boolean_operand = SELECT
(solid_model,
half_space_solid,
csg_primitive,
boolean_result);
END_TYPE; -- boolean_operand
TYPE boolean_operator = ENUMERATION OF
(union,
intersection,
difference);
END_TYPE; -- boolean_operator
TYPE change_delta_item = SELECT
(assembly_component_usage,
axis2_placement_2d,
axis2_placement_3d,
line_branch_connection,
line_plant_item_branch_connection,
line_plant_item_connection,
line_termination_connection,
plant,
product,
product_definition_relationship);
END_TYPE; -- change_delta_item
TYPE change_item = SELECT
(change_delta_item,
document,
ducting_system,
electrical_system,
externally_defined_plant_item_definition,
instrumentation_and_control_system,
piping_system,
plant_item_connection,
plant_item_connector,
plant_line_definition,
plant_line_segment_definition,
plant_line_segment_termination,
process_capability,
product_definition,
product_definition_shape,
property_definition,
reference_geometry,
site,
site_feature,
structural_system);
END_TYPE; -- change_item
TYPE characterized_definition = SELECT
(characterized_object,
characterized_product_definition,
shape_definition);
END_TYPE; -- characterized_definition
TYPE characterized_material_property = SELECT
(material_property_representation,
product_material_composition_relationship);
END_TYPE; -- characterized_material_property
TYPE characterized_product_definition = SELECT
(product_definition,
product_definition_relationship);
END_TYPE; -- characterized_product_definition
TYPE classification_item = SELECT
(ducting_system,
electrical_system,
instrumentation_and_control_system,
piping_component_definition,
piping_system,
plant_item_connection,
plant_item_connector,
plant_spatial_configuration_document_reference,
product,
product_definition,
structural_system);
END_TYPE; -- classification_item
TYPE context_dependent_measure = REAL;
END_TYPE; -- context_dependent_measure
TYPE count_measure = NUMBER;
END_TYPE; -- count_measure
TYPE csg_primitive = SELECT
(sphere,
block,
torus,
right_circular_cone,
right_circular_cylinder);
END_TYPE; -- csg_primitive
TYPE csg_select = SELECT
(boolean_result,
csg_primitive);
END_TYPE; -- csg_select
TYPE curve_on_surface = SELECT
(pcurve,
surface_curve,
composite_curve_on_surface);
END_TYPE; -- curve_on_surface
TYPE date_time_select = SELECT
(date,
local_time,
date_and_time);
END_TYPE; -- date_time_select
TYPE day_in_month_number = INTEGER;
END_TYPE; -- day_in_month_number
TYPE design_project_item = SELECT
(product_definition);
END_TYPE; -- design_project_item
TYPE dimension_count = INTEGER;
WHERE
wr1: SELF > 0;
END_TYPE; -- dimension_count
TYPE dimensional_characteristic = SELECT
(dimensional_location,
dimensional_size);
END_TYPE; -- dimensional_characteristic
TYPE geometric_set_select = SELECT
(point,
curve,
surface);
END_TYPE; -- geometric_set_select
TYPE hour_in_day = INTEGER;
WHERE
wr1: (0 <= SELF) AND (SELF < 24);
END_TYPE; -- hour_in_day
TYPE identifier = STRING;
END_TYPE; -- identifier
TYPE knot_type = ENUMERATION OF
(uniform_knots,
unspecified,
quasi_uniform_knots,
piecewise_bezier_knots);
END_TYPE; -- knot_type
TYPE label = STRING;
END_TYPE; -- label
TYPE layered_item = SELECT
(representation_item);
END_TYPE; -- layered_item
TYPE length_measure = REAL;
END_TYPE; -- length_measure
TYPE list_of_reversible_topology_item = LIST [0:?] OF
reversible_topology_item;
END_TYPE; -- list_of_reversible_topology_item
TYPE mass_measure = REAL;
END_TYPE; -- mass_measure
TYPE measure_value = SELECT
(length_measure,
mass_measure,
time_measure,
thermodynamic_temperature_measure,
amount_of_substance_measure,
plane_angle_measure,
solid_angle_measure,
area_measure,
volume_measure,
ratio_measure,
parameter_value,
numeric_measure,
context_dependent_measure,
positive_length_measure,
positive_plane_angle_measure,
positive_ratio_measure,
count_measure);
END_TYPE; -- measure_value
TYPE minute_in_hour = INTEGER;
WHERE
wr1: (0 <= SELF) AND (SELF <= 59);
END_TYPE; -- minute_in_hour
TYPE month_in_year_number = INTEGER;
WHERE
wr1: (1 <= SELF) AND (SELF <= 12);
END_TYPE; -- month_in_year_number
TYPE numeric_measure = NUMBER;
END_TYPE; -- numeric_measure
TYPE parameter_value = REAL;
END_TYPE; -- parameter_value
TYPE pcurve_or_surface = SELECT
(pcurve,
surface);
END_TYPE; -- pcurve_or_surface
TYPE person_organization_select = SELECT
(person,
organization,
person_and_organization);
END_TYPE; -- person_organization_select
TYPE plane_angle_measure = REAL;
END_TYPE; -- plane_angle_measure
TYPE plant_spatial_configuration_action_request_item = SELECT
(product);
END_TYPE; -- plant_spatial_configuration_action_request_item
TYPE plant_spatial_configuration_date_and_time_item = SELECT
(product);
END_TYPE; -- plant_spatial_configuration_date_and_time_item
TYPE plant_spatial_configuration_dated_item = SELECT
(action_directive,
change_action,
change_item,
product);
END_TYPE; -- plant_spatial_configuration_dated_item
TYPE plant_spatial_configuration_document_item = SELECT
(heat_tracing_representation,
piping_component_class,
piping_system,
plant_item_connector,
plant_line_segment_definition,
product,
product_definition,
product_definition_relationship,
property_definition,
representation,
representation_item,
site);
END_TYPE; -- plant_spatial_configuration_document_item
TYPE plant_spatial_configuration_organization_item = SELECT
(catalogue,
change_action,
design_project,
document,
plant,
product_definition_formation,
product_definition_relationship,
site);
END_TYPE; -- plant_spatial_configuration_organization_item
TYPE plant_spatial_configuration_person_and_organization_item = SELECT
(change_item,
plant,
site);
END_TYPE; -- plant_spatial_configuration_person_and_organization_item
TYPE plant_spatial_configuration_person_item = SELECT
(document,
plant,
product_definition_relationship,
site);
END_TYPE; -- plant_spatial_configuration_person_item
TYPE positive_length_measure = length_measure;
WHERE
wr1: SELF > 0;
END_TYPE; -- positive_length_measure
TYPE positive_plane_angle_measure = plane_angle_measure;
WHERE
wr1: SELF > 0;
END_TYPE; -- positive_plane_angle_measure
TYPE positive_ratio_measure = ratio_measure;
WHERE
wr1: SELF > 0;
END_TYPE; -- positive_ratio_measure
TYPE preferred_surface_curve_representation = ENUMERATION OF
(curve_3d,
pcurve_s1,
pcurve_s2);
END_TYPE; -- preferred_surface_curve_representation
TYPE purchase_item = SELECT
(product);
END_TYPE; -- purchase_item
TYPE ratio_measure = REAL;
END_TYPE; -- ratio_measure
TYPE reversible_topology = SELECT
(reversible_topology_item,
list_of_reversible_topology_item,
set_of_reversible_topology_item);
END_TYPE; -- reversible_topology
TYPE reversible_topology_item = SELECT
(edge,
path,
face,
face_bound,
closed_shell,
open_shell);
END_TYPE; -- reversible_topology_item
TYPE second_in_minute = REAL;
WHERE
wr1: (0 <= SELF) AND (SELF < 60);
END_TYPE; -- second_in_minute
TYPE set_of_reversible_topology_item = SET [0:?] OF
reversible_topology_item;
END_TYPE; -- set_of_reversible_topology_item
TYPE shape_definition = SELECT
(product_definition_shape,
shape_aspect,
shape_aspect_relationship);
END_TYPE; -- shape_definition
TYPE shell = SELECT
(open_shell,
closed_shell);
END_TYPE; -- shell
TYPE si_prefix = ENUMERATION OF
(exa,
peta,
tera,
giga,
mega,
kilo,
hecto,
deca,
deci,
centi,
milli,
micro,
nano,
pico,
femto,
atto);
END_TYPE; -- si_prefix
TYPE si_unit_name = ENUMERATION OF
(metre,
gram,
second,
ampere,
kelvin,
mole,
candela,
radian,
steradian,
hertz,
newton,
pascal,
joule,
watt,
coulomb,
volt,
farad,
ohm,
siemens,
weber,
tesla,
henry,
degree_celsius,
lumen,
lux,
becquerel,
gray,
sievert);
END_TYPE; -- si_unit_name
TYPE solid_angle_measure = REAL;
END_TYPE; -- solid_angle_measure
TYPE source = ENUMERATION OF
(made,
bought,
not_known);
END_TYPE; -- source
TYPE source_item = SELECT
(identifier);
END_TYPE; -- source_item
TYPE text = STRING;
END_TYPE; -- text
TYPE thermodynamic_temperature_measure = REAL;
END_TYPE; -- thermodynamic_temperature_measure
TYPE time_measure = REAL;
END_TYPE; -- time_measure
TYPE transition_code = ENUMERATION OF
(discontinuous,
continuous,
cont_same_gradient,
cont_same_gradient_same_curvature);
END_TYPE; -- transition_code
TYPE trimming_preference = ENUMERATION OF
(cartesian,
parameter,
unspecified);
END_TYPE; -- trimming_preference
TYPE trimming_select = SELECT
(cartesian_point,
parameter_value);
END_TYPE; -- trimming_select
TYPE unit = SELECT
(named_unit,
derived_unit);
END_TYPE; -- unit
TYPE value_qualifier = SELECT
(type_qualifier);
END_TYPE; -- value_qualifier
TYPE vector_or_direction = SELECT
(vector,
direction);
END_TYPE; -- vector_or_direction
TYPE volume_measure = REAL;
END_TYPE; -- volume_measure
TYPE year_number = INTEGER;
END_TYPE; -- year_number
ENTITY action;
name : label;
description : text;
chosen_method : action_method;
END_ENTITY; -- action
ENTITY action_assignment
ABSTRACT SUPERTYPE;
assigned_action : action;
END_ENTITY; -- action_assignment
ENTITY action_directive;
name : label;
description : text;
analysis : text;
comment : text;
requests : SET [1:?] OF versioned_action_request;
END_ENTITY; -- action_directive
ENTITY action_method;
name : label;
description : text;
consequence : text;
purpose : text;
END_ENTITY; -- action_method
ENTITY action_method_relationship;
name : label;
description : text;
relating_method : action_method;
related_method : action_method;
END_ENTITY; -- action_method_relationship
ENTITY action_relationship;
name : label;
description : text;
relating_action : action;
related_action : action;
END_ENTITY; -- action_relationship
ENTITY action_request_assignment
ABSTRACT SUPERTYPE;
assigned_action_request : versioned_action_request;
END_ENTITY; -- action_request_assignment
ENTITY action_request_solution;
method : action_method;
request : versioned_action_request;
END_ENTITY; -- action_request_solution
ENTITY action_request_status;
status : label;
assigned_request : versioned_action_request;
END_ENTITY; -- action_request_status
ENTITY action_status;
status : label;
assigned_action : executed_action;
END_ENTITY; -- action_status
ENTITY advanced_csg_shape_representation
SUBTYPE OF (shape_representation);
WHERE
wr1: SIZEOF(QUERY ( item <* SELF.items | (NOT (SIZEOF([
'PLANT_SPATIAL_CONFIGURATION.CSG_SOLID',
'PLANT_SPATIAL_CONFIGURATION.EXTRUDED_AREA_SOLID',
'PLANT_SPATIAL_CONFIGURATION.REVOLVED_AREA_SOLID',
'PLANT_SPATIAL_CONFIGURATION.AXIS2_PLACEMENT_3D',
'PLANT_SPATIAL_CONFIGURATION.MAPPED_ITEM'] * TYPEOF(item)) =
1)) )) = 0;
wr2: SIZEOF(QUERY ( item <* SELF.items | (SIZEOF([
'PLANT_SPATIAL_CONFIGURATION.CSG_SOLID',
'PLANT_SPATIAL_CONFIGURATION.EXTRUDED_AREA_SOLID',
'PLANT_SPATIAL_CONFIGURATION.REVOLVED_AREA_SOLID',
'PLANT_SPATIAL_CONFIGURATION.MAPPED_ITEM'] * TYPEOF(item)) =
1) )) >= 1;
wr3: SIZEOF(QUERY ( item <* SELF.items | ((
'PLANT_SPATIAL_CONFIGURATION.CSG_SOLID' IN TYPEOF(item)) AND
(NOT valid_advanced_csg_tree(item\csg_solid.
tree_root_expression))) )) = 0;
wr4: SIZEOF(QUERY ( mi <* QUERY ( item <* SELF.items | (
'PLANT_SPATIAL_CONFIGURATION.MAPPED_ITEM' IN TYPEOF(item)) )
| (NOT ('PLANT_SPATIAL_CONFIGURATION.' +
'ADVANCED_CSG_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation))) )) = 0;
END_ENTITY; -- advanced_csg_shape_representation
ENTITY amount_of_substance_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.AMOUNT_OF_SUBSTANCE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- amount_of_substance_measure_with_unit
ENTITY amount_of_substance_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 1) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- amount_of_substance_unit
ENTITY angular_location
SUBTYPE OF (dimensional_location);
angle_selection : angle_relator;
END_ENTITY; -- angular_location
ENTITY application_context;
application : text;
INVERSE
context_elements : SET [1:?] OF application_context_element FOR
frame_of_reference;
END_ENTITY; -- application_context
ENTITY application_context_element
SUPERTYPE OF (ONEOF (product_context,product_definition_context));
name : label;
frame_of_reference : application_context;
END_ENTITY; -- application_context_element
ENTITY application_protocol_definition;
status : label;
application_interpreted_model_schema_name : label;
application_protocol_year : year_number;
application : application_context;
END_ENTITY; -- application_protocol_definition
ENTITY approval;
status : approval_status;
level : label;
END_ENTITY; -- approval
ENTITY approval_assignment
ABSTRACT SUPERTYPE;
assigned_approval : approval;
END_ENTITY; -- approval_assignment
ENTITY approval_date_time;
date_time : date_time_select;
dated_approval : approval;
END_ENTITY; -- approval_date_time
ENTITY approval_person_organization;
person_organization : person_organization_select;
authorized_approval : approval;
role : approval_role;
END_ENTITY; -- approval_person_organization
ENTITY approval_role;
role : label;
END_ENTITY; -- approval_role
ENTITY approval_status;
name : label;
END_ENTITY; -- approval_status
ENTITY area_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.AREA_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- area_measure_with_unit
ENTITY area_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 2) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- area_unit
ENTITY assembly_component_usage
SUBTYPE OF (product_definition_usage);
reference_designator : OPTIONAL identifier;
END_ENTITY; -- assembly_component_usage
ENTITY axis1_placement
SUBTYPE OF (placement);
axis : OPTIONAL direction;
DERIVE
z : direction := NVL(normalise(axis),direction([0,0,1]));
WHERE
wr1: SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- axis1_placement
ENTITY axis2_placement_2d
SUBTYPE OF (placement);
ref_direction : OPTIONAL direction;
DERIVE
p : LIST [2:2] OF direction := build_2axes(ref_direction);
WHERE
wr1: SELF\geometric_representation_item.dim = 2;
END_ENTITY; -- axis2_placement_2d
ENTITY axis2_placement_3d
SUBTYPE OF (placement);
axis : OPTIONAL direction;
ref_direction : OPTIONAL direction;
DERIVE
p : LIST [3:3] OF direction := build_axes(axis,ref_direction);
WHERE
wr1: SELF\placement.location.dim = 3;
wr2: (NOT EXISTS(axis)) OR (axis.dim = 3);
wr3: (NOT EXISTS(ref_direction)) OR (ref_direction.dim = 3);
wr4: (NOT EXISTS(axis)) OR (NOT EXISTS(ref_direction)) OR (
cross_product(axis,ref_direction).magnitude > 0);
END_ENTITY; -- axis2_placement_3d
ENTITY b_spline_curve
SUPERTYPE OF (ONEOF (uniform_curve,b_spline_curve_with_knots,
quasi_uniform_curve,bezier_curve) ANDOR rational_b_spline_curve)
SUBTYPE OF (bounded_curve);
degree : INTEGER;
control_points_list : LIST [2:?] OF cartesian_point;
curve_form : b_spline_curve_form;
closed_curve : LOGICAL;
self_intersect : LOGICAL;
DERIVE
upper_index_on_control_points : INTEGER := SIZEOF(
control_points_list) - 1;
control_points : ARRAY [0:
upper_index_on_control_points] OF
cartesian_point := list_to_array(
control_points_list,0,
upper_index_on_control_points);
WHERE
wr1: ('PLANT_SPATIAL_CONFIGURATION.UNIFORM_CURVE' IN TYPEOF(SELF))
OR ('PLANT_SPATIAL_CONFIGURATION.QUASI_UNIFORM_CURVE' IN
TYPEOF(SELF)) OR ('PLANT_SPATIAL_CONFIGURATION.BEZIER_CURVE'
IN TYPEOF(SELF)) OR (
'PLANT_SPATIAL_CONFIGURATION.B_SPLINE_CURVE_WITH_KNOTS' IN
TYPEOF(SELF));
END_ENTITY; -- b_spline_curve
ENTITY b_spline_curve_with_knots
SUBTYPE OF (b_spline_curve);
knot_multiplicities : LIST [2:?] OF INTEGER;
knots : LIST [2:?] OF parameter_value;
knot_spec : knot_type;
DERIVE
upper_index_on_knots : INTEGER := SIZEOF(knots);
WHERE
wr1: constraints_param_b_spline(degree,upper_index_on_knots,
upper_index_on_control_points,knot_multiplicities,knots);
wr2: SIZEOF(knot_multiplicities) = upper_index_on_knots;
END_ENTITY; -- b_spline_curve_with_knots
ENTITY b_spline_surface
SUPERTYPE OF (ONEOF (b_spline_surface_with_knots,uniform_surface,
quasi_uniform_surface,bezier_surface) ANDOR
rational_b_spline_surface)
SUBTYPE OF (bounded_surface);
u_degree : INTEGER;
v_degree : INTEGER;
control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point;
surface_form : b_spline_surface_form;
u_closed : LOGICAL;
v_closed : LOGICAL;
self_intersect : LOGICAL;
DERIVE
u_upper : INTEGER := SIZEOF(control_points_list) - 1;
v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1;
control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF
cartesian_point := make_array_of_array(
control_points_list,0,u_upper,0,v_upper);
WHERE
wr1: ('PLANT_SPATIAL_CONFIGURATION.UNIFORM_SURFACE' IN TYPEOF(SELF))
OR ('PLANT_SPATIAL_CONFIGURATION.QUASI_UNIFORM_SURFACE' IN
TYPEOF(SELF)) OR (
'PLANT_SPATIAL_CONFIGURATION.BEZIER_SURFACE' IN TYPEOF(SELF))
OR (
'PLANT_SPATIAL_CONFIGURATION.B_SPLINE_SURFACE_WITH_KNOTS' IN
TYPEOF(SELF));
END_ENTITY; -- b_spline_surface
ENTITY b_spline_surface_with_knots
SUBTYPE OF (b_spline_surface);
u_multiplicities : LIST [2:?] OF INTEGER;
v_multiplicities : LIST [2:?] OF INTEGER;
u_knots : LIST [2:?] OF parameter_value;
v_knots : LIST [2:?] OF parameter_value;
knot_spec : knot_type;
DERIVE
knot_u_upper : INTEGER := SIZEOF(u_knots);
knot_v_upper : INTEGER := SIZEOF(v_knots);
WHERE
wr1: constraints_param_b_spline(SELF\b_spline_surface.u_degree,
knot_u_upper,SELF\b_spline_surface.u_upper,u_multiplicities,
u_knots);
wr2: constraints_param_b_spline(SELF\b_spline_surface.v_degree,
knot_v_upper,SELF\b_spline_surface.v_upper,v_multiplicities,
v_knots);
wr3: SIZEOF(u_multiplicities) = knot_u_upper;
wr4: SIZEOF(v_multiplicities) = knot_v_upper;
END_ENTITY; -- b_spline_surface_with_knots
ENTITY bezier_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- bezier_curve
ENTITY bezier_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- bezier_surface
ENTITY blank_fitting_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'blank') )) = 1)) )) = 0)) )) = 0;
END_ENTITY; -- blank_fitting_classification
ENTITY block
SUBTYPE OF (geometric_representation_item);
position : axis2_placement_3d;
x : positive_length_measure;
y : positive_length_measure;
z : positive_length_measure;
END_ENTITY; -- block
ENTITY boolean_result
SUBTYPE OF (geometric_representation_item);
operator : boolean_operator;
first_operand : boolean_operand;
second_operand : boolean_operand;
END_ENTITY; -- boolean_result
ENTITY boundary_curve
SUBTYPE OF (composite_curve_on_surface);
WHERE
wr1: SELF\composite_curve.closed_curve;
END_ENTITY; -- boundary_curve
ENTITY bounded_curve
SUPERTYPE OF (ONEOF (polyline,b_spline_curve,trimmed_curve,
bounded_pcurve,bounded_surface_curve,composite_curve))
SUBTYPE OF (curve);
END_ENTITY; -- bounded_curve
ENTITY bounded_pcurve
SUBTYPE OF (pcurve, bounded_curve);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.BOUNDED_CURVE' IN TYPEOF(SELF\
pcurve.reference_to_curve.items[1]);
END_ENTITY; -- bounded_pcurve
ENTITY bounded_surface
SUPERTYPE OF (ONEOF (b_spline_surface,rectangular_trimmed_surface,
curve_bounded_surface,rectangular_composite_surface))
SUBTYPE OF (surface);
END_ENTITY; -- bounded_surface
ENTITY bounded_surface_curve
SUBTYPE OF (surface_curve, bounded_curve);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.BOUNDED_CURVE' IN TYPEOF(SELF\
surface_curve.curve_3d);
END_ENTITY; -- bounded_surface_curve
ENTITY brep_with_voids
SUBTYPE OF (manifold_solid_brep);
voids : SET [1:?] OF oriented_closed_shell;
END_ENTITY; -- brep_with_voids
ENTITY calendar_date
SUBTYPE OF (date);
day_component : day_in_month_number;
month_component : month_in_year_number;
WHERE
wr1: valid_calendar_date(SELF);
END_ENTITY; -- calendar_date
ENTITY cartesian_point
SUBTYPE OF (point);
coordinates : LIST [1:3] OF length_measure;
END_ENTITY; -- cartesian_point
ENTITY cartesian_transformation_operator
SUPERTYPE OF (cartesian_transformation_operator_3d)
SUBTYPE OF (geometric_representation_item,
functionally_defined_transformation);
axis1 : OPTIONAL direction;
axis2 : OPTIONAL direction;
local_origin : cartesian_point;
scale : OPTIONAL REAL;
DERIVE
scl : REAL := NVL(scale,1);
WHERE
wr1: scl > 0;
END_ENTITY; -- cartesian_transformation_operator
ENTITY cartesian_transformation_operator_3d
SUBTYPE OF (cartesian_transformation_operator);
axis3 : OPTIONAL direction;
DERIVE
u : LIST [3:3] OF direction := base_axis(3,SELF\
cartesian_transformation_operator.axis1,SELF\
cartesian_transformation_operator.axis2,axis3);
WHERE
wr1: SELF\cartesian_transformation_operator.dim = 3;
END_ENTITY; -- cartesian_transformation_operator_3d
ENTITY catalogue
SUBTYPE OF (document, external_source);
END_ENTITY; -- catalogue
ENTITY catalogue_connector
SUBTYPE OF (shape_aspect, externally_defined_item);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.CHARACTERIZED_OBJECT' IN TYPEOF(
SELF.of_shape);
wr2: 'PLANT_SPATIAL_CONFIGURATION.CATALOGUE' IN TYPEOF(SELF.source);
END_ENTITY; -- catalogue_connector
ENTITY catalogue_item
SUBTYPE OF (externally_defined_plant_item_definition);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.CATALOGUE' IN TYPEOF(SELF.source);
wr2: SELF.frame_of_reference.name = 'catalogue definition';
END_ENTITY; -- catalogue_item
ENTITY centre_of_symmetry
SUBTYPE OF (derived_shape_aspect);
WHERE
wr1: SIZEOF(QUERY ( sadr <* deriving_relationships | (NOT (
'PLANT_SPATIAL_CONFIGURATION.SYMMETRIC_SHAPE_ASPECT' IN
TYPEOF(sadr.related_shape_aspect))) )) = 0;
END_ENTITY; -- centre_of_symmetry
ENTITY change_action
SUBTYPE OF (directed_action);
WHERE
wr1: SIZEOF(QUERY ( ca <* USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.'
+ 'ACTION_ASSIGNMENT.ASSIGNED_ACTION') | ((
'PLANT_SPATIAL_CONFIGURATION.' +
'PLANT_SPATIAL_CONFIGURATION_CHANGE_ASSIGNMENT') IN TYPEOF(
ca)) )) >= 1;
wr2: SIZEOF(QUERY ( ar <* SELF\directed_action.directive.requests |
(NOT (SIZEOF(USEDIN(ar,'PLANT_SPATIAL_CONFIGURATION.' +
'ACTION_REQUEST_SOLUTION.SOLUTION')) = 1)) )) = 0;
wr3: SIZEOF(USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.ACTION_STATUS.'
+ 'ASSIGNED_ACTION')) = 1;
END_ENTITY; -- change_action
ENTITY change_from_assignment
SUBTYPE OF (action_assignment);
items : SET [1:?] OF change_delta_item;
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.CHANGE_ACTION' IN TYPEOF(SELF.
assigned_action);
END_ENTITY; -- change_from_assignment
ENTITY change_item_id_assignment
SUBTYPE OF (name_assignment);
items : SET [1:?] OF change_item;
END_ENTITY; -- change_item_id_assignment
ENTITY change_to_assignment
SUBTYPE OF (action_assignment);
items : SET [1:?] OF change_delta_item;
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.CHANGE_ACTION' IN TYPEOF(SELF.
assigned_action);
END_ENTITY; -- change_to_assignment
ENTITY characterized_object;
name : label;
description : text;
END_ENTITY; -- characterized_object
ENTITY circle
SUBTYPE OF (conic);
radius : positive_length_measure;
END_ENTITY; -- circle
ENTITY classification_assignment
SUBTYPE OF (group_assignment);
items : SET [1:?] OF classification_item;
WHERE
wr1: (NOT (SIZEOF(QUERY ( item <* SELF.items | (NOT (
'PLANT_SPATIAL_CONFIGURATION.PLANT_ITEM_CONNECTION' IN
TYPEOF(item))) )) = 0)) OR (SIZEOF(TYPEOF(SELF.
assigned_group) * ['PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTION_FUNCTIONAL_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTION_MOTION_CLASSIFICATION'])
>= 1);
wr2: (NOT (SIZEOF(QUERY ( item <* SELF.items | (NOT (
'PLANT_SPATIAL_CONFIGURATION.PLANT_ITEM_CONNECTOR' IN
TYPEOF(item))) )) = 0)) OR (SIZEOF(TYPEOF(SELF.
assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'ELECTRICAL_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'EXTERNALLY_DEFINED_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'STRUCTURAL_LOAD_CONNECTOR_CLASSIFICATION']) >= 1);
wr3: (NOT (SIZEOF(QUERY ( item <* SELF.items | (NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(item))) )) = 0)) OR (SIZEOF(TYPEOF(SELF.
assigned_group) * [
'PLANT_SPATIAL_CONFIGURATION.BLANK_FITTING_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.ELBOW_FITTING_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.FLANGE_FITTING_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'FLANGE_FITTING_NECK_TYPE_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'PIPE_CLOSURE_FITTING_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.PIPE_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'REDUCER_FITTING_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.SPACER_FITTING_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.SPECIALTY_ITEM_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.SWAGE_FITTING_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.VALVE_CLASSIFICATION']) >= 1);
END_ENTITY; -- classification_assignment
ENTITY closed_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- closed_shell
ENTITY colour;
END_ENTITY; -- colour
ENTITY colour_rgb
SUBTYPE OF (colour_specification);
red : REAL;
green : REAL;
blue : REAL;
WHERE
wr1: (0 <= red) AND (red <= 1);
wr2: (0 <= green) AND (green <= 1);
wr3: (0 <= blue) AND (blue <= 1);
END_ENTITY; -- colour_rgb
ENTITY colour_specification
SUBTYPE OF (colour);
name : label;
END_ENTITY; -- colour_specification
ENTITY composite_curve
SUBTYPE OF (bounded_curve);
segments : LIST [1:?] OF composite_curve_segment;
self_intersect : LOGICAL;
DERIVE
n_segments : INTEGER := SIZEOF(segments);
closed_curve : LOGICAL := segments[n_segments].transition <>
discontinuous;
WHERE
wr1: ((NOT closed_curve) AND (SIZEOF(QUERY ( temp <* segments | (
temp.transition = discontinuous) )) = 1)) OR (closed_curve
AND (SIZEOF(QUERY ( temp <* segments | (temp.transition =
discontinuous) )) = 0));
END_ENTITY; -- composite_curve
ENTITY composite_curve_on_surface
SUPERTYPE OF (boundary_curve)
SUBTYPE OF (composite_curve);
DERIVE
basis_surface : SET [0:2] OF surface := get_basis_surface(SELF);
WHERE
wr1: SIZEOF(basis_surface) > 0;
wr2: constraints_composite_curve_on_surface(SELF);
END_ENTITY; -- composite_curve_on_surface
ENTITY composite_curve_segment;
transition : transition_code;
same_sense : BOOLEAN;
parent_curve : curve;
INVERSE
using_curves : BAG [1:?] OF composite_curve FOR segments;
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.BOUNDED_CURVE' IN TYPEOF(
parent_curve);
END_ENTITY; -- composite_curve_segment
ENTITY conic
SUPERTYPE OF (ONEOF (circle,ellipse,hyperbola,parabola))
SUBTYPE OF (curve);
position : axis2_placement;
END_ENTITY; -- conic
ENTITY conical_surface
SUBTYPE OF (elementary_surface);
radius : length_measure;
semi_angle : plane_angle_measure;
WHERE
wr1: radius >= 0;
END_ENTITY; -- conical_surface
ENTITY connected_face_set
SUPERTYPE OF (ONEOF (closed_shell,open_shell))
SUBTYPE OF (topological_representation_item);
cfs_faces : SET [1:?] OF face;
END_ENTITY; -- connected_face_set
ENTITY connection_functional_classification
SUBTYPE OF (group);
END_ENTITY; -- connection_functional_classification
ENTITY connection_motion_classification
SUBTYPE OF (group);
WHERE
wr1: SELF.name IN ['flexible','locked orientation'];
END_ENTITY; -- connection_motion_classification
ENTITY connection_node
SUBTYPE OF (shape_aspect);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PIPING_SYSTEM' IN TYPEOF(SELF.
of_shape.definition);
wr2: SIZEOF(QUERY ( sar <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT') | (
'PLANT_SPATIAL_CONFIGURATION.LINE_TERMINATION_CONNECTION' IN
TYPEOF(sar)) )) >= 3;
END_ENTITY; -- connection_node
ENTITY connector_end_type_classification
SUBTYPE OF (group);
END_ENTITY; -- connector_end_type_classification
ENTITY context_dependent_unit
SUBTYPE OF (named_unit);
name : label;
END_ENTITY; -- context_dependent_unit
ENTITY conversion_based_unit
SUBTYPE OF (named_unit);
name : label;
conversion_factor : measure_with_unit;
END_ENTITY; -- conversion_based_unit
ENTITY coordinated_universal_time_offset;
hour_offset : hour_in_day;
minute_offset : OPTIONAL minute_in_hour;
sense : ahead_or_behind;
END_ENTITY; -- coordinated_universal_time_offset
ENTITY csg_solid
SUBTYPE OF (solid_model);
tree_root_expression : csg_select;
END_ENTITY; -- csg_solid
ENTITY curve
SUPERTYPE OF (ONEOF (line,conic,pcurve,surface_curve,offset_curve_2d,
offset_curve_3d,curve_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- curve
ENTITY curve_bounded_surface
SUBTYPE OF (bounded_surface);
basis_surface : surface;
boundaries : SET [1:?] OF boundary_curve;
implicit_outer : BOOLEAN;
WHERE
wr1: NOT (implicit_outer AND (
'PLANT_SPATIAL_CONFIGURATION.OUTER_BOUNDARY_CURVE' IN
TYPEOF(boundaries)));
wr2: (NOT implicit_outer) OR (
'PLANT_SPATIAL_CONFIGURATION.BOUNDED_SURFACE' IN TYPEOF(
basis_surface));
wr3: SIZEOF(QUERY ( temp <* boundaries | (
'PLANT_SPATIAL_CONFIGURATION.OUTER_BOUNDARY_CURVE' IN
TYPEOF(temp)) )) <= 1;
wr4: SIZEOF(QUERY ( temp <* boundaries | (temp\
composite_curve_on_surface.basis_surface[1] :<>: SELF.
basis_surface) )) = 0;
END_ENTITY; -- curve_bounded_surface
ENTITY curve_replica
SUBTYPE OF (curve);
parent_curve : curve;
transformation : cartesian_transformation_operator;
WHERE
wr1: transformation.dim = parent_curve.dim;
wr2: acyclic_curve_replica(SELF,parent_curve);
END_ENTITY; -- curve_replica
ENTITY cylindrical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
END_ENTITY; -- cylindrical_surface
ENTITY data_environment;
name : label;
description : text;
elements : SET [1:?] OF property_definition_representation;
END_ENTITY; -- data_environment
ENTITY date
SUPERTYPE OF (calendar_date);
year_component : year_number;
END_ENTITY; -- date
ENTITY date_and_time;
date_component : date;
time_component : local_time;
END_ENTITY; -- date_and_time
ENTITY date_and_time_assignment
ABSTRACT SUPERTYPE;
assigned_date_and_time : date_and_time;
role : date_time_role;
END_ENTITY; -- date_and_time_assignment
ENTITY date_assignment
ABSTRACT SUPERTYPE;
assigned_date : date;
role : date_role;
END_ENTITY; -- date_assignment
ENTITY date_role;
name : label;
END_ENTITY; -- date_role
ENTITY date_time_role;
name : label;
END_ENTITY; -- date_time_role
ENTITY definitional_representation
SUBTYPE OF (representation);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PARAMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(SELF\representation.context_of_items);
END_ENTITY; -- definitional_representation
ENTITY degenerate_pcurve
SUBTYPE OF (point);
basis_surface : surface;
reference_to_curve : definitional_representation;
WHERE
wr1: SIZEOF(reference_to_curve\representation.items) = 1;
wr2: 'PLANT_SPATIAL_CONFIGURATION.CURVE' IN TYPEOF(
reference_to_curve\representation.items[1]);
wr3: reference_to_curve\representation.items[1]\
geometric_representation_item.dim = 2;
END_ENTITY; -- degenerate_pcurve
ENTITY degenerate_toroidal_surface
SUBTYPE OF (toroidal_surface);
select_outer : BOOLEAN;
WHERE
wr1: major_radius < minor_radius;
END_ENTITY; -- degenerate_toroidal_surface
ENTITY derived_shape_aspect
SUPERTYPE OF (centre_of_symmetry)
SUBTYPE OF (shape_aspect);
INVERSE
deriving_relationships : SET [1:?] OF
shape_aspect_deriving_relationship FOR
relating_shape_aspect;
END_ENTITY; -- derived_shape_aspect
ENTITY derived_unit;
elements : SET [1:?] OF derived_unit_element;
WHERE
wr1: (SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (elements
[1].exponent <> 1));
END_ENTITY; -- derived_unit
ENTITY derived_unit_element;
unit : named_unit;
exponent : REAL;
END_ENTITY; -- derived_unit_element
ENTITY descriptive_colour
SUBTYPE OF (colour, descriptive_representation_item);
END_ENTITY; -- descriptive_colour
ENTITY descriptive_representation_item
SUBTYPE OF (representation_item);
description : text;
END_ENTITY; -- descriptive_representation_item
ENTITY design_project
SUBTYPE OF (organization);
WHERE
wr1: SIZEOF(USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.' +
'ORGANIZATION_ASSIGNMENT.ASSIGNED_ORGANIZATION')) >= 1;
END_ENTITY; -- design_project
ENTITY design_project_assignment
SUBTYPE OF (organization_assignment);
items : SET [1:?] OF design_project_item;
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.DESIGN_PROJECT' IN TYPEOF(SELF.
assigned_organization);
END_ENTITY; -- design_project_assignment
ENTITY dimensional_characteristic_representation;
dimension : dimensional_characteristic;
representation : shape_dimension_representation;
END_ENTITY; -- dimensional_characteristic_representation
ENTITY dimensional_exponents;
length_exponent : REAL;
mass_exponent : REAL;
time_exponent : REAL;
electric_current_exponent : REAL;
thermodynamic_temperature_exponent : REAL;
amount_of_substance_exponent : REAL;
luminous_intensity_exponent : REAL;
END_ENTITY; -- dimensional_exponents
ENTITY dimensional_location
SUPERTYPE OF (angular_location)
SUBTYPE OF (shape_aspect_relationship);
END_ENTITY; -- dimensional_location
ENTITY dimensional_size;
applies_to : shape_aspect;
name : label;
WHERE
wr1: applies_to.product_definitional = TRUE;
END_ENTITY; -- dimensional_size
ENTITY directed_action
SUBTYPE OF (executed_action);
directive : action_directive;
END_ENTITY; -- directed_action
ENTITY direction
SUBTYPE OF (geometric_representation_item);
direction_ratios : LIST [2:3] OF REAL;
WHERE
wr1: SIZEOF(QUERY ( tmp <* direction_ratios | (tmp <> 0) )) > 0;
END_ENTITY; -- direction
ENTITY document;
id : identifier;
name : label;
description : text;
kind : document_type;
UNIQUE
ur1 : id;
END_ENTITY; -- document
ENTITY document_reference
ABSTRACT SUPERTYPE;
assigned_document : document;
source : label;
END_ENTITY; -- document_reference
ENTITY document_relationship;
name : label;
description : text;
relating_document : document;
related_document : document;
END_ENTITY; -- document_relationship
ENTITY document_type;
product_data_type : label;
END_ENTITY; -- document_type
ENTITY document_usage_constraint;
source : document;
subject_element : label;
subject_element_value : text;
END_ENTITY; -- document_usage_constraint
ENTITY ducting_system
SUBTYPE OF (product_definition);
WHERE
wr1: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (('PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(pdr.
relating_product_definition.formation.of_product)) AND (pdr.
relating_product_definition.frame_of_reference.name =
'functional occurrence')) )) = 1;
END_ENTITY; -- ducting_system
ENTITY edge
SUPERTYPE OF (ONEOF (edge_curve,oriented_edge))
SUBTYPE OF (topological_representation_item);
edge_start : vertex;
edge_end : vertex;
END_ENTITY; -- edge
ENTITY edge_curve
SUBTYPE OF (edge, geometric_representation_item);
edge_geometry : curve;
same_sense : BOOLEAN;
END_ENTITY; -- edge_curve
ENTITY edge_loop
SUBTYPE OF (loop, path);
DERIVE
ne : INTEGER := SIZEOF(SELF\path.edge_list);
WHERE
wr1: SELF\path.edge_list[1].edge_start :=: SELF\path.edge_list[ne].
edge_end;
END_ENTITY; -- edge_loop
ENTITY elbow_fitting_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'elbow') )) = 1)) )) = 0)) )) = 0;
END_ENTITY; -- elbow_fitting_classification
ENTITY electric_current_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.ELECTRIC_CURRENT_UNIT' IN TYPEOF(
SELF\measure_with_unit.unit_component);
END_ENTITY; -- electric_current_measure_with_unit
ENTITY electric_current_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 1) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- electric_current_unit
ENTITY electrical_connector_classification
SUBTYPE OF (group);
END_ENTITY; -- electrical_connector_classification
ENTITY electrical_system
SUBTYPE OF (product_definition);
WHERE
wr1: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (('PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(pdr.
relating_product_definition.formation.of_product)) AND (pdr.
relating_product_definition.frame_of_reference.name =
'functional occurrence')) )) = 1;
END_ENTITY; -- electrical_system
ENTITY elementary_surface
SUPERTYPE OF (ONEOF (plane,cylindrical_surface,conical_surface,
spherical_surface,toroidal_surface))
SUBTYPE OF (surface);
position : axis2_placement_3d;
END_ENTITY; -- elementary_surface
ENTITY ellipse
SUBTYPE OF (conic);
semi_axis_1 : positive_length_measure;
semi_axis_2 : positive_length_measure;
END_ENTITY; -- ellipse
ENTITY evaluated_degenerate_pcurve
SUBTYPE OF (degenerate_pcurve);
equivalent_point : cartesian_point;
END_ENTITY; -- evaluated_degenerate_pcurve
ENTITY executed_action
SUBTYPE OF (action);
END_ENTITY; -- executed_action
ENTITY external_source;
source_id : source_item;
END_ENTITY; -- external_source
ENTITY externally_defined_classification
SUBTYPE OF (group, externally_defined_item);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.ELECTRICAL_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.DUCTING_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'INSTRUMENTATION_AND_CONTROL_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.PIPING_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.PLANT',
'PLANT_SPATIAL_CONFIGURATION.PLANT_ITEM_CONNECTOR',
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION',
'PLANT_SPATIAL_CONFIGURATION.STRUCTURAL_SYSTEM']) = 1) OR ((
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION' IN TYPEOF(
it)) AND (SIZEOF(QUERY ( pc <* it.formation.of_product.
frame_of_reference |
(pc.discipline_type = 'process plant') ))
= 1)))) )) = 0)) )) = 0;
END_ENTITY; -- externally_defined_classification
ENTITY externally_defined_item;
item_id : source_item;
source : external_source;
END_ENTITY; -- externally_defined_item
ENTITY externally_defined_plant_item_definition
SUBTYPE OF (product_definition, externally_defined_item);
END_ENTITY; -- externally_defined_plant_item_definition
ENTITY extruded_area_solid
SUBTYPE OF (swept_area_solid);
extruded_direction : direction;
depth : positive_length_measure;
WHERE
wr1: dot_product(SELF\swept_area_solid.swept_area.basis_surface\
elementary_surface.position.p[3],extruded_direction) <> 0;
END_ENTITY; -- extruded_area_solid
ENTITY extruded_face_solid
SUBTYPE OF (swept_face_solid);
extruded_direction : direction;
depth : positive_length_measure;
WHERE
wr1: dot_product(SELF\swept_face_solid.swept_face.face_geometry\
elementary_surface.position.p[3],extruded_direction) <> 0;
END_ENTITY; -- extruded_face_solid
ENTITY face
SUPERTYPE OF (ONEOF (face_surface,oriented_face))
SUBTYPE OF (topological_representation_item);
bounds : SET [1:?] OF face_bound;
WHERE
wr1: NOT mixed_loop_type_set(list_to_set(list_face_loops(SELF)));
wr2: SIZEOF(QUERY ( temp <* bounds | (
'PLANT_SPATIAL_CONFIGURATION.FACE_OUTER_BOUND' IN TYPEOF(
temp)) )) <= 1;
END_ENTITY; -- face
ENTITY face_bound
SUBTYPE OF (topological_representation_item);
bound : loop;
orientation : BOOLEAN;
END_ENTITY; -- face_bound
ENTITY face_surface
SUBTYPE OF (face, geometric_representation_item);
face_geometry : surface;
same_sense : BOOLEAN;
END_ENTITY; -- face_surface
ENTITY faceted_brep
SUBTYPE OF (manifold_solid_brep);
END_ENTITY; -- faceted_brep
ENTITY flange_fitting_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'flange') )) = 1)) )) = 0)) )) = 0;
END_ENTITY; -- flange_fitting_classification
ENTITY flange_fitting_neck_type_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'flange') )) = 1)) )) = 0)) )) = 0;
END_ENTITY; -- flange_fitting_neck_type_classification
ENTITY functionally_defined_transformation;
name : label;
description : text;
END_ENTITY; -- functionally_defined_transformation
ENTITY geometric_curve_set
SUBTYPE OF (geometric_set);
WHERE
wr1: SIZEOF(QUERY ( temp <* SELF\geometric_set.elements | (
'PLANT_SPATIAL_CONFIGURATION.SURFACE' IN TYPEOF(temp)) )) =
0;
END_ENTITY; -- geometric_curve_set
ENTITY geometric_representation_context
SUBTYPE OF (representation_context);
coordinate_space_dimension : dimension_count;
END_ENTITY; -- geometric_representation_context
ENTITY geometric_representation_item
SUPERTYPE OF (ONEOF (point,direction,vector,placement,
cartesian_transformation_operator,curve,surface,edge_curve,
face_surface,poly_loop,solid_model,boolean_result,sphere,
right_circular_cone,right_circular_cylinder,torus,block,
half_space_solid,shell_based_wireframe_model,geometric_set))
SUBTYPE OF (representation_item);
DERIVE
dim : dimension_count := dimension_of(SELF);
WHERE
wr1: SIZEOF(QUERY ( using_rep <* using_representations(SELF) | (NOT
('PLANT_SPATIAL_CONFIGURATION.' +
'GEOMETRIC_REPRESENTATION_CONTEXT'
IN TYPEOF(using_rep.context_of_items))) )) = 0;
END_ENTITY; -- geometric_representation_item
ENTITY geometric_set
SUPERTYPE OF (ONEOF (geometric_curve_set,geometric_set_replica))
SUBTYPE OF (geometric_representation_item);
elements : SET [1:?] OF geometric_set_select;
END_ENTITY; -- geometric_set
ENTITY geometric_set_replica
SUBTYPE OF (geometric_set);
parent_set : geometric_set;
transformation : cartesian_transformation_operator;
DERIVE
SELF\geometric_set.elements : SET [1:?] OF geometric_set_select :=
build_transformed_set(transformation,
parent_set);
WHERE
wr1: acyclic_set_replica(SELF,parent_set);
END_ENTITY; -- geometric_set_replica
ENTITY global_unit_assigned_context
SUBTYPE OF (representation_context);
units : SET [1:?] OF unit;
END_ENTITY; -- global_unit_assigned_context
ENTITY group;
name : label;
description : text;
END_ENTITY; -- group
ENTITY group_assignment
ABSTRACT SUPERTYPE;
assigned_group : group;
END_ENTITY; -- group_assignment
ENTITY group_relationship;
name : label;
description : text;
relating_group : group;
related_group : group;
END_ENTITY; -- group_relationship
ENTITY half_space_solid
SUBTYPE OF (geometric_representation_item);
base_surface : surface;
agreement_flag : BOOLEAN;
END_ENTITY; -- half_space_solid
ENTITY heat_tracing_representation
SUBTYPE OF (representation);
END_ENTITY; -- heat_tracing_representation
ENTITY hybrid_shape_representation
SUBTYPE OF (shape_representation);
WHERE
wr1: SIZEOF(QUERY ( i <* SELF\representation.items | (NOT (SIZEOF([
'PLANT_SPATIAL_CONFIGURATION.BOOLEAN_RESULT',
'PLANT_SPATIAL_CONFIGURATION.CSG_SOLID',
'PLANT_SPATIAL_CONFIGURATION.TRUNCATED_PYRAMID',
'PLANT_SPATIAL_CONFIGURATION.BLOCK',
'PLANT_SPATIAL_CONFIGURATION.TORUS',
'PLANT_SPATIAL_CONFIGURATION.RIGHT_CIRCULAR_CYLINDER',
'PLANT_SPATIAL_CONFIGURATION.SPHERE',
'PLANT_SPATIAL_CONFIGURATION.RIGHT_CIRCULAR_CONE',
'PLANT_SPATIAL_CONFIGURATION.EXTRUDED_AREA_SOLID',
'PLANT_SPATIAL_CONFIGURATION.REVOLVED_AREA_SOLID',
'PLANT_SPATIAL_CONFIGURATION.AXIS2_PLACEMENT_3D',
'PLANT_SPATIAL_CONFIGURATION.MANIFOLD_SOLID_BREP',
'PLANT_SPATIAL_CONFIGURATION.SHELL_BASED_WIREFRAME_MODEL',
'PLANT_SPATIAL_CONFIGURATION.CONIC',
'PLANT_SPATIAL_CONFIGURATION.CURVE',
'PLANT_SPATIAL_CONFIGURATION.B_SPLINE_CURVE',
'PLANT_SPATIAL_CONFIGURATION.LINE',
'PLANT_SPATIAL_CONFIGURATION.POINT',
'PLANT_SPATIAL_CONFIGURATION.POLYLINE',
'PLANT_SPATIAL_CONFIGURATION.SURFACE',
'PLANT_SPATIAL_CONFIGURATION.VECTOR',
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.MAPPED_ITEM'] *
TYPEOF(i)) = 1)) )) = 0;
wr2: SIZEOF(QUERY ( mi <* QUERY ( item <* SELF\representation.items
| ('PLANT_SPATIAL_CONFIGURATION.MAPPED_ITEM' IN
TYPEOF(item)))
| (NOT (SIZEOF(['PLANT_SPATIAL_CONFIGURATION.' +
'ADVANCED_CSG_SHAPE_REPRESENTATION',
'PLANT_SPATIAL_CONFIGURATION.HYBRID_SHAPE_REPRESENTATION'] *
TYPEOF(mi\mapped_item.mapping_source.
mapped_representation))
= 1)) )) = 0;
END_ENTITY; -- hybrid_shape_representation
ENTITY hyperbola
SUBTYPE OF (conic);
semi_axis : positive_length_measure;
semi_imag_axis : positive_length_measure;
END_ENTITY; -- hyperbola
ENTITY inline_equipment
SUBTYPE OF (piping_component_definition);
END_ENTITY; -- inline_equipment
ENTITY instrumentation_and_control_system
SUBTYPE OF (product_definition);
WHERE
wr1: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (('PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(pdr.
relating_product_definition.formation.of_product)) AND (pdr.
relating_product_definition.frame_of_reference.name =
'functional occurrence')) )) = 1;
END_ENTITY; -- instrumentation_and_control_system
ENTITY interfering_shape_element
SUBTYPE OF (shape_aspect, shape_aspect_relationship);
END_ENTITY; -- interfering_shape_element
ENTITY intersection_curve
SUBTYPE OF (surface_curve);
WHERE
wr1: SIZEOF(SELF\surface_curve.associated_geometry) = 2;
wr2: associated_surface(SELF\surface_curve.associated_geometry[1])
<> associated_surface(SELF\surface_curve.associated_geometry
[2]);
END_ENTITY; -- intersection_curve
ENTITY known_source
SUBTYPE OF (external_source, pre_defined_item);
WHERE
wr1: SELF\pre_defined_item.name IN ['ISO 13584 Dictionary',
'ISO 13584 Parts Library'];
END_ENTITY; -- known_source
ENTITY length_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.LENGTH_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- length_measure_with_unit
ENTITY length_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 1) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- length_unit
ENTITY line
SUBTYPE OF (curve);
pnt : cartesian_point;
dir : vector;
WHERE
wr1: dir.dim = pnt.dim;
END_ENTITY; -- line
ENTITY line_branch_connection
SUBTYPE OF (shape_aspect_relationship);
WHERE
wr1: SELF.description = 'branch location';
wr2: 'PLANT_SPATIAL_CONFIGURATION.PLANT_LINE_SEGMENT_DEFINITION' IN
TYPEOF(SELF.relating_shape_aspect.of_shape.definition);
wr3: 'PLANT_SPATIAL_CONFIGURATION.PLANT_LINE_SEGMENT_TERMINATION' IN
TYPEOF(SELF.related_shape_aspect);
END_ENTITY; -- line_branch_connection
ENTITY line_less_piping_system
SUBTYPE OF (product_definition);
END_ENTITY; -- line_less_piping_system
ENTITY line_plant_item_branch_connection
SUBTYPE OF (shape_aspect_relationship);
END_ENTITY; -- line_plant_item_branch_connection
ENTITY line_plant_item_connection
SUBTYPE OF (shape_aspect_relationship);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PLANT_LINE_SEGMENT_TERMINATION' IN
TYPEOF(SELF.relating_shape_aspect);
wr2: 'PLANT_SPATIAL_CONFIGURATION.PLANT_ITEM_CONNECTOR' IN TYPEOF(
SELF.related_shape_aspect);
wr3: SELF\shape_aspect_relationship.related_shape_aspect.
of_shape\property_definition.
definition\product_definition.
frame_of_reference\application_context_element.
name = 'physical occurrence';
END_ENTITY; -- line_plant_item_connection
ENTITY line_termination_connection
SUBTYPE OF (shape_aspect_relationship);
WHERE
wr1: SIZEOF(TYPEOF(SELF.relating_shape_aspect) * [
'PLANT_SPATIAL_CONFIGURATION.CONNECTION_NODE',
'PLANT_SPATIAL_CONFIGURATION.' +
'PLANT_LINE_SEGMENT_TERMINATION'])
>= 1;
wr2: 'PLANT_SPATIAL_CONFIGURATION.PLANT_LINE_SEGMENT_TERMINATION' IN
TYPEOF(SELF.related_shape_aspect);
END_ENTITY; -- line_termination_connection
ENTITY local_time;
hour_component : hour_in_day;
minute_component : OPTIONAL minute_in_hour;
second_component : OPTIONAL second_in_minute;
zone : coordinated_universal_time_offset;
WHERE
wr1: valid_time(SELF);
END_ENTITY; -- local_time
ENTITY loop
SUPERTYPE OF (ONEOF (edge_loop,poly_loop))
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- loop
ENTITY make_from_usage_option
SUBTYPE OF (product_definition_usage);
ranking : INTEGER;
ranking_rationale : text;
quantity : measure_with_unit;
WHERE
wr1: ranking > 0;
END_ENTITY; -- make_from_usage_option
ENTITY manifold_solid_brep
SUBTYPE OF (solid_model);
outer : closed_shell;
END_ENTITY; -- manifold_solid_brep
ENTITY mapped_item
SUBTYPE OF (representation_item);
mapping_source : representation_map;
mapping_target : representation_item;
WHERE
wr1: acyclic_mapped_representation(using_representations(SELF),
[SELF]);
END_ENTITY; -- mapped_item
ENTITY mass_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.MASS_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- mass_measure_with_unit
ENTITY mass_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 1) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- mass_unit
ENTITY material_designation;
name : label;
definitions : SET [1:?] OF characterized_definition;
END_ENTITY; -- material_designation
ENTITY material_designation_characterization;
name : label;
description : text;
designation : material_designation;
property : characterized_material_property;
END_ENTITY; -- material_designation_characterization
ENTITY material_property
SUBTYPE OF (property_definition);
UNIQUE
ur1 : name, definition;
WHERE
wr1: ('PLANT_SPATIAL_CONFIGURATION.CHARACTERIZED_OBJECT' IN (TYPEOF(
SELF\property_definition.definition) OR SIZEOF(bag_to_set(
USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) -
QUERY ( temp <* bag_to_set(USEDIN(SELF,
'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) | ((
'MATERIAL_PROPERTY_REPRESENTATION_SCHEMA.' +
'MATERIAL_PROPERTY_REPRESENTATION') IN TYPEOF(temp)) )))) =
0;
END_ENTITY; -- material_property
ENTITY material_property_representation
SUBTYPE OF (property_definition_representation);
dependent_environment : data_environment;
END_ENTITY; -- material_property_representation
ENTITY measure_representation_item
SUBTYPE OF (representation_item, measure_with_unit);
END_ENTITY; -- measure_representation_item
ENTITY measure_with_unit
SUPERTYPE OF (ONEOF (length_measure_with_unit,mass_measure_with_unit,
time_measure_with_unit,electric_current_measure_with_unit,
thermodynamic_temperature_measure_with_unit,
amount_of_substance_measure_with_unit,
plane_angle_measure_with_unit,
solid_angle_measure_with_unit,area_measure_with_unit,
volume_measure_with_unit,ratio_measure_with_unit));
value_component : measure_value;
unit_component : unit;
WHERE
wr1: valid_units(SELF);
END_ENTITY; -- measure_with_unit
ENTITY name_assignment
ABSTRACT SUPERTYPE;
assigned_name : label;
END_ENTITY; -- name_assignment
ENTITY named_unit
SUPERTYPE OF (ONEOF (si_unit,conversion_based_unit,
context_dependent_unit) ANDOR ONEOF (length_unit,mass_unit,
time_unit,electric_current_unit,thermodynamic_temperature_unit,
amount_of_substance_unit,plane_angle_unit,solid_angle_unit,
area_unit,volume_unit,ratio_unit));
dimensions : dimensional_exponents;
END_ENTITY; -- named_unit
ENTITY offset_curve_2d
SUBTYPE OF (curve);
basis_curve : curve;
distance : length_measure;
self_intersect : LOGICAL;
WHERE
wr1: basis_curve.dim = 2;
END_ENTITY; -- offset_curve_2d
ENTITY offset_curve_3d
SUBTYPE OF (curve);
basis_curve : curve;
distance : length_measure;
self_intersect : LOGICAL;
ref_direction : direction;
WHERE
wr1: (basis_curve.dim = 3) AND (ref_direction.dim = 3);
END_ENTITY; -- offset_curve_3d
ENTITY offset_surface
SUBTYPE OF (surface);
basis_surface : surface;
distance : length_measure;
self_intersect : LOGICAL;
END_ENTITY; -- offset_surface
ENTITY open_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- open_shell
ENTITY organization;
id : OPTIONAL identifier;
name : label;
description : text;
END_ENTITY; -- organization
ENTITY organization_assignment
ABSTRACT SUPERTYPE;
assigned_organization : organization;
role : organization_role;
END_ENTITY; -- organization_assignment
ENTITY organization_role;
name : label;
END_ENTITY; -- organization_role
ENTITY organizational_project;
name : label;
description : text;
responsible_organizations : SET [1:?] OF organization;
END_ENTITY; -- organizational_project
ENTITY oriented_closed_shell
SUBTYPE OF (closed_shell);
closed_shell_element : closed_shell;
orientation : BOOLEAN;
DERIVE
SELF\connected_face_set.cfs_faces : SET [1:?] OF face :=
conditional_reverse(SELF.
orientation,SELF.
closed_shell_element.cfs_faces);
WHERE
wr1: NOT ('PLANT_SPATIAL_CONFIGURATION.ORIENTED_CLOSED_SHELL' IN
TYPEOF(SELF.closed_shell_element));
END_ENTITY; -- oriented_closed_shell
ENTITY oriented_edge
SUBTYPE OF (edge);
edge_element : edge;
orientation : BOOLEAN;
DERIVE
SELF\edge.edge_start : vertex := boolean_choose(SELF.orientation,
SELF.edge_element.edge_start,SELF.
edge_element.edge_end);
SELF\edge.edge_end : vertex := boolean_choose(SELF.orientation,
SELF.edge_element.edge_end,SELF.
edge_element.edge_start);
WHERE
wr1: NOT ('PLANT_SPATIAL_CONFIGURATION.ORIENTED_EDGE' IN TYPEOF(SELF
.edge_element));
END_ENTITY; -- oriented_edge
ENTITY oriented_face
SUBTYPE OF (face);
face_element : face;
orientation : BOOLEAN;
DERIVE
SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(
SELF.orientation,SELF.face_element.bounds);
WHERE
wr1: NOT ('PLANT_SPATIAL_CONFIGURATION.ORIENTED_FACE' IN TYPEOF(SELF
.face_element));
END_ENTITY; -- oriented_face
ENTITY oriented_open_shell
SUBTYPE OF (open_shell);
open_shell_element : open_shell;
orientation : BOOLEAN;
DERIVE
SELF\connected_face_set.cfs_faces : SET [1:?] OF face :=
conditional_reverse(SELF.
orientation,SELF.
open_shell_element.cfs_faces);
WHERE
wr1: NOT ('PLANT_SPATIAL_CONFIGURATION.ORIENTED_OPEN_SHELL' IN
TYPEOF(SELF.open_shell_element));
END_ENTITY; -- oriented_open_shell
ENTITY oriented_path
SUBTYPE OF (path);
path_element : path;
orientation : BOOLEAN;
DERIVE
SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_edge :=
conditional_reverse(SELF.orientation,SELF.
path_element.edge_list);
WHERE
wr1: NOT ('PLANT_SPATIAL_CONFIGURATION.ORIENTED_PATH' IN TYPEOF(SELF
.path_element));
END_ENTITY; -- oriented_path
ENTITY parabola
SUBTYPE OF (conic);
focal_dist : length_measure;
WHERE
wr1: focal_dist <> 0;
END_ENTITY; -- parabola
ENTITY path
SUPERTYPE OF (ONEOF (edge_loop,oriented_path))
SUBTYPE OF (topological_representation_item);
edge_list : LIST [1:?] OF UNIQUE oriented_edge;
WHERE
wr1: path_head_to_tail(SELF);
END_ENTITY; -- path
ENTITY pcurve
SUBTYPE OF (curve);
basis_surface : surface;
reference_to_curve : definitional_representation;
WHERE
wr1: SIZEOF(reference_to_curve\representation.items) = 1;
wr2: 'PLANT_SPATIAL_CONFIGURATION.CURVE' IN TYPEOF(
reference_to_curve\representation.items[1]);
wr3: reference_to_curve\representation.items[1]\
geometric_representation_item.dim = 2;
END_ENTITY; -- pcurve
ENTITY person;
id : identifier;
last_name : OPTIONAL label;
first_name : OPTIONAL label;
middle_names : OPTIONAL LIST [1:?] OF label;
prefix_titles : OPTIONAL LIST [1:?] OF label;
suffix_titles : OPTIONAL LIST [1:?] OF label;
UNIQUE
ur1 : id;
WHERE
wr1: EXISTS(last_name) OR EXISTS(first_name);
END_ENTITY; -- person
ENTITY person_and_organization;
the_person : person;
the_organization : organization;
END_ENTITY; -- person_and_organization
ENTITY person_and_organization_assignment
ABSTRACT SUPERTYPE;
assigned_person_and_organization : person_and_organization;
role : person_and_organization_role;
END_ENTITY; -- person_and_organization_assignment
ENTITY person_and_organization_role;
name : label;
END_ENTITY; -- person_and_organization_role
ENTITY person_assignment
ABSTRACT SUPERTYPE;
assigned_person : person;
role : person_role;
END_ENTITY; -- person_assignment
ENTITY person_role;
name : label;
END_ENTITY; -- person_role
ENTITY pipe_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'pipe') )) = 1)) )) = 0)) )) = 0;
END_ENTITY; -- pipe_classification
ENTITY pipe_closure_fitting_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'pipe closure') )) = 1)) )) = 0)) )) =
0;
END_ENTITY; -- pipe_closure_fitting_classification
ENTITY piping_component_class
SUBTYPE OF (product_category, characterized_object);
END_ENTITY; -- piping_component_class
ENTITY piping_component_definition
SUBTYPE OF (product_definition);
END_ENTITY; -- piping_component_definition
ENTITY piping_connector_classification
SUBTYPE OF (group);
END_ENTITY; -- piping_connector_classification
ENTITY piping_design_csg_shape_representation
SUBTYPE OF (shape_representation);
WHERE
wr1: SIZEOF(QUERY ( i <* SELF\representation.items | (NOT (SIZEOF([
'PLANT_SPATIAL_CONFIGURATION.BOOLEAN_RESULT',
'PLANT_SPATIAL_CONFIGURATION.CSG_SOLID',
'PLANT_SPATIAL_CONFIGURATION.AXIS2_PLACEMENT_3D',
'PLANT_SPATIAL_CONFIGURATION.MAPPED_ITEM'] * TYPEOF(i))
= 1)) )) = 0;
wr2: SIZEOF(QUERY ( mi <* QUERY ( item <* SELF\representation.items
| ('PLANT_SPATIAL_CONFIGURATION.MAPPED_ITEM' IN
TYPEOF(item)))
| (NOT (('PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_DESIGN_CSG_SHAPE_REPRESENTATION') IN TYPEOF(mi\
mapped_item.mapping_source.mapped_representation))) )) = 0;
END_ENTITY; -- piping_design_csg_shape_representation
ENTITY piping_system
SUBTYPE OF (product_definition);
WHERE
wr1: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (('PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(pdr.
relating_product_definition.formation.of_product)) AND (pdr.
relating_product_definition.frame_of_reference.name =
'functional occurrence')) )) = 1;
END_ENTITY; -- piping_system
ENTITY placement
SUPERTYPE OF (ONEOF (axis1_placement,axis2_placement_2d,
axis2_placement_3d))
SUBTYPE OF (geometric_representation_item);
location : cartesian_point;
END_ENTITY; -- placement
ENTITY plane
SUBTYPE OF (elementary_surface);
END_ENTITY; -- plane
ENTITY plane_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- plane_angle_measure_with_unit
ENTITY plane_angle_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- plane_angle_unit
ENTITY plant
SUBTYPE OF (product);
WHERE
wr1: (SIZEOF(QUERY ( pscoa <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PLANT_SPATIAL_CONFIGURATION_ORGANIZATION_ASSIGNMENT.ITEMS')
| (pscoa.role.name = 'plant operator') )) + SIZEOF(
QUERY ( pscpaoa <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PLANT_SPATIAL_CONFIGURATION_PERSON_AND_ORGANIZATION_ASSIGNMENT.'
+ 'ITEMS')
| (pscpaoa.role.name = 'plant operator') ))) <= 1;
wr2: (SIZEOF(QUERY ( pscoa <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PLANT_SPATIAL_CONFIGURATION_ORGANIZATION_ASSIGNMENT.ITEMS')
| (pscoa.role.name = 'plant owner') )) + SIZEOF(
QUERY ( pscpaoa <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' + 'PLANT_SPATIAL_CONFIGURATION_PERSON_AND_ORGANIZATION_ASSIGNMENT.'
+ 'ITEMS') | (pscpaoa.role.name = 'plant owner') )) +
SIZEOF(QUERY ( pscpa <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PLANT_SPATIAL_CONFIGURATION_PERSON_ASSIGNMENT.ITEMS') | (
pscpa.role.name = 'plant owner') ))) >= 1;
wr3: (SIZEOF(QUERY ( pscoa <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PLANT_SPATIAL_CONFIGURATION_ORGANIZATION_ASSIGNMENT.ITEMS')
| (pscoa\organization_assignment.role.name =
'plant project owner') )) + SIZEOF(QUERY ( pscpaoa <*
USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.' + 'PLANT_SPATIAL_CONFIGURATION_PERSON_AND_ORGANIZATION_ASSIGNMENT.'
+ 'ITEMS') | (pscpaoa\person_and_organization_assignment.
role.name = 'plant project owner') ))) >= 1;
wr4: SIZEOF(QUERY ( pdf <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | (NOT (SIZEOF(
QUERY ( pd <* USEDIN(pdf,
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION.FORMATION')
| (pd.frame_of_reference.name = 'functional occurrence')
)) <= 1)) )) = 0;
wr5: SIZEOF(QUERY ( pdf <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | (NOT (SIZEOF(
QUERY ( prod_def <* USEDIN(pdf,
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION.FORMATION')
| (SIZEOF(QUERY ( pd <* USEDIN(prod_def,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION') | (SIZEOF(QUERY ( pdr <* USEDIN(pd,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (SIZEOF(
QUERY ( it <* pdr.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.AXIS2_PLACEMENT_2D',
'PLANT_SPATIAL_CONFIGURATION.AXIS2_PLACEMENT_3D']) = 1) AND
(it.name = 'plant placement reference')) )) >= 1) )) >=
1) )) >= 1) )) = 1)) )) = 0;
END_ENTITY; -- plant
ENTITY plant_item_connection
SUBTYPE OF (shape_aspect, shape_aspect_relationship);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PLANT_ITEM_CONNECTOR' IN TYPEOF(
SELF\shape_aspect_relationship.relating_shape_aspect);
wr2: 'PLANT_SPATIAL_CONFIGURATION.PLANT_ITEM_CONNECTOR' IN TYPEOF(
SELF\shape_aspect_relationship.related_shape_aspect);
wr3: SELF\shape_aspect.of_shape\property_definition.
definition\product_definition.
frame_of_reference\application_context_element.name IN [
'functional occurrence','physical occurrence',
'functional_definition','physical definition'];
wr4: SELF\shape_aspect_relationship.relating_shape_aspect.
of_shape\property_definition.
definition\product_definition.
frame_of_reference\application_context_element.
name = SELF\shape_aspect_relationship.related_shape_aspect.
of_shape\property_definition.
definition\product_definition.
frame_of_reference\application_context_element.name;
wr5: SIZEOF(USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.' +
'CLASSIFICATION_ASSIGNMENT.ITEMS')) > 0;
wr6: SIZEOF(QUERY ( pscca <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (NOT (SIZEOF(['PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTION_FUNCTIONAL_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTION_MOTION_CLASSIFICATION']
* TYPEOF(pscca.assigned_group)) >= 1)) )) = 0;
wr7: SIZEOF(QUERY ( pdr <* USEDIN(SELF.of_shape.definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.'
+ 'RELATED_PRODUCT_DEFINITION') | (pdr.name =
'support usage connection') )) <= 1;
END_ENTITY; -- plant_item_connection
ENTITY plant_item_connector
SUBTYPE OF (shape_aspect);
WHERE
wr1 : SELF\shape_aspect.of_shape\property_definition.
definition\product_definition.
frame_of_reference\application_context_element.name IN [
'functional definition','physical definition',
'functional occurrence','physical occurrence'];
wr2 : SIZEOF(QUERY ( pic <* (bag_to_set(USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')) +
bag_to_set(USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.' +
'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'))) | (
'PLANT_SPATIAL_CONFIGURATION.PLANT_ITEM_CONNECTION' IN
TYPEOF(pic)) )) <= 1;
wr3 : (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( pdr <* USEDIN(sc,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics')))
= 1)) )) = 0);
wr4 : (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS') | (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( dsc <* QUERY ( pdr <* USEDIN(sc,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics') )
| (SIZEOF(dsc.used_representation.items) >= 2) )) = 1))
)) = 0);
wr5 : (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( dsc <* QUERY ( pdr <* USEDIN(sc,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics') )
| ((1 <= SIZEOF(QUERY ( it <* dsc.used_representation.
items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name IN ['pressure',
'minimum pressure','maximum pressure'])) ))) AND (SIZEOF(
QUERY ( it <* dsc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name IN ['pressure',
'minimum pressure','maximum pressure'])) )) <= 2)) ))
= 1)) )) = 0);
wr6 : (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( dsc <* QUERY ( pdr <* USEDIN(sc,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics') )
| (SIZEOF(QUERY ( it <* dsc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'pressure')) )) <= 1) ))
= 1)) )) = 0);
wr7 : (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( dsc <* QUERY ( pdr <* USEDIN(sc,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics') )
| (SIZEOF(QUERY ( it <* dsc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'minimum pressure')) ))
<= 1) )) = 1)) )) = 0);
wr8 : (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( dsc <* QUERY ( pdr <* USEDIN(sc,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics') )
| (SIZEOF(QUERY ( it <* dsc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'maximum pressure')) ))
<= 1) )) = 1)) )) = 0);
wr9 : (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( dsc <* QUERY ( pdr <* USEDIN(sc,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics') )
| ((1 <= SIZEOF(QUERY ( it <* dsc.used_representation.
items | ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name IN ['temperature','minimum temperature',
'maximum temperature'])) ))) AND (SIZEOF(QUERY ( it <* dsc.
used_representation.items | ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name IN ['temperature','minimum temperature',
'maximum temperature'])) )) <= 2)) )) = 1)) )) = 0);
wr10: (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( dsc <* QUERY ( pdr <* USEDIN(sc,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics') )
| (SIZEOF(QUERY ( it <* dsc.used_representation.items | ((
SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'temperature')) )) <= 1) )) = 1)) )) = 0);
wr11: (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( dsc <* QUERY ( pdr <* USEDIN(sc,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics') )
| (SIZEOF(QUERY ( it <* dsc.used_representation.items | ((
SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'minimum temperature')) )) <= 1) )) = 1)) ))
= 0);
wr12: (NOT (SIZEOF(QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT.' +
'ITEMS')
| (SIZEOF(TYPEOF(ga.assigned_group) *
['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_CONNECTOR_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'CONNECTOR_END_TYPE_CLASSIFICATION'])
= 1) )) >= 1)) OR (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') )) >= 1)) OR (
SIZEOF(QUERY ( sc <* QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (pd.name = 'service characteristics') ) | (NOT (SIZEOF(
QUERY ( dsc <* QUERY ( pdr <* USEDIN(sc,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'design service characteristics') )
| (SIZEOF(QUERY ( it <* dsc.used_representation.items | ((
SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'maximum temperature')) )) <= 1) )) = 1)) ))
= 0);
END_ENTITY; -- plant_item_connector
ENTITY plant_item_interference
SUBTYPE OF (product_definition_relationship);
END_ENTITY; -- plant_item_interference
ENTITY plant_item_route
SUBTYPE OF (product_definition_shape);
WHERE
wr1: SELF\property_definition.definition\product_definition.
frame_of_reference\application_context_element.name =
'physical occurrence';
wr2: SIZEOF(TYPEOF(SELF\property_definition.definition) * [
'PLANT_SPATIAL_CONFIGURATION.PLANT_LINE_DEFINITION',
'PLANT_SPATIAL_CONFIGURATION.' +
'PLANT_LINE_SEGMENT_DEFINITION'])
= 1;
END_ENTITY; -- plant_item_route
ENTITY plant_item_weight_representation
SUBTYPE OF (property_definition_representation);
WHERE
wr1: SELF.used_representation.name = 'item weight';
wr2: SIZEOF(SELF.used_representation.items) >= 2;
wr3: SIZEOF(QUERY ( it <* SELF.used_representation.items | ((it.name
IN ['weight value','mass value','maximum weight value',
'minimum weight value','maximum mass value',
'minimum mass value']) AND (NOT (SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'QUALIFIED_REPRESENTATION_ITEM'])
= 2))) )) = 0;
wr4: SIZEOF(QUERY ( it <* SELF.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.GEOMETRIC_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'centre of gravity')) )) = 1;
wr5: (1 <= SIZEOF(QUERY ( it <* SELF.used_representation.items | (it
.name IN ['weight value','mass value',
'maximum weight value',
'minimum weight value','maximum mass value',
'minimum mass value']) ))) AND (SIZEOF(QUERY ( it <* SELF.
used_representation.items | (it.name IN ['weight value',
'mass value','maximum weight value','minimum weight value',
'maximum mass value','minimum mass value']) )) <= 2);
wr6: SIZEOF(QUERY ( it <* SELF\property_definition_representation.
used_representation.items | ((it.name
IN ['maximum weight value','minimum weight value',
'maximum mass value','minimum mass value']) AND (NOT (
SIZEOF(QUERY ( tq <* QUERY ( qual <*
it\qualified_representation_item.qualifiers | (
'PLANT_SPATIAL_CONFIGURATION.TYPE_QUALIFIER'
IN TYPEOF(qual)) )
| (tq.name = 'operating') )) = 1))) )) = 0;
END_ENTITY; -- plant_item_weight_representation
ENTITY plant_line_definition
SUBTYPE OF (product_definition_with_associated_documents);
WHERE
wr1: SIZEOF(QUERY ( pdr <* USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.'
+ 'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| ('PLANT_SPATIAL_CONFIGURATION.PIPING_SYSTEM' IN TYPEOF(
pdr.relating_product_definition)) )) = 1;
wr2: SIZEOF(QUERY ( pdr <* USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.'
+ 'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATING_PRODUCT_DEFINITION')
| (
'PLANT_SPATIAL_CONFIGURATION.PLANT_LINE_SEGMENT_DEFINITION'
IN TYPEOF(pdr.related_product_definition)) )) >= 1;
wr3: (NOT (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (SIZEOF(USEDIN(pd,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) >= 1) )) =
0)) OR (SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pd,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (SIZEOF(
QUERY ( rep <* USEDIN(pdr.used_representation.
context_of_items,
'PLANT_SPATIAL_CONFIGURATION.REPRESENTATION.' +
'CONTEXT_OF_ITEMS')
| (SIZEOF(QUERY ( prop_def_rep <* USEDIN(rep,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
((SIZEOF(['PLANT_SPATIAL_CONFIGURATION.SITE',
'PLANT_SPATIAL_CONFIGURATION.SITE_BUILDING'] * TYPEOF(
prop_def_rep.definition)) = 1) OR (
'PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(prop_def_rep.
definition.definition.formation.of_product))) )) >= 1) )) >=
1) )) >= 1)) )) = 0);
wr4: SELF.frame_of_reference.name = 'functional definition';
END_ENTITY; -- plant_line_definition
ENTITY plant_line_segment_definition
SUBTYPE OF (product_definition);
WHERE
wr1 : SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| ('PLANT_SPATIAL_CONFIGURATION.PLANT_LINE_DEFINITION' IN
TYPEOF(pdr.relating_product_definition)) )) >= 1;
wr2 : SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| ('PLANT_SPATIAL_CONFIGURATION.SHAPE_DEFINITION' IN
TYPEOF(pd)) )) >= 1;
wr3 : SELF.frame_of_reference\application_context_element.name =
'functional definition';
wr4 : SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'line segment characteristics') )) = 1;
wr5 : SIZEOF(QUERY ( lsc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'line segment characteristics') )
| (NOT (SIZEOF(lsc.used_representation.items) >= 2)) )) =
0;
wr6 : SIZEOF(QUERY ( lsc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'line segment characteristics') )
| (NOT (SIZEOF(QUERY ( it <* lsc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'design pressure')) )) = 1))
)) = 0;
wr7 : SIZEOF(QUERY ( lsc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'line segment characteristics') )
| (NOT (SIZEOF(QUERY ( it <* lsc.used_representation.items
| ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'design temperature')) )) = 1)) )) = 0;
wr8 : SIZEOF(QUERY ( lsc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'line segment characteristics') )
| (NOT (SIZEOF(QUERY ( it <* lsc.used_representation.items
| ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.LENGTH_MEASURE_WITH_UNIT']) =
2) AND (it.name = 'elevation')) )) <= 1)) )) = 0;
wr9 : SIZEOF(QUERY ( lsc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'line segment characteristics') )
| (NOT (SIZEOF(QUERY ( it <* lsc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'corrosion allowance')) )) <=
1)) )) = 0;
wr10: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') )) >= 1)) OR (SIZEOF(
QUERY ( si <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') ) | (NOT (SIZEOF(
QUERY ( pd <* USEDIN(si,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (NOT (SIZEOF(QUERY ( pds <* QUERY ( pdr <* USEDIN(pd,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(pdr)) ) | (pds.used_representation.name =
'segment insulation characteristics') )) = 1)) )) = 0)) ))
= 0);
wr11: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') )) >= 1)) OR (SIZEOF(
QUERY ( si <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') ) | (NOT (SIZEOF(
QUERY ( pd <* USEDIN(si,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION.DEFINITION')
| (NOT (SIZEOF(QUERY ( sic <* QUERY ( pds <*
QUERY ( pdr <* USEDIN(pd,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(pdr)) ) | (pds.used_representation.name =
'segment insulation characteristics') ) | (SIZEOF(sic.
used_representation.items) >= 1) )) = 1)) )) = 0)) )) = 0);
wr12: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') )) >= 1)) OR (SIZEOF(
QUERY ( si <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') ) | (NOT (SIZEOF(
QUERY ( pd <* USEDIN(si,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (NOT (SIZEOF(QUERY ( sic <* QUERY ( pds <*
QUERY ( pdr <* USEDIN(pd,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(pdr)) ) | (pds.used_representation.name =
'segment insulation characteristics') ) | ((1 <= SIZEOF(
QUERY ( it <* sic.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.LENGTH_MEASURE_WITH_UNIT']) =
2) AND (it.name IN ['thickness','minimum thickness',
'maximum thickness'])) ))) AND (SIZEOF(QUERY ( it <* sic.
used_representation.items | ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.LENGTH_MEASURE_WITH_UNIT']) =
2) AND (it.name IN ['thickness','minimum thickness',
'maximum thickness'])) )) <= 2)) )) = 1)) )) = 0)) )) = 0);
wr13: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') )) >= 1)) OR (SIZEOF(
QUERY ( si <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') ) | (NOT (SIZEOF(
QUERY ( pd <* USEDIN(si,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (NOT (SIZEOF(QUERY ( sic <* QUERY ( pds <*
QUERY ( pdr <* USEDIN(pd,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(pdr)) ) | (pds.used_representation.name =
'segment insulation characteristics') ) | (SIZEOF(
QUERY ( it <* sic.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.LENGTH_MEASURE_WITH_UNIT']) =
2) AND (it.name = 'thickness')) )) <= 1) )) = 1)) ))
= 0)) )) = 0);
wr14: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') )) >= 1)) OR (SIZEOF(
QUERY ( si <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') ) | (NOT (SIZEOF(
QUERY ( pd <* USEDIN(si,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (NOT (SIZEOF(QUERY ( sic <* QUERY ( pds <*
QUERY ( pdr <* USEDIN(pd,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(pdr)) ) | (pds.used_representation.name =
'segment insulation characteristics') ) | (SIZEOF(
QUERY ( it <* sic.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.LENGTH_MEASURE_WITH_UNIT']) =
2) AND (it.name = 'minimum thickness')) )) <= 1) ))
= 1)) )) = 0)) )) = 0);
wr15: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') )) >= 1)) OR (SIZEOF(
QUERY ( si <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') ) | (NOT (SIZEOF(
QUERY ( pd <* USEDIN(si,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (NOT (SIZEOF(QUERY ( sic <* QUERY ( pds <*
QUERY ( pdr <* USEDIN(pd,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(pdr)) ) | (pds.used_representation.name =
'segment insulation characteristics') ) | (SIZEOF(
QUERY ( it <* sic.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.LENGTH_MEASURE_WITH_UNIT']) =
2) AND (it.name = 'maximum thickness')) )) <= 1) ))
= 1)) )) = 0)) )) = 0);
wr16: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') )) >= 1)) OR (SIZEOF(
QUERY ( si <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (pdr.name = 'segment insulation') ) | (NOT (SIZEOF(
QUERY ( pd <* USEDIN(si,
'PLANT_SPATIAL_CONFIGURATION.PROPERTY_DEFINITION.' +
'DEFINITION')
| (NOT (SIZEOF(QUERY ( sic <* QUERY ( pds <*
QUERY ( pdr <* USEDIN(pd,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(pdr)) ) | (pds.used_representation.name =
'segment insulation characteristics') ) | (SIZEOF(
QUERY ( it <* sic.used_representation.items |
(('PLANT_SPATIAL_CONFIGURATION.' +
'DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'boundaries')) )) <= 1) )) =
1)) )) = 0)) )) = 0);
END_ENTITY; -- plant_line_segment_definition
ENTITY plant_line_segment_termination
SUBTYPE OF (shape_aspect);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PLANT_LINE_SEGMENT_DEFINITION' IN
TYPEOF(SELF.of_shape.definition);
wr2: SIZEOF(QUERY ( sar <* (USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') + USEDIN(
SELF,'PLANT_SPATIAL_CONFIGURATION.' +
'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')) | (NOT (
SIZEOF(TYPEOF(sar) * [
'PLANT_SPATIAL_CONFIGURATION.LINE_BRANCH_CONNECTION',
'PLANT_SPATIAL_CONFIGURATION.LINE_PLANT_ITEM_CONNECTION',
'PLANT_SPATIAL_CONFIGURATION.LINE_TERMINATION_CONNECTION'])
= 1)) )) = 0;
END_ENTITY; -- plant_line_segment_termination
ENTITY plant_spatial_configuration_action_request_assignment
SUBTYPE OF (action_request_assignment);
items : SET [1:?] OF plant_spatial_configuration_action_request_item;
END_ENTITY; -- plant_spatial_configuration_action_request_assignment
ENTITY plant_spatial_configuration_approval_assignment
SUBTYPE OF (approval_assignment);
items : SET [1:?] OF approval_item;
END_ENTITY; -- plant_spatial_configuration_approval_assignment
ENTITY plant_spatial_configuration_change_assignment
SUBTYPE OF (action_assignment);
items : SET [1:?] OF change_item;
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.CHANGE_ACTION' IN TYPEOF(SELF.
assigned_action);
END_ENTITY; -- plant_spatial_configuration_change_assignment
ENTITY plant_spatial_configuration_date_and_time_assignment
SUBTYPE OF (date_and_time_assignment);
items : SET [1:?] OF plant_spatial_configuration_date_and_time_item;
END_ENTITY; -- plant_spatial_configuration_date_and_time_assignment
ENTITY plant_spatial_configuration_date_assignment
SUBTYPE OF (date_assignment);
items : SET [1:?] OF plant_spatial_configuration_dated_item;
END_ENTITY; -- plant_spatial_configuration_date_assignment
ENTITY plant_spatial_configuration_document_reference
SUBTYPE OF (document_reference);
items : SET [1:?] OF plant_spatial_configuration_document_item;
END_ENTITY; -- plant_spatial_configuration_document_reference
ENTITY plant_spatial_configuration_organization_assignment
SUBTYPE OF (organization_assignment);
items : SET [1:?] OF plant_spatial_configuration_organization_item;
WHERE
wr1: plant_spatial_configuration_organization_correlation(SELF);
END_ENTITY; -- plant_spatial_configuration_organization_assignment
ENTITY plant_spatial_configuration_person_and_organization_assignment
SUBTYPE OF (person_and_organization_assignment);
items : SET [1:?] OF
plant_spatial_configuration_person_and_organization_item;
WHERE
wr1: plant_spatial_configuration_person_and_organization_correlation(
SELF);
END_ENTITY; -- plant_spatial_configuration_person_and_organization_assignment
ENTITY plant_spatial_configuration_person_assignment
SUBTYPE OF (person_assignment);
items : SET [1:?] OF plant_spatial_configuration_person_item;
WHERE
wr1: plant_spatial_configuration_person_correlation(SELF);
END_ENTITY; -- plant_spatial_configuration_person_assignment
ENTITY point
SUPERTYPE OF (ONEOF (cartesian_point,point_on_curve,point_on_surface,
point_replica,degenerate_pcurve))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- point
ENTITY point_on_curve
SUBTYPE OF (point);
basis_curve : curve;
point_parameter : parameter_value;
END_ENTITY; -- point_on_curve
ENTITY point_on_surface
SUBTYPE OF (point);
basis_surface : surface;
point_parameter_u : parameter_value;
point_parameter_v : parameter_value;
END_ENTITY; -- point_on_surface
ENTITY point_replica
SUBTYPE OF (point);
parent_pt : point;
transformation : cartesian_transformation_operator;
WHERE
wr1: transformation.dim = parent_pt.dim;
wr2: acyclic_point_replica(SELF,parent_pt);
END_ENTITY; -- point_replica
ENTITY poly_loop
SUBTYPE OF (loop, geometric_representation_item);
polygon : LIST [3:?] OF UNIQUE cartesian_point;
END_ENTITY; -- poly_loop
ENTITY polyline
SUBTYPE OF (bounded_curve);
points : LIST [2:?] OF cartesian_point;
END_ENTITY; -- polyline
ENTITY pre_defined_item;
name : label;
END_ENTITY; -- pre_defined_item
ENTITY presentation_layer_assignment;
name : label;
description : text;
assigned_items : SET [1:?] OF layered_item;
END_ENTITY; -- presentation_layer_assignment
ENTITY process_capability
SUBTYPE OF (property_definition);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(SELF.definition\
product_definition.formation.of_product);
wr2: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.'
+ 'DEFINITION') | ((pdr.used_representation.name =
'production capacity') AND (NOT (SIZEOF(QUERY ( it <* pdr.
used_representation.items | (('PLANT_SPATIAL_CONFIGURATION.'
+ 'DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'production type')) ))
= 1))) )) = 0;
END_ENTITY; -- process_capability
ENTITY product;
id : identifier;
name : label;
description : text;
frame_of_reference : SET [1:?] OF product_context;
UNIQUE
ur1 : id;
END_ENTITY; -- product
ENTITY product_category;
name : label;
description : OPTIONAL text;
END_ENTITY; -- product_category
ENTITY product_category_relationship;
name : label;
description : text;
category : product_category;
sub_category : product_category;
WHERE
wr1: acyclic_product_category_relationship(SELF,[SELF.sub_category]);
END_ENTITY; -- product_category_relationship
ENTITY product_context
SUBTYPE OF (application_context_element);
discipline_type : label;
END_ENTITY; -- product_context
ENTITY product_definition;
id : identifier;
description : text;
formation : product_definition_formation;
frame_of_reference : product_definition_context;
END_ENTITY; -- product_definition
ENTITY product_definition_context
SUBTYPE OF (application_context_element);
life_cycle_stage : label;
END_ENTITY; -- product_definition_context
ENTITY product_definition_formation;
id : identifier;
description : text;
of_product : product;
UNIQUE
ur1 : id, of_product;
END_ENTITY; -- product_definition_formation
ENTITY product_definition_formation_relationship;
id : identifier;
name : label;
description : text;
relating_product_definition_formation : product_definition_formation;
related_product_definition_formation : product_definition_formation;
END_ENTITY; -- product_definition_formation_relationship
ENTITY product_definition_formation_with_specified_source
SUBTYPE OF (product_definition_formation);
make_or_buy : source;
END_ENTITY; -- product_definition_formation_with_specified_source
ENTITY product_definition_relationship;
id : identifier;
name : label;
description : text;
relating_product_definition : product_definition;
related_product_definition : product_definition;
END_ENTITY; -- product_definition_relationship
ENTITY product_definition_shape
SUBTYPE OF (property_definition);
UNIQUE
ur1 : definition;
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.CHARACTERIZED_PRODUCT_DEFINITION'
IN TYPEOF(SELF\property_definition.definition);
END_ENTITY; -- product_definition_shape
ENTITY product_definition_substitute;
description : text;
context_relationship : product_definition_relationship;
substitute_definition : product_definition;
WHERE
wr1: context_relationship.related_product_definition :<>:
substitute_definition;
END_ENTITY; -- product_definition_substitute
ENTITY product_definition_usage
SUPERTYPE OF (ONEOF (make_from_usage_option,assembly_component_usage))
SUBTYPE OF (product_definition_relationship);
UNIQUE
ur1 : id, relating_product_definition, related_product_definition;
WHERE
wr1: acyclic_product_definition_relationship(SELF,[SELF\
product_definition_relationship.related_product_definition],
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_USAGE.' +
'RELATED_PRODUCT_DEFINITION');
END_ENTITY; -- product_definition_usage
ENTITY product_definition_with_associated_documents
SUBTYPE OF (product_definition);
documentation_ids : SET [1:?] OF document;
END_ENTITY; -- product_definition_with_associated_documents
ENTITY product_material_composition_relationship
SUBTYPE OF (product_definition_relationship);
class : label;
constituent_amount : SET [1:?] OF measure_with_unit;
composition_basis : label;
determination_method : text;
END_ENTITY; -- product_material_composition_relationship
ENTITY product_related_product_category
SUBTYPE OF (product_category);
products : SET [1:?] OF product;
END_ENTITY; -- product_related_product_category
ENTITY property_definition;
name : label;
description : text;
definition : characterized_definition;
END_ENTITY; -- property_definition
ENTITY property_definition_relationship;
name : label;
description : text;
relating_property_definition : property_definition;
related_property_definition : property_definition;
END_ENTITY; -- property_definition_relationship
ENTITY property_definition_representation;
definition : property_definition;
used_representation : representation;
END_ENTITY; -- property_definition_representation
ENTITY purchase_assignment
SUBTYPE OF (action_assignment);
items : SET [1:?] OF purchase_item;
END_ENTITY; -- purchase_assignment
ENTITY qualified_representation_item
SUBTYPE OF (representation_item);
qualifiers : SET [1:?] OF value_qualifier;
WHERE
wr1: SIZEOF(QUERY ( temp <* qualifiers | (
'PLANT_SPATIAL_CONFIGURATION.PRECISION_QUALIFIER' IN TYPEOF(
temp)) )) < 2;
END_ENTITY; -- qualified_representation_item
ENTITY quasi_uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- quasi_uniform_curve
ENTITY quasi_uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- quasi_uniform_surface
ENTITY ratio_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.RATIO_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- ratio_measure_with_unit
ENTITY ratio_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- ratio_unit
ENTITY rational_b_spline_curve
SUBTYPE OF (b_spline_curve);
weights_data : LIST [2:?] OF REAL;
DERIVE
weights : ARRAY [0:upper_index_on_control_points] OF REAL :=
list_to_array(weights_data,0,
upper_index_on_control_points);
WHERE
wr1: SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve.
control_points_list);
wr2: curve_weights_positive(SELF);
END_ENTITY; -- rational_b_spline_curve
ENTITY rational_b_spline_surface
SUBTYPE OF (b_spline_surface);
weights_data : LIST [2:?] OF LIST [2:?] OF REAL;
DERIVE
weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL :=
make_array_of_array(weights_data,0,u_upper,0,v_upper);
WHERE
wr1: (SIZEOF(weights_data) = SIZEOF(SELF\b_spline_surface.
control_points_list)) AND (SIZEOF(weights_data[1]) = SIZEOF(
SELF\b_spline_surface.control_points_list[1]));
wr2: surface_weights_positive(SELF);
END_ENTITY; -- rational_b_spline_surface
ENTITY rectangular_composite_surface
SUBTYPE OF (bounded_surface);
segments : LIST [1:?] OF LIST [1:?] OF surface_patch;
DERIVE
n_u : INTEGER := SIZEOF(segments);
n_v : INTEGER := SIZEOF(segments[1]);
WHERE
wr1: [] = QUERY ( s <* segments | (n_v <> SIZEOF(s)) );
wr2: constraints_rectangular_composite_surface(SELF);
END_ENTITY; -- rectangular_composite_surface
ENTITY rectangular_trimmed_surface
SUBTYPE OF (bounded_surface);
basis_surface : surface;
u1 : parameter_value;
u2 : parameter_value;
v1 : parameter_value;
v2 : parameter_value;
usense : BOOLEAN;
vsense : BOOLEAN;
WHERE
wr1: u1 <> u2;
wr2: v1 <> v2;
wr3: (('PLANT_SPATIAL_CONFIGURATION.ELEMENTARY_SURFACE' IN TYPEOF(
basis_surface)) AND (NOT (
'PLANT_SPATIAL_CONFIGURATION.PLANE'
IN TYPEOF(basis_surface))))
OR ('PLANT_SPATIAL_CONFIGURATION.SURFACE_OF_REVOLUTION' IN
TYPEOF(basis_surface)) OR (usense = (u2 > u1));
wr4: ('PLANT_SPATIAL_CONFIGURATION.SPHERICAL_SURFACE' IN TYPEOF(
basis_surface)) OR (
'PLANT_SPATIAL_CONFIGURATION.TOROIDAL_SURFACE' IN TYPEOF(
basis_surface)) OR (vsense = (v2 > v1));
END_ENTITY; -- rectangular_trimmed_surface
ENTITY reducer_fitting_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.GROUP_ASSIGNMENT.' +
'ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.GROUP_ASSIGNMENT.' +
'ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'reducer') )) = 1)) )) = 0)) )) = 0;
END_ENTITY; -- reducer_fitting_classification
ENTITY reference_geometry
SUBTYPE OF (derived_shape_aspect);
WHERE
wr1: SIZEOF(QUERY ( pd <* USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.'
+ 'PROPERTY_DEFINITION.DEFINITION')
| (NOT (SIZEOF(USEDIN(pd,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) >= 1)) ))
= 0;
END_ENTITY; -- reference_geometry
ENTITY reparametrised_composite_curve_segment
SUBTYPE OF (composite_curve_segment);
param_length : parameter_value;
WHERE
wr1: param_length > 0;
END_ENTITY; -- reparametrised_composite_curve_segment
ENTITY representation;
name : label;
items : SET [1:?] OF representation_item;
context_of_items : representation_context;
END_ENTITY; -- representation
ENTITY representation_context;
context_identifier : identifier;
context_type : text;
INVERSE
representations_in_context : SET [1:?] OF representation FOR
context_of_items;
END_ENTITY; -- representation_context
ENTITY representation_item;
name : label;
WHERE
wr1: SIZEOF(using_representations(SELF)) > 0;
END_ENTITY; -- representation_item
ENTITY representation_map;
mapping_origin : representation_item;
mapped_representation : representation;
INVERSE
map_usage : SET [1:?] OF mapped_item FOR mapping_source;
WHERE
wr1: item_in_context(SELF.mapping_origin,SELF.mapped_representation.
context_of_items);
END_ENTITY; -- representation_map
ENTITY required_material_property
SUBTYPE OF (material_property);
WHERE
wr1: (SIZEOF(TYPEOF(SELF\property_definition.definition) * [
'PLANT_SPATIAL_CONFIGURATION.PLANT_ITEM_CONNECTOR',
'PLANT_SPATIAL_CONFIGURATION.' +
'EXTERNALLY_DEFINED_PLANT_ITEM'])
= 1) OR (('PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION'
IN TYPEOF(SELF.definition)) AND (SIZEOF(QUERY ( pc <*
SELF\property_definition.
definition\product_definition.formation.of_product.
frame_of_reference |
(pc.discipline_type = 'process plant') )) = 1));
wr2: SIZEOF(QUERY ( ra <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATED_PROPERTY_DEFINITION')
| (pdr.name = 'requirement allocation') ) | (
'PLANT_SPATIAL_CONFIGURATION.MATERIAL_PROPERTY' IN TYPEOF(ra
.relating_property_definition)) )) >= 1;
END_ENTITY; -- required_material_property
ENTITY reserved_space
SUBTYPE OF (shape_aspect);
WHERE
wr1: SELF\shape_aspect.of_shape\property_definition.
definition\product_definition.
frame_of_reference\application_context_element.name =
'physical occurrence';
END_ENTITY; -- reserved_space
ENTITY revolved_area_solid
SUBTYPE OF (swept_area_solid);
axis : axis1_placement;
angle : plane_angle_measure;
DERIVE
axis_line : line := line(axis.location,vector(axis.z,1));
END_ENTITY; -- revolved_area_solid
ENTITY revolved_face_solid
SUBTYPE OF (swept_face_solid);
axis : axis1_placement;
angle : plane_angle_measure;
DERIVE
axis_line : line := line(axis.location,vector(axis.z,1));
END_ENTITY; -- revolved_face_solid
ENTITY right_circular_cone
SUBTYPE OF (geometric_representation_item);
position : axis1_placement;
height : positive_length_measure;
radius : length_measure;
semi_angle : plane_angle_measure;
WHERE
wr1: radius >= 0;
END_ENTITY; -- right_circular_cone
ENTITY right_circular_cylinder
SUBTYPE OF (geometric_representation_item);
position : axis1_placement;
height : positive_length_measure;
radius : positive_length_measure;
END_ENTITY; -- right_circular_cylinder
ENTITY seam_curve
SUBTYPE OF (surface_curve);
WHERE
wr1: SIZEOF(SELF\surface_curve.associated_geometry) = 2;
wr2: associated_surface(SELF\surface_curve.associated_geometry[1]) =
associated_surface(SELF\surface_curve.
associated_geometry[2]);
wr3: 'PLANT_SPATIAL_CONFIGURATION.PCURVE' IN TYPEOF(SELF\
surface_curve.associated_geometry[1]);
wr4: 'PLANT_SPATIAL_CONFIGURATION.PCURVE' IN TYPEOF(SELF\
surface_curve.associated_geometry[2]);
END_ENTITY; -- seam_curve
ENTITY shape_aspect;
name : label;
description : text;
of_shape : product_definition_shape;
product_definitional : LOGICAL;
END_ENTITY; -- shape_aspect
ENTITY shape_aspect_deriving_relationship
SUBTYPE OF (shape_aspect_relationship);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.DERIVED_SHAPE_ASPECT' IN TYPEOF(
SELF\shape_aspect_relationship.relating_shape_aspect);
END_ENTITY; -- shape_aspect_deriving_relationship
ENTITY shape_aspect_relationship;
name : label;
description : text;
relating_shape_aspect : shape_aspect;
related_shape_aspect : shape_aspect;
END_ENTITY; -- shape_aspect_relationship
ENTITY shape_definition_representation
SUBTYPE OF (property_definition_representation);
WHERE
wr1: ('PLANT_SPATIAL_CONFIGURATION.SHAPE_DEFINITION' IN TYPEOF(SELF.
definition.definition)) OR (
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(SELF.definition));
wr2: 'PLANT_SPATIAL_CONFIGURATION.SHAPE_REPRESENTATION' IN TYPEOF(
SELF.used_representation);
END_ENTITY; -- shape_definition_representation
ENTITY shape_dimension_representation
SUBTYPE OF (shape_representation);
WHERE
wr1: SIZEOF(QUERY ( temp <* SELF.items | (NOT (
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM' IN
TYPEOF(temp))) )) = 0;
wr2: SIZEOF(SELF.items) <= 2;
wr3: SIZEOF(QUERY ( pos_mri <* QUERY ( real_mri <* SELF.items | (
'REAL' IN TYPEOF(real_mri\measure_with_unit.
value_component)) )
| (NOT (pos_mri\measure_with_unit.value_component > 0)) ))
= 0;
END_ENTITY; -- shape_dimension_representation
ENTITY shape_representation
SUBTYPE OF (representation);
END_ENTITY; -- shape_representation
ENTITY shell_based_wireframe_model
SUBTYPE OF (geometric_representation_item);
sbwm_boundary : SET [1:?] OF shell;
WHERE
wr1: constraints_geometry_shell_based_wireframe_model(SELF);
END_ENTITY; -- shell_based_wireframe_model
ENTITY si_unit
SUBTYPE OF (named_unit);
prefix : OPTIONAL si_prefix;
name : si_unit_name;
DERIVE
SELF\named_unit.dimensions : dimensional_exponents :=
dimensions_for_si_unit(SELF.name);
END_ENTITY; -- si_unit
ENTITY site
SUBTYPE OF (characterized_object, property_definition);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(SELF\
property_definition.definition\product_definition.formation.
of_product);
END_ENTITY; -- site
ENTITY site_building
SUBTYPE OF (property_definition);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.SITE' IN TYPEOF(SELF.definition);
wr2: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | ((pdr.
used_representation.name = 'building number') AND (SIZEOF(
QUERY ( it <* pdr.used_representation.items |
('PLANT_SPATIAL_CONFIGURATION.' +
'DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) )) = 1)) )) = 1;
wr3: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (SIZEOF(
QUERY ( it <* pdr.used_representation.items | ((SIZEOF([
'PLANT_SPATIAL_CONFIGURATION.AXIS_PLACEMENT_2D',
'PLANT_SPATIAL_CONFIGURATION.AXIS_PLACEMENT_3D']
* TYPEOF(it))
= 1) AND (it.name = 'building orientation') AND (it.location
.name = 'building location')) )) = 1) )) <= 1;
END_ENTITY; -- site_building
ENTITY site_feature
SUBTYPE OF (property_definition);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.SITE' IN TYPEOF(SELF.definition);
wr2: SIZEOF(USEDIN(SELF,'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 3;
wr3: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (SIZEOF(
QUERY ( it <* pdr.used_representation.items |
(('PLANT_SPATIAL_CONFIGURATION.' +
'DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.
name = 'site feature type')) )) = 1) )) = 1;
wr4: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (SIZEOF(
QUERY ( it <* pdr.used_representation.items | ((SIZEOF([
'PLANT_SPATIAL_CONFIGURATION.AXIS_PLACEMENT_2D',
'PLANT_SPATIAL_CONFIGURATION.AXIS_PLACEMENT_3D']
* TYPEOF(it))
= 1) AND (it.name = 'feature orientation') AND (it.location.
name = 'feature location')) )) = 1) )) = 1;
wr5: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (SIZEOF(
QUERY ( it <* pdr.used_representation.items |
(('PLANT_SPATIAL_CONFIGURATION.' +
'DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(pdr.used_representation)) AND (it.name =
'origin type') AND (it.description IN ['man made',
'natural'])) )) = 1) )) = 1;
END_ENTITY; -- site_feature
ENTITY site_representation
SUBTYPE OF (shape_representation);
WHERE
wr1: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
(NOT ('PLANT_SPATIAL_CONFIGURATION.SITE' IN TYPEOF(pdr.
definition.definition))) )) = 0;
wr2: SIZEOF(QUERY ( item <* SELF.items | (NOT (SIZEOF([
'PLANT_SPATIAL_CONFIGURATION.CONNECTED_FACE_SET',
'PLANT_SPATIAL_CONFIGURATION.GEOMETRIC_CURVE_SET'] * TYPEOF(
item)) = 1)) )) = 1;
wr3: SIZEOF(QUERY ( cfs <* QUERY ( item <* SELF.items | (
'PLANT_SPATIAL_CONFIGURATION.CONNECTED_FACE_SET' IN TYPEOF(
item)) ) | (NOT (SIZEOF(QUERY ( fcs <* cfs\
connected_face_set.cfs_faces | (NOT (SIZEOF(QUERY ( bnds <*
fcs.bounds | (NOT ('PLANT_SPATIAL_CONFIGURATION.POLY_LOOP'
IN TYPEOF(bnds.bound))) )) = 0)) )) = 0)) )) = 0;
wr4: SIZEOF(QUERY ( cfs <* QUERY ( item <* SELF.items | (
'PLANT_SPATIAL_CONFIGURATION.CONNECTED_FACE_SET' IN TYPEOF(
item)) ) | (NOT (SIZEOF(QUERY ( fcs <* cfs\
connected_face_set.cfs_faces | (NOT (SIZEOF(QUERY ( bnds <*
fcs.bounds | (NOT (SIZEOF(bnds.bound\poly_loop.polygon)
<= 4)) )) = 0)) )) = 0)) )) = 0;
wr5: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | (
'PLANT_SPATIAL_CONFIGURATION.GEOMETRIC_CURVE_SET' IN TYPEOF(
item)) ) | (NOT (SIZEOF(QUERY ( el <* gcs\geometric_set.
elements | (NOT (SIZEOF([
'PLANT_SPATIAL_CONFIGURATION.CARTESIAN_POINT',
'PLANT_SPATIAL_CONFIGURATION.POLYLINE'] * TYPEOF(el))
= 1)) )) = 0)) )) = 0;
wr6: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | (
'PLANT_SPATIAL_CONFIGURATION.GEOMETRIC_CURVE_SET' IN TYPEOF(
item)) ) | (NOT (SIZEOF(QUERY ( el <* gcs\geometric_set.
elements | ('PLANT_SPATIAL_CONFIGURATION.CARTESIAN_POINT' IN
TYPEOF(el)) )) >= 1)) )) = 0;
wr7: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | (
'PLANT_SPATIAL_CONFIGURATION.GEOMETRIC_CURVE_SET' IN TYPEOF(
item)) ) | (NOT (SIZEOF(QUERY ( pline <* QUERY ( el <* gcs\
geometric_set.elements | (
'PLANT_SPATIAL_CONFIGURATION.POLYLINE' IN TYPEOF(el)) ) | (
NOT (SIZEOF(QUERY ( pline_pt <* pline\polyline.points | (
NOT (pline_pt IN gcs\geometric_set.elements)) )) = 0)) )) =
0)) )) = 0;
END_ENTITY; -- site_representation
ENTITY solid_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- solid_angle_measure_with_unit
ENTITY solid_angle_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- solid_angle_unit
ENTITY solid_model
SUPERTYPE OF (ONEOF (csg_solid,manifold_solid_brep,swept_face_solid,
swept_area_solid))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- solid_model
ENTITY spacer_fitting_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.GROUP_ASSIGNMENT.' +
'ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.GROUP_ASSIGNMENT.' +
'ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'spacer') )) = 1)) )) = 0)) )) = 0;
END_ENTITY; -- spacer_fitting_classification
ENTITY specialty_item_classification
SUBTYPE OF (group);
END_ENTITY; -- specialty_item_classification
ENTITY sphere
SUBTYPE OF (geometric_representation_item);
radius : positive_length_measure;
centre : point;
END_ENTITY; -- sphere
ENTITY spherical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
END_ENTITY; -- spherical_surface
ENTITY stream_design_case
SUBTYPE OF (property_definition, characterized_object);
WHERE
wr1 : SIZEOF(QUERY ( pd <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION.DEFINITION') | (
'PLANT_SPATIAL_CONFIGURATION.STREAM_PHASE'
IN TYPEOF(pd)) )) >= 1;
wr2 : SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream flow characteristics') )) = 1;
wr3 : SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT (SIZEOF(sfc.used_representation.items) >= 2)) )) =
0;
wr4 : SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT ((1 <= SIZEOF(QUERY ( it <* sfc.used_representation
.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name IN ['flow rate',
'minimum flow rate','maximum flow rate'])) ))) AND (SIZEOF(
QUERY ( it <* sfc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name IN ['flow rate',
'minimum flow rate','maximum flow rate'])) )) <= 2))) )) =
0;
wr5 : SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT (SIZEOF(QUERY ( it <* sfc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'flow rate')) )) <= 1)) )) =
0;
wr6 : SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT (SIZEOF(QUERY ( it <* sfc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.
name = 'minimum flow rate')) )) <= 1)) )) = 0;
wr7 : SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT (SIZEOF(QUERY ( it <* sfc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.
name = 'maximum flow rate')) )) <= 1)) )) = 0;
wr8 : SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT ((1 <= SIZEOF(QUERY ( it <* sfc.used_representation
.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name IN ['pressure',
'minimum pressure','maximum pressure'])) ))) AND (SIZEOF(
QUERY ( it <* sfc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name IN ['pressure',
'minimum pressure','maximum pressure'])) )) <= 2))) )) = 0;
wr9 : SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT (SIZEOF(QUERY ( it <* sfc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.
name = 'pressure')) )) <= 1)) )) = 0;
wr10: SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT (SIZEOF(QUERY ( it <* sfc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.
name = 'minimum pressure')) )) <= 1)) )) = 0;
wr11: SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT (SIZEOF(QUERY ( it <* sfc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'maximum pressure')) ))
<= 1)) )) = 0;
wr12: SIZEOF(QUERY ( sfc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name = 'stream flow characteristics') )
| (NOT (SIZEOF(QUERY ( it <* sfc.used_representation.items
| (('PLANT_SPATIAL_CONFIGURATION.' +
'DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'stream data reference')) ))
<= 1)) )) = 0;
wr13: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( pdr <*
USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') )) = 1)) )) = 0);
wr14: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (NOT (SIZEOF(soc.
used_representation.items) >= 3)) )) = 0)) )) = 0);
wr15: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | ((1 <= SIZEOF(
QUERY ( it <* soc.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name IN ['temperature','minimum temperature',
'maximum temperature'])) ))) AND (SIZEOF(QUERY ( it <* soc.
used_representation.items | ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name IN ['temperature','minimum temperature',
'maximum temperature'])) )) <= 2)) )) = 1)) )) = 0);
wr16: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'temperature')) )) <= 1) )) = 1)) )) = 0);
wr17: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'minimum temperature')) )) <= 1) )) = 1)) ))
= 0);
wr18: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'maximum temperature')) )) <= 1) )) = 1)) ))
= 0);
wr19: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | ((1 <= SIZEOF(
QUERY ( it <* soc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name IN ['pressure',
'minimum pressure','maximum pressure'])) ))) AND (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name IN ['pressure',
'minimum pressure','maximum pressure'])) )) <= 2)) ))
= 1)) )) = 0);
wr20: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'pressure')) )) <= 1) ))
= 1)) )) = 0);
wr21: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'minimum pressure')) ))
<= 1) )) = 1)) )) = 0);
wr22: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'maximum pressure')) ))
<= 1) )) = 1)) )) = 0);
wr23: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | ((1 <= SIZEOF(
QUERY ( it <* soc.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.TIME_MEASURE_WITH_UNIT']) = 2)
AND (it.name IN ['duration','minimum duration',
'maximum duration'])) ))) AND (SIZEOF(QUERY ( it <* soc.
used_representation.items | ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.TIME_MEASURE_WITH_UNIT'])
= 2) AND (it.name IN ['duration','minimum duration',
'maximum duration'])) )) <= 2)) )) = 1)) )) = 0);
wr24: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.TIME_MEASURE_WITH_UNIT'])
= 2) AND (it.name = 'duration')) )) <= 1) )) = 1)) )) = 0);
wr25: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.TIME_MEASURE_WITH_UNIT'])
= 2) AND (it.name = 'minimum duration')) )) <= 1) ))
= 1)) )) = 0);
wr26: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (SIZEOF(QUERY ( soc <*
QUERY ( pdr <* USEDIN(sc.related_property_definition,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.name =
'service operating characteristics') ) | (SIZEOF(
QUERY ( it <* soc.used_representation.items | ((SIZEOF(
TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.TIME_MEASURE_WITH_UNIT'])
= 2) AND (it.name = 'maximum duration')) )) <= 1) ))
= 1)) )) = 0);
wr27: (NOT (SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') )) >= 1)) OR (SIZEOF(
QUERY ( sc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_RELATIONSHIP.' +
'RELATING_PROPERTY_DEFINITION')
| (pdr.related_property_definition.name =
'service characteristics') ) | (NOT (
'PLANT_SPATIAL_CONFIGURATION.PLANT_ITEM_CONNECTOR' IN
TYPEOF(sc.related_property_definition.definition))) ))
= 0);
END_ENTITY; -- stream_design_case
ENTITY stream_phase
SUBTYPE OF (property_definition);
WHERE
wr1 : 'PLANT_SPATIAL_CONFIGURATION.STREAM_DESIGN_CASE' IN TYPEOF(
SELF.definition);
wr2 : SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )) = 1;
wr3 : SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(spc.used_representation.items) >= 5)) )) =
0;
wr4 : SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.RATIO_MEASURE_WITH_UNIT'])
= 2) AND (it.name = 'constituent mole fraction')) ))
= 1)) )) = 0;
wr5 : SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| (('PLANT_SPATIAL_CONFIGURATION.' +
'DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'constituents')) )) = 1)) ))
= 0;
wr6 : SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'phase density')) ))
= 1)) )) = 0;
wr7 : SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.RATIO_MEASURE_WITH_UNIT'])
= 2) AND (it.name = 'phase fraction')) )) = 1)) )) = 0;
wr8 : SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT ((1 <= SIZEOF(QUERY ( it <* spc.used_representation
.items | ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name IN ['temperature','minimum temperature',
'maximum temperature'])) ))) AND (SIZEOF(QUERY ( it <* spc.
used_representation.items | ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name IN ['temperature','minimum temperature',
'maximum temperature'])) )) <= 2))) )) = 0;
wr9 : SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'temperature')) )) <= 1)) )) = 0;
wr10: SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'minimum temperature')) )) <= 1)) )) = 0;
wr11: SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| ((SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'THERMODYNAMIC_TEMPERATURE_MEASURE_WITH_UNIT']) = 2) AND (
it.name = 'maximum temperature')) )) <= 1)) )) = 0;
wr12: SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'specific gravity')) ))
<= 1)) )) = 0;
wr13: SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'surface tension')) ))
<= 1)) )) = 0;
wr14: SIZEOF(QUERY ( spc <* QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (pdr.
used_representation.
name = 'stream phase characteristics') )
| (NOT (SIZEOF(QUERY ( it <* spc.used_representation.items
| ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND (it.name = 'viscosity')) )) <= 1)) )) =
0;
END_ENTITY; -- stream_phase
ENTITY structural_load_connector_classification
SUBTYPE OF (group);
END_ENTITY; -- structural_load_connector_classification
ENTITY structural_system
SUBTYPE OF (product_definition);
WHERE
wr1: SIZEOF(QUERY ( pdr <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION')
| (('PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(pdr.
relating_product_definition.formation.of_product)) AND (pdr.
relating_product_definition.frame_of_reference.name =
'functional occurrence')) )) = 1;
END_ENTITY; -- structural_system
ENTITY support_constraint_representation
SUBTYPE OF (representation);
WHERE
wr1: SIZEOF(SELF.items) >= 3;
wr2: SIZEOF(QUERY ( it <* SELF.items | ((
'PLANT_SPATIAL_CONFIGURATION.MEASURE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name IN ['negative x','positive x',
'negative y','positive y','negative z','positive z',
'negative x rotation','positive x rotation',
'negative y rotation','positive y rotation',
'negative z rotation','positive z rotation'])) )) = 1;
wr3: SIZEOF(QUERY ( it <* SELF.items | (
'PLANT_SPATIAL_CONFIGURATION.RATIO_MEASURE_WITH_UNIT' IN
TYPEOF(it)) )) = 1;
wr4: SIZEOF(QUERY ( it <* SELF.items |
('PLANT_SPATIAL_CONFIGURATION.' +
'DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) )) = 1;
END_ENTITY; -- support_constraint_representation
ENTITY surface
SUPERTYPE OF (ONEOF (elementary_surface,swept_surface,bounded_surface,
offset_surface,surface_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- surface
ENTITY surface_curve
SUPERTYPE OF (ONEOF (intersection_curve,seam_curve) ANDOR
bounded_surface_curve)
SUBTYPE OF (curve);
curve_3d : curve;
associated_geometry : LIST [1:2] OF pcurve_or_surface;
master_representation : preferred_surface_curve_representation;
DERIVE
basis_surface : SET [1:2] OF surface := get_basis_surface(SELF);
WHERE
wr1: curve_3d.dim = 3;
wr2: ('PLANT_SPATIAL_CONFIGURATION.PCURVE' IN TYPEOF(
associated_geometry[1])) OR (master_representation <>
pcurve_s1);
wr3: ('PLANT_SPATIAL_CONFIGURATION.PCURVE' IN TYPEOF(
associated_geometry[2])) OR (master_representation <>
pcurve_s2);
wr4: NOT ('PLANT_SPATIAL_CONFIGURATION.PCURVE' IN TYPEOF(curve_3d));
END_ENTITY; -- surface_curve
ENTITY surface_of_linear_extrusion
SUBTYPE OF (swept_surface);
extrusion_axis : vector;
END_ENTITY; -- surface_of_linear_extrusion
ENTITY surface_of_revolution
SUBTYPE OF (swept_surface);
axis_position : axis1_placement;
DERIVE
axis_line : line := line(axis_position.location,vector(axis_position
.z,1));
END_ENTITY; -- surface_of_revolution
ENTITY surface_patch;
parent_surface : bounded_surface;
u_transition : transition_code;
v_transition : transition_code;
u_sense : BOOLEAN;
v_sense : BOOLEAN;
INVERSE
using_surfaces : BAG [1:?] OF rectangular_composite_surface FOR
segments;
WHERE
wr1: NOT ('PLANT_SPATIAL_CONFIGURATION.CURVE_BOUNDED_SURFACE' IN
TYPEOF(parent_surface));
END_ENTITY; -- surface_patch
ENTITY surface_replica
SUBTYPE OF (surface);
parent_surface : surface;
transformation : cartesian_transformation_operator_3d;
WHERE
wr1: acyclic_surface_replica(SELF,parent_surface);
END_ENTITY; -- surface_replica
ENTITY swage_fitting_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.GROUP_ASSIGNMENT.' +
'ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.GROUP_ASSIGNMENT.' +
'ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'swage') )) = 1)) )) = 0)) )) = 0;
END_ENTITY; -- swage_fitting_classification
ENTITY swept_area_solid
SUPERTYPE OF (ONEOF (revolved_area_solid,extruded_area_solid))
SUBTYPE OF (solid_model);
swept_area : curve_bounded_surface;
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PLANE' IN TYPEOF(swept_area.
basis_surface);
END_ENTITY; -- swept_area_solid
ENTITY swept_face_solid
SUPERTYPE OF (ONEOF (extruded_face_solid,revolved_face_solid))
SUBTYPE OF (solid_model);
swept_face : face_surface;
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.PLANE' IN TYPEOF(swept_face.
face_geometry);
END_ENTITY; -- swept_face_solid
ENTITY swept_surface
SUPERTYPE OF (ONEOF (surface_of_linear_extrusion,
surface_of_revolution))
SUBTYPE OF (surface);
swept_curve : curve;
END_ENTITY; -- swept_surface
ENTITY system_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.' +
'GROUP_ASSIGNMENT.ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (SIZEOF(TYPEOF(it) * [
'PLANT_SPATIAL_CONFIGURATION.DUCTING_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.ELECTRICAL_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'INSTRUMENTATION_AND_CONTROL_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.PIPING_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.STRUCTURAL_SYSTEM']) = 1)) )) =
0)) )) = 0;
END_ENTITY; -- system_classification
ENTITY system_space
SUBTYPE OF (product_definition_shape);
WHERE
wr1: SIZEOF(TYPEOF(SELF.definition) * [
'PLANT_SPATIAL_CONFIGURATION.ELECTRICAL_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.DUCTING_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.' +
'INSTRUMENTATION_AND_CONTROL_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.PIPING_SYSTEM',
'PLANT_SPATIAL_CONFIGURATION.STRUCTURAL_SYSTEM']) = 1;
END_ENTITY; -- system_space
ENTITY thermodynamic_temperature_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.THERMODYNAMIC_TEMPERATURE_UNIT' IN
TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- thermodynamic_temperature_measure_with_unit
ENTITY thermodynamic_temperature_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 1) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- thermodynamic_temperature_unit
ENTITY time_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.TIME_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- time_measure_with_unit
ENTITY time_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 1) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- time_unit
ENTITY topological_representation_item
SUPERTYPE OF (ONEOF (vertex,edge,face_bound,face,connected_face_set,
loop ANDOR path))
SUBTYPE OF (representation_item);
END_ENTITY; -- topological_representation_item
ENTITY toroidal_surface
SUBTYPE OF (elementary_surface);
major_radius : positive_length_measure;
minor_radius : positive_length_measure;
END_ENTITY; -- toroidal_surface
ENTITY torus
SUBTYPE OF (geometric_representation_item);
position : axis1_placement;
major_radius : positive_length_measure;
minor_radius : positive_length_measure;
WHERE
wr1: major_radius > minor_radius;
END_ENTITY; -- torus
ENTITY trimmed_curve
SUBTYPE OF (bounded_curve);
basis_curve : curve;
trim_1 : SET [1:2] OF trimming_select;
trim_2 : SET [1:2] OF trimming_select;
sense_agreement : BOOLEAN;
master_representation : trimming_preference;
WHERE
wr1: (HIINDEX(trim_1) = 1) XOR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2]));
wr2: (HIINDEX(trim_2) = 1) XOR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2]));
END_ENTITY; -- trimmed_curve
ENTITY truncated_pyramid
SUBTYPE OF (boolean_result);
END_ENTITY; -- truncated_pyramid
ENTITY type_qualifier;
name : label;
END_ENTITY; -- type_qualifier
ENTITY uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- uniform_curve
ENTITY uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- uniform_surface
ENTITY valve_classification
SUBTYPE OF (group);
WHERE
wr1: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.GROUP_ASSIGNMENT.' +
'ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( it <* ca.items | (
NOT (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it))) )) = 0)) )) = 0;
wr2: SIZEOF(QUERY ( ca <* QUERY ( ga <* USEDIN(SELF,
'PLANT_SPATIAL_CONFIGURATION.GROUP_ASSIGNMENT.' +
'ASSIGNED_GROUP')
| ('PLANT_SPATIAL_CONFIGURATION.CLASSIFICATION_ASSIGNMENT'
IN TYPEOF(ga)) ) | (NOT (SIZEOF(QUERY ( pcd <*
QUERY ( it <* ca.items | (
'PLANT_SPATIAL_CONFIGURATION.PIPING_COMPONENT_DEFINITION' IN
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( prpc <* USEDIN(pcd.
formation.of_product,'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
category_in_tree(prpc,'valve') )) = 1)) )) = 0)) )) = 0;
END_ENTITY; -- valve_classification
ENTITY vector
SUBTYPE OF (geometric_representation_item);
orientation : direction;
magnitude : length_measure;
WHERE
wr1: magnitude >= 0;
END_ENTITY; -- vector
ENTITY versioned_action_request;
id : identifier;
version : label;
purpose : text;
description : text;
END_ENTITY; -- versioned_action_request
ENTITY vertex
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- vertex
ENTITY volume_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
wr1: 'PLANT_SPATIAL_CONFIGURATION.VOLUME_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- volume_measure_with_unit
ENTITY volume_unit
SUBTYPE OF (named_unit);
WHERE
wr1: (SELF\named_unit.dimensions.length_exponent = 3) AND (SELF\
named_unit.dimensions.mass_exponent = 0) AND (SELF\
named_unit.dimensions.time_exponent = 0) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0) AND (
SELF\named_unit.dimensions.
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- volume_unit
RULE application_context_requires_ap_definition FOR (application_context,
application_protocol_definition);
WHERE
wr1: SIZEOF(QUERY ( ac <* application_context | (NOT (SIZEOF(
QUERY ( apd <* application_protocol_definition | ((ac :=: apd.
application) AND (apd.
application_interpreted_model_schema_name =
'plant_spatial_configuration')) )) = 1)) )) = 0;
END_RULE; -- application_context_requires_ap_definition
RULE approval_requires_approval_date_time FOR (approval_date_time,
approval);
WHERE
wr1: SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( adt <*
approval_date_time | (app :=: adt.dated_approval) )) = 1)) ))
= 0;
END_RULE; -- approval_requires_approval_date_time
RULE approval_requires_approval_person_organization FOR (
approval_person_organization, approval);
WHERE
wr1: SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( apo <*
approval_person_organization | (app :=: apo.
authorized_approval) )) = 1)) )) = 0;
END_RULE; -- approval_requires_approval_person_organization
RULE change_action_requires_date FOR (change_action,
plant_spatial_configuration_date_assignment);
WHERE
wr1: SIZEOF(QUERY ( ca <* change_action | (NOT (SIZEOF(
QUERY ( pscda <* plant_spatial_configuration_date_assignment
| (ca IN pscda.items) )) = 1)) )) = 0;
END_RULE; -- change_action_requires_date
RULE change_item_requires_creation_date FOR (
plant_spatial_configuration_change_assignment,
plant_spatial_configuration_date_assignment);
WHERE
wr1: SIZEOF(QUERY ( pscca <*
plant_spatial_configuration_change_assignment | (NOT (SIZEOF(
QUERY ( ch_it <* pscca.items | (NOT (SIZEOF(QUERY ( pscda <*
plant_spatial_configuration_date_assignment | ((NOT (ch_it IN
pscda.items)) OR (pscda.role.name = 'creation date')) ))
= 1)) )) = 0)) )) = 0;
END_RULE; -- change_item_requires_creation_date
RULE change_item_requires_id FOR (
plant_spatial_configuration_change_assignment,
change_item_id_assignment);
WHERE
wr1: SIZEOF(QUERY ( pscca <*
plant_spatial_configuration_change_assignment | (NOT (SIZEOF(
QUERY ( ch_it <* pscca.items | (NOT (SIZEOF(QUERY ( ciia <*
change_item_id_assignment | (ch_it IN ciia.items) )) = 1)) ))
= 0)) )) = 0;
END_RULE; -- change_item_requires_id
RULE change_life_cycle_stage_usage_requires_approval FOR (
versioned_action_request,
plant_spatial_configuration_approval_assignment);
WHERE
wr1: SIZEOF(QUERY ( vareq <* versioned_action_request | (NOT (SIZEOF(
QUERY ( pscaa <*
plant_spatial_configuration_approval_assignment | (vareq IN
pscaa.items) )) = 1)) )) = 0;
END_RULE; -- change_life_cycle_stage_usage_requires_approval
RULE change_life_cycle_stage_usage_requires_stage FOR (
versioned_action_request, action_request_status);
WHERE
wr1: SIZEOF(QUERY ( vareq <* versioned_action_request | (NOT (SIZEOF(
QUERY ( ars <* action_request_status | (vareq :=: ars.
assigned_request) )) = 1)) )) = 0;
END_RULE; -- change_life_cycle_stage_usage_requires_stage
RULE compatible_dimension FOR (cartesian_point, direction,
representation_context, geometric_representation_context);
WHERE
wr1: SIZEOF(QUERY ( x <* cartesian_point | (SIZEOF(QUERY ( y <*
geometric_representation_context | (item_in_context(x,y) AND (
HIINDEX(x.coordinates) <> y.coordinate_space_dimension)) )) >
0) )) = 0;
wr2: SIZEOF(QUERY ( x <* direction | (SIZEOF(QUERY ( y <*
geometric_representation_context | (item_in_context(x,y) AND (
HIINDEX(x.direction_ratios) <> y.
coordinate_space_dimension)) )) > 0) )) = 0;
END_RULE; -- compatible_dimension
RULE dependent_instantiable_application_context FOR (
application_context);
WHERE
wr1: SIZEOF(QUERY ( ac <* application_context | (NOT (SIZEOF(USEDIN(ac,
'')) >= 1)) )) = 0;
END_RULE; -- dependent_instantiable_application_context
RULE dependent_instantiable_product_context FOR (product_context);
WHERE
wr1: SIZEOF(QUERY ( pc <* product_context | (NOT (SIZEOF(USEDIN(pc,''))
>= 1)) )) = 0;
END_RULE; -- dependent_instantiable_product_context
RULE dependent_instantiable_product_definition_context FOR (
product_definition_context);
WHERE
wr1: SIZEOF(QUERY ( pdc <* product_definition_context | (NOT (SIZEOF(
USEDIN(pdc,'')) >= 1)) )) = 0;
END_RULE; -- dependent_instantiable_product_definition_context
RULE product_context_discipline_type_constraint FOR (product_context);
WHERE
wr1: SIZEOF(QUERY ( pc <* product_context | (NOT (pc.discipline_type =
'process plant')) )) = 0;
END_RULE; -- product_context_discipline_type_constraint
RULE product_definition_context_name_constraint FOR (
product_definition_context);
WHERE
wr1: SIZEOF(QUERY ( pdc <* product_definition_context | (NOT (pdc.name
IN ['functional definition','physical definition',
'functional occurrence','physical occurrence',
'catalogue definition','fabrication assembly'])) )) = 0;
END_RULE; -- product_definition_context_name_constraint
RULE product_definition_usage_constraint FOR (product_definition);
WHERE
wr1: SIZEOF(QUERY ( pd <* product_definition | ((pd.frame_of_reference
.name = 'physical occurrence') AND (NOT (SIZEOF(
QUERY ( pdr <* USEDIN(pd,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION') | (SIZEOF(TYPEOF(pdr) * [
'PLANT_SPATIAL_CONFIGURATION.PRODUCT_DEFINITION_USAGE',
'PLANT_SPATIAL_CONFIGURATION.MAKE_FROM_USAGE_OPTION',
'PLANT_SPATIAL_CONFIGURATION.ASSEMBLY_COMPONENT_USAGE'])
= 1) )) <= 1))) )) = 0;
wr2: SIZEOF(QUERY ( pd <* product_definition | ((pd.frame_of_reference
.name = 'physical definition') AND (NOT (SIZEOF(
QUERY ( pdr <* USEDIN(pd,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP.'
+ 'RELATING_PRODUCT_DEFINITION') | (pdr.
related_product_definition.frame_of_reference.name =
'physical occurrence') )) <= 1))) )) = 0;
END_RULE; -- product_definition_usage_constraint
RULE subtype_exclusive_characterized_object FOR (characterized_object);
WHERE
wr1: SIZEOF (QUERY (co <*characterized_object |
NOT (SIZEOF (['PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_COMPONENT_CLASS',
'PLANT_SPATIAL_CONFIGURATION.SITE',
'PLANT_SPATIAL_CONFIGURATION.STREAM_DESIGN_CASE']
* TYPEOF (co)) <= 1))) = 0;
END_RULE; -- subtype_exclusive_characterized_object
RULE subtype_exclusive_shape_representation FOR (shape_representation);
WHERE
wr1: SIZEOF (QUERY (sr <*shape_representation|
NOT (SIZEOF (['PLANT_SPATIAL_CONFIGURATION.' +
'ADVANCED_CSG_SHAPE_REPRESENTATION',
'PLANT_SPATIAL_CONFIGURATION.HYBRID_SHAPE_REPRESENTATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'PIPING_DESIGN_CSG_SHAPE_REPRESENTATION']
* TYPEOF (sr)) <= 1))) = 0;
END_RULE; -- subtype_exclusive_shape_representation
RULE subtype_mandatory_externally_defined_item FOR (
externally_defined_item);
WHERE
wr1: SIZEOF(QUERY ( edi <* externally_defined_item | (NOT (SIZEOF([
'PLANT_SPATIAL_CONFIGURATION.CATALOGUE_CONNECTOR',
'PLANT_SPATIAL_CONFIGURATION.' +
'EXTERNALLY_DEFINED_CLASSIFICATION',
'PLANT_SPATIAL_CONFIGURATION.' +
'EXTERNALLY_DEFINED_PLANT_ITEM_DEFINITION']
* TYPEOF(edi)) = 1)) )) = 0;
END_RULE; -- subtype_mandatory_externally_defined_item
RULE subtype_mandatory_pre_defined_item FOR (pre_defined_item);
WHERE
wr1: SIZEOF(QUERY ( pdi <* pre_defined_item | (NOT (
'PLANT_SPATIAL_CONFIGURATION.KNOWN_SOURCE'
IN TYPEOF(pdi))) )) = 0;
END_RULE; -- subtype_mandatory_pre_defined_item
RULE versioned_action_request_requires_change_action FOR (change_action,
versioned_action_request);
WHERE
wr1: SIZEOF(QUERY ( vareq <* versioned_action_request | (NOT (SIZEOF(
QUERY ( ca <* change_action | (vareq IN ca.directive.
requests) )) = 1)) )) = 0;
END_RULE; -- versioned_action_request_requires_change_action
FUNCTION acyclic_curve_replica(
rep: curve_replica;
parent: curve
): BOOLEAN;
IF NOT ('PLANT_SPATIAL_CONFIGURATION.CURVE_REPLICA' IN TYPEOF(parent))
THEN
RETURN(TRUE);
END_IF;
IF parent :=: rep THEN
RETURN(FALSE);
ELSE
RETURN(acyclic_curve_replica(rep,parent\curve_replica.parent_curve));
END_IF;
END_FUNCTION; -- acyclic_curve_replica
FUNCTION acyclic_mapped_representation(
parent_set: SET OF representation;
children_set: SET OF representation_item
): BOOLEAN;
LOCAL
i : INTEGER;
x : SET OF representation_item;
y : SET OF representation_item;
END_LOCAL;
x := QUERY ( z <* children_set | (
'PLANT_SPATIAL_CONFIGURATION.MAPPED_ITEM' IN TYPEOF(z)) );
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x) BY 1;
IF x[i]\mapped_item.mapping_source.mapped_representation IN
parent_set THEN
RETURN(FALSE);
END_IF;
IF NOT acyclic_mapped_representation(parent_set + x[i]\mapped_item
.mapping_source.mapped_representation,x[i]\mapped_item.
mapping_source.mapped_representation.items) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
x := children_set - x;
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x) BY 1;
y := QUERY ( z <* bag_to_set(USEDIN(x[i],'')) | (
'PLANT_SPATIAL_CONFIGURATION.REPRESENTATION_ITEM'
IN TYPEOF(z)) );
IF NOT acyclic_mapped_representation(parent_set,y) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
END_FUNCTION; -- acyclic_mapped_representation
FUNCTION acyclic_point_replica(
rep: point_replica;
parent: point
): BOOLEAN;
IF NOT ('PLANT_SPATIAL_CONFIGURATION.POINT_REPLICA' IN TYPEOF(parent))
THEN
RETURN(TRUE);
END_IF;
IF parent :=: rep THEN
RETURN(FALSE);
ELSE
RETURN(acyclic_point_replica(rep,parent\point_replica.parent_pt));
END_IF;
END_FUNCTION; -- acyclic_point_replica
FUNCTION acyclic_product_category_relationship(
relation: product_category_relationship;
children: SET OF product_category
): LOGICAL;
LOCAL
i : INTEGER;
x : SET OF product_category_relationship;
local_children : SET OF product_category;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(children) BY 1;
IF relation.category :=: children[i] THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
x := bag_to_set(USEDIN(relation.category,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'));
local_children := children + relation.category;
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x) BY 1;
IF NOT acyclic_product_category_relationship(x[i],local_children)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
END_FUNCTION; -- acyclic_product_category_relationship
FUNCTION acyclic_product_definition_relationship(
relation: product_definition_relationship;
relatives: SET OF product_definition;
specific_relation: STRING
): LOGICAL;
LOCAL
i : INTEGER;
x : SET OF product_definition_relationship;
local_relatives : SET OF product_definition;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(relatives) BY 1;
IF relation.relating_product_definition :=: relatives[i] THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
x := bag_to_set(USEDIN(relation.relating_product_definition,
specific_relation));
local_relatives := relatives + relation.relating_product_definition;
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x) BY 1;
IF NOT acyclic_product_definition_relationship(x[i],
local_relatives,specific_relation) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN(TRUE);
END_FUNCTION; -- acyclic_product_definition_relationship
FUNCTION acyclic_set_replica(
rep: geometric_set_replica;
parent: geometric_set
): BOOLEAN;
IF NOT ('PLANT_SPATIAL_CONFIGURATION.GEOMETRIC_SET_REPLICA' IN TYPEOF(
parent)) THEN
RETURN(TRUE);
END_IF;
IF parent :=: rep THEN
RETURN(FALSE);
ELSE
RETURN(acyclic_set_replica(rep,parent\geometric_set_replica.
parent_set));
END_IF;
END_FUNCTION; -- acyclic_set_replica
FUNCTION acyclic_surface_replica(
rep: surface_replica;
parent: surface
): BOOLEAN;
IF NOT ('PLANT_SPATIAL_CONFIGURATION.SURFACE_REPLICA'
IN TYPEOF(parent))
THEN
RETURN(TRUE);
END_IF;
IF parent :=: rep THEN
RETURN(FALSE);
ELSE
RETURN(acyclic_surface_replica(rep,parent\surface_replica.
parent_surface));
END_IF;
END_FUNCTION; -- acyclic_surface_replica
FUNCTION associated_surface(
arg: pcurve_or_surface
): surface;
LOCAL
surf : surface;
END_LOCAL;
IF 'PLANT_SPATIAL_CONFIGURATION.PCURVE' IN TYPEOF(arg) THEN
surf := arg\pcurve.basis_surface;
ELSE
surf := arg;
END_IF;
RETURN(surf);
END_FUNCTION; -- associated_surface
FUNCTION bag_to_set(
the_bag: BAG OF GENERIC:intype
): SET OF GENERIC:intype;
LOCAL
i : INTEGER;
the_set : SET OF GENERIC:intype := [];
END_LOCAL;
IF SIZEOF(the_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(the_bag) BY 1;
the_set := the_set + the_bag[i];
END_REPEAT;
END_IF;
RETURN(the_set);
END_FUNCTION; -- bag_to_set
FUNCTION base_axis(
dim: INTEGER;
axis1, axis2, axis3: direction
): LIST [2:3] OF direction;
LOCAL
u : LIST [2:3] OF direction;
vec : direction;
factor : REAL;
END_LOCAL;
IF dim = 3 THEN
u[3] := NVL(normalise(axis3),direction([0,0,1]));
u[1] := first_proj_axis(u[3],axis1);
u[2] := second_proj_axis(u[3],u[1],axis2);
ELSE
u[3] := ?;
IF EXISTS(axis1) THEN
u[1] := normalise(axis1);
u[2] := orthogonal_complement(u[1]);
IF EXISTS(axis2) THEN
factor := dot_product(axis2,u[2]);
IF factor < 0 THEN
u[2].direction_ratios[1] := -u[2].direction_ratios[1];
u[2].direction_ratios[2] := -u[2].direction_ratios[2];
END_IF;
END_IF;
ELSE
IF EXISTS(axis2) THEN
u[2] := normalise(axis2);
u[1] := orthogonal_complement(u[2]);
u[1].direction_ratios[1] := -u[1].direction_ratios[1];
u[1].direction_ratios[2] := -u[1].direction_ratios[2];
ELSE
u[1].direction_ratios[1] := 1;
u[1].direction_ratios[2] := 0;
u[2].direction_ratios[1] := 0;
u[2].direction_ratios[2] := 1;
END_IF;
END_IF;
END_IF;
RETURN(u);
END_FUNCTION; -- base_axis
FUNCTION boolean_choose(
b: BOOLEAN;
choice1, choice2: GENERIC:item
): GENERIC:item;
IF b THEN
RETURN(choice1);
ELSE
RETURN(choice2);
END_IF;
END_FUNCTION; -- boolean_choose
FUNCTION build_2axes(
ref_direction: direction
): LIST [2:2] OF direction;
LOCAL
u : LIST [2:2] OF direction;
END_LOCAL;
u[1] := NVL(normalise(ref_direction),direction([1,0]));
u[2] := orthogonal_complement(u[1]);
RETURN(u);
END_FUNCTION; -- build_2axes
FUNCTION build_axes(
axis, ref_direction: direction
): LIST [3:3] OF direction;
LOCAL
u : LIST [3:3] OF direction;
END_LOCAL;
u[3] := NVL(normalise(axis),direction([0,0,1]));
u[1] := first_proj_axis(u[3],ref_direction);
u[2] := normalise(cross_product(u[3],u[1]))\vector.orientation;
RETURN(u);
END_FUNCTION; -- build_axes
FUNCTION build_transformed_set(
tr: cartesian_transformation_operator;
gset: geometric_set
): SET [0:?] OF geometric_set_select;
LOCAL
trcurve : curve;
s : SET [1:?] OF geometric_set_select := gset.elements;
trpoint : point;
trset : SET [0:?] OF geometric_set_select := [];
trsurf : surface;
END_LOCAL;
REPEAT j := 1 TO SIZEOF(s) BY 1;
IF 'PLANT_SPATIAL_CONFIGURATION.CURVE' IN TYPEOF(s[j]) THEN
trset := trset + curve_replica(s[j],tr);
ELSE
IF 'PLANT_SPATIAL_CONFIGURATION.POINT' IN TYPEOF(s[j]) THEN
trset := trset + point_replica(s[j],tr);
ELSE
IF 'PLANT_SPATIAL_CONFIGURATION.SURFACE' IN TYPEOF(s[j]) THEN
trset := trset + surface_replica(s[j],tr ||
cartesian_transformation_operator_3d(?));
END_IF;
END_IF;
END_IF;
END_REPEAT;
RETURN(trset);
END_FUNCTION; -- build_transformed_set
FUNCTION category_in_tree(
cat: product_category;
val: STRING
): BOOLEAN;
IF cat.name = val THEN
RETURN(TRUE);
ELSE
RETURN(SIZEOF(QUERY ( pc <* USEDIN(cat,
'PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY') | category_in_tree(
pc,val) )) = 1);
END_IF;
RETURN(FALSE);
END_FUNCTION; -- category_in_tree
FUNCTION conditional_reverse(
p: BOOLEAN;
an_item: reversible_topology
): reversible_topology;
IF p THEN
RETURN(an_item);
ELSE
RETURN(topology_reversed(an_item));
END_IF;
END_FUNCTION; -- conditional_reverse
FUNCTION constraints_composite_curve_on_surface(
c: composite_curve_on_surface
): BOOLEAN;
LOCAL
n_segments : INTEGER := SIZEOF(c.segments);
END_LOCAL;
REPEAT k := 1 TO n_segments BY 1;
IF (NOT ('PLANT_SPATIAL_CONFIGURATION.PCURVE' IN TYPEOF(c\
composite_curve.segments[k].parent_curve))) AND (NOT (
'PLANT_SPATIAL_CONFIGURATION.SURFACE_CURVE' IN TYPEOF(c\
composite_curve.segments[k].parent_curve))) AND (NOT (
'PLANT_SPATIAL_CONFIGURATION.COMPOSITE_CURVE_ON_SURFACE' IN
TYPEOF(c\composite_curve.segments[k].parent_curve))) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION; -- constraints_composite_curve_on_surface
FUNCTION constraints_geometry_shell_based_wireframe_model(
m: shell_based_wireframe_model
): BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT j := 1 TO SIZEOF(m.sbwm_boundary) BY 1;
IF (NOT ('PLANT_SPATIAL_CONFIGURATION.WIRE_SHELL' IN TYPEOF(m.
sbwm_boundary[j]))) AND (NOT (
'PLANT_SPATIAL_CONFIGURATION.VERTEX_SHELL' IN TYPEOF(m.
sbwm_boundary[j]))) THEN
result := FALSE;
RETURN(result);
END_IF;
END_REPEAT;
RETURN(result);
END_FUNCTION; -- constraints_geometry_shell_based_wireframe_model
FUNCTION constraints_param_b_spline(
degree, up_knots, up_cp: INTEGER;
knot_mult: LIST OF INTEGER;
knots: LIST OF parameter_value
): BOOLEAN;
LOCAL
k : INTEGER;
l : INTEGER;
sum : INTEGER;
result : BOOLEAN := TRUE;
END_LOCAL;
sum := knot_mult[1];
REPEAT i := 2 TO up_knots BY 1;
sum := sum + knot_mult[i];
END_REPEAT;
IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR (sum <> (
degree + up_cp + 2)) THEN
result := FALSE;
RETURN(result);
END_IF;
k := knot_mult[1];
IF (k < 1) OR (k > (degree + 1)) THEN
result := FALSE;
RETURN(result);
END_IF;
REPEAT i := 2 TO up_knots BY 1;
IF (knot_mult[i] < 1) OR (knots[i] <= knots[i - 1]) THEN
result := FALSE;
RETURN(result);
END_IF;
k := knot_mult[i];
IF (i < up_knots) AND (k > degree) THEN
result := FALSE;
RETURN(result);
END_IF;
IF (i = up_knots) AND (k > (degree + 1)) THEN
result := FALSE;
RETURN(result);
END_IF;
END_REPEAT;
RETURN(result);
END_FUNCTION; -- constraints_param_b_spline
FUNCTION constraints_rectangular_composite_surface(
s: rectangular_composite_surface
): BOOLEAN;
REPEAT i := 1 TO s.n_u BY 1;
REPEAT j := 1 TO s.n_v BY 1;
IF NOT (('PLANT_SPATIAL_CONFIGURATION.B_SPLINE_SURFACE' IN TYPEOF(
s.segments[i][j].parent_surface)) OR (
'PLANT_SPATIAL_CONFIGURATION.RECTANGULAR_TRIMMED_SURFACE' IN
TYPEOF(s.segments[i][j].parent_surface))) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO s.n_u - 1 BY 1;
REPEAT j := 1 TO s.n_v BY 1;
IF s.segments[i][j].u_transition = discontinuous THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO s.n_u BY 1;
REPEAT j := 1 TO s.n_v - 1 BY 1;
IF s.segments[i][j].v_transition = discontinuous THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION; -- constraints_rectangular_composite_surface
FUNCTION cross_product(
arg1, arg2: direction
): vector;
LOCAL
v2 : LIST [3:3] OF REAL;
v1 : LIST [3:3] OF REAL;
mag : REAL;
res : direction;
result : vector;
END_LOCAL;
IF (NOT EXISTS(arg1)) OR (arg1.dim = 2) OR (NOT EXISTS(arg2)) OR (arg2
.dim = 2) THEN
RETURN(?);
ELSE
BEGIN
v1 := normalise(arg1)\direction.direction_ratios;
v2 := normalise(arg2)\direction.direction_ratios;
res.direction_ratios[1] := (v1[2] * v2[3]) - (v1[3] * v2[2]);
res.direction_ratios[2] := (v1[3] * v2[1]) - (v1[1] * v2[3]);
res.direction_ratios[3] := (v1[1] * v2[2]) - (v1[2] * v2[1]);
mag := 0;
REPEAT i := 1 TO 3 BY 1;
mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]);
END_REPEAT;
IF mag > 0 THEN
result.orientation := res;
result.magnitude := SQRT(mag);
ELSE
result.orientation := arg1;
result.magnitude := 0;
END_IF;
RETURN(result);
END;
END_IF;
END_FUNCTION; -- cross_product
FUNCTION curve_weights_positive(
b: rational_b_spline_curve
): BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 0 TO b.upper_index_on_control_points BY 1;
IF b.weights[i] <= 0 THEN
result := FALSE;
RETURN(result);
END_IF;
END_REPEAT;
RETURN(result);
END_FUNCTION; -- curve_weights_positive
FUNCTION derive_dimensional_exponents(
x: unit
): dimensional_exponents;
LOCAL
i : INTEGER;
result : dimensional_exponents := dimensional_exponents(0,0,0,0,0,0,
0);
END_LOCAL;
IF 'PLANT_SPATIAL_CONFIGURATION.DERIVED_UNIT' IN TYPEOF(x) THEN
REPEAT i := LOINDEX(x.elements) TO HIINDEX(x.elements) BY 1;
result.length_exponent := result.length_exponent + (x.elements[i].
exponent * x.elements[i].unit.dimensions.length_exponent);
result.mass_exponent := result.mass_exponent + (x.elements[i].
exponent * x.elements[i].unit.dimensions.mass_exponent);
result.time_exponent := result.time_exponent + (x.elements[i].
exponent * x.elements[i].unit.dimensions.time_exponent);
result.electric_current_exponent := result.
electric_current_exponent + (x.elements[i].exponent * x.
elements[i].unit.dimensions.electric_current_exponent);
result.thermodynamic_temperature_exponent := result.
thermodynamic_temperature_exponent + (x.elements[i].exponent *
x.elements[i].unit.dimensions.
thermodynamic_temperature_exponent);
result.amount_of_substance_exponent := result.
amount_of_substance_exponent + (x.elements[i].exponent * x.
elements[i].unit.dimensions.amount_of_substance_exponent);
result.luminous_intensity_exponent := result.
luminous_intensity_exponent + (x.elements[i].exponent * x.
elements[i].unit.dimensions.luminous_intensity_exponent);
END_REPEAT;
ELSE
result := x.dimensions;
END_IF;
RETURN(result);
END_FUNCTION; -- derive_dimensional_exponents
FUNCTION dimension_of(
item: geometric_representation_item
): dimension_count;
LOCAL
x : SET OF representation;
y : representation_context;
END_LOCAL;
x := using_representations(item);
y := x[1].context_of_items;
RETURN(y\geometric_representation_context.coordinate_space_dimension);
END_FUNCTION; -- dimension_of
FUNCTION dimensions_for_si_unit(
n: si_unit_name
): dimensional_exponents;
CASE n OF
metre : RETURN(dimensional_exponents(1,0,0,0,0,0,0));
gram : RETURN(dimensional_exponents(0,1,0,0,0,0,0));
second : RETURN(dimensional_exponents(0,0,1,0,0,0,0));
ampere : RETURN(dimensional_exponents(0,0,0,1,0,0,0));
kelvin : RETURN(dimensional_exponents(0,0,0,0,1,0,0));
mole : RETURN(dimensional_exponents(0,0,0,0,0,1,0));
candela : RETURN(dimensional_exponents(0,0,0,0,0,0,1));
radian : RETURN(dimensional_exponents(0,0,0,0,0,0,0));
steradian : RETURN(dimensional_exponents(0,0,0,0,0,0,0));
hertz : RETURN(dimensional_exponents(0,0,-1,0,0,0,0));
newton : RETURN(dimensional_exponents(1,1,-2,0,0,0,0));
pascal : RETURN(dimensional_exponents(-1,1,-2,0,0,0,0));
joule : RETURN(dimensional_exponents(2,1,-2,0,0,0,0));
watt : RETURN(dimensional_exponents(2,1,-3,0,0,0,0));
coulomb : RETURN(dimensional_exponents(0,0,1,1,0,0,0));
volt : RETURN(dimensional_exponents(2,1,-3,-1,0,0,0));
farad : RETURN(dimensional_exponents(-2,-1,4,1,0,0,0));
ohm : RETURN(dimensional_exponents(2,1,-3,-2,0,0,0));
siemens : RETURN(dimensional_exponents(-2,-1,3,2,0,0,0));
weber : RETURN(dimensional_exponents(2,1,-2,-1,0,0,0));
tesla : RETURN(dimensional_exponents(0,1,-2,-1,0,0,0));
henry : RETURN(dimensional_exponents(2,1,-2,-2,0,0,0));
degree_celsius : RETURN(dimensional_exponents(0,0,0,0,1,0,0));
lumen : RETURN(dimensional_exponents(0,0,0,0,0,0,1));
lux : RETURN(dimensional_exponents(-2,0,0,0,0,0,1));
becquerel : RETURN(dimensional_exponents(0,0,-1,0,0,0,0));
gray : RETURN(dimensional_exponents(2,0,-2,0,0,0,0));
sievert : RETURN(dimensional_exponents(2,0,-2,0,0,0,0));
END_CASE;
END_FUNCTION; -- dimensions_for_si_unit
FUNCTION dot_product(
arg1, arg2: direction
): REAL;
LOCAL
ndim : INTEGER;
scalar : REAL;
vec1 : direction;
vec2 : direction;
END_LOCAL;
IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) THEN
scalar := ?;
ELSE
IF arg1.dim <> arg2.dim THEN
scalar := ?;
ELSE
BEGIN
vec1 := normalise(arg1);
vec2 := normalise(arg2);
ndim := arg1.dim;
scalar := 0;
REPEAT i := 1 TO ndim BY 1;
scalar := scalar + (vec1.direction_ratios[i] * vec2.
direction_ratios[i]);
END_REPEAT;
END;
END_IF;
END_IF;
RETURN(scalar);
END_FUNCTION; -- dot_product
FUNCTION edge_reversed(
an_edge: edge
): edge;
LOCAL
the_reverse : edge;
END_LOCAL;
IF 'PLANT_SPATIAL_CONFIGURATION.ORIENTED_EDGE' IN TYPEOF(an_edge)
THEN
the_reverse := oriented_edge(an_edge\oriented_edge.edge_element,NOT
an_edge\oriented_edge.orientation);
ELSE
the_reverse := oriented_edge(an_edge,FALSE);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- edge_reversed
FUNCTION face_bound_reversed(
a_face_bound: face_bound
): face_bound;
LOCAL
the_reverse : face_bound;
END_LOCAL;
IF 'PLANT_SPATIAL_CONFIGURATION.FACE_OUTER_BOUND' IN TYPEOF(
a_face_bound) THEN
the_reverse := face_bound(a_face_bound\face_bound.bound,NOT
a_face_bound\face_bound.orientation);
ELSE
the_reverse := face_bound(a_face_bound.bound,NOT a_face_bound.
orientation);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- face_bound_reversed
FUNCTION face_reversed(
a_face: face
): face;
LOCAL
the_reverse : face;
END_LOCAL;
IF 'PLANT_SPATIAL_CONFIGURATION.ORIENTED_FACE' IN TYPEOF(a_face) THEN
the_reverse := oriented_face(a_face\oriented_face.face_element,NOT
a_face\oriented_face.orientation);
ELSE
the_reverse := oriented_face(a_face,FALSE);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- face_reversed
FUNCTION first_proj_axis(
z_axis, arg: direction
): direction;
LOCAL
x_vec : vector;
v : direction;
z : direction;
x_axis : direction;
END_LOCAL;
IF (NOT EXISTS(z_axis)) OR (NOT EXISTS(arg)) OR (arg.dim <> 3) THEN
x_axis := ?;
ELSE
z_axis := normalise(z_axis);
IF NOT EXISTS(arg) THEN
IF z_axis <> direction([1,0,0]) THEN
v := direction([1,0,0]);
ELSE
v := direction([0,1,0]);
END_IF;
ELSE
IF cross_product(arg,z).magnitude = 0 THEN
RETURN(?);
ELSE
v := normalise(arg);
END_IF;
END_IF;
x_vec := scalar_times_vector(dot_product(v,z),z_axis);
x_axis := vector_difference(v,x_vec).orientation;
x_axis := normalise(x_axis);
END_IF;
RETURN(x_axis);
END_FUNCTION; -- first_proj_axis
FUNCTION get_basis_surface(
c: curve_on_surface
): SET [0:2] OF surface;
LOCAL
surfs : SET [0:2] OF surface;
n : INTEGER;
END_LOCAL;
surfs := [];
IF 'PLANT_SPATIAL_CONFIGURATION.PCURVE' IN TYPEOF(c) THEN
surfs := [c\pcurve.basis_surface];
ELSE
IF 'PLANT_SPATIAL_CONFIGURATION.SURFACE_CURVE' IN TYPEOF(c) THEN
n := SIZEOF(c\surface_curve.associated_geometry);
REPEAT i := 1 TO n BY 1;
surfs := surfs + associated_surface(c\surface_curve.
associated_geometry[i]);
END_REPEAT;
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(
c) THEN
n := SIZEOF(c\composite_curve_on_surface.segments);
surfs := get_basis_surface(c\composite_curve_on_surface.segments[1].
parent_curve);
IF n > 1 THEN
REPEAT i := 2 TO n BY 1;
surfs := surfs * get_basis_surface(c\composite_curve_on_surface.
segments[i].parent_curve);
END_REPEAT;
END_IF;
END_IF;
RETURN(surfs);
END_FUNCTION; -- get_basis_surface
FUNCTION item_in_context(
item: representation_item;
cntxt: representation_context
): BOOLEAN;
LOCAL
i : INTEGER;
y : BAG OF representation_item;
END_LOCAL;
IF SIZEOF(USEDIN(item,
'PLANT_SPATIAL_CONFIGURATION.REPRESENTATION.ITEMS') * cntxt.
representations_in_context) > 0 THEN
RETURN(TRUE);
ELSE
y := QUERY ( z <* USEDIN(item,'') | (
'PLANT_SPATIAL_CONFIGURATION.' +
'REPRESENTATION_ITEM' IN TYPEOF(z)) );
IF SIZEOF(y) > 0 THEN
REPEAT i := 1 TO HIINDEX(y) BY 1;
IF item_in_context(y[i],cntxt) THEN
RETURN(TRUE);
END_IF;
END_REPEAT;
END_IF;
END_IF;
RETURN(FALSE);
END_FUNCTION; -- item_in_context
FUNCTION leap_year(
year: year_number
): BOOLEAN;
IF (((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) =
0) THEN
RETURN(TRUE);
ELSE
RETURN(FALSE);
END_IF;
END_FUNCTION; -- leap_year
FUNCTION list_face_loops(
f: face
): LIST [0:?] OF loop;
LOCAL
loops : LIST [0:?] OF loop := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(f.bounds) BY 1;
loops := loops + f.bounds[i].bound;
END_REPEAT;
RETURN(loops);
END_FUNCTION; -- list_face_loops
FUNCTION list_of_topology_reversed(
a_list: list_of_reversible_topology_item
): list_of_reversible_topology_item;
LOCAL
the_reverse : list_of_reversible_topology_item;
END_LOCAL;
the_reverse := [];
REPEAT i := 1 TO SIZEOF(a_list) BY 1;
the_reverse := topology_reversed(a_list[i]) + the_reverse;
END_REPEAT;
RETURN(the_reverse);
END_FUNCTION; -- list_of_topology_reversed
FUNCTION list_to_array(
lis: LIST [0:?] OF GENERIC:t;
low, u: INTEGER
): ARRAY [low:u] OF GENERIC:t;
LOCAL
n : INTEGER;
res : ARRAY [low:u] OF GENERIC:t;
END_LOCAL;
n := SIZEOF(lis);
IF n <> ((u - low) + 1) THEN
RETURN(?);
ELSE
REPEAT i := 1 TO n BY 1;
res[(low + i) - 1] := lis[i];
END_REPEAT;
RETURN(res);
END_IF;
END_FUNCTION; -- list_to_array
FUNCTION list_to_set(
l: LIST [0:?] OF GENERIC:t
): SET OF GENERIC:t;
LOCAL
s : SET OF GENERIC:t := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(l) BY 1;
s := s + l[i];
END_REPEAT;
RETURN(s);
END_FUNCTION; -- list_to_set
FUNCTION make_array_of_array(
lis: LIST [1:?] OF LIST [1:?] OF GENERIC:t;
low1, u1, low2, u2: INTEGER
): ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t;
LOCAL
n2 : INTEGER;
n1 : INTEGER;
res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t;
resl : LIST [1:?] OF ARRAY [low2:u2] OF GENERIC:t;
END_LOCAL;
n1 := SIZEOF(lis);
n2 := SIZEOF(lis[1]);
IF (n1 <> ((u1 - low1) + 1)) AND (n2 <> ((u2 - low2) + 1)) THEN
RETURN(?);
END_IF;
REPEAT i := 1 TO n1 BY 1;
IF SIZEOF(lis[i]) <> n2 THEN
RETURN(?);
END_IF;
END_REPEAT;
REPEAT i := 1 TO n1 BY 1;
resl[i] := list_to_array(lis[i],low2,u2);
END_REPEAT;
res := list_to_array(resl,low1,u1);
RETURN(res);
END_FUNCTION; -- make_array_of_array
FUNCTION mixed_loop_type_set(
l: SET [0:?] OF loop
): LOGICAL;
LOCAL
i : INTEGER;
poly_loop_type : LOGICAL;
END_LOCAL;
IF SIZEOF(l) <= 1 THEN
RETURN(FALSE);
END_IF;
poly_loop_type := 'PLANT_SPATIAL_CONFIGURATION.POLY_LOOP' IN TYPEOF(l[
1]);
REPEAT i := 2 TO SIZEOF(l) BY 1;
IF ('PLANT_SPATIAL_CONFIGURATION.POLY_LOOP' IN TYPEOF(l[i])) <>
poly_loop_type THEN
RETURN(TRUE);
END_IF;
END_REPEAT;
RETURN(FALSE);
END_FUNCTION; -- mixed_loop_type_set
FUNCTION normalise(
arg: vector_or_direction
): vector_or_direction;
LOCAL
ndim : INTEGER;
v : direction;
vec : vector;
mag : REAL;
result : vector_or_direction;
END_LOCAL;
IF NOT EXISTS(arg) THEN
result := ?;
ELSE
ndim := arg.dim;
IF 'PLANT_SPATIAL_CONFIGURATION.VECTOR' IN TYPEOF(arg) THEN
BEGIN
vec := arg;
v := arg\vector.orientation;
IF arg\vector.magnitude = 0 THEN
RETURN(?);
ELSE
vec.magnitude := 1;
END_IF;
END;
ELSE
v := arg;
END_IF;
mag := 0;
REPEAT i := 1 TO ndim BY 1;
mag := mag + (v.direction_ratios[i] * v.direction_ratios[i]);
END_REPEAT;
IF mag > 0 THEN
mag := SQRT(mag);
REPEAT i := 1 TO ndim BY 1;
v.direction_ratios[i] := v.direction_ratios[i] / mag;
END_REPEAT;
IF 'PLANT_SPATIAL_CONFIGURATION.VECTOR' IN TYPEOF(arg) THEN
vec.orientation := v;
result := vec;
ELSE
result := v;
END_IF;
ELSE
RETURN(?);
END_IF;
END_IF;
RETURN(result);
END_FUNCTION; -- normalise
FUNCTION orthogonal_complement(
vec: direction
): direction;
LOCAL
result : direction;
END_LOCAL;
IF (vec.dim <> 2) OR (NOT EXISTS(vec)) THEN
RETURN(?);
ELSE
result.direction_ratios[1] := -vec.direction_ratios[2];
result.direction_ratios[2] := vec.direction_ratios[1];
RETURN(result);
END_IF;
END_FUNCTION; -- orthogonal_complement
FUNCTION path_head_to_tail(
a_path: path
): LOGICAL;
LOCAL
n : INTEGER;
p : BOOLEAN := TRUE;
END_LOCAL;
n := SIZEOF(a_path.edge_list);
REPEAT i := 2 TO n BY 1;
p := p AND (a_path.edge_list[i - 1].edge_end :=: a_path.edge_list[i]
.edge_start);
END_REPEAT;
RETURN(p);
END_FUNCTION; -- path_head_to_tail
FUNCTION path_reversed(
a_path: path
): path;
LOCAL
the_reverse : path;
END_LOCAL;
IF 'PLANT_SPATIAL_CONFIGURATION.ORIENTED_PATH' IN TYPEOF(a_path) THEN
the_reverse := oriented_path(a_path\oriented_path.path_element,NOT
a_path\oriented_path.orientation);
ELSE
the_reverse := oriented_path(a_path,FALSE);
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- path_reversed
FUNCTION plant_spatial_configuration_organization_correlation(
e: plant_spatial_configuration_organization_assignment
): BOOLEAN;
LOCAL
o_role : STRING;
END_LOCAL;
o_role := e\organization_assignment.role.name;
CASE o_role OF
'vendor' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <*
e.items | (SIZEOF(['PLANT_SPATIAL_CONFIGURATION.PRODUCT',
'PLANT_SPATIAL_CONFIGURATION.DOCUMENT'] * TYPEOF(x)) = 1) ))
THEN
RETURN(FALSE);
END_IF;
'owner' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <*
e.items | (SIZEOF(['PLANT_SPATIAL_CONFIGURATION.SITE',
'PLANT_SPATIAL_CONFIGURATION.DOCUMENT'] * TYPEOF(x)) = 1) ))
THEN
RETURN(FALSE);
END_IF;
'plant operator' : IF SIZEOF(e.items) <> SIZEOF(
QUERY ( x <* e.items | ('PLANT_SPATIAL_CONFIGURATION.PLANT' IN
TYPEOF(x)) )) THEN
RETURN(FALSE);
END_IF;
'plant owner' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <*
e.items | ('PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(x)) ))
THEN
RETURN(FALSE);
END_IF;
'project owner' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <*
e.items | ('PLANT_SPATIAL_CONFIGURATION.DESIGN_PROJECT' IN
TYPEOF(x)) )) THEN
RETURN(FALSE);
END_IF;
'assessor' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <*
e.items | (('PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP') IN TYPEOF(x)) )) THEN
RETURN(FALSE);
END_IF;
OTHERWISE : RETURN(TRUE);
END_CASE;
RETURN(TRUE);
END_FUNCTION; -- plant_spatial_configuration_organization_correlation
FUNCTION plant_spatial_configuration_person_and_organization_correlation(
e: plant_spatial_configuration_person_and_organization_assignment
): BOOLEAN;
LOCAL
po_role : STRING;
END_LOCAL;
po_role := e\person_and_organization_assignment.role.name;
CASE po_role OF
'owner' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <*
e.items | (SIZEOF(['PLANT_SPATIAL_CONFIGURATION.SITE',
'PLANT_SPATIAL_CONFIGURATION.' + 'CHANGE_ITEM'] * TYPEOF(x)) =
1) )) THEN
RETURN(FALSE);
END_IF;
'plant owner' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <*
e.items | ('PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(x)) ))
THEN
RETURN(FALSE);
END_IF;
'plant operator' : IF SIZEOF(e.items) <> SIZEOF(
QUERY ( x <* e.items | ('PLANT_SPATIAL_CONFIGURATION.PLANT' IN
TYPEOF(x)) )) THEN
RETURN(FALSE);
END_IF;
OTHERWISE : RETURN(TRUE);
END_CASE;
RETURN(TRUE);
END_FUNCTION; -- plant_spatial_configuration_person_and_organization_correlation
FUNCTION plant_spatial_configuration_person_correlation(
e: plant_spatial_configuration_person_assignment
): BOOLEAN;
LOCAL
p_role : STRING;
END_LOCAL;
p_role := e\person_assignment.role.name;
CASE p_role OF
'vendor' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <* e.
items | ('PLANT_SPATIAL_CONFIGURATION.' +
'DOCUMENT' IN TYPEOF(x)) ))
THEN
RETURN(FALSE);
END_IF;
'owner' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <* e.
items | (SIZEOF(['PLANT_SPATIAL_CONFIGURATION.SITE',
'PLANT_SPATIAL_CONFIGURATION.DOCUMENT'] * TYPEOF(x)) = 1) ))
THEN
RETURN(FALSE);
END_IF;
'plant owner' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <* e
.items | ('PLANT_SPATIAL_CONFIGURATION.PLANT' IN TYPEOF(x)) ))
THEN
RETURN(FALSE);
END_IF;
'assessor' : IF SIZEOF(e.items) <> SIZEOF(QUERY ( x <* e.
items | (('PLANT_SPATIAL_CONFIGURATION.' +
'PRODUCT_DEFINITION_RELATIONSHIP') IN TYPEOF(x)) )) THEN
RETURN(FALSE);
END_IF;
OTHERWISE : RETURN(TRUE);
END_CASE;
RETURN(TRUE);
END_FUNCTION; -- plant_spatial_configuration_person_correlation
FUNCTION scalar_times_vector(
scalar: REAL;
vec: vector_or_direction
): vector;
LOCAL
v : direction;
mag : REAL;
result : vector;
END_LOCAL;
IF (NOT EXISTS(scalar)) OR (NOT EXISTS(vec)) THEN
result := ?;
ELSE
IF 'PLANT_SPATIAL_CONFIGURATION.VECTOR' IN TYPEOF(vec) THEN
v := vec\vector.orientation;
mag := scalar * vec\vector.magnitude;
ELSE
v := vec;
mag := scalar;
END_IF;
IF mag < 0 THEN
REPEAT i := 1 TO SIZEOF(v.direction_ratios) BY 1;
v.direction_ratios[i] := -v.direction_ratios[i];
END_REPEAT;
mag := -mag;
END_IF;
result.orientation := normalise(v);
result.magnitude := mag;
END_IF;
RETURN(result);
END_FUNCTION; -- scalar_times_vector
FUNCTION second_proj_axis(
z_axis, x_axis, arg: direction
): direction;
LOCAL
temp : vector;
v : direction;
y_axis : vector;
END_LOCAL;
IF NOT EXISTS(arg) THEN
v := direction([0,1,0]);
ELSE
v := arg;
END_IF;
temp := scalar_times_vector(dot_product(v,z_axis),z_axis);
y_axis := vector_difference(v,temp);
temp := scalar_times_vector(dot_product(v,x_axis),x_axis);
y_axis := vector_difference(y_axis,temp);
y_axis := normalise(y_axis);
RETURN(y_axis.orientation);
END_FUNCTION; -- second_proj_axis
FUNCTION set_of_topology_reversed(
a_set: set_of_reversible_topology_item
): set_of_reversible_topology_item;
LOCAL
the_reverse : set_of_reversible_topology_item;
END_LOCAL;
the_reverse := [];
REPEAT i := 1 TO SIZEOF(a_set) BY 1;
the_reverse := the_reverse + topology_reversed(a_set[i]);
END_REPEAT;
RETURN(the_reverse);
END_FUNCTION; -- set_of_topology_reversed
FUNCTION shell_reversed(
a_shell: shell
): shell;
LOCAL
the_reverse : shell;
END_LOCAL;
IF 'PLANT_SPATIAL_CONFIGURATION.ORIENTED_OPEN_SHELL' IN TYPEOF(a_shell)
THEN
the_reverse := oriented_open_shell(a_shell\oriented_open_shell.
open_shell_element,NOT a_shell\oriented_open_shell.orientation);
ELSE
IF 'PLANT_SPATIAL_CONFIGURATION.OPEN_SHELL' IN TYPEOF(a_shell) THEN
the_reverse := oriented_open_shell(a_shell,FALSE);
ELSE
IF 'PLANT_SPATIAL_CONFIGURATION.ORIENTED_CLOSED_SHELL' IN TYPEOF(
a_shell) THEN
the_reverse := oriented_closed_shell(a_shell\
oriented_closed_shell.closed_shell_element,NOT a_shell\
oriented_closed_shell.orientation);
ELSE
IF 'PLANT_SPATIAL_CONFIGURATION.CLOSED_SHELL' IN TYPEOF(a_shell)
THEN
the_reverse := oriented_closed_shell(a_shell,FALSE);
ELSE
the_reverse := ?;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN(the_reverse);
END_FUNCTION; -- shell_reversed
FUNCTION surface_weights_positive(
b: rational_b_spline_surface
): BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 0 TO b.u_upper BY 1;
REPEAT j := 0 TO b.v_upper BY 1;
IF b.weights[i][j] <= 0 THEN
result := FALSE;
RETURN(result);
END_IF;
END_REPEAT;
END_REPEAT;
RETURN(result);
END_FUNCTION; -- surface_weights_positive
FUNCTION topology_reversed(
an_item: reversible_topology
): reversible_topology;
IF 'PLANT_SPATIAL_CONFIGURATION.EDGE' IN TYPEOF(an_item) THEN
RETURN(edge_reversed(an_item));
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.PATH' IN TYPEOF(an_item) THEN
RETURN(path_reversed(an_item));
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.FACE_BOUND' IN TYPEOF(an_item) THEN
RETURN(face_bound_reversed(an_item));
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.FACE' IN TYPEOF(an_item) THEN
RETURN(face_reversed(an_item));
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.SHELL' IN TYPEOF(an_item) THEN
RETURN(shell_reversed(an_item));
END_IF;
IF 'SET' IN TYPEOF(an_item) THEN
RETURN(set_of_topology_reversed(an_item));
END_IF;
IF 'LIST' IN TYPEOF(an_item) THEN
RETURN(list_of_topology_reversed(an_item));
END_IF;
RETURN(?);
END_FUNCTION; -- topology_reversed
FUNCTION using_representations(
item: representation_item
): SET OF representation;
LOCAL
results : SET OF representation;
i : INTEGER;
intermediate_items : SET OF representation_item;
result_bag : BAG OF representation;
END_LOCAL;
result_bag := USEDIN(item,
'PLANT_SPATIAL_CONFIGURATION.REPRESENTATION.ITEMS');
IF SIZEOF(result_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(result_bag) BY 1;
results := results + result_bag[i];
END_REPEAT;
END_IF;
intermediate_items := QUERY ( z <* bag_to_set(USEDIN(item,'')) | (
'PLANT_SPATIAL_CONFIGURATION.REPRESENTATION_ITEM' IN TYPEOF(z)) );
IF SIZEOF(intermediate_items) > 0 THEN
REPEAT i := 1 TO HIINDEX(intermediate_items) BY 1;
results := results + using_representations(intermediate_items[i]);
END_REPEAT;
END_IF;
RETURN(results);
END_FUNCTION; -- using_representations
FUNCTION valid_advanced_csg_tree(
tree_element: boolean_operand
): BOOLEAN;
IF SIZEOF(TYPEOF(tree_element) * ['PLANT_SPATIAL_CONFIGURATION.BLOCK',
'PLANT_SPATIAL_CONFIGURATION.TORUS',
'PLANT_SPATIAL_CONFIGURATION.RIGHT_CIRCULAR_CYLINDER',
'PLANT_SPATIAL_CONFIGURATION.SPHERE',
'PLANT_SPATIAL_CONFIGURATION.RIGHT_CIRCULAR_CONE',
'PLANT_SPATIAL_CONFIGURATION.' +
'ADVANCED_FACE_WITH_THICKNESS_SHAPE_REPRESENTATION',
'PLANT_SPATIAL_CONFIGURATION.EXTRUDED_AREA_SOLID',
'PLANT_SPATIAL_CONFIGURATION.REVOLVED_AREA_SOLID',
'PLANT_SPATIAL_CONFIGURATION.HALF_SPACE_SOLID']) = 1 THEN
RETURN(TRUE);
ELSE
IF 'PLANT_SPATIAL_CONFIGURATION.BOOLEAN_RESULT' IN TYPEOF(
tree_element) THEN
IF NOT (tree_element\boolean_result.operator IN [boolean_operator.
union,boolean_operator.difference]) THEN
RETURN(FALSE);
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.HALF_SPACE_SOLID' IN TYPEOF(
tree_element\boolean_result.first_operand) THEN
IF 'PLANT_SPATIAL_CONFIGURATION.ELEMENTARY_SURFACE' IN TYPEOF(
tree_element\boolean_result.first_operand\half_space_solid.
base_surface) THEN
IF 'PLANT_SPATIAL_CONFIGURATION.HALF_SPACE_SOLID' IN TYPEOF(
tree_element\boolean_result.second_operand) THEN
IF 'PLANT_SPATIAL_CONFIGURATION.ELEMENTARY_SURFACE' IN
TYPEOF(tree_element\boolean_result.second_operand\
half_space_solid.base_surface) THEN
RETURN(TRUE);
ELSE
RETURN(FALSE);
END_IF;
ELSE
RETURN(valid_advanced_csg_tree(tree_element\boolean_result.
second_operand));
END_IF;
ELSE
RETURN(FALSE);
END_IF;
ELSE
IF 'PLANT_SPATIAL_CONFIGURATION.HALF_SPACE_SOLID' IN TYPEOF(
tree_element\boolean_result.second_operand) THEN
IF 'PLANT_SPATIAL_CONFIGURATION.ELEMENTARY_SURFACE' IN TYPEOF(
tree_element\boolean_result.second_operand\half_space_solid
.base_surface) THEN
RETURN(valid_advanced_csg_tree(tree_element\boolean_result.
first_operand));
ELSE
RETURN(FALSE);
END_IF;
ELSE
RETURN(valid_advanced_csg_tree(tree_element\boolean_result.
first_operand) AND valid_advanced_csg_tree(tree_element\
boolean_result.second_operand));
END_IF;
END_IF;
END_IF;
END_IF;
RETURN(FALSE);
END_FUNCTION; -- valid_advanced_csg_tree
FUNCTION valid_calendar_date(
date: calendar_date
): LOGICAL;
IF NOT ((1 <= date.day_component) AND (date.day_component <= 31))
THEN
RETURN(FALSE);
END_IF;
CASE date.month_component OF
4 : RETURN((1 <= date.day_component) AND (date.
day_component <= 30));
6 : RETURN((1 <= date.day_component) AND (date.
day_component <= 30));
9 : RETURN((1 <= date.day_component) AND (date.
day_component <= 30));
11 : RETURN((1 <= date.day_component) AND (date.
day_component <= 30));
2 : BEGIN
IF leap_year(date.year_component) THEN
RETURN((1 <= date.day_component) AND (date.day_component
<= 29));
ELSE
RETURN((1 <= date.day_component) AND (date.day_component
<= 28));
END_IF;
END;
OTHERWISE : RETURN(TRUE);
END_CASE;
END_FUNCTION; -- valid_calendar_date
FUNCTION valid_time(
time: local_time
): BOOLEAN;
IF EXISTS(time.second_component) THEN
RETURN(EXISTS(time.minute_component));
ELSE
RETURN(TRUE);
END_IF;
END_FUNCTION; -- valid_time
FUNCTION valid_units(
m: measure_with_unit
): BOOLEAN;
IF 'PLANT_SPATIAL_CONFIGURATION.LENGTH_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.MASS_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,1,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.TIME_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,1,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,1,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.THERMODYNAMIC_TEMPERATURE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,1,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.AMOUNT_OF_SUBSTANCE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,1,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(
m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,1) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.PLANE_ANGLE_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.SOLID_ANGLE_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.AREA_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(2,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.VOLUME_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(3,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.RATIO_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.
value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.POSITIVE_PLANE_ANGLE_MEASURE' IN
TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0,0,0,0,0,0,0) THEN
RETURN(FALSE);
END_IF;
END_IF;
RETURN(TRUE);
END_FUNCTION; -- valid_units
FUNCTION vector_difference(
arg1, arg2: vector_or_direction
): vector;
LOCAL
ndim : INTEGER;
mag2 : REAL;
mag1 : REAL;
mag : REAL;
res : direction;
vec1 : direction;
vec2 : direction;
result : vector;
END_LOCAL;
IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim)
THEN
result := ?;
ELSE
BEGIN
IF 'PLANT_SPATIAL_CONFIGURATION.VECTOR' IN TYPEOF(arg1) THEN
mag1 := arg1\vector.magnitude;
vec1 := arg1\vector.orientation;
ELSE
mag1 := 1;
vec1 := arg1;
END_IF;
IF 'PLANT_SPATIAL_CONFIGURATION.VECTOR' IN TYPEOF(arg2) THEN
mag2 := arg2\vector.magnitude;
vec2 := arg2\vector.orientation;
ELSE
mag2 := 1;
vec2 := arg2;
END_IF;
vec1 := normalise(vec1);
vec2 := normalise(vec2);
ndim := SIZEOF(vec1.direction_ratios);
mag := 0;
REPEAT i := 1 TO ndim BY 1;
res.direction_ratios[i] := (mag1 * vec1.direction_ratios[i]) - (
mag2 * vec2.direction_ratios[i]);
mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]);
END_REPEAT;
IF mag > 0 THEN
result.magnitude := SQRT(mag);
result.orientation := res;
ELSE
result.magnitude := 0;
result.orientation := vec1;
END_IF;
END;
END_IF;
RETURN(result);
END_FUNCTION; -- vector_difference
END_SCHEMA; -- plant_spatial_configuration