Software Projects

In addition to the theoretical exploration of new mathematical methods for solving linear systems, matrix equations and problems in ​​model order reduction or optimal control, we endeavor to create experimental as well as production implementations of our algorithms in software packages. The main focus is on the one hand to create reproducible results and on the other hand to make use of modern computer architectures and their programming models. Depending on the problem, we use one of the common programming languages ​​in scientific computing. These range from C / C++ and MATLAB to Fortran and Python in our research group and include complex projects that include several of those languages.

Ongoing Developments & Contributions

FlexiBLAS - A Blas wrapper library with runtime exchangable backends
The BLAS library is one of the central libraries for the implementation of numerical algorithms. It serves as the basis for many other numerical libraries like LAPACK, PLASMA or MAGMA (to mention only the most obvious). Thus a fast BLAS implementation is the key ingredient for efficient  applications in this area. However, for debugging or benchmarking purposes it is often necessary to replace the underlying BLAS implementation of an application, e.g. to disable threading or to include  debugging symbols. We present a novel  framework that allows one to exchange the BLAS implementation at   run-time via an environment variable. Our concept neither requires relinkage, nor recompilation of the application. Numerical experiments show that there is no notable overhead introduced by this new approach. For only a very little overhead the framework naturally extends to a minimal profiling setup that allows one to count numbers of calls to the BLAS routines used and measure the time spent therein. more
MEPACK - Matrix Equation Package
MEPACK is a software library focused on solving dense Sylvester-like matrix equations. The library is written in Fortran and provides interfaces for C, MATLAB and GNU Octave. The development places great emphasis on the fact that the algorithms can be adapted very well to modern CPU architectures by current Fortran compilers. In addition, the algorithms are accelerated through the use of directed acyclic graphs using OpenMP to increase the utility of multicore architectures.

M.E.S.S. - Matrix Equations Sparse Solvers
MESS, the Matrix Equations Sparse Solvers library, is the successor to the Lyapack Toolbox for MATLAB®. It is available as a MATLAB toolbox, as well as, a C-library with wrappers for Python and Julia. It is intended for solving large sparse matrix equations, as well as, problems from model order reduction and optimal control. The C-version provides a large set of auxiliary subroutines for sparse matrix computations and efficient usage of modern multicore workstations.
morgen - Model Order Reduction for Gas and Energy Networks
"morgen" is a modular and extensible simulation platform for comparing the performance of different combination of Euler-equation-based models, time-stepping solvers, and projection-based model reduction methods on various networks and scenarios. A focus is on data-driven model order reduction for gas network simulations.
MORLAB - Model Order Reduction LABoratory
The MORLAB toolbox is a collection of MATLAB/Octave routines for model order reduction of dynamical systems based on the solution of matrix equations. The implementation is made using spectral projection methods, e.g., methods based on the matrix sign function and the matrix disk function.
pyMOR - Model Order Reduction with Python
pyMOR is a software library for building model order reduction applications with the Python programming language. Its main focus lies on the application of reduced basis methods to parameterized partial differential equations. All algorithms in pyMOR are formulated in terms of abstract interfaces for seamless integration with external high-dimensional PDE solvers. Moreover, pure Python implementations of finite element and finite volume discretizations using the NumPy/SciPy scientific computing stack are provided for getting started quickly.

The CSC group is extending the features to the class of dynamical systems with inputs and outputs.
The Control and Systems Library SLICOT
The subroutine library SLICOT provides Fortran 77 implementations of numerical algorithms for computations in systems and control theory. Based on numerical linear algebra routines from BLAS and LAPACK libraries, SLICOT provides methods for the design and analysis of control systems. Due to the use of Fortran 77, reusability of the software is obtained, so SLICOT can serve as the core for various existing and future CACSD platforms and production quality software. The further development can be found on Github. more
Go to Editor View