next up previous
Next: 4. Parallelization via PGSLIB Up: JTpack90 (SIAM PPSC97 paper) Previous: 2. Overview of JTPACK90


3. Object-Based Design

Although even JTPACK77 implements a form of object-based design, it is necessarily crude due to the lack of syntactic support for such programming in F77 (for more on how this is accomplished in JTPACK77, see [10]). F90 provides a number of syntactic advances over F77, including:

Modules in particular are a powerful addition to the language, and although they can be used in a number of ways, they are often used to group entities that are related in some manner. Two extreme options for a package such as JTPACK90 would be:

In JTPACK90 we have chosen primarily the latter approach. Although all routines in JTPACK90 are encapsulated in modules, there are two primary types of modules.

Note that this is a hybrid approach in that some of the routines dealing with matrices of a particular storage type reside in the solver modules rather than in the class modules. This was a conscious decision, since it makes adding a new solver much easier at the expense of requiring slightly more effort when adding a new storage type. With our approach, to add a new solver one must simply create a new solver module. Adding a new storage type requires creating a new class module as well as adding a new routine (though really just a ``template'' with the correct declarations and an include statement) to each of the solver modules.


next up previous
Next: 4. Parallelization via PGSLIB Up: JTpack90 (SIAM PPSC97 paper) Previous: 2. Overview of JTPACK90
John A. Turner