6520 lines
251 KiB
Text
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
|