block_diag_ilu is an open source C++ single header-file implementation 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 use-case 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 worth a thousand words, so if your matrix looks anything like this:
then its LU decomposition then looks like this:
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 std::vector as underlying data structure. |
undefined |
BLOCK_DIAG_ILUT_WITH_OPENMP |
factorize blocks in parallel. Set the environment variable BLOCK_DIAG_ILU_NUM_THREADS to control number of threads. |
undefined |
BLOCK_DIAG_ILU_WITH_GETRF |
Use unblocked (parallell) internal implementation of LAPACK’s dgetrf. |
undefined |
setup.py will set these when envinronment variables with those are set to “1”.
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file block_diag_ilu-0.3.5.tar.gz.
File metadata
- Download URL: block_diag_ilu-0.3.5.tar.gz
- Upload date:
- Size: 87.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fb10a24cbaaa65e442f857ee442a77cb08baabe5ae7f7c7c71031d3b32db4b7
|
|
| MD5 |
49361256ca441aa816944748174e2160
|
|
| BLAKE2b-256 |
d9a81147c4e3b330c3a95f9b801482d0c486d4912a3cb7d35cf31b06c262572f
|