module Kinsol_bbd:sig
..end
Parallel band-block-diagonal preconditioners for KINSOL (requires MPI).
typeparallel_session =
(Nvector_parallel.data, Nvector_parallel.kind) Kinsol.session
Alias for sessions based on parallel nvectors.
typeparallel_preconditioner =
(Nvector_parallel.data, Nvector_parallel.kind) Kinsol.Spils.preconditioner
Alias for preconditioners based on parallel nvectors.
type
bandwidths = {
|
mudq : |
(* | Upper half-bandwidth for the difference quotient Jacobian approximation. | *) |
|
mldq : |
(* | Lower half-bandwidth for the difference quotient Jacobian approximation. | *) |
|
mukeep : |
(* | Upper half-bandwidth for the retained banded approximate Jacobian block. | *) |
|
mlkeep : |
(* | Lower half-bandwidth for the retained banded approximate Jacobian block. | *) |
}
The bandwidths for the difference quotient Jacobian operation.
typelocal_fn =
Nvector_parallel.data -> Nvector_parallel.data -> unit
Approximates the system function using local computations only.
In the call gloc u gval
, u
is the current estimated solution
and gval
stores the computed solution.
Raising Sundials.RecoverableFailure
signals a recoverable error.
Other exceptions signal unrecoverable errors.
typecomm_fn =
Nvector_parallel.data -> unit
Functions that perform the interprocess communication necessary
for the execution of Kinsol_bbd.local_fn
. In the call cfn u
, u
is the input
vector.
Raising Sundials.RecoverableFailure
signals a recoverable error.
Other exceptions signal unrecoverable errors.
val prec_right : ?dqrely:float ->
bandwidths ->
?comm:comm_fn ->
local_fn -> parallel_preconditioner
Right preconditioning using the Parallel Band-Block-Diagonal
module. The difference quotient operation is controlled by
?dqrely
, which specifies the relative increment in components of
y
, and Kinsol_bbd.bandwidths
.
val get_work_space : parallel_session -> int * int
Returns the sizes of the real and integer workspaces used by the BBD preconditioner.
real_size
, integer_size
)val get_num_gfn_evals : parallel_session -> int
Returns the number of calls to the right-hand side function due to finite difference banded Jacobian approximation in the setup function.