block_diag_ilu is a C++ implementation of an incomplete LU factorization.
Project description
block_diag_ilu
==============
.. image:: http://hera.physchem.kth.se:9090/api/badges/chemreac/block_diag_ilu/status.svg
:target: http://hera.physchem.kth.se:9090/chemreac/block_diag_ilu
:alt: Build status
``block_diag_ilu`` is an open source `C++ single header-file implementeation
<https://github.com/chemreac/block_diag_ilu/tree/master/include>`_ of an
incomplete LU decomposition routine suitable for diagonally dominant (square) block diagonal
matrices with sub- and super diagonals of small magnitude. It is useful for
preconditioning linear systems. The usecase in mind is for integrating discretized PDEs of mixed
chemical kinetics / diffusion problems where the diffusion process may be accurately
considered a mild perturbation.
A picture is woth a thousant words, so if your matrix looks anything like this:
.. image:: scripts/matrix.png
:scale: 50%
:alt: Diagnoally dominant block diagonal matrix with sub- and super-diagnoals
its LU decomposition then looks like this:
.. image:: scripts/lu.png
:scale: 50%
:alt: LU decomposition of same matrix
then ``block_diag_ilu`` should be able to save quite a bit of time when
solving linear systems approximately, *e.g.* for preconditioning.
Conditional compilation
-----------------------
The following macros affect the compilation:
+--------------------------+-----------------------------------------------+---------------+
|Macro name |Action (when defined) |Default |
+==========================+===============================================+===============+
|NDEBUG |use ``std::unique_ptr`` instead of |undefined |
| |``std::vector`` as underlying data structure. | |
+--------------------------+-----------------------------------------------+---------------+
|WITH_BLOCK_DIAG_ILU_DGETRF|Use unblocked (parallell) internal |undefined |
| |implementation of LAPACK's ``dgetrf`` (uses | |
| |OpenMP) | |
+--------------------------+-----------------------------------------------+---------------+
License
-------
The source code is Open Source and is released under the very permissive
"simplified (2-clause) BSD license". See ``LICENSE.txt`` for further details.
Contributors are welcome to suggest improvements at https://github.com/chemreac/block_diag_ilu
Author
------
Björn Dahlgren, contact:
- gmail adress: bjodah
- kth.se adress: bda
==============
.. image:: http://hera.physchem.kth.se:9090/api/badges/chemreac/block_diag_ilu/status.svg
:target: http://hera.physchem.kth.se:9090/chemreac/block_diag_ilu
:alt: Build status
``block_diag_ilu`` is an open source `C++ single header-file implementeation
<https://github.com/chemreac/block_diag_ilu/tree/master/include>`_ of an
incomplete LU decomposition routine suitable for diagonally dominant (square) block diagonal
matrices with sub- and super diagonals of small magnitude. It is useful for
preconditioning linear systems. The usecase in mind is for integrating discretized PDEs of mixed
chemical kinetics / diffusion problems where the diffusion process may be accurately
considered a mild perturbation.
A picture is woth a thousant words, so if your matrix looks anything like this:
.. image:: scripts/matrix.png
:scale: 50%
:alt: Diagnoally dominant block diagonal matrix with sub- and super-diagnoals
its LU decomposition then looks like this:
.. image:: scripts/lu.png
:scale: 50%
:alt: LU decomposition of same matrix
then ``block_diag_ilu`` should be able to save quite a bit of time when
solving linear systems approximately, *e.g.* for preconditioning.
Conditional compilation
-----------------------
The following macros affect the compilation:
+--------------------------+-----------------------------------------------+---------------+
|Macro name |Action (when defined) |Default |
+==========================+===============================================+===============+
|NDEBUG |use ``std::unique_ptr`` instead of |undefined |
| |``std::vector`` as underlying data structure. | |
+--------------------------+-----------------------------------------------+---------------+
|WITH_BLOCK_DIAG_ILU_DGETRF|Use unblocked (parallell) internal |undefined |
| |implementation of LAPACK's ``dgetrf`` (uses | |
| |OpenMP) | |
+--------------------------+-----------------------------------------------+---------------+
License
-------
The source code is Open Source and is released under the very permissive
"simplified (2-clause) BSD license". See ``LICENSE.txt`` for further details.
Contributors are welcome to suggest improvements at https://github.com/chemreac/block_diag_ilu
Author
------
Björn Dahlgren, contact:
- gmail adress: bjodah
- kth.se adress: bda
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
block_diag_ilu-0.1.0.tar.gz
(122.6 kB
view details)
File details
Details for the file block_diag_ilu-0.1.0.tar.gz.
File metadata
- Download URL: block_diag_ilu-0.1.0.tar.gz
- Upload date:
- Size: 122.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3327b8a21cb9bc2dc1d4565c8b15b26a6c26fb3042859e14bf003aea1ac057b5
|
|
| MD5 |
80acb95c610a5de04222958e0bdfaa55
|
|
| BLAKE2b-256 |
a123b23227c57223b6fb01229c5966b9bfce7986514249d7cbef0ca03f88d2a7
|