The TSTT Data Model and Interface Lori Freitag. Use TSTT interfaces directly in applications to allow plug-and-play experimentation Discretization Library.

Slides:



Advertisements
Similar presentations
Lists and the Collection Interface Chapter 4. Chapter Objectives To become familiar with the List interface To understand how to write an array-based.
Advertisements

Chapter 10: Designing Databases
1 Lecture 7 - Meshing Applied Computational Fluid Dynamics Instructor: André Bakker © André Bakker ( ) © Fluent Inc. (2002)
CCA Common Component Architecture CCA Forum Tutorial Working Group A Look at More Complex.
CS 599 – Spatial and Temporal Databases Realm based Spatial data types: The Rose Algebra Ralf Hartmut Guting Markus Schneider.
1 Enviromatics Spatial database systems Spatial database systems Вонр. проф. д-р Александар Маркоски Технички факултет – Битола 2008 год.
CAD Import, Partitioning & Meshing J.Cugnoni LMAF / EPFL 2009.
A Bezier Based Approach to Unstructured Moving Meshes ALADDIN and Sangria Gary Miller David Cardoze Todd Phillips Noel Walkington Mark Olah Miklos Bergou.
A Bezier Based Approach to Unstructured Moving Meshes ALADDIN and Sangria Gary Miller David Cardoze Todd Phillips Noel Walkington Mark Olah Miklos Bergou.
Software Version Control SubVersion software version control system WebSVN graphical interface o View version history logs o Browse directory structure.
CSE351/ IT351 Modeling And Simulation Choosing a Mesh Model Dr. Jim Holten.
CSE351/ IT351 Modeling and Simulation
2003 by Jim X. Chen: Introduction to Modeling Jim X. Chen George Mason University.
Introduction to Boolean Operations on Free-form Solids CS284, Fall 2004 Seung Wook Kim.
Complex Model Construction Mortenson Chapter 11 Geometric Modeling
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
1 Finite-Volume Formulation. 2 Review of the Integral Equation The integral equation for the conservation statement is: Equation applies for a control.
Modeling and representation 1 – comparative review and polygon mesh models 2.1 Introduction 2.2 Polygonal representation of three-dimensional objects 2.3.
Terascale Simulation Tools and Technologies Center Jim Glimm (BNL/SB), Center Director David Brown (LLNL), Ed D’Azevedo (ORNL), Joe Flaherty (RPI), Lori.
Terascale Simulation Tools and Technologies Center Jim Glimm (BNL/SB), Center Director David Brown (LLNL), Co-PI Ed D’Azevedo (ORNL), Co-PI Joe Flaherty.
1 ATPESC 2014 Vijay Mahadevan Tutorial Session for Scalable Interfaces for Geometry and Mesh based Applications (SIGMA) FASTMath SciDAC Institute.
ParFUM Parallel Mesh Adaptivity Nilesh Choudhury, Terry Wilmarth Parallel Programming Lab Computer Science Department University of Illinois, Urbana Champaign.
Preparing Data for Analysis and Analyzing Spatial Data/ Geoprocessing Class 11 GISG 110.
Compressing Multiresolution Triangle Meshes Emanuele Danovaro, Leila De Floriani, Paola Magillo, Enrico Puppo Department of Computer and Information Sciences.
Spatial Database Souhad Daraghma.
Grid Generation.
Chapter 3 Sections 3.5 – 3.7. Vector Data Representation object-based “discrete objects”
1 Data Structures for Scientific Computing Orion Sky Lawlor charm.cs.uiuc.edu 2003/12/17.
CCA Data Object Contributors Ben Allan, Rob Armstrong, David Bernholdt, Robert Clay, Lori Freitag, Jim Kohl, Ray Loy, Manish Parashar, Craig Rasmussen,
Center for Component Technology for Terascale Simulation Software (CCTTSS) 110 April 2002CCA Forum, Townsend, TN Interfaces: The Key to Code Reuse and.
 A.C. Bauer, M.S. Shephard, E. Seol and J. Wan,   Scientific Computation Research Center  Rensselaer Polytechnic Institute,
Terascale Simulation Tools and Technologies Center Jim Glimm (BNL/SB), David Brown (LLNL), Lori Freitag (ANL), PIs Ed D’Azevedo (ORNL), Joe Flaherty (RPI),
Interoperable Geometry and Mesh Components for SciDAC ApplicationsTerascaleSimulation Tools and Technologies The TSTT Interfaces TSTTB: “Base” Tags Error.
Mesh Generation 58:110 Computer-Aided Engineering Reference: Lecture Notes on Delaunay Mesh Generation, J. Shewchuk (1999)
© Fluent Inc. 10/14/ Introductory GAMBIT Notes GAMBIT v2.0 Jan 2002 Fluent User Services Center Volume Meshing and the Sizing.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
Chapter 18 Object Database Management Systems. McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved. Outline Motivation for object.
Terascale Simulation Tools and Technology Center TSTT brings together existing mesh expertise from Labs and universities. State of the art: many high-quality.
The Terascale Simulation Tools and Technologies Center Simulation SimulationToolsandTechnologies David Brown (Lawrence.
TerascaleSimulation Tools and Technologies The TSTT Interface Definition Effort Lori Freitag Diachin Lawrence Livermore National Lab.
1 1 What does Performance Across the Software Stack mean?  High level view: Providing performance for physics simulations meaningful to applications 
TerascaleSimulation Tools and Technologies The Mesquite Mesh Quality Improvement Toolkit Lori Diachin LLNL.
Interoperable Mesh Tools for Petascale Applications Lori Diachin, LLNL Representing the ITAPS Team.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
1 Class Diagrams. 2 Overview Class diagrams are the most commonly used diagrams in UML. Class diagrams are for visualizing, specifying and documenting.
Adaptive Meshing Control to Improve Petascale Compass Simulations Xiao-Juan Luo and Mark S Shephard Scientific Computation Research Center (SCOREC) Interoperable.
CCA Common Component Architecture CCA Forum Tutorial Working Group CCA Status and Plans.
Benjamin Post Cole Kelleher.  Availability  Data must maintain a specified level of availability to the users  Performance  Database requests must.
1 Multi-resolution Tetrahedral Meshes Leila De Floriani Department of Computer and Information Sciences University of Genova, Genova (Italy)
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Progress on Component-Based Subsurface Simulation I: Smooth Particle Hydrodynamics Bruce Palmer Pacific Northwest National Laboratory Richland, WA.
Partitioning using Mesh Adjacencies  Graph-based dynamic balancing Parallel construction and balancing of standard partition graph with small cuts takes.
BOĞAZİÇİ UNIVERSITY – COMPUTER ENGINEERING Mehmet Balman Computer Engineering, Boğaziçi University Parallel Tetrahedral Mesh Refinement.
Object storage and object interoperability
TerascaleSimulation Tools and Technologies The Terascale Simulation Tools and Technologies Center James Glimm David Brown Lori Freitag Diachin March 2004.
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
1 Data Structures for Scientific Computing Orion Sky Lawlor /04/14.
1 Overview (Part 1) Background notions A reference framework for multiresolution meshes Classification of multiresolution meshes An introduction to LOD.
CCA (unstructured) Mesh & Data Manager (aka Central Data Object) Component Abstractions - prelim thoughts & status - CCA Working Group Meeting Gatlinburg,
CAD Import Partitioning & Meshing
1 10 Systems Analysis and Design in a Changing World, 2 nd Edition, Satzinger, Jackson, & Burd Chapter 10 Designing Databases.
Lecture 7 - Meshing Applied Computational Fluid Dynamics
Parallel Unstructured Mesh Infrastructure
Decimation Of Triangle Meshes
In-situ Visualization using VisIt
SOLID MODELLING.
GENERAL VIEW OF KRATOS MULTIPHYSICS
Volume Meshing.
Unstructured grid: an introduction
Presentation transcript:

The TSTT Data Model and Interface Lori Freitag

Use TSTT interfaces directly in applications to allow plug-and-play experimentation Discretization Library Mesquite Frontier-Lite Create new tools that use these interfaces to work with the underlying infrastructures interchangeably –Mesquite mesh quality improvement –Discretization Library –Frontier-Lite TSTT Interoperability Development Plan Use TSTT interfaces to use tools interoperably Mesh Data API Geometry Data API Field Data API Mesh/Geometry Model Manager Mesh/Field Model Manager Define interfaces for Mesh Data Geometry Data Field Data Data Model Managers SciDAC Applications Use these tools to impact applications CGMTrellis AOMDCUBIT Wrap existing TSTT tools to comply with these interfaces

Philosophy Create a small set of interfaces that existing packages can support –Very small set of ‘core’ functions that must be implemented –Larger set of functions supported by reference implementations Balance performance and flexibility Work with a large tool provider and application community to ensure applicability Enable both interchangeability and interoperability Use CCA technologies as appropriate –SIDL/Babel for language interoperability –Some use of Ccaffiene and Decaf frameworks for developing prototype TSTT components

TSTT Data Model Participants ANL: Loy, Leurent BNL: Oh LLNL: Chand, Henshaw PNNL: Trease RPI: Shephard, Seole, Yunhau SNL: Freitag, Melander, Tautges SUNY SB: Li UBC: Ollivier-Gooch

Mesh Management Tools Represented Structured meshes –Overture - high quality, predominantly structured meshes on complex CAD geometries (LLNL) Unstructured meshes –AOMD (RPI) - primarily tetrahedral meshes, boundary layer mesh generation, curved elements, AMR –CUBIT (SNL) - primarily hexahedral meshes, automatic decomposition tools, common geometry module –NWGrid (PNNL) - hybrid meshes using combined Delaunay, AMR and block structured algorithms –Frontier (BNL) – interface front tracking –GRUMMP (UBC) – tetrahedral meshes MEGA Boundary Layer Mesh (RPI) Overture Mesh (LLNL)

Mesh Data Hierarchy Level A: Geometric description of the domain –provides a common frame of reference for all tools –facilitates multilevel solvers –facilitates transfer of information in discretizations Level B: Full geometry hybrid meshes –mesh components –communication mechanisms that link them (key new research area) –allows structured and unstructured meshes to be combined in a single computation Level C: Mesh Components Geometry Information (Level A) Full Geometry Meshes (Level B) Mesh Components (Level C) Access through both low and high level interfaces

TSTT Data Model Core Data Types –Mesh Data: provides the geometric and topological information associated with the discrete representation of the computational domain –Geometric Data: provides a high level description of the boundaries of the computational domain; e.g., CAD, image or mesh data –Field Data: (preliminary) the time dependent physics variables associated with application soluiton. These can be scalars, vectors, tensors, and associated with any mesh entity. Data Relation Manager –Provides control of the relationships among two or more the core data types. It resolves cross references between entities in different groups and provides additional functionality that depends on multiple core data types.

Data and Format Infrastructure: –Handles –Tags –Errors Mesh Data –Entities –Entity Sets –Meshes (Static, Modifiable) Geometry Data Mesh/Geometry Interface In each case there is –A ‘definition’, –Expected capabilities –Examples –Functional interfaces

Infrastructure: Handles Definition –An opaque object that represents entities, entity sets, tags to the application –Ensures data neutrality Capabilities –Uniquely associated with entities –May or may not be invariant through different calls to the interface in the lifetime of the mesh; denoted by the tag convention Invariant_Handles

Infrastructure: Tags Definition –User-defined opaque data with a unique string name, size (in bytes), tag handle –Associated with entities, meshes, entity sets, geometrical entities Capabilities –Given a handle, return name, size and user data –Given a name, return the handle Tag Conventions –Invariant_Handles (mesh) –Uniquely_Defined_Entities (mesh) –Type1_Mesh (mesh or entity set) –Type2_Mesh (mesh or entity set) –Will be more…

Basic Tag Interface void createTag(in string tag_name, in int tag_size, in opaque default_value, out opaque tag_handle) throws Error void deleteTag(in opaque tag_handle) throws Error void getTagSize(in opaque tag_handle, out int tag_size) throws Error void getTagName(in opaque tag_handle, out string tag_name) throws Error void getTagHandle (in string tag_name, out opaque tag_handle) throws Error void setTagData(in opaque tag_handle, in opaque tag_data) throws Error void getTagData(in opaque tag_handle, out opaque tag_data, out int tag_size) throws Error void createTag(in string tag_name, in int tag_size, in opaque default_value, out opaque tag_handle) throws Error void deleteTag(in opaque tag_handle) throws Error void getTagSize(in opaque tag_handle, out int tag_size) throws Error void getTagName(in opaque tag_handle, out string tag_name) throws Error void getTagHandle (in string tag_name, out opaque tag_handle) throws Error void setTagData(in opaque tag_handle, in opaque tag_data) throws Error void getTagData(in opaque tag_handle, out opaque tag_data, out int tag_size) throws Error

Infrastructure: Errors Definition –A class that allows the interface to provide warning and error information to the user –Inherits from Babel exceptions –Thrown from all interface functions Capabilities –Provide information to the user (warnings, errors) –Allow the user to choose error behavior Silent Print Abort Throw Error Conventions –These will be defined once several implementations are in place

ErrorActions SILENT PRINT_ERROR ABORT_ON_ERROR PRINT_AND_THROW_ERROR THROW_ERROR ErrorActions SILENT PRINT_ERROR ABORT_ON_ERROR PRINT_AND_THROW_ERROR THROW_ERROR Error Interface void setDefaultAction(in ErrorActions action) void getDefaultAction(out ErrorActions action) void set(in int err, in string description) void get(out int err, out string description) bool ok() int getErrorNumber() void getErrorDescription(out string description) void printError(in string label) void actOnError() void setDefaultAction(in ErrorActions action) void getDefaultAction(out ErrorActions action) void set(in int err, in string description) void get(out int err, out string description) bool ok() int getErrorNumber() void getErrorDescription(out string description) void printError(in string label) void actOnError() Enumerated Constants

Mesh Entities Definition –Unique type and topology Type: Vertex, Edge, Face, Region Topology: Point, Line_Segment, Polygon, Triangle, Quadrilateral, Polyhedron, Tetrahedron, Hexahedron, Prism, Pyramid, Septahedron –Faces and regions have no interior holes –Higher-dimensional entities are defined by lower-dimensional entities through canonical ordering relationships Capabilities –Return upward and downward first order adjacencies in the canonical ordering –Support both individual and agglomerated request mechanisms –Vertices return coordinate information in arrays of doubles –Add, retrieve, set, and delete user defined tag data Examples –Vertex (0D), edge (1D), triangular face (2D), tetrahedral region (3D)

Entity EntitySet Workset Iterator Tag Geom_Entity Entity EntitySet Workset Iterator Tag Geom_Entity EntityType VERTEX EDGE FACE REGION NUMBER_OF_ENTITY_TYPES ALL_ENTITIES EntityType VERTEX EDGE FACE REGION NUMBER_OF_ENTITY_TYPES ALL_ENTITIES Enumerated Constants Opaque Objects

Mesh Entity Entity Iterator Workset Iterator Tag Mesh Entity Entity Iterator Workset Iterator Tag EntityType VERTEX EDGE FACE REGION NUMBER_OF_ENTITY_TYPES ALL_ENTITIES EntityType VERTEX EDGE FACE REGION NUMBER_OF_ENTITY_TYPES ALL_ENTITIES EntityTopology POINT LINE_SEGMENT TRIANGLE QUADRILATERAL POLYGON TETRAHEDRON HEXAHEDRON PRISM PYRAMID SEPTAHEDRON POLYHEDRON UNDEFINED ALL_TOPOLOGIES EntityTopology POINT LINE_SEGMENT TRIANGLE QUADRILATERAL POLYGON TETRAHEDRON HEXAHEDRON PRISM PYRAMID SEPTAHEDRON POLYHEDRON UNDEFINED ALL_TOPOLOGIES Enumerated Constants Opaque Objects

Mesh Entity Entity Iterator Workset Iterator Tag Mesh Entity Entity Iterator Workset Iterator Tag EntityType VERTEX EDGE FACE REGION NUMBER_OF_ENTITY_TYPES ALL_ENTITIES EntityType VERTEX EDGE FACE REGION NUMBER_OF_ENTITY_TYPES ALL_ENTITIES EntityTopology POINT LINE_SEGMENT TRIANGLE QUADRILATERAL POLYGON TETRAHEDRON HEXAHEDRON PRISM PYRAMID SEPTAHEDRON POLYHEDRON UNDEFINED ALL_TOPOLOGIES EntityTopology POINT LINE_SEGMENT TRIANGLE QUADRILATERAL POLYGON TETRAHEDRON HEXAHEDRON PRISM PYRAMID SEPTAHEDRON POLYHEDRON UNDEFINED ALL_TOPOLOGIES Enumerated Constants Opaque Objects StorageOrder BLOCKED INTERLEAVED UNDETERMINED StorageOrder BLOCKED INTERLEAVED UNDETERMINED

Entity Query Interface void entityGetTopologicalDimension(in array entity_handles, inout array dim) throws Error void entityGetTopology(in array entity_handles, inout array topology) throws Error void entityGetType(in array entity_handles, inout array type) throws Error void entityGetVertexCoords(in array entity_handles, in StorageOrder storage_order, inout array coords) throws Error void entityGetAdjacencies(in array entity_handles, in EntityType entityAdjacencyType, inout array adjacentEntityHandles, inout array csr_pointer, inout array csr_data) throws Error void entityGetTopologicalDimension(in array entity_handles, inout array dim) throws Error void entityGetTopology(in array entity_handles, inout array topology) throws Error void entityGetType(in array entity_handles, inout array type) throws Error void entityGetVertexCoords(in array entity_handles, in StorageOrder storage_order, inout array coords) throws Error void entityGetAdjacencies(in array entity_handles, in EntityType entityAdjacencyType, inout array adjacentEntityHandles, inout array csr_pointer, inout array csr_data) throws Error

Entity Tag Interface void entityAddTag (in array entity_handles, in opaque tag_handle) throws Error void entityRemoveTag (in array entity_handles, in opaque tag_handle) throws Error void entityGetAllTagHandles(in array entity_handles, out array tag_handles) throws Error void entityGetTagData(in array entity_handles, in opaque tag_handle, inout array tag_values, out int tag_size) throws Error void entitySetTagData(in array entity_handles, in opaque tag_handle, in array tag_values in int tag_size) throws Error void entityAddTag (in array entity_handles, in opaque tag_handle) throws Error void entityRemoveTag (in array entity_handles, in opaque tag_handle) throws Error void entityGetAllTagHandles(in array entity_handles, out array tag_handles) throws Error void entityGetTagData(in array entity_handles, in opaque tag_handle, inout array tag_values, out int tag_size) throws Error void entitySetTagData(in array entity_handles, in opaque tag_handle, in array tag_values in int tag_size) throws Error

Mesh Definition –A collection of TSTT entities that have uniquely defined entity handles –Entities are related through topological adjacency information in which higher-dimensional entities are defined by lower dimensional entities This definition may or may not be unique Examples –Type 1: a non-overlapping connected set of TSTT entities, e.g., a conformal finite element mesh –Type 2: a collection of Type 1 meshes used to represent the computational domain. These may or may not be overlapping meshes –Adaptive meshes in which both coarse and fine TSTT entity regions are retained in the database. The most highly refined regions of this mesh typically comprises a Type 1 or Type 2 mesh –SPH meshes which consist of a collection of vertices

Mesh Capabilities Static Type 1 Meshes –Populating the interface by string name –Basic query capabilities Entities and adjacency information Array or iterator-based –Add, retrieve, set and delete user-defined tags Extensions –Subsetting to create arbitrary groupings of mesh entities –Modifiable meshes –Connections to geometric entities

Adjacency Information First-order Adjacency Table Entries Lower triangular: downward adjacencies Upper triangular: upward adjacencies Diagonal: entity returns itself Can be used to get and set adjacency information VEFR V1001 E0100 F0110 R0001

Mesh Creation and Query void load(in string name) throws Error void getGeometricDimension(in opaque entity_set_handle, out int dim) throws Error int getNumberEntityOfType(in opaque entity_set_handle, in EntityType entity_type) throws Error int getNumberEntityOfTopology(in opaque entity_set_handle, in EntityTopology entity_topology) throws Error void getNativeStorageOrder(in opaque entity_set_handle, out StorageOrder storage_order) throws Error bool hasInvariantTags() throws Error void getAdjacencyTable(out array adjacency_table) throws Error void load(in string name) throws Error void getGeometricDimension(in opaque entity_set_handle, out int dim) throws Error int getNumberEntityOfType(in opaque entity_set_handle, in EntityType entity_type) throws Error int getNumberEntityOfTopology(in opaque entity_set_handle, in EntityTopology entity_topology) throws Error void getNativeStorageOrder(in opaque entity_set_handle, out StorageOrder storage_order) throws Error bool hasInvariantTags() throws Error void getAdjacencyTable(out array adjacency_table) throws Error

Primitive Type Retrieval Arrays void getVertexCoordinates(in opaque entity_set_handle, inout array coordinates, inout array in_entity_set, inout StorageOrder storageOrder) throws Error void getEntityVertexCoordinateIndices( in opaque entity_set_handle, in EntityType requestedEntityType, in EntityTopology requestedEntityTopology, inout array count, inout array index, inout array entity_topologies) throws Error void getAdjacentEntityVertexCoordinateIndices( in opaque entity_set_handle, in EntityType thisEntityType, in EntityTopology thisEntityTopology, in EntityType requestedEntityType, in EntityTopology requestedEntityTopology, inout array count, inout array index, inout array in_entity_set, inout array entity_topology) throws Error void getVertexCoordinates(in opaque entity_set_handle, inout array coordinates, inout array in_entity_set, inout StorageOrder storageOrder) throws Error void getEntityVertexCoordinateIndices( in opaque entity_set_handle, in EntityType requestedEntityType, in EntityTopology requestedEntityTopology, inout array count, inout array index, inout array entity_topologies) throws Error void getAdjacentEntityVertexCoordinateIndices( in opaque entity_set_handle, in EntityType thisEntityType, in EntityTopology thisEntityTopology, in EntityType requestedEntityType, in EntityTopology requestedEntityTopology, inout array count, inout array index, inout array in_entity_set, inout array entity_topology) throws Error

Entity Retrieval Arrays Error getEntities(in opaque entity_set_handle, in EntityType entity_type, in EntityTopology entity_topology, inout array entity_handles) throws Error Error getAdjacentEntities(in opaque entity_set_handle, in EntityType entity_type_requestor, in EntityType entity_type_requested, inout array adj_entity_handles, inout array count, inout array index, inout array in_entity_set) throws Error Error getEntities(in opaque entity_set_handle, in EntityType entity_type, in EntityTopology entity_topology, inout array entity_handles) throws Error Error getAdjacentEntities(in opaque entity_set_handle, in EntityType entity_type_requestor, in EntityType entity_type_requested, inout array adj_entity_handles, inout array count, inout array index, inout array in_entity_set) throws Error

Interface WorksetIterator void initializeWorksetIterator(in opaque entity_set_handle, in EntityType entity_type, in EntityTopology entity_topology, in int requested_workset_size, out opaque workset_iterator) throws Error bool getNextWorkset(inout opaque workset_iterator, inout array entity_handles) throws Error void destroyWorksetIterator(in opaque workset_iterator) throws Error void initializeWorksetIterator(in opaque entity_set_handle, in EntityType entity_type, in EntityTopology entity_topology, in int requested_workset_size, out opaque workset_iterator) throws Error bool getNextWorkset(inout opaque workset_iterator, inout array entity_handles) throws Error void destroyWorksetIterator(in opaque workset_iterator) throws Error

Interface EntitySetTag void addEntitySetTag(in opaque entity_set_handle, in opaque tag_handle) throws Error void removeEntitySetTag(in opaque entity_set_handle, in opaque tag_handle) throws Error void getEntitySetAllTagHandles(in opaque entity_set_handle, out array tag_handles) throws Error void getEntitySetTagData(in opaque entity_set_handle, in opaque tag_handle, inout opaque tag_data, out int tag_size) throws Error void setEntitySetTagData(in opaque entity_set_handle, in opaque tag_handle, in opaque tag_data, in int tag_size) throws Error void addEntitySetTag(in opaque entity_set_handle, in opaque tag_handle) throws Error void removeEntitySetTag(in opaque entity_set_handle, in opaque tag_handle) throws Error void getEntitySetAllTagHandles(in opaque entity_set_handle, out array tag_handles) throws Error void getEntitySetTagData(in opaque entity_set_handle, in opaque tag_handle, inout opaque tag_data, out int tag_size) throws Error void setEntitySetTagData(in opaque entity_set_handle, in opaque tag_handle, in opaque tag_data, in int tag_size) throws Error

Entity Sets Definition –Arbitrary groupings of TSTT mesh entities May or may not be a multiset or ordered May or may not be a valid computational mesh –Multiple entity sets can be associated with a given mesh –Relationships between entity sets Contained in (subset) relationship Parent/Child relationship Default on creation is contained in parent mesh Capabilities –Static Type 1 capabilities as before –Set Operations Add and remove existing TSTT entities to the mesh set Add, subtract, intersect, or union entity sets Subset and Parent/Child relationships Examples –A set of vertices, the set of all faces on a geometric face, the set of regions in a domain decomposition for parallel computing

Interface EntitySet Creation/Query void createEntitySet (in bool multiset, in bool ordered, out opaque entity_set_created) throws Error void destroyEntitySet (in opaque entity_set_handle) throws Error bool isOrdered(in opaque entity_set_handle) throws Error bool isMultiset(in opaque entity_set_handle) throws Error int getNumEntitySets(in opaque entity_set_handle) throws Error void getEntitySets(in opaque entity_set_handle, out array contained_entity_set_handles) throws Error void getAllEntitySets(in opaque entity_set_handle, out array contained_entity_set_handles) throws Error void getAllEntities(in opaque entity_set_handle, out array entity_handles) throws Error void createEntitySet (in bool multiset, in bool ordered, out opaque entity_set_created) throws Error void destroyEntitySet (in opaque entity_set_handle) throws Error bool isOrdered(in opaque entity_set_handle) throws Error bool isMultiset(in opaque entity_set_handle) throws Error int getNumEntitySets(in opaque entity_set_handle) throws Error void getEntitySets(in opaque entity_set_handle, out array contained_entity_set_handles) throws Error void getAllEntitySets(in opaque entity_set_handle, out array contained_entity_set_handles) throws Error void getAllEntities(in opaque entity_set_handle, out array entity_handles) throws Error

Interface EntitySet Set Operations void addEntitySets (inout bool entity_set, in array contained_entity_sets) throws Error void removeEntitySets (inout opaque entity_set_handle, in array contained_entity_sets) throws Error void addEntitiesToEntitySet (inout opaque entity_set_handle, in array entity_handles) throws Error void removeEntitiesToEntitySet (inout opaque entity_set_handle, in array entity_handles) throws Error void subtractEntitySets(inout opaque entity_set_1, in opaque entity_set_2) throws Error void intersectEntitySets(inout opaque entity_set_1, in opaque entity_set_2) throws Error void uniteEntitySets(inout opaque entity_set_1, in opaque entity_set_2) throws Error void addEntitySets (inout bool entity_set, in array contained_entity_sets) throws Error void removeEntitySets (inout opaque entity_set_handle, in array contained_entity_sets) throws Error void addEntitiesToEntitySet (inout opaque entity_set_handle, in array entity_handles) throws Error void removeEntitiesToEntitySet (inout opaque entity_set_handle, in array entity_handles) throws Error void subtractEntitySets(inout opaque entity_set_1, in opaque entity_set_2) throws Error void intersectEntitySets(inout opaque entity_set_1, in opaque entity_set_2) throws Error void uniteEntitySets(inout opaque entity_set_1, in opaque entity_set_2) throws Error

Interface EntitySet Parent/Child Relationships bool isParentChildRelated(in opaque entity_set_1, in opaque entity_set_2) throws Error void getEntitySetNumChildren(in opaque this_entity_set) throws Error void getEntitySetNumParents(in opaque this_entity_set) throws Error void getEntitySetChildren(in opaque from_entity_set, in int num_hops, out array entity_set_handles) throws Error void getEntitySetParents(in opaque from_entity_set, in int num_hops, out array entity_set_handles) throws Error void addEntitySetParent(inout opaque this_entity_set, out opaque parent_entity_set) throws Error void addEntitySetChild(inout opaque this_entity_set, out opaque child_entity_set) throws Error void addEntitySetParentsChildren(inout array parent_entity_sets, inout array child_entity_sets) throws Error void removeEntitySetParentChild(inout opaque parent_entity_set, inout opaque child_entity_set) throws Error bool isParentChildRelated(in opaque entity_set_1, in opaque entity_set_2) throws Error void getEntitySetNumChildren(in opaque this_entity_set) throws Error void getEntitySetNumParents(in opaque this_entity_set) throws Error void getEntitySetChildren(in opaque from_entity_set, in int num_hops, out array entity_set_handles) throws Error void getEntitySetParents(in opaque from_entity_set, in int num_hops, out array entity_set_handles) throws Error void addEntitySetParent(inout opaque this_entity_set, out opaque parent_entity_set) throws Error void addEntitySetChild(inout opaque this_entity_set, out opaque child_entity_set) throws Error void addEntitySetParentsChildren(inout array parent_entity_sets, inout array child_entity_sets) throws Error void removeEntitySetParentChild(inout opaque parent_entity_set, inout opaque child_entity_set) throws Error

Modifiable Meshes Definition: –A dynamic mesh whose geometry and topology can be changed Capabilities –Mesh Geometry Modification Set vertex coordinates –Mesh Topology Modification Add entities Delete entities –No validity checks –Requires simple classification mechanisms against the geometric model Intended to support higher-level functionality –Mesh quality improvement –Adaptive schemes with validity checking –Front tracking procedures –Basic mesh generation algorithms

Modifiable Mesh Interface void setVertexCoordinates(in array vertex_handles, in StorageOrder storage_order, in array new_coords) throws Error void createEntities(in EntityTopology new_entity_topology, in array lower_order_entities, out array new_entities) throws Error void deleteEntities(in array entity_handles) throws Error void setVertexCoordinates(in array vertex_handles, in StorageOrder storage_order, in array new_coords) throws Error void createEntities(in EntityTopology new_entity_topology, in array lower_order_entities, out array new_entities) throws Error void deleteEntities(in array entity_handles) throws Error

Geometrical Model Definition –A representation of the spatial domain with both a topological description (model vertex, model edge, model face, and model region) and a geometric or shape description (e.g., Bsplines, Bezier patches) –Usually precedes the discrete mesh representation Capabilities –Loading a model –Minimal query interface for model topology –Entity-based geometry queries (e.g. closest point) –Directional “sense” of a child entity with respect to the parent entity

Geometry Interface (preliminary) void loadGeometry(in string name) throws Error void getGeometryEntities(in int dimension, out array geom_entities) throws Error void getGeometryAdjacencies(in opaque geom_entity, in int requested_dimension, out array adjacent_geom_entities) throws Error out array new_entities) throws Error void getRelativeSense(in opaque child_geom_entity, in opaque parent_geom_entity, out int sense) throws Error void getClosestPoints(in opaque geom_entity, in array input_coords, out array closest_coords) throws Error void getTagData(in opaque geom_entity, in string name, in int size, out opaque tag_data) throws Error void setTagData(in opaque geom_entity, in string name, in int size, in opaque tag_data) throws Error void getTagNamesAndSizes(out array names, out array sizes) throws Error void loadGeometry(in string name) throws Error void getGeometryEntities(in int dimension, out array geom_entities) throws Error void getGeometryAdjacencies(in opaque geom_entity, in int requested_dimension, out array adjacent_geom_entities) throws Error out array new_entities) throws Error void getRelativeSense(in opaque child_geom_entity, in opaque parent_geom_entity, out int sense) throws Error void getClosestPoints(in opaque geom_entity, in array input_coords, out array closest_coords) throws Error void getTagData(in opaque geom_entity, in string name, in int size, out opaque tag_data) throws Error void setTagData(in opaque geom_entity, in string name, in int size, in opaque tag_data) throws Error void getTagNamesAndSizes(out array names, out array sizes) throws Error

Mesh/Geometry Classification Definition –Manages the relationship between the high level geometric description and the mesh –Called by an application that knows about both Capabilities –For a given mesh entity, get the geometric entity against which it is classified –Establish a classification relationship between a mesh entity and a geometric entity

Mesh/Geom Classification Interface void getClassification(in array mesh_entity_handles, out array model_entity_handles) throws Error void setClassification(in array mesh_entity_topology, in array model_entity_handles) throws Error void getClassification(in array mesh_entity_handles, out array model_entity_handles) throws Error void setClassification(in array mesh_entity_topology, in array model_entity_handles) throws Error

Issues that have arisen Nomenclature is harder than we first thought Cannot achieve the 100 percent solution, so... –What level of functionality should be supported? Minimal interfaces only? Interfaces for convenience and performance? –What about support of existing packages? Are there atomic operations that all support? What additional functionalities from existing packages should be required? –What about additional functionalities such as locking? The devil is in the details

TSTT Interface Implementation Implementations RPI, LLNL, SNL/ElemTech, ANL, PNNL Immediate uses of TSTT interfaces Mesquite mesh quality improvement toolkit (ANL, SNL) VERDE quality assessment (SNL, ElemTech) Frontier interoperability with mesh generation codes (BNL, LLNL, PNL) VTK visualization (LLNL)

Roadmap for next two years Fall 03 –Complete and implement standard mesh interfaces –Develop a prototype system with meshes, geometry, fields and data relation managers –Basic, low-level discretization interfaces –Demonstrate utility via pairwise coupling of technologies and pairwise insertion of existing technology into SciDAC apps –Demonstrate interchangeability with compatible technologies (e.g., partitioning, visualization) and simple applications Fall 04 –Release TSTT mesh components compliant with query interface as CCA components –Discretization interfaces and start library development/deployment –Demonstrate interoperability in SciDAC related applications