blockdiagonalfactors.jl-4354e1ec-8290-11e9-2b91-b56df8a56508
Last snapshots taken from https://github.com/UnofficialJuliaMirror/BlockDiagonalFactors.jl-4354e1ec-8290-11e9-2b91-b56df8a56508 on 2019-11-20T05:21:49.517-05:00 by @UnofficialJuliaMirrorBot via Travis job 153.9 , triggered by Travis cron job on branch "master"
Science Score: 28.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
○codemeta.json file
-
○.zenodo.json file
-
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.1%) to scientific vocabulary
Repository
Last snapshots taken from https://github.com/UnofficialJuliaMirror/BlockDiagonalFactors.jl-4354e1ec-8290-11e9-2b91-b56df8a56508 on 2019-11-20T05:21:49.517-05:00 by @UnofficialJuliaMirrorBot via Travis job 153.9 , triggered by Travis cron job on branch "master"
Basic Info
- Host: GitHub
- Owner: UnofficialJuliaMirrorSnapshots
- License: mit
- Language: Julia
- Default Branch: master
- Size: 4.88 KB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
BlockDiagonalFactors
This package allows you to solve linear systems of the type M * x = b where M is block diagonal (sparse or not).
It is particularly efficient if some of the blocks of M are repeated, because it will only compute the factorizations of these repeated objects once.
Usage
Consider the block-diagonal matrix
julia
M = [A ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅
⋅ A ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅
⋅ ⋅ B ⋅ ⋅ ⋅ ⋅ ⋅ ⋅
⋅ ⋅ ⋅ A ⋅ ⋅ ⋅ ⋅ ⋅
⋅ ⋅ ⋅ ⋅ C ⋅ ⋅ ⋅ ⋅
⋅ ⋅ ⋅ ⋅ ⋅ A ⋅ ⋅ ⋅
⋅ ⋅ ⋅ ⋅ ⋅ ⋅ C ⋅ ⋅
⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ B ⋅
⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ A]
Instead of creating that big matrix, factorizing it whole, or factorizing each block, you can create a BlockFactors or SparseBlockFactors object (depending if A, B, and C are sparse) via the following syntax
```julia
Form an array of the matrices
Ms = [A, B, C]
and an array of "repetition" indices
indices = [1, 1, 2, 1, 3, 1, 3, 2, 1]
to create the Block Diagonal Factors (BDF) object
BDF = factorize(Ms, indices) ```
This way A, B, and C are factorized only once.
Then, you can solve for linear system M * x = b
- via backslash (same as M \ b)
```julia
x = BDF \ b
```
via the inplace (same as
ldiv!(M, b))julia ldiv!(BDF, b)or via the inplace (same as
ldiv!(x, M, b))julia ldiv!(x, BDF, b)
How it works
The package simply creates two new types, BlockFactors or SparseBlockFactors, which look like
julia
struct (Sparse)BlockFactors{Tv}
factors::Vector
indices::Vector{<:Int}
m::Int
n::Int
end
and overloads factorize, lu, and other factorization functions to create those objects from an array of matrices and the repeating indices.
In order to solve linear systems it also overloads \ and ldiv!.
That's it!
Cite it!
If you use this package directly, please cite it! Use the CITATION.bib, which contains a bibtex entry for the software (coming soon).
Owner
- Name: Unofficial Julia Mirror [Snapshots]
- Login: UnofficialJuliaMirrorSnapshots
- Kind: organization
- Website: https://github.com/UnofficialJuliaMirrorSnapshots/RepoSnapshots.jl
- Repositories: 4
- Profile: https://github.com/UnofficialJuliaMirrorSnapshots
Snapshots of all registered Julia packages. Updated weekly by @UnofficialJuliaMirrorBot. See also: @UnofficialJuliaMirror.
Citation (CITATION.bib)
@misc{BlockDiagonalFactors.jl-2019,
author = {Beno\^{i}t Pasquier},
title = {{BlockDiagonalFactors.jl: A julia package for efficiently solving block diagonal linear systems with repeating blocks}},
year = in preparation,
doi = {<DOI>}
}