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"

https://github.com/unofficialjuliamirrorsnapshots/blockdiagonalfactors.jl-4354e1ec-8290-11e9-2b91-b56df8a56508

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
Last synced: 10 months ago · JSON representation ·

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
Created about 7 years ago · Last pushed about 7 years ago
Metadata Files
Readme License Citation

README.md

BlockDiagonalFactors

DOI License: MIT

(coming soon!)

Build Status Coverage Status

Build Status

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

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>}
}

GitHub Events

Total
Last Year