Module Cvodes_bbd

module Cvodes_bbd: sig .. end
Parallel band-block-diagonal preconditioners for CVODES (requires MPI).
Author(s): Timothy Bourke (Inria/ENS), Jun Inoue (Inria/ENS), Marc Pouzet (UPMC/ENS/Inria)
Version: 2.7.0
See sundials: Using the band-block-diagonal preconditioner CVBBDPRE

type parallel_bsession = (Nvector_parallel.data, Nvector_parallel.kind) Cvodes.Adjoint.bsession 
Alias for sessions based on parallel nvectors.
type parallel_preconditioner = (Nvector_parallel.data, Nvector_parallel.kind)
Cvodes.Adjoint.Spils.preconditioner
Alias for preconditioners based on parallel nvectors.
type bandwidths = Cvode_bbd.bandwidths = {
   mudq : int; (*
Upper half-bandwidth for the difference quotient Jacobian approximation.
*)
   mldq : int; (*
Lower half-bandwidth for the difference quotient Jacobian approximation.
*)
   mukeep : int; (*
Upper half-bandwidth for the retained banded approximate Jacobian block.
*)
   mlkeep : int; (*
Lower half-bandwidth for the retained banded approximate Jacobian block.
*)
}
The bandwidths for the difference quotient Jacobian operation.
type local_fn = Nvector_parallel.data Cvodes.Adjoint.brhsfn_args ->
Nvector_parallel.data -> unit
Functions that approximate backward right-hand side functions using local computations only. They are passed the arguments: The approximation is allowed to coincide with the actual backward right-hand side function.

Raising Sundials.RecoverableFailure signals a recoverable error. Other exceptions signal unrecoverable errors.

See sundials: CVBBDLocalFnB
type comm_fn = Nvector_parallel.data Cvodes.Adjoint.brhsfn_args -> unit 
Functions that perform the interprocess communication necessary for the execution of Cvodes_bbd.local_fn. They are passed the current values of forward and backward variables.

Raising Sundials.RecoverableFailure signals a recoverable error. Other exceptions signal unrecoverable errors.

See sundials: CVBBDCommFnB
val prec_left : ?dqrely:float ->
bandwidths ->
?comm_fn:comm_fn ->
local_fn -> parallel_preconditioner
Left 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 Cvodes_bbd.bandwidths.
See sundials: CVBBDPrecInitB
val prec_right : ?dqrely:float ->
bandwidths ->
?comm_fn: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 Cvodes_bbd.bandwidths.
See sundials: CVBBDPrecInitB
val prec_both : ?dqrely:float ->
bandwidths ->
?comm_fn:comm_fn ->
local_fn -> parallel_preconditioner
Preconditioning from both sides using the Parallel Band-Block-Diagonal module. The difference quotient operation is controlled by ?dqrely, the relative increment in components of y, and Cvodes_bbd.bandwidths.
See sundials: CVBBDPrecInitB
val reinit : parallel_bsession -> ?dqrely:float -> int -> int -> unit
Reinitializes some BBD preconditioner parameters. In the call, reinit s ~dqrely:dqrely mudq mldq, dqrely is the relative increment in the components of y, and mudq and mldq are, respectively, the upper-half and lower-half bandwidths of the difference quotient Jacobian approximation.
See sundials: CVBBDPrecReInitB
val get_work_space : parallel_bsession -> int * int
Returns the sizes of the real and integer workspaces used by the BBD preconditioner.
Returns (real_size, integer_size)
See sundials: CVBBDPrecGetWorkSpace
val get_num_gfn_evals : parallel_bsession -> int
Returns the number of calls to the right-hand side function due to finite difference banded Jacobian approximation in the setup function.
See sundials: CVBBDPrecGetNumGfnEvals