The C++ Multigrid Generator Toolkit

This page is out of date. [Some additional information].
MG++ is a multigrid generator written in C++. At its heart is "MGLIB", a MultiGrid class LIBrary, constituting a grid generator, a generator [of gauge field configurations], and a multilevel update generator [for relaxation, coarse-grid correction and determination of intergrid transfer operators]. The library is being worked on, version 0.0 being scheduled some time in spring 1994, under the GNU Library Public License. It will simplify and shorten time for coding, testing and maintenance of multigrid algorithms, including an easy-to-use User's Manual, prepared using the literate programming paradigm. MG++ will allow for easy implementation and change of grid geometries and physical input (such as a lattice gauge group). Hopefully, from this starting point, C++ will make its way into Lattice Field Theory [The possibility of using C++ "aiming at major improvements in scientific software methodology" was first mentioned by K.G. Wilson in his talk at the Lattice Symposium in 1989].

Work in progress will be made public here, in newsgroup hepnet.lang.c++, and through the MGNet Digest.

There are similar approaches known already, for example the CANOPY tool (coded in C), developed at FNAL, some features of ZZ, a programming language (dynamical parser) of the APE-100 parallel computer from Rome, and Data Abstraction Techniques [PostScript] used in finite-element multigrid programming [PostScript]. In parallel computing, K. Decker has pleaded for the use of literate programming techniques in a paper on Algorithm design [PostScript].

Toby Burnett's pages on the development version of GISMO are a nice example of how WWW can be used to present a C++ Library. Here is part of the Inheritance Graph for MGLIB for illustration how it also could be done.

Here is more information on C++ (and its applications in HEP), and here is more on multigrid methods


Marcus Speh, 22-12-94
Martin Heilmann, 27-02-95