is our main library for resistivity modeling and inversion on unstructured meshs. Besides the modeling and inversion tools it comprises lots of tools for mesh generation and conversion and data handling.

It is written in C++ and can be obtained via CVS. Autoconf/automake is used to build the system on different platforms automatically.

We are not doing everything from scratch, but use external libraries, e.g. for solving equation systems or mesh generation.

Currently, it is only running under Linux, but the library and several applications have already been ported to Windows. In future all parts shall be able to get built on most popular platforms.

The code is distributed and updated via CVS (concurrent version system), please contact Carsten for an account describing what are you doing with it.

How to build DCFemLib? - a description. Building might be unneccessary and complicating for pure users. Therefore we are also distributing binaries for Windows and Linux 32 and 64 bit. Ask Carsten or Thomas specifying your Processor.


Datahandling - routines for input and conversion of data files
FEM - Finite element modelling routines to solve the forward problem
Inversion - Inversion itself and scripts to control inversion
Mesh - Mesh preparation, creation and conversion
Polytools - Tools for building synthetic models or sophisticated meshs

External software

Triangle - A Delaunay triangulation for triangle elements
Tetgen - A quality constrained tetrahedral mesh generator
LDL and TAUCS - packages for solving equation systems by direct or iterative methods
AMD and METIS - reordering techniques that save lots of memory and speed up solvers significantly
ANN - Approximate nearest neighbour is useful for interpolation
CHOLMOD is about replacing TAUCS as linear solver and appears to be very fast


We are about building dcfemlib completely new in a project DCFEMLib2. It is much better readable and makes consequent use of template programming. For example there is an inversion class that just needs a forward operator and a mesh, so you can easily implement new inversion programs. Furthermore it consequently uses the generalized regularization approach such that the boundary weight and model weight can be defined very flexibly. Still we use the DCFemlib1::BERT for project building but can do the final inversion or modelling using tools as dcinv, dcmod, ttinv or jointinv, the joint inversion tool for ERT and traveltime data. On any geometry, of course...