Unstructured grids are stored in PIF as a pointList defining the grid points, and an additional faceList (or a solidList for three-dimensional grids) for defining the grid elements. This faceList references the grid points directly, which is a contradiction to the hierarchical way geometries are stored, but enables a more compact representation. However, a disadvantage is that no attributes can be defined on grid lines of unstructured grids; just attributes defined on the grid points (i.e. referencing the pointList) or the grid elements (i.e. referencing the faceList/solidList) are possible.
The grid type is identified by an additional attribute contained in the grid, that stores the element type of each element in the grid, or - if all elements are equal - just one single element type which is then valid for all grid elements. This mechanism allows the specification of mixed-element grids.
Hierarchical unstructured grids can be specified also in PIF: For each level of the hierarchical grid, a separate faceList and attribute inside the grid construct is used. The face list of the lowest level references the points in the point list as usual. The face lists of the higher levels reference the elements defined in the face list of the next lower level, thus building the grid hierarchy. The corresponding attributes of each grid level specify the grid element types of the various grid elements.
The PAI itself does not support reading and writing of unstructured grids directly, instead he offers functions for reading and writing the grid construct, the pointList, the faceList and attribute construct. Additionally, element-wise reading and writing of the nameList entries of the faceList and the various grid types stored in the attribute is necessary. These PAI features are used by the GRS library see Section 7.1 to provide dedicated support for unstructured grids.
Figure 6.15: Support for unstructured grids
Since the number of different unstructured grid element types used in TCAD simulators increases steadily, a specification mechanism for dynamically adding new element types by providing a unique name, an interpolation and a decomposition function has also been implemented in the GRS library. After recompilation of the GRS library, support for the new element type is available in all grid-oriented framework services. Fig. 6.15 shows some example elements and how they are referenced in a PIF grid.
Applications dealing with attributes, however, do not even need to take care of the specific grid types the attributes are defined on, since reading and interpolation of attributes defined over a grid can be done with GRS functions handling those grid peculiarities. The generic interpolation function for example is automatically invoked when requesting an attribute value at a location (x,y). It knows the grid type the attribute is defined on, and correspondingly invokes the orthoProduct interpolation or determines the element in which the requested location lies, then invoking the element interpolation function defined for that element type. This interpolation mechanism is described in detail in Section 7.1.