7.1.1 Architecture



next up previous contents
Next: The Single Linked Up: 7.1 GRS Previous: 7.1 GRS

7.1.1 Architecture

GRS is implemented with the help of VOOPS (see Section 5.6 and Appendix C), where the various objects represented by GRS are modeled through VOOPS class definitions. The instances of those classes store the information read from PIF, and the application uses an opaque object pointer to such an instance for all operations to perform.

The GRS library was designed bottom-up in that its classes are closely related to the general syntax of the PIF objects they describe. Therefore GRS is not limited to the two main purposes mentioned above, but rather provides an easily extensible and flexible object-oriented presentation of PIF objects to TCAD applications. Although the methods implemented on those classes are currently limited to fulfill the main design goals, they represent generic building blocks which can be used and extended to create new functionality inside GRS. Due to the intrinsic property of object-oriented designs, that changes in the implementation of a certain class do seldomly affect other classesgif, extensions to GRS can easily be effected. This property of object-oriented designs makes them well suited for academic environments, when students need to accomplish a well-defined and self-contained goal inside a team effort.

The whole GRS library is comprised of 32 template files making up a total of more than 5000 lines of VOOPS code, which get expanded to more than 15000 lines of C code after running VOOPS on them. The library defines 229 methods on 24 classes.

The various class definitions result in a class tree which is shown in Fig. 7.2. The solid lines denote an inheritance branch, whereas the dashed lines denote a continuation by further similar classes on demand. While the array and element classes seem to be unrelated to the other classes in this diagram since they define their own inheritance trees, they are actually used in many places throughout GRS for point list and attribute representations on the one hand, and unstructured grid element representation on the other hand.

  
Figure 7.2: The GRS class tree.

In the following the various GRS classes and the methods defined on them will be discussed. Note that only important methods are mentioned which are defined exclusively by the respective class or override one of the default methods which are defined automatically by VOOPS on each class. The default methods are presented in detail in Appendix C. Due to the generality of GRS' class definitions, some of the methods described may seem unrelated to the global context. However, the sections describing the process of unstructured grid reading and writing and interpolation on tensor product and unstructured grids will throw light upon those methods.





next up previous contents
Next: The Single Linked Up: 7.1 GRS Previous: 7.1 GRS



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