| Application module: Analytical model | ISO/TS 10303-1603:2019(E) © ISO | 
         (*
ISO/TC 184/SC 4/WG 12 N10295 - ISO/TS 10303-1603 Analytical model - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N8418
*)
         
SCHEMA Analytical_model_arm;
         USE FROM
         Document_structure_arm;
            -- ISO/TS 10303-1124
         USE FROM
         Model_parameter_arm;
            -- ISO/TS 10303-1703
         USE FROM
         Part_template_arm;
            -- ISO/TS 10303-1722
         USE FROM
         Product_view_definition_relationship_arm;
            -- ISO/TS 10303-1041
         USE FROM
         Software_arm;
            -- ISO/TS 10303-1746
         REFERENCE FROM 
         Specification_document_arm   -- ISO/TS 10303-1747
  (get_document_definition);
         
TYPE am_documented_element_select =
         
         EXTENSIBLE
         
         GENERIC_ENTITY
         
         
         SELECT
         BASED_ON
         documented_element_select
         WITH 
         
            (Analytical_model_definition);
         END_TYPE; 
         
TYPE am_external_identification_item =
         
         EXTENSIBLE
         
         GENERIC_ENTITY
         
         
         SELECT
         BASED_ON
         external_identification_item
         WITH 
         
            (Digital_analytical_model_vector_port);
         END_TYPE; 
         
TYPE am_parameter_assignment_select =
         
         
         SELECT
         BASED_ON
         parameter_assignment_select
         WITH 
         
            (Analytical_model_parameter);
         END_TYPE; 
         
TYPE am_property_assignment_select =
         
         
         SELECT
         BASED_ON
         property_assignment_select
         WITH 
         
            (Analytical_model_definition);
         END_TYPE; 
         
TYPE analytical_model_port_assignment_select =
         
         EXTENSIBLE
         
         GENERIC_ENTITY
         
         
         SELECT;
         END_TYPE; 
         
TYPE port_property_type =
         
         ENUMERATION
         
         OF
         
            
         (string_property_type,
    boolean_property_type,
    logical_property_type,
    numeric_property_type,
    physical_property_type);
         END_TYPE; 
         
TYPE signal_flow_direction =
         
         ENUMERATION
         
         OF
         
            
         (unknown_direction,
    not_applicable,
    output_direction,
    input_direction,
    bidirectional);
         END_TYPE; 
         
ENTITY Across_port_variable
           SUBTYPE OF (Port_variable);
WHERE
           WR1: EXISTS(SELF\Port_variable.unit_of_measure);
         
         END_ENTITY;
ENTITY Analog_analytical_model_port
           SUBTYPE OF (Analytical_model_port);
INVERSE
           signal_variable : SET[1:?] OF port_variable FOR associated_port;
         
         END_ENTITY;
ENTITY Analytical_model
           SUBTYPE OF (Information_product);
UNIQUE
           UR1: 
         SELF\product.id;
         
         END_ENTITY;
ENTITY Analytical_model_application
           SUBTYPE OF (Representation);
           model_parameter_assignment : 
         OPTIONAL 
         SET[1:?] OF Parameter_assignment;
           model_representation : Analytical_model_definition;
UNIQUE
           UR1: 
         SELF\representation.name;
         
         END_ENTITY;
ENTITY Analytical_model_definition
           SUBTYPE OF (Information_definition);
           SELF\product_view_definition.defined_version : Analytical_model_version;
           source_code : SET[1:1] OF Digital_file;
DERIVE
           representation_language : SET[1:1] OF Document_definition := get_document_definition(SELF, 'representation language', 'SPECIFICATION_DOCUMENT_ARM.LANGUAGE_REFERENCE_MANUAL');
INVERSE
           access_mechanism : SET[1:?] OF analytical_model_port FOR accessed_analytical_model;
           parameter : SET[1:?] OF analytical_model_parameter FOR accessed_analytical_model;
           reference_document : document_assignment FOR is_assigned_to;
         
         END_ENTITY;
ENTITY Analytical_model_make_from_relationship
           SUBTYPE OF (View_definition_relationship);
           SELF\view_definition_relationship.relating_view RENAMED reusable_model : Analytical_model_definition;
           SELF\view_definition_relationship.related_view RENAMED resultant_model : Analytical_model_definition;
UNIQUE
           UR1: reusable_model, resultant_model;
WHERE
           WR1: reusable_model :<>: resultant_model;
         
         END_ENTITY;
ENTITY Analytical_model_parameter
           SUBTYPE OF (Applied_independent_property);
           SELF\assigned_property.described_element RENAMED accessed_analytical_model : Analytical_model_definition;
UNIQUE
           UR1: 
         SELF\assigned_property.id, accessed_analytical_model;
         
         END_ENTITY;
ENTITY Analytical_model_port
           SUPERTYPE OF 
         (Analytical_model_vector_port
                ANDOR (ONEOF (Analog_analytical_model_port,
                     Digital_analytical_model_port)));
           accessed_analytical_model : Analytical_model_definition;
           port_name : STRING;
UNIQUE
           UR1: port_name, accessed_analytical_model;
         
         END_ENTITY;
ENTITY Analytical_model_port_assignment;
           assigned_analytical_model_port : Analytical_model_port;
           assigned_item : analytical_model_port_assignment_select;
           associated_analytical_model_application : Analytical_model_application;
UNIQUE
           UR1: assigned_analytical_model_port, assigned_item, associated_analytical_model_application;
WHERE
           WR1: assigned_analytical_model_port.accessed_analytical_model = associated_analytical_model_application.model_representation;
         
         END_ENTITY;
ENTITY Analytical_model_port_make_from_relationship;
           associated_make_from : Analytical_model_make_from_relationship;
           reusable_feature : Analytical_model_port;
           resultant_feature : Analytical_model_port;
UNIQUE
           UR1: reusable_feature, resultant_feature;
WHERE
           WR1: reusable_feature :<>: resultant_feature;
           WR2: reusable_feature.accessed_analytical_model :<>: resultant_feature.accessed_analytical_model;
         
         END_ENTITY;
ENTITY Analytical_model_scalar_port
           SUBTYPE OF (Analytical_model_vector_port);
WHERE
           WR1: SIZEOF(SELF\Analytical_model_vector_port.element_port) = 1;
           WR2: SELF = SELF\Analytical_model_vector_port.element_port[1];
         
         END_ENTITY;
ENTITY Analytical_model_vector_port
           SUPERTYPE OF 
         (Analytical_model_scalar_port)
           SUBTYPE OF (Analytical_model_port);
           element_port : LIST[1:?] OF Analytical_model_scalar_port;
DERIVE
           size : INTEGER := SIZEOF(element_port);
         
         END_ENTITY;
ENTITY Analytical_model_version
           SUBTYPE OF (Information_version);
           SELF\product_version.of_product : Analytical_model;
         
         END_ENTITY;
ENTITY Digital_analytical_model_port
         ABSTRACT
           SUPERTYPE OF 
         (Digital_analytical_model_vector_port)
           SUBTYPE OF (Analytical_model_port);
           nominal_signal_flow_direction : signal_flow_direction;
           port_type : port_property_type;
WHERE
           WR1: not_applicable <> nominal_signal_flow_direction;
           WR2: numeric_property_type <> port_type;
           WR3: physical_property_type <> port_type;
           WR4: unknown_direction <> nominal_signal_flow_direction;
         
         END_ENTITY;
ENTITY Digital_analytical_model_scalar_port
           SUBTYPE OF (Digital_analytical_model_vector_port, Analytical_model_scalar_port);
         
         END_ENTITY;
ENTITY Digital_analytical_model_vector_port
           SUBTYPE OF (Digital_analytical_model_port, Analytical_model_vector_port);
INVERSE
           data_encoding_method : external_source_identification FOR item;
WHERE
           WR1: SELF\Digital_analytical_model_port.port_type = port_property_type.string_property_type;
         
         END_ENTITY;
ENTITY Port_variable
           SUPERTYPE OF 
         (ONEOF (Through_port_variable,
                       Across_port_variable,
                       Transform_port_variable));
           associated_port : Analog_analytical_model_port;
           variable_name : STRING;
           unit_of_measure : 
         OPTIONAL 
         Unit;
UNIQUE
           UR1: variable_name, associated_port;
         
         END_ENTITY;
ENTITY Reference_part_template_for_analytical_model;
           template : Template_definition;
           analytical_representation : Analytical_model_definition;
UNIQUE
           UR1: template;
         
         END_ENTITY;
ENTITY Terminal_pair_port_equivalence_relationship;
           equivalent_port : Analytical_model_port;
           scalar_ports : Analytical_model_vector_port;
WHERE
           WR1: (SIZEOF(scalar_ports.element_port) = 2);
         
         END_ENTITY;
ENTITY Through_port_variable
           SUBTYPE OF (Port_variable);
WHERE
           WR1: EXISTS(SELF\Port_variable.unit_of_measure);
         
         END_ENTITY;
ENTITY Transform_port_variable
           SUBTYPE OF (Port_variable);
           nominal_signal_flow_direction : signal_flow_direction;
WHERE
           WR1: signal_flow_direction.not_applicable <> nominal_signal_flow_direction;
           WR2: signal_flow_direction.bidirectional <> nominal_signal_flow_direction;
         
         END_ENTITY;
RULE analytical_model_definition_constraint FOR 
         (product_view_definition);
WHERE
           WR1: SIZEOF(QUERY(pvd                <* product_view_definition                | (NOT ('ANALYTICAL_MODEL_ARM.ANALYTICAL_MODEL_DEFINITION'
            IN TYPEOF(pvd))) AND                  ('ANALYTICAL_MODEL_ARM.ANALYTICAL_MODEL_VERSION' IN TYPEOF(pvd.defined_version)))) =
            0;
         END_RULE;
         
RULE analytical_model_version_constraint FOR 
         (product_version);
WHERE
           WR1: SIZEOF(QUERY(pv                <* product_version                | (NOT ('ANALYTICAL_MODEL_ARM.ANALYTICAL_MODEL_VERSION'
            IN TYPEOF(pv))) AND                  ('ANALYTICAL_MODEL_ARM.ANALYTICAL_MODEL' IN TYPEOF(pv.of_product)))) =   0;
         END_RULE;
         
         END_SCHEMA;  -- Analytical_model_arm
© ISO 2019 — All rights reserved