Module Nvector_mpimany

module Nvector_mpimany: sig .. end

The standard mpimany-vector nvectors of Sundials.

type data = Nvector.any Sundials.ROArray.t * Mpi.communicator * int 

The data in underlying nvectors is exposed as an array of wrapped values together with an MPI communicator and the sum of their lengths.

type kind 

Represents the internal layout of an mpimany-vector nvector.

type t = (data, kind) Nvector.t 

The type of mpimany-vector nvectors.

type Nvector.gdata += 
| MpiMany of data

Generic wrapper for

val wrap : ?context:Sundials.Context.t ->
?with_fused_ops:bool ->
?comm:Mpi.communicator -> Nvector.any Sundials.ROArray.t -> t

Creates a mpimany-vector nvector from an array of generic nvectors. If the communicator argument is not given then all nvectors in the array that have a communicator must have the same communicator which becomes the communicator of the new nvector (at least one element must have a communicator). If the communicator argument is given, each array element may use any or no communicator.

An optional argument permits to enable all the fused and array operations for a given nvector (they are disabled by default).

val unwrap : t -> data

Aliases Nvector.unwrap.

val length : t -> int

Returns the sum of the lengths of the component nvectors.

val num_subvectors : t -> int

Returns the number of subectors in the array.

val communicator : t -> Mpi.communicator

Returns the communicator used for the nvector. See also: Nvector_parallel.get_communicator and Nvector_parallel.hide_communicator.

val enable : ?with_fused_ops:bool ->
?with_linear_combination:bool ->
?with_scale_add_multi:bool ->
?with_dot_prod_multi:bool ->
?with_linear_sum_vector_array:bool ->
?with_scale_vector_array:bool ->
?with_const_vector_array:bool ->
?with_wrms_norm_vector_array:bool ->
?with_wrms_norm_mask_vector_array:bool ->
?with_dot_prod_multi_local:bool -> t -> unit

Selectively enable or disable fused and array operations. The with_fused_ops argument enables or disables all such operations.

module Ops: Nvector.NVECTOR_OPS  with type t = t

Underlying nvector operations on mpimany-vector nvectors.

module DataOps: Nvector.NVECTOR_OPS  with type t = data

Nvector operations implemented in OCaml on mpimany-vector payloads.

module Any: sig .. end

A generic nvector interface to mpimany-vector nvectors.