FLENS - a Flexible Library for Efficient Numerical Solutions in C++
FLENS aims at setting up a base for the implementation of flexible, yet efficient solutions for various numerical problems. We are developing FLENS at the Department of Numerical Analysis at the University of Ulm. The software is proposed to be used in research and for teaching purposes. These two areas of application pose completely different requirements for the software: Efficieny and convenient usage. Though considered conflicting goals by most people, we think our software fullfills both requirements. Modern software engineering techniques - like static polymorphism through templates - provide the neccessary means. The price we have to pay, is the usage of compilers being standard conforming to a high degree (gcc 3.3, icc 7.1, Comeau 4.301 or higher).
Application in research: The main field of application of our library will be the realization of adaptive numerical methods, which is one of the main areas of research in our department, particularly adaptive wavelet methods for elliptic PDEs. This exposes high efficiency requirements on the library and also demands good preparation for rapid prototyping and extension. The "why yet another numerical library? - argument" can be answered with a look at the specific requirements of adaptive numerical methods. Here finite dense or sparsely populated matrices and vectors which most existing software offers, are just not sufficient. We also have to provide infinite dimensioned vectors and matrices. But in an linear equation like Ax=b the user interface shall be the same regardless if A is finite dimensioned or an infinite operator (though the internal realization of course differs).
Application in teaching: The library shall also be used as a generic numerical toolbox for teaching purposes. This enforces convenient and intuitive usage to make the library become a tool accepted and hopefully liked by students. In undergraduate classes topics like interpolation, numerical integration and systems of linear systems will be covered. More advanced graduate class students are introduced to numerical partial differential equations. Therefore the library has to offer a wide range of numerical mehtods.
- flexible and extendible matrix and vector types.
- efficient, yet convenient syntax.
- solvers for linear equations.
- mathematical oriented operator notation.
- fast access to matrix and vector parts.
- 100% C++-standard conforming.