Subsections
pdelib - Algorithms and software components for the
numerical solution of partial differential equations
Collaborator: J. Fuhrmann,
K. Gärtner,
H. Langmach,
M. Uhle,
H. Si
Cooperation with: A. Linke (Freie Universität Berlin (FU-FZT 86))
Supported by: DFG-Forschungszentrum ``Mathematik für
Schlüsseltechnologien'' (Research Center ``Mathematics for Key
Technologies'' (FZT 86)),
project C1
Description:
The purpose of this project is the further development of
pdelib, a toolbox of software components for the numerical solution
of partial differential equations. Current project works focus on the
re-design of the whole code.
Fig. 1:
Preliminary results for parallel speedup for Laplace operator
|
The main features being implemented are
- Solver kernel which runs efficiently on single processor
workstations and multiprocessor SMP architectures using OpenMP
or pthreads. The API is targeted at ease of use of the parallel features
while not giving up code efficiency;
- Support for a wide class of problems including finite volumes
for systems of convection/diffusion/reaction equations, Navier-Stokes
equations, and higher order finite elements;
- Integration of the Delaunay mesh generators
triangle
[1] (2D) and
TetGen
(3D). This allows to describe geometries in the extension language Lua or
in the C code and thus offers a large amount of flexibility for grid adaptation
and geometry modification;
- Parameter input and solver control can use the
Lua
[3]
extension language;
- Online visualization of the solution process based on OpenGL.
Fig. 2:
Mesh subdivided for running
calculations on four processors with separators
removed
|
The main aim of the efforts during the reporting period was to bring
the pdelib2 code into a state where it can be used in
application projects. We focused on the following issues:
We assume that grid generators produce grids
which are described by an array of node coordinates, an array of cells
characterized by the adjacent node numbers, an array of cell region numbers, an array of boundary faces characterized by the
adjacent node numbers, and an array of boundary region numbers.
Grid partitioning in pdelib2 has the following aims:
- Given a number of processors nproc, subdivide the sets of
cells, resp. boundary faces resp. nodes into partitions. To
each of the partitions we assign a color in such a way that
neighboring partitions appear in different colors. If possible,
nproc partitions shall correspond to
each of the colors.
This is motivated by the assumption that all partitions with one
color can be processed in parallel without write conflicts by nproc processors during assembly and preconditioning.
- Given a number ncache of cells, re-arrange cells and
boundary faces into homogeneous zones stored consecutively.
Homogeneity means that each zone belongs to exactly one region and
exactly one partition.
Behind this lies the assumption that all data for assembly on ncache elements fit into the cache and can be processed utilizing
superscalar features of modern processor architectures.
Partitioning is performed recursively in several steps with the
help of the
METIS
[4]
package.
A loop over the grid after partitioning then has the following
hierarchical structure:
loop over all partition colors
#pragma omp parallel
loop over all partitions with given color
loop over all zones of the partition
loop over all elements of a zone
The user needs to write code for the inner two loops while the outer
loop and the parallel loop are hidden, opening the possibility for
varying the implementation.
Fig. 3:
Regions, partitions, and zones for a DMFC contact plate
|
On top of the partitioned grid structure, currently, structures
for assembly of higher order finite elements are being implemented.
As a first problem class
available, a system of coupled nonlinear reaction-diffusion-convection
equations as described in [6] has been implemented on
top of the grid kernel.
Visualization for partitioned grids and functions defined on them
has been implemented using OpenGL and the gltools framework.
The gltools framework has been re-implemented on top of the
FLTK
[2] GUI toolkit.
The portability of FLTK to MacOSX and Microsoft Windows
allows now to make pdelib2 available for these systems, including
graphics and GUI.
The application programming
interface has been cleaned up so that it can be well understood by the
users. Documentation using the
Doxygen
[5] documentation tool
has been started.
References:
- J.R. SHEWCHUK,
Triangle: Engineering a 2D quality mesh generator and
Delaunay triangulator,
in: Applied Computational Geometry: Towards Geometric
Engineering, M.C. Lin, D. Manocha, eds. Springer, Berlin, 1996, pp. 203-222.
- B. SPITZAK ET AL., FLTK - the Fast Light Toolkit.
URL: http://www.fltk.org.
- R. IERUSALIMSCHY, L.H. DE FIGUEIREDO, W. CELES, Lua - an
extensible extension language, Software: Practice &
Experience, 26 (1996), pp. 635-652.
URL: http://www.lua.org.
- G. KARYPIS, V. KUMAR, Metis - family of multilevel partitioning
algorithms.
URL: http://www-users.cs.umn.edu/ karypis/metis/
- D. VAN HEESCH, Doxygen documentation tool.
URL: http://www.doxygen.org.
- J. FUHRMANN, Multiphysics systems solution by time-implicit
Voronoi box finite volumes, in: Proceedings of the Third
Symposium on
Finite Volumes in Complex Applications, Porquerolles, France, June 2002,
F. Benkhaldoun, R. Vilsmeier, eds., Hermes, Paris, 2002, pp. 551-559.
LaTeX typesetting by I. Bremer
2004-08-13