Module Arkode.Spils.Banded

module Banded: sig .. end

Banded preconditioners.


type bandrange = {
   mupper : int; (*

The upper half-bandwidth.

*)
   mlower : int; (*

The lower half-bandwidth.

*)
}

The range of nonzero entries in a band matrix.

val prec_left : bandrange ->
(Nvector_serial.data, [> Nvector_serial.kind ], 's)
Arkode.Spils.preconditioner

A band matrix Arkode.Spils.preconditioner based on difference quotients. The call prec_left br instantiates a left preconditioner which generates a banded approximation to the Jacobian with br.mlower sub-diagonals and br.mupper super-diagonals.

NB: Banded preconditioners may not be used for problems involving a non-identity mass matrix.

val prec_right : bandrange ->
(Nvector_serial.data, [> Nvector_serial.kind ], 's)
Arkode.Spils.preconditioner

Like Arkode.Spils.Banded.prec_left but preconditions from the right.

val prec_both : bandrange ->
(Nvector_serial.data, [> Nvector_serial.kind ], 's)
Arkode.Spils.preconditioner

Like Arkode.Spils.Banded.prec_left but preconditions from both sides.

Banded statistics
type ([> Nvector_serial.kind ], [< `ARKStep | `MRIStep ]) serial_session = (Nvector_serial.data, [> Nvector_serial.kind ] as 'a,
[< `ARKStep | `MRIStep ] as 'b)
session

Alias for sessions based on serial nvectors.

val get_work_space : ([> Nvector_serial.kind ], [< `ARKStep | `MRIStep ])
serial_session -> int * int

Returns the sizes of the real and integer workspaces used by the banded preconditioner module.

val get_num_rhs_evals : ([> Nvector_serial.kind ], [< `ARKStep | `MRIStep ])
serial_session -> int

Returns the number of calls to the right-hand side callback for the difference banded Jacobian approximation. This counter is only updated if the default difference quotient function is used.