module Cvodes_bbd:sig..end
Parallel band-block-diagonal preconditioners for CVODES (requires MPI).
typeparallel_bsession =(Nvector_parallel.data, Nvector_parallel.kind) Cvodes.Adjoint.bsession
Alias for sessions based on parallel nvectors.
typeparallel_preconditioner =(Nvector_parallel.data, Nvector_parallel.kind)
Cvodes.Adjoint.Spils.preconditioner
Alias for preconditioners based on parallel nvectors.
typebandwidths =Cvode_bbd.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 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:
args, the current values of forward and backward variables, and,yb', a vector for storing a local approximation to the backward
right-hand side function $\dot{y}_B = f_B(t, y, y_B)$.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.
typecomm_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.
val prec_left : ?dqrely:float ->
bandwidths ->
?comm:comm_fn ->
local_fn -> parallel_preconditionerLeft 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.
val prec_right : ?dqrely:float ->
bandwidths ->
?comm:comm_fn ->
local_fn -> parallel_preconditionerRight 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.
val prec_both : ?dqrely:float ->
bandwidths ->
?comm:comm_fn ->
local_fn -> parallel_preconditionerPreconditioning 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.
val reinit : parallel_bsession -> ?dqrely:float -> int -> int -> unitReinitializes 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.
val get_work_space : parallel_bsession -> int * intReturns the sizes of the real and integer workspaces used by the BBD preconditioner.
real_size, integer_size)val get_num_gfn_evals : parallel_bsession -> intReturns the number of calls to the right-hand side function due to finite difference banded Jacobian approximation in the setup function.