A FVM and FEM toolbox for PDEs

pdelib2 is a collection of software components which are useful to create simulators based on solving partial differential equations. The design is aimed at modularity, portability, ability to integrate with other code, and straigthforward parallelization on shared memory architectures.

Contents:   General implementation Notes · Import and Export Filters · Pre- and Post-Processing · Online Visualization · Numerical modules · Performance · Software Dependencies · System Information 

General implementation Notes

Array based design of the main data structures allows interoperability with  a large number of legacy packages and leaves freedom for the choice of the programming language. pdelib2 uses computational kernels written in FORTRAN. Main data structures are implemented in C++. Scripting is available in Lua.
  • Data structures based on multi-dimensional arrays to store solutions, grids, matrices and other objects.
  • Safe memory management based on C++ smart pointers.
  • Library access to the grid generators Triangle and TetGen.
  • Grid partitioning for parallel computations and cache efficient data access using METIS
  • Linear algebra subroutines, matrix assembly and nonlinear operator application designed for parallel computations (more...).
  • Integrated visualization of the computed data using OpenGL.
  • Linear problems are solved by iterative and direct solvers, e.g. PARDISO.
  • Large part of the library accessible from the extension language Lua by using the SWIG interface generator tool.
  • Graphical user interfaces for specialized problems using the FLTK toolkit.

Import and Export Filters

Build-in data file formats
  • .tsol - read/write of (time-)step solution data in a non redundant way.
Build-in geometry and grid file formats
  • .grid - ASCII/Binary lua/ldf files with (generic) grid or geometry description
  • .xgrid - binary  ldf files with grid description
  • .sg - pdelib1 simplex grid files
  • .polyx - extension of .poly
  • .vec - vectorfield files
Support of additional grid file formats

Pre- and Post-Processing

These stand-alone software components offers users the ability to analyse data offline. The offline implementation of the following programs based on online viewers.

gview gview Viewer for geometry and grid files (1D, 2D and 3D)
semiview semiview Viewer for numerical solutions of large problems which generates huge data files (> 2GB). semiview is a special implementation to show simulation results concerning Semiconductor Photon Detectors
player player Show a time depended solution of file format .tsol. Generic and custom interpretation are possible.

Online Visualization

During calculations direct view of real data without interpolation and copy is supported. This approach is fast and helps degugging. From all pdelib viewers a dump into following formats are possible
  • PPM-Raw (single / series of pictures)
  • PNG-Compressed (single / series of pictures)
  • EPS-Vector (single / series of pictures)
  • MPEG-Video (video format)
gView gView Online viewer for grid data (1D, 2D and 3D)
aView aView Online viewer for scalarfields (1D, 2D and 3D)
vfView vfView Online viewer for vectorfields (2D and 3D)

Further features are
  • MultiView and OpenGL stereo and a simple scene editor to offer a spatially perceivable representation of 3D data.
  • A macro recorder offers a way to record and play any graphical user interaction. Furthermore, the recorded macros are plain editable Lua code.
  • Advanced color properties for regions and interfaces between them. Selectable are filled, transparent or wireframe. In this example the uninteresting outer region is greyed out.
  • Arbitrarily oriented cut plane

Numerical modules

  • Grid partitioning with variable width of separator
  • Grid interpolation: grid-grid for adaptive methods, grid-point for measurement (pdelib2/grid_interpol)
  • Basic finite volume (FVM) assemble and apply loops (pdelib2/grid)
  • Linear algebra operations between (sparse-)Matrix and vector (pdelib2/linalg)
  • Preconditioner: Jacobi/Point block Jacobi, SSOR/Point block SSOR, ILU/ Point block ILU, GSPAR direct solver (pdelib2 built-in), interface to PARDISO direct solver, Agglomeration multigrid (pdelib2/iteration)
  • Nonlinear iterative solvers: Newton methods, CG, CGS, Bi-CG, Bi-CGSTAB, GMRES (pdelib2/iteration)
  • Finite volume solver for nonlinear, coupled systems of reaction-diffusion-convection equations (pdelib2/fvsys)
  • Spline interpolation for nonlinear data functions (pdelib2/nltools)


Assemble and apply of linear and nonlinear operators profit by
  • SMP based parallelization
  • Cache-aware grid access
  • FORTRAN compatible kernel data structures
Behind external OpenMP profiling tools like Assure, Intel Thread Checker, DDT we implemented an own built-in tool. Compare between sequential, parallel runs, compilers and systems are possible.

Thread Viewer Thread Viewer Analyse performance of parallel and sequential code parts

Software Dependencies

To provide the described features the pdelib2 requires several software packages. The following packages are supported

Package using for
ARPACK Solves large scale eigenvalue problems
FLTK GUI functionality and 3D graphics via OpenGL
SWIG Connects C++ with scripting language Lua
Lua Scripting language
METIS Grid partitioning
TetGen 3D Grid generation
TetView 3D grid visualization
Triangle 2D grid generation
gnuplot XY-data visualization

System Information

This section contains information regarding system requirements and supported computer platforms for pdelib2. Basically, all codes are written in C++. There are highly efficient numerical kernels (vector routines, sparse matrix codes) which are written in Fortran77. In their actual state, the codes are portable on a wide range of UNIX systems, provided, the X11 and the OpenGL-Libraries are available.
  • Linux
  • Mac OS X
  • AIX
  • Windows with MinGW-cross
  • True64
  • IRIX