Skip to content

Commit 276ebed

Browse files
author
Documenter.jl
committed
build based on 8a0c76d
1 parent 764a9be commit 276ebed

6 files changed

Lines changed: 25 additions & 25 deletions

File tree

dev/.documenter-siteinfo.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"documenter":{"documenter_version":"1.17.0","generation_timestamp":"2026-04-17T19:05:34","julia_version":"1.12.6"}}
1+
{"documenter":{"documenter_version":"1.17.0","generation_timestamp":"2026-04-17T19:05:51","julia_version":"1.12.6"}}

dev/example/index.html

Lines changed: 8 additions & 8 deletions
Large diffs are not rendered by default.

dev/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

dev/linearsolve/index.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,34 @@
44
x = ones(1000)
55
b = A * x
66
y = A \ b
7-
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">1000.0</code></pre><p>This works as well for number types besides <code>Float64</code> and related, in this case, by default a LU factorization based on Sparspak is used.</p><pre><code class="language-julia hljs">using ExtendableSparse: ExtendableSparseMatrix, fdrand
7+
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">999.9999999999998</code></pre><p>This works as well for number types besides <code>Float64</code> and related, in this case, by default a LU factorization based on Sparspak is used.</p><pre><code class="language-julia hljs">using ExtendableSparse: ExtendableSparseMatrix, fdrand
88
using MultiFloats
99
A = fdrand(Float64x2, 10, 10, 10; matrixtype = ExtendableSparseMatrix)
1010
x = ones(Float64x2,1000)
1111
b = A * x
1212
y = A \ b
13-
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">999.9999999999999999999999999995844368958887163</code></pre><h2 id="Solving-with-LinearSolve.jl"><a class="docs-heading-anchor" href="#Solving-with-LinearSolve.jl">Solving with LinearSolve.jl</a><a id="Solving-with-LinearSolve.jl-1"></a><a class="docs-heading-anchor-permalink" href="#Solving-with-LinearSolve.jl" title="Permalink"></a></h2><p>Starting with version 0.9.6, ExtendableSparse is compatible with <a href="https://github.com/SciML/LinearSolve.jl">LinearSolve.jl</a>. Since version 0.9.7, this is facilitated via the AbstractSparseMatrixCSC interface. </p><p>The same problem can be solved via <code>LinearSolve.jl</code>:</p><pre><code class="language-julia hljs">using ExtendableSparse: ExtendableSparseMatrix, fdrand
13+
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">999.9999999999999999999999999995693705987120801</code></pre><h2 id="Solving-with-LinearSolve.jl"><a class="docs-heading-anchor" href="#Solving-with-LinearSolve.jl">Solving with LinearSolve.jl</a><a id="Solving-with-LinearSolve.jl-1"></a><a class="docs-heading-anchor-permalink" href="#Solving-with-LinearSolve.jl" title="Permalink"></a></h2><p>Starting with version 0.9.6, ExtendableSparse is compatible with <a href="https://github.com/SciML/LinearSolve.jl">LinearSolve.jl</a>. Since version 0.9.7, this is facilitated via the AbstractSparseMatrixCSC interface. </p><p>The same problem can be solved via <code>LinearSolve.jl</code>:</p><pre><code class="language-julia hljs">using ExtendableSparse: ExtendableSparseMatrix, fdrand
1414
using LinearSolve
1515
A = fdrand(10, 10, 10; matrixtype = ExtendableSparseMatrix)
1616
x = ones(1000)
1717
b = A * x
1818
y = solve(LinearProblem(A, b)).u
19-
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">1000.0000000000003</code></pre><pre><code class="language-julia hljs">using ExtendableSparse: ExtendableSparseMatrix, fdrand
19+
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">1000.0000000000005</code></pre><pre><code class="language-julia hljs">using ExtendableSparse: ExtendableSparseMatrix, fdrand
2020
using LinearSolve
2121
using MultiFloats
2222
A = fdrand(Float64x2, 10, 10, 10; matrixtype = ExtendableSparseMatrix)
2323
x = ones(Float64x2,1000)
2424
b = A * x
2525
y = solve(LinearProblem(A, b), SparspakFactorization()).u
26-
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">999.99999999999999999999999999967205172221595574</code></pre><h2 id="Preconditioned-Krylov-solvers-with-LinearSolve.jl"><a class="docs-heading-anchor" href="#Preconditioned-Krylov-solvers-with-LinearSolve.jl">Preconditioned Krylov solvers with LinearSolve.jl</a><a id="Preconditioned-Krylov-solvers-with-LinearSolve.jl-1"></a><a class="docs-heading-anchor-permalink" href="#Preconditioned-Krylov-solvers-with-LinearSolve.jl" title="Permalink"></a></h2><p>Since version 1.6, preconditioner constructors can be passed to iterative solvers via the <a href="https://docs.sciml.ai/LinearSolve/stable/basics/Preconditioners/#prec"><code>precs</code> keyword argument</a> to the iterative solver specification.</p><pre><code class="language-julia hljs">using ExtendableSparse: ExtendableSparseMatrix, fdrand
26+
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">999.99999999999999999999999999961253704884851287</code></pre><h2 id="Preconditioned-Krylov-solvers-with-LinearSolve.jl"><a class="docs-heading-anchor" href="#Preconditioned-Krylov-solvers-with-LinearSolve.jl">Preconditioned Krylov solvers with LinearSolve.jl</a><a id="Preconditioned-Krylov-solvers-with-LinearSolve.jl-1"></a><a class="docs-heading-anchor-permalink" href="#Preconditioned-Krylov-solvers-with-LinearSolve.jl" title="Permalink"></a></h2><p>Since version 1.6, preconditioner constructors can be passed to iterative solvers via the <a href="https://docs.sciml.ai/LinearSolve/stable/basics/Preconditioners/#prec"><code>precs</code> keyword argument</a> to the iterative solver specification.</p><pre><code class="language-julia hljs">using ExtendableSparse: ExtendableSparseMatrix, fdrand
2727
using LinearSolve
2828
using ExtendableSparse: ILUZeroPreconBuilder
2929
A = fdrand(10, 10, 10; matrixtype = ExtendableSparseMatrix)
3030
x = ones(1000)
3131
b = A * x
3232
y = LinearSolve.solve(LinearProblem(A, b),
3333
KrylovJL_CG(; precs=ILUZeroPreconBuilder())).u
34-
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">999.9999999953869</code></pre><h2 id="Available-preconditioners"><a class="docs-heading-anchor" href="#Available-preconditioners">Available preconditioners</a><a id="Available-preconditioners-1"></a><a class="docs-heading-anchor-permalink" href="#Available-preconditioners" title="Permalink"></a></h2><p>ExtendableSparse provides constructors for preconditioners which can be used as <code>precs</code>. These generally return a tuple <code>(Pl,I)</code> of a left preconditioner and a trivial right preconditioner.</p><p>ExtendableSparse has a number of package extensions which construct preconditioners from some other packages. In the future, these packages may provide this functionality on their own.</p><article><details class="docstring" open="true"><summary id="ExtendableSparse.ILUZeroPreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.ILUZeroPreconBuilder"><code>ExtendableSparse.ILUZeroPreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs">ILUZeroPreconBuilder(;blocksize=1)</code></pre><p>Return callable object constructing a left zero fill-in ILU preconditioner using <a href="https://github.com/mcovalt/ILUZero.jl">ILUZero.jl</a></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/WIAS-PDELib/ExtendableSparse.jl">source</a></section></details></article><article><details class="docstring" open="true"><summary id="ExtendableSparse.ILUTPreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.ILUTPreconBuilder"><code>ExtendableSparse.ILUTPreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs">ILUTPreconBuilder(; droptol=0.1)</code></pre><p>Return callable object constructing a left ILUT preconditioner using <a href="https://github.com/haampie/IncompleteLU.jl">IncompleteLU.jl</a></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/WIAS-PDELib/ExtendableSparse.jl">source</a></section></details></article><p>In addition, ExtendableSparse implements some preconditioners:</p><article><details class="docstring" open="true"><summary id="ExtendableSparse.JacobiPreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.JacobiPreconBuilder"><code>ExtendableSparse.JacobiPreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs">JacobiPreconBuilder()</code></pre><p>Return callable object constructing a left Jacobi preconditioner to be passed as the <code>precs</code> parameter to iterative methods wrapped by LinearSolve.jl.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/WIAS-PDELib/ExtendableSparse.jl">source</a></section></details></article><p>LU factorizations of matrices from previous iteration steps may be good preconditioners for Krylov solvers called during a nonlinear solve via Newton&#39;s method. For this purpose, ExtendableSparse provides a preconditioner constructor which wraps sparse LU factorizations supported by LinearSolve.jl</p><article><details class="docstring" open="true"><summary id="ExtendableSparse.LinearSolvePreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.LinearSolvePreconBuilder"><code>ExtendableSparse.LinearSolvePreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs"> LinearSolvePreconBuilder(; method=UMFPACKFactorization())</code></pre><p>Return callable object constructing a formal left preconditioner from a sparse LU factorization using LinearSolve as the <code>precs</code> parameter for a <a href="#ExtendableSparse.BlockPreconBuilder"><code>BlockPreconBuilder</code></a> or iterative methods wrapped by LinearSolve.jl.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/WIAS-PDELib/ExtendableSparse.jl">source</a></section></details></article><p>Block preconditioner constructors are provided as well</p><article><details class="docstring" open="true"><summary id="ExtendableSparse.BlockPreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.BlockPreconBuilder"><code>ExtendableSparse.BlockPreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs"> BlockPreconBuilder(;precs=UMFPACKPreconBuilder(),
34+
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">999.9999999979696</code></pre><h2 id="Available-preconditioners"><a class="docs-heading-anchor" href="#Available-preconditioners">Available preconditioners</a><a id="Available-preconditioners-1"></a><a class="docs-heading-anchor-permalink" href="#Available-preconditioners" title="Permalink"></a></h2><p>ExtendableSparse provides constructors for preconditioners which can be used as <code>precs</code>. These generally return a tuple <code>(Pl,I)</code> of a left preconditioner and a trivial right preconditioner.</p><p>ExtendableSparse has a number of package extensions which construct preconditioners from some other packages. In the future, these packages may provide this functionality on their own.</p><article><details class="docstring" open="true"><summary id="ExtendableSparse.ILUZeroPreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.ILUZeroPreconBuilder"><code>ExtendableSparse.ILUZeroPreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs">ILUZeroPreconBuilder(;blocksize=1)</code></pre><p>Return callable object constructing a left zero fill-in ILU preconditioner using <a href="https://github.com/mcovalt/ILUZero.jl">ILUZero.jl</a></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/WIAS-PDELib/ExtendableSparse.jl">source</a></section></details></article><article><details class="docstring" open="true"><summary id="ExtendableSparse.ILUTPreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.ILUTPreconBuilder"><code>ExtendableSparse.ILUTPreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs">ILUTPreconBuilder(; droptol=0.1)</code></pre><p>Return callable object constructing a left ILUT preconditioner using <a href="https://github.com/haampie/IncompleteLU.jl">IncompleteLU.jl</a></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/WIAS-PDELib/ExtendableSparse.jl">source</a></section></details></article><p>In addition, ExtendableSparse implements some preconditioners:</p><article><details class="docstring" open="true"><summary id="ExtendableSparse.JacobiPreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.JacobiPreconBuilder"><code>ExtendableSparse.JacobiPreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs">JacobiPreconBuilder()</code></pre><p>Return callable object constructing a left Jacobi preconditioner to be passed as the <code>precs</code> parameter to iterative methods wrapped by LinearSolve.jl.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/WIAS-PDELib/ExtendableSparse.jl">source</a></section></details></article><p>LU factorizations of matrices from previous iteration steps may be good preconditioners for Krylov solvers called during a nonlinear solve via Newton&#39;s method. For this purpose, ExtendableSparse provides a preconditioner constructor which wraps sparse LU factorizations supported by LinearSolve.jl</p><article><details class="docstring" open="true"><summary id="ExtendableSparse.LinearSolvePreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.LinearSolvePreconBuilder"><code>ExtendableSparse.LinearSolvePreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs"> LinearSolvePreconBuilder(; method=UMFPACKFactorization())</code></pre><p>Return callable object constructing a formal left preconditioner from a sparse LU factorization using LinearSolve as the <code>precs</code> parameter for a <a href="#ExtendableSparse.BlockPreconBuilder"><code>BlockPreconBuilder</code></a> or iterative methods wrapped by LinearSolve.jl.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/WIAS-PDELib/ExtendableSparse.jl">source</a></section></details></article><p>Block preconditioner constructors are provided as well</p><article><details class="docstring" open="true"><summary id="ExtendableSparse.BlockPreconBuilder"><a class="docstring-binding" href="#ExtendableSparse.BlockPreconBuilder"><code>ExtendableSparse.BlockPreconBuilder</code></a><span class="docstring-category">Type</span></summary><section><div><pre><code class="language-julia hljs"> BlockPreconBuilder(;precs=UMFPACKPreconBuilder(),
3535
partitioning = A -&gt; [1:size(A,1)]</code></pre><p>Return callable object constructing a left block Jacobi preconditioner from partition of unknowns.</p><ul><li><p><code>partitioning(A)</code> shall return a vector of AbstractVectors describing the indices of the partitions of the matrix. For a matrix of size <code>n x n</code>, e.g. partitioning could be <code>[ 1:n÷2, (n÷2+1):n]</code> or [ 1:2:n, 2:2:n].</p></li><li><p><code>precs(A,p)</code> shall return a left precondioner for a matrix block.</p></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/WIAS-PDELib/ExtendableSparse.jl">source</a></section></details></article><p>The example beloww shows how to create a block Jacobi preconditioner where the blocks are defined by even and odd degrees of freedom, and the diagonal blocks are solved using UMFPACK.</p><pre><code class="language-julia hljs">using LinearSolve
3636
using ExtendableSparse: LinearSolvePreconBuilder, BlockPreconBuilder, ExtendableSparseMatrix, fdrand
3737
A = fdrand(10, 10, 10; matrixtype = ExtendableSparseMatrix)
@@ -41,4 +41,4 @@
4141
umfpackprecs=LinearSolvePreconBuilder(UMFPACKFactorization())
4242
blockprecs=BlockPreconBuilder(;precs=umfpackprecs, partitioning)
4343
y = LinearSolve.solve(LinearProblem(A, b), KrylovJL_CG(; precs=blockprecs)).u
44-
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">999.9999999991353</code></pre><p><code>umpfackpreconbuilder</code> e.g. could be replaced by <code>SmoothedAggregationPreconBuilder()</code>. Moreover, this approach works for any <code>AbstractSparseMatrixCSC</code>.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../extensions/">« Matrix extensions</a><a class="docs-footer-nextpage" href="../misc/">Misc methods »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.17.0 on <span class="colophon-date" title="Friday 17 April 2026 19:05">Friday 17 April 2026</span>. Using Julia version 1.12.6.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
44+
sum(y)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">1000.0000000191495</code></pre><p><code>umpfackpreconbuilder</code> e.g. could be replaced by <code>SmoothedAggregationPreconBuilder()</code>. Moreover, this approach works for any <code>AbstractSparseMatrixCSC</code>.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../extensions/">« Matrix extensions</a><a class="docs-footer-nextpage" href="../misc/">Misc methods »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.17.0 on <span class="colophon-date" title="Friday 17 April 2026 19:05">Friday 17 April 2026</span>. Using Julia version 1.12.6.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>

0 commit comments

Comments
 (0)