The purpose of this project is the maintenance and further
a toolbox of software components for the
numerical solution of partial differential equations.
During the last year, efforts have been undertaken in order to develop
a prototype of the new pdelib2
kernel which is aimed at higher
efficiency especially in the context of three-dimensional simulations
while maintaining the modular structure of the existing version.
The present state is characterized by
- Shared memory parallelization
of grid access and linear
algebra. A parallelization layer has been developed which, depending
on the available compilers, allows to work either with the pthreads
library or OpenMP compiler directives.
- Equally efficient access of node-, edge-, facet- and cell-based
degrees of freedom. This is facilitated by a mesh data structure based
on adjacency matrices stored in index lists. On top of this,
higher-order finite element functionality shall be implemented.
- Vectorizable element callback functions. In difference to the
existing pdelib implementation, the atomic mesh item accessed by
the user is a list of elements rather than a single element. In this way,
superscalar optimizations and efficient cache re-use are
organized. Furthermore, a modularization based on an element list level is
connected with far less function call overhead.
Efficient search functions on simplicial meshes;
- User input in the
language. The whole Lua user interface is
restructured. The user can access mathematical objects like vectors,
block vectors, and matrices in a mathematically motivated manner,
similar to, e.g., matlab.
- Integration of
Delaunay mesh generation tools. A user of pdelib2 will be able
to describe the geometry in the Lua language. The corresponding data
are directly fed to the mesh generators using the triangulateio
resp. tetgenio data structures provided by them.
- Integration of
- Support of complex numbers.
LaTeX typesetting by I. Bremer