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:: https://raw.githubusercontent.com/bjodah/block_diag_ilu/master/scripts/matrix.png
:scale: 50%
:alt: Diagnoally dominant block diagonal matrix with sub- and super-diagnoals
its LU decomposition then looks like this:
.. image:: https://raw.githubusercontent.com/bjodah/block_diag_ilu/master/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:: https://raw.githubusercontent.com/bjodah/block_diag_ilu/master/scripts/matrix.png
:scale: 50%
:alt: Diagnoally dominant block diagonal matrix with sub- and super-diagnoals
its LU decomposition then looks like this:
.. image:: https://raw.githubusercontent.com/bjodah/block_diag_ilu/master/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.2.1.tar.gz
(124.9 kB
view details)
File details
Details for the file block_diag_ilu-0.2.1.tar.gz.
File metadata
- Download URL: block_diag_ilu-0.2.1.tar.gz
- Upload date:
- Size: 124.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8a13f9d792a6d867250a1ec5eb2f2c996c77c1576c9ce4ec9a40eac5528b7b8
|
|
| MD5 |
c8ab75427ced5499be251cda0a701f89
|
|
| BLAKE2b-256 |
86b4aa45b200b0525793696678a891b6ed473e45cfc3f909d7cc75eb99706a11
|