Classes | Namespaces | Functions
linear_algebra_distribution.h File Reference

Go to the source code of this file.


class  oomph::LinearAlgebraDistribution
 Describes the distribution of a distributable linear algebra type object. Typically this is a container (such as a DoubleVector) or an operator (e.g Preconditioner or LinearSolver). This object is used in both serial and parallel implementations. In the serial context (no MPI) this just contains an integer indicating the number of rows. In parallel either each processor holds a subset of the set of global rows. (each processor contains only a single continuous block of rows - parametised with variables denoting the first row and the number of local rows) or, all rows are be duplicated across all processors. In parallel this object also contains an OomphCommunicator object which primarily contains the MPI_Comm communicator associated with this object. More...
class  oomph::DistributableLinearAlgebraObject
 Base class for any linear algebra object that is distributable. Just contains storage for the LinearAlgebraDistribution object and access functions. More...


 Namespace for helper functions for LinearAlgebraDistributions.


void oomph::LinearAlgebraDistributionHelpers::concatenate (const Vector< LinearAlgebraDistribution * > &in_distribution_pt, LinearAlgebraDistribution &out_distribution)
 Takes a vector of LinearAlgebraDistribution objects and concatenates them such that the nrow_local of the out_distribution is the sum of the nrow_local of all the in_distributions and the number of global rows of the out_distribution is the sum of the number of global rows of all the in_distributions. This results in a permutation of the rows in the out_distribution. Think of this in terms of DoubleVectors, if we have DoubleVectors with distributions A and B, distributed across two processors (p0 and p1), A: [a0] (on p0) B: [b0] (on p0) [a1] (on p1) [b1] (on P1),. More...