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 ||Viewer for geometry and grid files (1D, 2D and 3D) |
| ||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 ||Show a time depended solution of file format .tsol. Generic and custom interpretation are possible. |
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 ||Online viewer for grid data (1D, 2D and 3D) |
| ||aView ||Online viewer for scalarfields (1D, 2D and 3D) |
| ||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
- 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 ||Analyse performance of parallel and sequential code parts |
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 |
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.
- Mac OS X
- Windows with MinGW-cross