Information Technology Reference
In-Depth Information
4PIGA
The Portable, Extensible Toolkit for Scientific Computation (PETSc) is a set
of data structures and routines for the parallel solution of discrete problems,
generally coming from some discretization of a partial differential equation. With
respect to parallelism, PETSc is built on top of MPI, the standard message
passing interface framework. Its main goal is to provide the user with a complete
set of tools for the solution process, freeing the programmer from the burden of
parallel implementation.
PETSc is object-oriented in nature, with the main classes being: IS, Vec,
Mat, DM, KSP, PC, SNES, TS . For example, once a Vec object is created, its
contiguous chunks are spread throughout as many processors as the user has
requested.Thesameistrueofa Mat object. To access those objects, PETSc
provides the Set and Get pair, such that the programmer does not have to think
about the inter-process communication. More information on these objects and
the PETSc framework can be found in [4].
PetIGA is a scalable implementation of NURBS-based Galerkin and Colloca-
tion finite element methods, built on top of the PETSc library. Its main idea is to
use the advantageous features one has access to through PETSc, while providing
the user with a framework that only requires a variational formulation, specified
through the coding of a residual and the Jacobian associated with the discrete
problem.
4.1 PetIGA Data Structures
PetIGA also uses the object-oriented paradigm. The first main class, called IGA ,
is an abstraction of the notion of a patch .An IGA object contains all the in-
formation to build the basis functions in each direction ( IGABasis ), the control
points to build the geometric mapping and the quadrature rule ( IGARule )used,
that is, the quadrature points and weights. Additionally, in terms of paralleliza-
tion, we use a domain decomposition approach, splitting each direction in a way
to guarantee a load balance between the processors.
Figure 1a shows an example using four processors, numbered from P 0to P 3.
In this simple case, each processor will have its own IGA object. To properly
perform the parallel assembly of the global vectors and matrices, PetIGA makes
extensive use of distributed structured grid data structures very similar to the
built-in DMDA objects of PETSc (see [4], section 2 . 4), which manage all of
the communication patterns on a structured grid between the processors. The
crosshatched regions in figure 1a show the neighboring ( ghost ) elements of pro-
cessor P 0. To complete its description, the IGA object has an iterator through
IGAElement objects. This relationship is shown on the diagram of figure 1b.
The IGAElement class abstracts an element in the patch. It contains all the
information needed from the element point of view, with the most important
piece being the local degrees of freedom (i.e. the basis functions), whose support
intercept the element, as well as their derivatives, evaluated at the quadrature
points. To achieve good memory performance, since a structured grid is being
 
Search WWH ::




Custom Search