9.2 The Fundamental Data Structures within MultiRegions

As mentioned earlier, in almost all object-oriented languages (which includes C + +), there exists the concepts of class attributes and object attributes. For a summary of attributes and access patterns, please review Section 5.2. Within the MultiRegions directory of the library, there exists a class inheritance hierarchy designed to try to encourage re-use of core algorithms (while simultaneously trying to minimize duplication of code). We present this class hierarchy in Figure 9.3.


pict

Figure 9.3 Class hierarchy derived from ExpList, the base class of the MultiRegions Directory.


At its core, the items contained within MultiRegions are meant to represent sets of LocalRegions. In the most abstract sense, an ExpList is merely a set of LocalRegion objects that may or may not have any relevance to each other. We then, as we do in other parts of the library, specialize on the dimension of the objects these sets will contain. At the subsequent levels of the hierarchy, we now involve information about we want to treat a collection of elements when evaluating them as a field. We consider a field to be the representation of a function over a (sub–)domain. A domain consists of a collection of elements that are connected (that is, they form a contiguous region in space). We think of the region of space as being tiled by elements over which expansions are build. If we consider a MultiRegion field to be a collection of these expansions with no constraints on their continuity, we arrive at the DisContField family of class definitions (which vary by dimension). For the currently available solvers within Nektar++, this level of field is used for the solution of PDEs via the discontinuous Galerkin (dG) and Flux-Reconstruction (FR) methods. If we consider a function as a collection of expansion in which we require continuity (in Nektar++, only C0 continuity), then we employ a further derived class called ContField (which again varies by dimension). For the currently available solvers within Nektar++, this level of field is used for the solution of PDEs via the continuous Galerkin (cG) method. Since many of the operations at the continuous field level do not rely upon the continuity of the field, we have structured the continuous MultiRegion object as with an is-a relationship with the DisContFields.

The various private, protected and public data members contained within MultiRegions are provided in the subsequent sections.

9.2.1 Variables at the Level of ExpList

Private:

Protected:

Public:

9.2.2 Variables at the Level of ExpList$D for various Dimensions

Private:

Protected:

Public:

9.2.3 Variables at the Level of Discontinuous Field Expansions

Private:

Protected:

Public:

9.2.4 Variables at the Level of Continuous Field Expansions

Private:

Protected: