The Grid Classes



next up previous contents
Next: The Point List Up: 7.1.1 Architecture Previous: The Attribute Class

The Grid Classes

   

GRS distinguishes between three different grid types, namely tensor product grids, unstructured grids, and point cloud grids. All three classes are derived from a common generic grid class, which contains a grid type identifier set to one of the three types upon grid reading. An application now can easily determine the type of the grid under consideration by examining this grid type identifier.

An additional GRS object pointer to a point list object is also defined by this generic grid class, which then can be used to represent point cloud grids and tensor product grids as well: These grids contain just a PIF point list object, which is an orthoProduct in case of a tensor product grid, and an unstructured point list in case of the point cloud grid. Therefore this pointer will point to a GRS ortho product point list object in the case of a tensor product grid, and to a GRS unstructured point list object in the case of a point cloud or unstructured grid. While this multiple use of one class definition for many logically different purposes will most probably be rejected by a rigid advocate of pure object-orientedness, this approach is most practical from the PIF point of view and simplifies the definition of corresponding methods considerably.

Since an unstructured PIF grid contains additional information about the grid elements, a separate unstructured grid class is derived from the generic grid class. Two members besides the inherited ones are contained in this class, both of which are GRS object pointers to GRS face list objects see page gif of the unstructured grid. In the case of a hierarchical unstructured grid, one of these pointers points to the base hierarchy, and the other to the highest hierarchy of the unstructured grid. For non-hierarchical unstructured grids, both pointers point to the (only) base hierarchy of the unstructured grid.

A few figures shall illustrate the various grid representations of GRS: Fig. 7.4 shows a tensor product grid referencing an orthoProduct point list. A point cloud grid would be stored as shown in Fig. 7.5. Unstructured grids can be either plain ones or hierarchical ones. Fig. 7.6 shows a plain unstructured grid, whereas Fig. 7.7 shows a hierarchical unstructured grid consisting of TRI3 elements on the lowest level and TRI3Conn elements on the higher hierarchy levels.

  
Figure: Tensor product grid object. Only members of pointer type are shown. All rectangles with sharp corners represent simple allocated C arrays rather than GRS objects, drawn as rectangles with round corners. Both the origin and the base vectors are stored in allocated real arrays. In this case the origin vector has three values, hence the grid lies in three-dimensional space. There are three orthonormal base vectors, hence we have also have a grid with three topological dimensions spanning a three-dimensional cube. The tick values finally are stored in the grid axes real arrays.

  
Figure: Point cloud grid object. Only members referencing other objects are shown. Since a point cloud grid is just a set of points, an unstructured point list object is used to represent the grid.

  
Figure: Unstructured grid object. Only members referencing other objects are shown. Solid lines denote reference by pointer while dashed lines denote reference by index.

  
Figure: Hierarchical unstructured grid object. Only members referencing other objects are shown. The Faces and Conn structures are simplified for clarity. Solid lines denote reference by pointer while dashed lines denote reference by index. An example element hierarchy branch is shown in the connectivity arrays.

Due to the importance of grids in general for all TCAD applications, functional support for the grid classes is crucial. This support can be divided into two categories: Element-wise reading and writing of unstructured gridsgif see Section 7.1.2, and complete reading and writing into and from object representations for interpolation or in-memory manipulation.

Interpolation requires that the grids are hold in memory for fast access to individual grid points or elements. Therefore read functions exist, that read a PIF grid into a corresponding GRS grid object as discussed above. But interpolation requires further preparation of the grid, which is discussed in more detail in Section 7.1.3.



next up previous contents
Next: The Point List Up: 7.1.1 Architecture Previous: The Attribute Class



Martin Stiftinger
Tue Nov 29 19:41:50 MET 1994