As the name suggests, this software originated as a solver for
fluid flow problems, to test methods developed in the authors
PhD Thesis.
Over time though it evolved, and the same low level routines were
reused to build solvers for other problems as well.
All linear equation systems are solved by modern preconditioned
iterative methods, based on multi-level/multi-grid ideas.
Although the code is written entirely in C, it uses ideas from
object oriented programming to a certain degree, to combine
advantages of both worlds.
The code currently implements unstructured meshes of triangular
elements (P
1 and P
2) in two dimensions, unstructured meshes of tetrahedral elements (P
1 and P
2) in three dimensions, with
adaptive refinement or uniform h-refinement. The data structures
and code layout are
intended to allow easy extension other types of elements
(e.g. quadrangles, hexahedra).
From the beginning, the code was meant to support shape
optimisation. For this purpose in 2D it allows boundary sections defined
by Bezier-splines, and is able to compute the derivatives of
functionals that depend on the solution of a PDE with respect to
those spline parameters. This is done efficiently by means of the
discrete adjoint method (see the authors PhD thesis), with a cost
roughly equivalent to one additional solve of the primal
problem. This derivative is in some sense a shape-gradient of the
functional, which can be used for optimisation.
In 3D shape optimisation is not implemented yet, but should be
possible with similar techniques.
Problem specific features:
- Poisson Equation
-
- mainly meant for testing various components for other
problems
- BPX-preconditioner and V-cycle-multigrid as preconditioners for CG
- no shape gradient yet
- P1 and P2 elements in 2D and 3D
- adaptivity, using Bänsch green refinement and a
ZZ error estimator (currently only in 3D)
- stationary case only
- Lame-Equation of linear elasticity
-
- BPX-preconditioner and V-cycle-multigrid as preconditioners for CG
solving 35,419,650 DOFs for P2 elements to 1e-6 in 733 seconds on a single core of a Intel Xeon 5160 @ 3.0 GHz
- shape gradient available in 2D (upcoming release also in 3D)
- P1 and P2 elements in 2D and 3D
- adaptivity, using Bänsch green refinement and a
residual error estimator (in 2D) or ZZ error estimator (2D and 3D)
- stationary case only
- efficient eigenvalue analysis with P1 elements in 3D (upcoming release also P2 elements)
- Incompressible Navier-Stokes
-
- Newton- or Picard-linearisation
- Fp-preconditioner for GMRES ([Kay, Loghin,
Wathen, 2002] and [Elman, Loghin, Wathen, 2003]) with
multigrid preconditioned GMRES for solving the subproblems
within the preconditioner.
solving 37,769,219 DOFs to 1e-9 in 8.6 hours on a single core of a Intel Xeon 5160 @ 3.0 GHz
- shape gradient available
- Taylor-Hood elements (P2 for velocities and
P1 for pressure)
- no adaptivity yet
- stationary case only
This finite element solver is released as free software under
GNU GPL Version 3.
However, if this is too restrictive for your purposes, please contact the
author
Rene Schneider
, and a less restrictive license may be agreed.
The code itself is documented fairly well, but a central guide is
only available in form of the README.TXT. The README provides
support up to the point that you can build the code and run an
example that comes along with it. It should be fairly easy to
start from there. If you have questions, please contact me:
Rene Schneider
.