This free software consist of two complementary libraries, the first being fairly generic while the other targets more specific problems. Both are open-source and can be downloaded from the BitBucket repository.
is a template C++ 98 header-only sparse block matrix library. It allows to express in a concise way algebraic operations on sparse matrices whose elements can be a variety of block types, such as Eigen dense or sparse matrices.
is a library that uses and completes bogus to solve systems with second order cone constraints, such as Coulomb friction problems.
- Simple creation of sparse block matrices with several storage options (row or column major, symmetric, ...)
- Complex arithmetic expressions using standard C++ operators
- Lazy evaluation
- Parallelization of most sparse block matrix operations using OpenMP (if available)
- Generic Gauss-Seidel and Projected Gradient solvers for linear problems under normal cone inclusions (such as LCP or Coulomb friction problems; see the documentation)
- Several linear iterative solvers ( Conjugate Gradient and variations, GMRES, ...)
- Support for matrix-free iterative solvers (using expression templates)
- Optional serialization using
- Compatibility with standard Block Sparse Row storage
- Second Order Cone complementarity function with local root-finding solver
- Analytical solver for local Coulomb friction and SOC complementarity problems in 2d and 3d
- Global Coulomb friction and SOCQP solvers for arbitrary dimensions
bogus is released under the terms of the Mozilla Public License v2.0.
So-bogus is released under the terms of the GNU General Public License version 2 or, at your option, any later version.
For more information, see LICENCE.md.
bogus includes documentation in the doxygen format, along with usage samples.
doxygen from the
doc/doxygen folder, or browse it online.
Apart from a C++98 compiler, the only requirement is Eigen.
bogus has been successfully tested on a variety of Linux distributions with
gcc 4.5+ and
and on Mac OSX 10.8+ with
Visual Studio 2012 ( and maybe earlier ) should also be able to compile and run the test suite, though no particular attention is given to this platform.
For more information, see INSTALL.md.
So-bogus implements some algorithms initially developed within the BiPop team at Inria Rhônes-Alpes. Its name is derived from the main use case of the library, a Block-oriented Gauss-Seidel solver for Second Order cone problems.