MGLIB Inheritance Graph

This is only an incomplete tree of MGLIB classes for illustration, and probably out of date by now. It will later be supplemented by a Class Scope Chart. Rewriting the code for Templates (User-defined parametrized types) is planned to support different grid geometries, dimensions, and lattice gauge groups

In this inheritance graph, the relator " is-a " indicates which MGLIB class is derived from which, i.e. MultiLayer is derived from Layer, since a multilayer is a collection of layers. One says that Layer is a "base class" to MultiLayer. Class SList, which represents a list of sites, has no base class and is therefore a root class. Its friend, the auxiliary iterator class SListIterator is a "root" class for other derived iterator classes.

"Friendship" in the sense used in C++, is expressed by the " FRD " relator. Since friendship does not provide a type relationship, those parts of the tree which consist of befriended iterator classes) are effectively disconnected from the inheritance point of view. There is no instance of multiple inheritance.

The has-a relator expresses "class composition" -- a Grid requires a Layer, a MultiGrid requires a MultiLayer class, and a NeuralMultiGrid requires a NeuralNet.

On the bottom, there are clients of the class hierarchy which correspond to some multilevel algorithms used in lattice field theory simulations:

  • ISU, for "Iteratively Smoothed Unigrid"
  • GSPMG, for "Ground-State Projection Multi-Grid"
  • PTMG, for "Parallel-Transported Multi-Grid", and
  • NeuralMultiGrid, which requires a NeuralNet
  • Except PTMG, these algorithms were developed by the Hamburg Multigrid Group

    To access description and code of these classes, click on their boxes. If you aren't using a suitable browser, you won't even see the picture--sorry!

    Last updated November 21, 1994

    Marcus Speh