Module Nvector_parallel

module Nvector_parallel: sig .. end

The standard parallel nvectors of Sundials (requires MPI).


type data = Sundials.RealArray.t * int * Mpi.communicator 

Parallel nvectors carry triples of a local bigarray of floats, a global length, and an MPI communicator.

type kind 

Represents the internal layout of a parallel nvector.

type t = (data, kind) Nvector.t 

The type of parallel nvectors.

exception IncorrectGlobalSize

Raised by make if the given global length is not consistent with the sum of local lengths across all parallel instances.

val make : int -> int -> Mpi.communicator -> float -> t

make nl ng c iv creates a new parallel nvector with nl local elements, that is part of a global array with ng elements. The local elements are initialized to iv, and communications occur on c.

val clone : t -> t

Creates an nvector with a distinct underlying array but that shares the original global size and communicator.

val unwrap : t -> data

Aliases Nvector.unwrap.

val pp : Stdlib.Format.formatter -> t -> unit

Pretty-print the local portion of a parallel nvector using the Format module.

val local_array : t -> Sundials.RealArray.t

local_array nv returns the local array a underlying the parallel nvector nv.

val local_length : t -> int

Returns the number of local elements for a parallel nvector.

val global_length : t -> int

Returns the number of global elements for a parallel nvector.

val communicator : t -> Mpi.communicator

Returns the communicator used for the parallel nvector.

module MakeOps (A : sig
type local_data 
val get : local_data -> int -> float
val set : local_data -> int -> float -> unit
val fill : local_data -> float -> unit
val make : int -> float -> local_data
val clone : local_data -> local_data
val length : local_data -> int
end: Nvector.NVECTOR_OPS 
            with type t = A.local_data * int * Mpi.communicator

Produce a set of parallel Nvector.NVECTOR_OPS from basic operations on an underlying array.

module Ops: Nvector.NVECTOR_OPS  with type t = t

Underlying nvector operations on parallel nvectors.

module DataOps: Nvector.NVECTOR_OPS  with type t = data

Nvector operations on Nvector_parallel.data implemented in OCaml.