#include <Epetra_LinearProblemRedistor.h>
Collaboration diagram for Epetra_LinearProblemRedistor:
Public Member Functions  
Constructors/destructors  
Epetra_LinearProblemRedistor (Epetra_LinearProblem *OrigProblem, const Epetra_Map &RedistMap)  
Epetra_LinearProblemRedistor constructor using predefined layout.  
Epetra_LinearProblemRedistor (Epetra_LinearProblem *OrigProblem, int NumProc, bool Replicate)  
Epetra_LinearProblemRedistor constructor specifying number of processor and replication bool.  
Epetra_LinearProblemRedistor (const Epetra_LinearProblemRedistor &Source)  
Epetra_LinearProblemRedistor copy constructor.  
virtual  ~Epetra_LinearProblemRedistor () 
Epetra_LinearProblemRedistor destructor.  
Forward transformation methods  
int  CreateRedistProblem (const bool ConstructTranspose, const bool MakeDataContiguous, Epetra_LinearProblem *&RedistProblem) 
Generate a new Epetra_LinearProblem as a redistribution of the one passed into the constructor.  
int  UpdateRedistProblemValues (Epetra_LinearProblem *ProblemWithNewValues) 
Update the values of an alreadyredistributed problem.  
int  UpdateRedistRHS (Epetra_MultiVector *RHSWithNewValues) 
Update the values of an alreadyredistributed RHS.  
Reverse transformation methods  
int  UpdateOriginalLHS (Epetra_MultiVector *LHS) 
Update LHS of original Linear Problem object.  
Attribute accessor methods  
const Epetra_Map &  RedistMap () const 
Returns const reference to the Epetra_Map that describes the layout of the RedistLinearProblem.  
const Epetra_Export &  RedistExporter () const 
Returns const reference to the Epetra_Export object used to redistribute the original linear problem.  
Utility methods  
int  ExtractHbData (int &M, int &N, int &nz, int *&ptr, int *&ind, double *&val, int &Nrhs, double *&rhs, int &ldrhs, double *&lhs, int &ldlhs) const 
Extract the redistributed problem data in a form usable for other codes that require HarwellBoeing format.  
I/O methods  
virtual void  Print (ostream &os) const 
Print method. 
This class provides capabilities to redistribute an existing Epetra_LinearProblem object across a parallel distributed memory machine. All or part of a linear problem object can be redistributed. Reverse distributions, value updates and matrix transposition are also supported. Specification of the redistribution can be done by

Epetra_LinearProblemRedistor constructor using predefined layout.


Epetra_LinearProblemRedistor constructor specifying number of processor and replication bool.


Generate a new Epetra_LinearProblem as a redistribution of the one passed into the constructor. Constructs a new Epetra_LinearProblem that is a copy of the one passed in to the constructor. The new problem will have redistributed copies of the RowMatrix, LHS and RHS from the original problem. If any of these three objects are 0 pointers, then the corresponding pointer will be zero in the redistributed object. The redistributed matrix will constructed as an Epetra_CrsMatrix. The LHS and RHS will be Epetra_MultiVector objects. Two bools can be set when calling this method. The first, ConstructTranspose, will cause the Redistribute method to construct the transpose of the original row matrix. The second, MakeDataContiguous, forces the memory layout of the output matrix, RHS and LHS to be stored so that it is compatible with Fortran. In particular, the Epetra_CrsMatrix is stored so that value from row to row are contiguous, as are the indices. This is compatible with the HarwellBoeing compressed row and compressed column format. The RHS and LHS are created so that there is a constant stride between the columns of the multivector. This is compatible with Fortran 2D array storage.


Extract the redistributed problem data in a form usable for other codes that require HarwellBoeing format. This method extract data from the linear problem for use with other packages, such as SuperLU, that require the matrix, rhs and lhs in HarwellBoeing format. Note that the arrays returned by this method are owned by the Epetra_LinearProblemRedistor class, and they will be deleted when the owning class is destroyed. 

Returns const reference to the Epetra_Export object used to redistribute the original linear problem. The RedistExporter object can be used to redistribute other Epetra_DistObject objects whose maps are compatible with the original linear problem map, or a reverse distribution for objects compatible with the RedistMap().


Returns const reference to the Epetra_Map that describes the layout of the RedistLinearProblem. The RedistMap object can be used to construct other Epetra_DistObject objects whose maps are compatible with the redistributed linear problem map.


Update LHS of original Linear Problem object. Copies the values from the LHS of the RedistProblem Object into the LHS passed in to the method. If the RedistProblem is replicated, the LHS will be computed as an average from all processor.


Update the values of an alreadyredistributed problem. Updates the values of an alreadyredistributed problem. This method allows updating the redistributed problem without allocating new storage. All three objects in the RedistProblem will be updated, namely the Matrix, LHS and RHS. If the LHS or RHS are 0 pointers, they will be ignored.


Update the values of an alreadyredistributed RHS. Updates the values of an alreadyredistributed RHS. This method allows updating the redistributed RHS without allocating new storage. This method updates only the RHS, and no other part of the RedistLinearProblem.
