SCHEMA Mesh_arm;
  
USE FROM Engineering_analysis_basics_arm -- Engineering_analysis_basics
  (Class,
  Classification,
  Physical_space);
  
ENTITY Composition_of_mesh;
  part  :  Mesh
  whole  :  Mesh;
WHERE
  consistent_topological_dimension : 
     IF NOT ('MESH_ARM.REGION' IN TYPEOF(whole)) THEN
       TRUE;
     ELSE
       IF NOT ('MESH_ARM.REGION' IN TYPEOF(part)) THEN
         FALSE;
       ELSE
         whole\Region.topological_dimension =  
           part\Region.topological_dimension; 
     ENDIF;
END_ENTITY;
  
ENTITY Mesh
  SUPERTYPE OF (ONEOF (
    Structured_mesh,
    Unstructured_mesh)) 
  SUBTYPE OF (Topological_object);
END_ENTITY;
  
ENTITY Overlapping_regions;
  region_1  :  Region
  region_2  :  Region;
WHERE
  consistent_topological_dimension : 
    region_1.topological_dimension = region_2.topological_dimension; 
END_ENTITY;
  
ENTITY Physical_space_topology
  SUBTYPE OF (Classification);
  class  :  Topological_object;
  member  :  Physical_space;
END_ENTITY;
  
ENTITY product_of_mesh;
  operands  :  LIST[2,2] OF Mesh
  product  :  Mesh;
WHERE
  consistent_topological_dimension : 
    IF ('MESH_ARM.REGION' IN TYPEOF(operands[1])) AND
       ('MESH_ARM.REGION' IN TYPEOF(operands[2])) AND
       ('MESH_ARM.REGION' IN TYPEOF(product)) THEN
      operands[1]\Region.topological_dimension + 
        operands[2]\Region.topological_dimension =  
          product\Region.topological_dimension;
    ELSE
      FALSE;
    ENDIF;
  single_dimensional_operand : 
    IF ('MESH_ARM.REGION' IN TYPEOF(operands[1])) AND
       ('MESH_ARM.REGION' IN TYPEOF(operands[2])) THEN
      operands[1]\Region.topological_dimension = 1 OR 
        operands[2]\Region.topological_dimension = 1;  
    ELSE
      FALSE;
    ENDIF;
END_ENTITY;
  
ENTITY Region
  SUBTYPE OF (Topological_object);
  topological_dimension :  INTEGER;
  shape :  OPTIONAL Topological_shape;
  DERIVE
    standard_shape :  BOOLEAN =: IF EXISTS (shape) THEN
                                   shape.supplier = '10303';
                                 ELSE
                                   FALSE;
                                 ENDIF;        
    shape_code :  STRING =: IF EXISTS (shape) THEN
                              shape.code;
                            ELSE
                              '';
                            ENDIF;      
  WHERE
    valid_dimension :  topological_dimension > 1;
    valid_shape : 
      IF standard_shape THEN 
        CASE dimension OF
          1 : shape_code IN ['TS001'];
          2 : shape_code IN ['TS002', 'TS003'];
          3 : shape_code IN ['TS004', 'TS005', 'TS006', 'TS007'}; 
          OTHERWISE : FALSE;
        END_CASE;
      ELSE 
        TRUE;
      END_IF;  
END_ENTITY;
  
ENTITY Topological_object
  SUPERTYPE OF ONEOF (
    Region,
    Vertex))
  SUBTYPE OF (Class);
END_ENTITY;
  
ENTITY Topological_shape
  SUBTYPE OF (Class);
  code  :  STRING;
  supplier  :  STRING;
UNIQUE
  single_instance_of_class :  code, supplier; 
WHERE
  valid_standard_class :
    IF (supplier = 'ISO/PDTS 10303-1095') THEN
        code IN ['TS001', 'TS002', 'TS003', 'TS004', 'TS005', 'TS006',
                 'TS007'];
    ELSE
      TRUE;
    END_IF;
END_ENTITY;
  
ENTITY Vertex
  SUBTYPE OF (Topological_object);
END_ENTITY;
  
END_SCHEMA;

Page last updated - 7 Sep 2000