Overview
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.
bogus
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.
So-bogus
is a library that uses and completes bogus to solve systems with second order cone constraints, such as Coulomb friction problems.
Main features
bogus
- 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
boost::serialization
- Compatibility with standard Block Sparse Row storage
So-bogus
- 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
License
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.
Documentation
bogus includes documentation in the doxygen format, along with usage samples.
Run doxygen
from the doc/doxygen
folder, or browse it online.
Requirements
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 clang
3.5+,
and on Mac OSX 10.8+ with clang
3.2+.
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.
About
bogus and So-bogus are Copyright 2013 Gilles Daviet gdaviet@gmail.com.
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.