What is Colsamm?
Colsamm (Computation Of Local Stiffness And Mass Matrices) is a C++ template library for the effective and user-friendly computation of discretization stencils arising with the finite element method (FEM). Since this specific part of solving PDEs is time-sensitive, we used implementation techniques based on templates and expression templates, in order to reach a well-performing library.
The finite element is powerful and flexible method for discretizing partial differential equations. Even it is in common use in research, it is mostly applied in quite simple manners, using linear basis functions and working on structured grids. However, the potential of the FEM lies in its flexibility to be applied for completely unstructured grids, or better approximating basis functions (higher order, vectorial basis functions). Principally, the computations for more complex applications remains alike the easy cases, but there are many mathematical formulas in the background that have to be applied. Unfortunately, the coding of those formulas is a pretty fault-prone part, and eliminating the errors is quite difficult.
Thus, we wanted to support all those programmers, that intend to apply the FEM, using all the advantages of the method, without dealing all the mathematical backgrounds. Additionally, the C++-specific operator overloading should be included, in order to reach an interface of Colsamm that lies very close to the mathematical formulation of the problem. Furthermore, since any user should have enough freedom concerning the underlying data structure, the library solely addresses the computation of the local stencils. Thus, the assembling of the global discretization matrices has to be accomplished by the user, fitting on her own data structure.
How to use Colsamm
In order to apply Colsamm, one has at least to know the basics about the FEM, what a degree of freedom denotes, and how it is defined within the finite element sense. Additionally, one must be familiar to transforming PDEs into their weak formulations, principally accomplished by multiplications with testing functions and integrating over the domain. Then, this integral gets split into a sum by introducing testing and ansatz functions with a very small support. Hence, we yield integrals over small discretization domains, so-called finite elements. While discretizing the operators via the FEM with respect to an arbitrary finite element, the interdependency of the neighboring degrees of freedom is defined by local stencils. Those local stencils can be computed by Colsamm.
In order to use Colsamm within your C++ application, just download the source files, linked below, and unpack it. Then include the Colsamm.h file, that lies within the source directory. Since this is a template library, there is no compiling of object files necessary, not even possible. For a first instance, it might be helpful for any beginning user, to download and understand the examples while reading the comments. Hopefully, I will take care that the examples are always up to date to the actual version.
This is a free software, that is supposed to support researchers in applying the FEM. However, we interdict any commercial use of Colsamm amd demand to be informed of any publication that is enabled by our library. Thanks!
Colsamm Source Files: Download
- 14-03-2007: New stable and well-tested version can be downloaded yet.
- 10-10-2006: Current work on the library addresses the computations of C1 elements.
- 06-22-2006: The actual extensions of Colsamm address the stencil computations of vectorial PDEs with vector basis functions!
- 05-23-2006: The full tutorial is ready for download. Actually, all features should be presented and explained within the HowTo!
- 05-02-2006: A new release will be uploaded within the next week, including more features concerning a more user-friendly interface for more complex applications!
- 09-21-2005: The handbook will be online in a week! Thank you for your patience!