uFEM Solver



It is an experimental code, so do not expect that it is user-friendly nor useable. Many of its features are useless for most of people and many things are still unfinished.


Available Solvers

  1. Traditional sequential solver (the most tested and tuned part of code),
  2. Parallel solver that uses threads (for SMP and other shared memory machines),
  3. Parallel solver that uses MPI (for clusters, experimental and slow).

All mentioned solver works but the parallel ones are quite slow (especially the MPI solver). Some special functionality can be unavailable for MPI (tension/compression-only boundary conditions etc.).

Finite elements

  • 2D link,
  • 2D plane element (three nodes),
  • 2D isoparametric plane element (four nodes),
  • 2D beam (quite limited),
  • 2D slab on Winkler's foundation (four nodes),
  • 3D link,
  • 3D tetrahedron,
  • 3D bricks (20 nodes and 8 nodes).

Analysis types

  • linear static,
  • non-linear static (Newton-Raphson Solution, experimental).

Equation solvers

  • Conjugate Gradient Method with Jacobi preconditioner (default, stable and tested),
  • Bi-Conjugate Gradient Stabilized Metod (experimental).

Size of Solved Problems

  • 750 000 of unknowns for PC with 500 MB of RAM,
  • 2 000 000 of unknowns has been confirmed to be possible,
  • larger problems can be probable analysed but it is untested.

Supported Platforms

The code has been written in the ISO C language ("C89") and depends only on standard ANSI C libraries. In theory, any system that includes C89-compatible C compiler should work.
MPI implementation is required for the parallel version, of course (LAM-MPI, MPICH and IBM's and Sun's propietary ones works nice).

It is known that solver works at least on these systems:

  • GNU/Linux 2.x on x86 (threads, MPI),
  • GNU/Linux 2.x on ARM,
  • IRIX 6.5 (threads, MPI),
  • AIX 4.3 (threads, MPI),
  • SunOS 2.9 (threads, MPI),
  • SunOS 2.8,
  • MacOS 10.3,
  • HP-UX 11,
  • Windows XP.

Please note that it is impossible to run the uFEM on Minix/286 (and older) systems because of too large size of executable file. It was possible in the past (in fact, uFEM development was started on i286 laptop with Minix 2.0) but it is impossible now. My apologies.


The uFEM doesn't excel in speed. It can't. It doesn't use any third party numerical routines (BLAS, LAPACK etc.) because of portability. All uFEM's routines have been written from scratch in C, so they have to be slow.


The code is under the GNU GPL, see www.gnu.org/gpl for details.

Return to uFEM Main Page