# Module Sundials_LinearSolver.Iterative.Algorithms

module Algorithms: sig .. end

Low-level routines on arrays.

Scaled Preconditioned Iterative Linear Solvers routines.

Global constants and general purpose solver routines.

val qr_fact : int -> Sundials.RealArray2.t -> Sundials.RealArray.t -> bool -> unit

Performs a QR factorization of a Hessenberg matrix. The call qr_fact n h q factored, where h is the n+1 by n Hessenberg matrix (stored row-wise), q stores the computed Givens rotation, and factored=true indicates that the first n-1 columns of h have already been factored. The computed Givens rotation has the form $\begin{bmatrix} c & -s \\ s & c \end{bmatrix}$ . It is stored in the 2n elements of q as [|c; s; c; s; ...; c; s|].

Raises Matrix.ZeroDiagonalElement Zero found in matrix diagonal
val qr_sol : int ->
Sundials.RealArray2.t -> Sundials.RealArray.t -> Sundials.RealArray.t -> unit

Solve the linear least squares problem. In qr_sol n h q b, h and q are, respectively, the upper triangular factor $R$ of the original Hessenberg matrix and Q the Givens rotations used to factor itâ€”both computed by Sundials_LinearSolver.Iterative.Algorithms.qr_fact. The function computes the n+1 elements of b to solve $Rx = Qb$.

Raises Matrix.ZeroDiagonalElement Zero found in matrix diagonal
val modified_gs : ('d, 'k) Nvector.t array -> Sundials.RealArray2.t -> int -> int -> float

Performs a modified Gram-Schmidt orthogonalization. In modified_gs v h k p,

• v is an array of at least k + 1 vectors with an L2-norm of 1,
• h is the output k by k Hessenberg matrix of inner products,
• k specifies the vector in v to be orthogonalized against previous ones, and,
• p is the number of previous vectors in v to orthogonalize against.

The vector v[k] is orthogonalized against the p unit vectors at v.{k-1}, v.{k-2}, ..., v.{k-p}. The matrix h must be allocated row-wise so that the (i,j)th entry is h.{i}.{j}. The inner products are computed, $\mathtt{h.\{}i\mathtt{, k-1\}} = \mathtt{v.\{}i\mathtt{\}} \cdot \mathtt{v.\{k\}}$ , for $i=\max(0, \mathtt{k}-\mathtt{p})\ldots \mathtt{k}-1$ . The orthogonalized v.{k} is not normalized and is stored over the old v.{k}. The function returns the Euclidean norm of the orthogonalized vector.

val classical_gs : ('d, 'k) Nvector.t array ->
Sundials.RealArray2.t ->
int -> int -> Sundials.RealArray.t -> ('d, 'k) Nvector.t array -> float

Performs a classical Gram-Schmidt orthogonalization. In classical_gs v h k p s temp,

• v is an array of at least k + 1 vectors with an L2-norm of 1,
• h is the output k by k Hessenberg matrix of inner products,
• k specifies the vector in v to be orthogonalized against previous ones,
• p is the number of previous vectors in v to orthogonalize against, and,
• s and temp are arrays of at least k + 1 elements used as workspaces.

The vector v[k] is orthogonalized against the p unit vectors at v.{k-1}, v.{k-2}, ..., v.{k-p}. The matrix h must be allocated row-wise so that the (i,j)th entry is h.{i}.{j}. The inner products are computed, $\mathtt{h.\{}i\mathtt{, k-1\}} = \mathtt{v.\{}i\mathtt{\}} \cdot \mathtt{v.\{k\}}$ , for $i=\max(0, \mathtt{k}-\mathtt{p})\ldots \mathtt{k}-1$ . The orthogonalized v.{k} is not normalized and is stored over the old v.{k}. The function returns the Euclidean norm of the orthogonalized vector.