Module Sundials_LinearSolver.Direct

module Direct: sig .. end

Direct Linear Solvers


Definitions in this module are more conveniently accessed through session-specific direct linear solver modules like Cvode.Dls and Ida.Dls. For example, Cvode.Dls.dense is an alias for Sundials_LinearSolver.Direct.dense.

Types

val dense : ?context:Sundials.Context.t ->
([> Nvector_serial.kind ] as 'a) Nvector.serial ->
'a Sundials.Matrix.dense ->
(Sundials.Matrix.Dense.t, 'a, [ `Dls ]) Sundials_LinearSolver.serial_t

Creates a direct linear solver on dense matrices. The nvector and matrix argument are used to determine the linear system size and to assess compatibility with the linear solver implementation. The matrix is used internally after the linear solver is attached to a session.

val lapack_dense : ?context:Sundials.Context.t ->
([> Nvector_serial.kind ] as 'a) Nvector.serial ->
'a Sundials.Matrix.dense ->
(Sundials.Matrix.Dense.t, 'a, [ `Dls ]) Sundials_LinearSolver.serial_t

Creates a direct linear solver on dense matrices using LAPACK. See Sundials_LinearSolver.Direct.dense. Only available if Config.lapack_enabled.

val band : ?context:Sundials.Context.t ->
([> Nvector_serial.kind ] as 'a) Nvector.serial ->
'a Sundials.Matrix.band ->
(Sundials.Matrix.Band.t, 'a, [ `Dls ]) Sundials_LinearSolver.serial_t

Creates a direct linear solver on banded matrices. The nvector and matrix argument are used to determine the linear system size and to assess compatibility with the linear solver implementation. The matrix is used internally after the linear solver is attached to a session.

val lapack_band : ?context:Sundials.Context.t ->
([> Nvector_serial.kind ] as 'a) Nvector.serial ->
'a Sundials.Matrix.band ->
(Sundials.Matrix.Band.t, 'a, [ `Dls ]) Sundials_LinearSolver.serial_t

Creates a direct linear solver on banded matrices using LAPACK. See Sundials_LinearSolver.Direct.band. Only available if Config.lapack_enabled.

module Klu: sig .. end

KLU direct linear solver operating on sparse matrices (requires KLU).

val klu : ?context:Sundials.Context.t ->
?ordering:Klu.ordering ->
([> Nvector_serial.kind ] as 'a) Nvector.serial ->
('s, 'a) Sundials.Matrix.sparse ->
('s Sundials.Matrix.Sparse.t, 'a, [ `Dls | `Klu ])
Sundials_LinearSolver.serial_t

Creates a direct linear solver on sparse matrices using KLU. See Sundials_LinearSolver.Direct.Klu.make.

module Superlumt: sig .. end

SuperLUMT direct linear solver operating on sparse matrices (requires SuperLUMT).

val superlumt : ?context:Sundials.Context.t ->
?ordering:Superlumt.ordering ->
nthreads:int ->
([> Nvector_serial.kind ] as 'a) Nvector.serial ->
('s, 'a) Sundials.Matrix.sparse ->
('s Sundials.Matrix.Sparse.t, 'a, [> `Dls | `Slu ])
Sundials_LinearSolver.serial_t

Creates a direct linear solver on sparse matrices using SuperLUMT. See Sundials_LinearSolver.Direct.Superlumt.make.

NB: The Matrix.Sparse.csr format is only supported for Config.sundials_version >= 3.0.0.