The open Finite Element Project

Eike Welk (eike at April 2001

Finite element stress analysis (FEM) is a standard tool for engineers to check mechanical properties of parts they construct. The theory behind (linear) FEM is known since many years, and these algorithms need only a modest amount of processing power. The two major CAD programs I know (Solid Works and Pro Engineer) both have optional stress analysis plugins available. As there are (yet) no comparable open source CAD programs known to me, the medium term goal of this project is to develop software for 2D stress analysis that can read DXF files, as there are at least a few open source CAD programs for 2D.

Computational fluid dynamics (CFD) are also pretty much state of the art, but the computations are a lot more complicated. Besides the fact that I have not much knowledge in this field, programs that do these computations need a lot of processing power, and are typical applications for multi processor machines.

The only software currently available from this project is called Minifem2d1:


Minifem2d1 is not really a useful program; it's just a proof of concept application. It does FEM for gridded structures, just what you find as an introductory example in a textbook about the subject. Unfortunately forces, material properties, and deformations have no units, also the bars are all the same. The fact that bars collapse under pressure remains unconsidered.

But despite the fact, that all its computations are useless, Minifem2d1's results look pretty convincing.

The Software consists of two parts: A graphical editor for the gridded structure named 'minifem2d1', and a script program for the octave math language interpreter, that does the computations, named 'simple_fem2D-1.m'.

Right now I write C++ code to get rid of the octave script. I use the blitz array library for this purpose; unfortunately including it makes compile times very long. If you did something tricky with some linear algebra libray, and now believe in it, tell me!

A real challenge is the graphical user interface. I want to get rid of the not free CGAL library, that I use for all UI issues. Also CGAL is intended for computational geometry and not for visualisation and user interaction. If you have experience with some libray for those tasks please contact me! I'm considering to use the VTK library, but its large and difficult to overview. Especially I want to know if, and how, it can be embedded into QT. An other question is, how good it is for interaction. By the way, is there anyone who knows OpenCascade? Am I right, that you should only use it in case you definitly need it; and otherwise look for something else?

Feel fre to mail me: eike at


Get the Software from here:

The project summary:

The software runs on Unix systems, it is linked to the Kde-1.1.2 and the CGAL 2.1 libraries. As CGAL is a little awkward to install, there is a binary available that is statically linked to it. This binary does not need a special installation procedure, it runs from every directory of your computer. It was compiled on a Suse 6.2 Linux system. You will still need Kde-1.1.2 (and Qt) to execute the binary, also you'll need Octave, a free Matlab clone, to run the script.


You run the graphical editor 'minifem2d1' to build your structure, introduce forces and boundary conditions. It is completely self explanatory, because it works like any KDE program. If you are done creating the structure save the file, and process it with the octave script. then reread it into the editor (best with the recent files function).

The Octave script is used to calculate deformations and reactive forces. Just type in a shell window (the script must off course be in your path):

simple_fem2D-1.m <filename>

The script will take quite a while to finish. Then reread the file into the graphical editor to see the deformations.

If you really want to use the software and you run into problems, fell free to email me. (eike at

In case you want to compile Minifem2d1 have a look at my other, kind of simmilar project named KMindmap. There one can find at least some minimal compiling instructions. For any additional questions, you might have already guessed it, mail me.

Good luck, and have fun!