Martin van Gijzen - Software - IDR(s)

IDR(\(s\)) Software



The software is distributed under this MIT license.


Matlab


Python

idrs: a direct translation of the Matlab version described above.
Provided by Reinaldo Astudillo (Delft University of Technology).

Fortran

A modern Fortran IDRS package can be found here: https://github.com/mbvangijzen/IDRS-package.

The package includes IDR(s) methods for standard linear systems, and special variants for solving sequences of shifted linear systems. The preconditioners that are included can be applied to both standard and shifted problems. The package supports a number of standard matrix formats, and user defined formats can be easily included. The package conforms to the Fortran 2018 standard, it is stand alone (no external libraries are needed) and is parallelised using standard Fortran features. It comes with many examples.


Julia

IDR(\(s\)) was included by Moritz Schauer in the IterativeSolvers Julia package.

Calling IDR(\(s\)) is as simple as:

julia> Pkg.add("IterativeSolvers")
julia> using IterativeSolvers
julia> A = sprand(10_000, 10_000, 10 / 10_000) + 3I
x = ones(10_000)
b = A * x
xhat = IterativeSolvers.idrs(A,b)
10000-element Array{Float64,1}:
1.0
1.0

1.0