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:
Except PTMG, these algorithms were developed by the Hamburg Multigrid GroupTo 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!