EpetraExt Package Browser (Single Doxygen Collection)  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
EpetraExt_BlockDiagMatrix Class Reference

EpetraExt_BlockDiagMatrix: A class for storing distributed block matrices. More...

#include <EpetraExt_BlockDiagMatrix.h>

Inheritance diagram for EpetraExt_BlockDiagMatrix:
Inheritance graph
[legend]

Public Member Functions

 EpetraExt_BlockDiagMatrix (const Epetra_BlockMap &Map, bool zero_out=true)
 Constructor - This map is the map of the vector this can be applied to. More...
 
 EpetraExt_BlockDiagMatrix (const EpetraExt_BlockDiagMatrix &Source)
 Copy constructor. More...
 
virtual ~EpetraExt_BlockDiagMatrix ()
 Destructor. More...
 
EpetraExt_BlockDiagMatrixoperator= (const EpetraExt_BlockDiagMatrix &Source)
 = Operator. More...
 
double * operator[] (int index)
 Block access function. More...
 
const double * operator[] (int index) const
 Block access function. More...
 
- Public Member Functions inherited from Epetra_SrcDistObject
virtual const Epetra_BlockMapMap () const =0
 
- Public Member Functions inherited from Epetra_BLAS
 Epetra_BLAS (void)
 
 Epetra_BLAS (const Epetra_BLAS &BLAS)
 
virtual ~Epetra_BLAS (void)
 
float ASUM (const int N, const float *X, const int INCX=1) const
 
double ASUM (const int N, const double *X, const int INCX=1) const
 
float DOT (const int N, const float *X, const float *Y, const int INCX=1, const int INCY=1) const
 
double DOT (const int N, const double *X, const double *Y, const int INCX=1, const int INCY=1) const
 
float NRM2 (const int N, const float *X, const int INCX=1) const
 
double NRM2 (const int N, const double *X, const int INCX=1) const
 
void SCAL (const int N, const float ALPHA, float *X, const int INCX=1) const
 
void SCAL (const int N, const double ALPHA, double *X, const int INCX=1) const
 
void COPY (const int N, const float *X, float *Y, const int INCX=1, const int INCY=1) const
 
void COPY (const int N, const double *X, double *Y, const int INCX=1, const int INCY=1) const
 
int IAMAX (const int N, const float *X, const int INCX=1) const
 
int IAMAX (const int N, const double *X, const int INCX=1) const
 
void AXPY (const int N, const float ALPHA, const float *X, float *Y, const int INCX=1, const int INCY=1) const
 
void AXPY (const int N, const double ALPHA, const double *X, double *Y, const int INCX=1, const int INCY=1) const
 
void GEMV (const char TRANS, const int M, const int N, const float ALPHA, const float *A, const int LDA, const float *X, const float BETA, float *Y, const int INCX=1, const int INCY=1) const
 
void GEMV (const char TRANS, const int M, const int N, const double ALPHA, const double *A, const int LDA, const double *X, const double BETA, double *Y, const int INCX=1, const int INCY=1) const
 
void GEMM (const char TRANSA, const char TRANSB, const int M, const int N, const int K, const float ALPHA, const float *A, const int LDA, const float *B, const int LDB, const float BETA, float *C, const int LDC) const
 
void GEMM (const char TRANSA, const char TRANSB, const int M, const int N, const int K, const double ALPHA, const double *A, const int LDA, const double *B, const int LDB, const double BETA, double *C, const int LDC) const
 
void SYMM (const char SIDE, const char UPLO, const int M, const int N, const float ALPHA, const float *A, const int LDA, const float *B, const int LDB, const float BETA, float *C, const int LDC) const
 
void SYMM (const char SIDE, const char UPLO, const int M, const int N, const double ALPHA, const double *A, const int LDA, const double *B, const int LDB, const double BETA, double *C, const int LDC) const
 
void TRMM (const char SIDE, const char UPLO, const char TRANSA, const char DIAG, const int M, const int N, const float ALPHA, const float *A, const int LDA, float *B, const int LDB) const
 
void TRMM (const char SIDE, const char UPLO, const char TRANSA, const char DIAG, const int M, const int N, const double ALPHA, const double *A, const int LDA, double *B, const int LDB) const
 
void SYRK (const char UPLO, const char TRANS, const int N, const int K, const float ALPHA, const float *A, const int LDA, const float BETA, float *C, const int LDC) const
 
void SYRK (const char UPLO, const char TRANS, const int N, const int K, const double ALPHA, const double *A, const int LDA, const double BETA, double *C, const int LDC) const
 

Private Member Functions

void Allocate ()
 
int DoCopy (const EpetraExt_BlockDiagMatrix &Source)
 
int CheckSizes (const Epetra_SrcDistObject &Source)
 
int CopyAndPermute (const Epetra_SrcDistObject &Source, int NumSameIDs, int NumPermuteIDs, int *PermuteToLIDs, int *PermuteFromLIDs, const Epetra_OffsetIndex *Indexor, Epetra_CombineMode CombineMode=Zero)
 
int PackAndPrepare (const Epetra_SrcDistObject &Source, int NumExportIDs, int *ExportLIDs, int &LenExports, char *&Exports, int &SizeOfPacket, int *Sizes, bool &VarSizes, Epetra_Distributor &Distor)
 
int UnpackAndCombine (const Epetra_SrcDistObject &Source, int NumImportIDs, int *ImportLIDs, int LenImports, char *Imports, int &SizeOfPacket, Epetra_Distributor &Distor, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor)
 

Private Attributes

Epetra_LAPACK LAPACK
 
Teuchos::ParameterList List_
 
bool HasComputed_
 Has Computed? Needed for Inverse/Factorization modes. More...
 
int ApplyMode_
 Which Apply Mode to use. More...
 
Epetra_BlockMapDataMap_
 Map for the data. More...
 
double * Values_
 Actual Data values. More...
 
int * Pivots_
 Pivots for factorization. More...
 

Attribute set methods

virtual int SetUseTranspose (bool)
 SetUseTranspose - not implemented. More...
 
virtual int SetParameters (Teuchos::ParameterList &List)
 SetParameters. More...
 
virtual int Compute ()
 Computes the inverse / factorization if such is set on the list. More...
 

Attribute access functions

virtual const char * Label () const
 Returns a character std::string describing the operator. More...
 
virtual bool UseTranspose () const
 Returns the current UseTranspose setting. More...
 
virtual bool HasNormInf () const
 Returns true if the this object can provide an approximate Inf-norm, false otherwise. More...
 
virtual const Epetra_CommComm () const
 Returns a pointer to the Epetra_Comm communicator associated with this operator. More...
 
virtual const Epetra_MapOperatorDomainMap () const
 Returns the Epetra_Map object associated with the domain of this operator. More...
 
virtual const Epetra_MapOperatorRangeMap () const
 Returns the Epetra_Map object associated with the range of this operator. More...
 
virtual const Epetra_BlockMapBlockMap () const
 Returns the Epetra_BlockMap object associated with the range of this operator. More...
 
double * Values () const
 Returns a pointer to the array containing the blocks. More...
 
int BlockSize (int LID) const
 Returns the size of the given block. More...
 
int DataSize (int LID) const
 Returns the size of the data in the given block. More...
 
bool ConstantBlockSize () const
 Returns true if the element size is constant. More...
 
int NumMyBlocks () const
 Returns the number of local blocks. More...
 
int NumGlobalBlocks () const
 Returns the number of global blocks. More...
 
long long NumGlobalBlocks64 () const
 
int NumMyUnknowns () const
 Returns the number of local unknowns. More...
 
int NumGlobalUnknowns () const
 Returns the number of global unknowns. More...
 
long long NumGlobalUnknowns64 () const
 
int NumData () const
 Returns the size of the total Data block. More...
 
int GetApplyMode ()
 Gets apply mode info. More...
 
virtual void Print (std::ostream &os) const
 Print method. More...
 

Mathematical functions

virtual int Apply (const Epetra_MultiVector &, Epetra_MultiVector &) const
 Returns the result of a Epetra_Operator applied to a Epetra_MultiVector X in Y. More...
 
virtual int ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
 Returns the result of a Epetra_Operator inverse applied to an Epetra_MultiVector X in Y. More...
 
virtual double NormInf () const
 NormInf - Not Implemented. More...
 
void PutScalar (double value)
 PutScalar function. More...
 
virtual const Epetra_BlockMapDataMap () const
 Returns the Epetra_BlockMap object with the distribution of underlying values. More...
 

Additional Inherited Members

Detailed Description

EpetraExt_BlockDiagMatrix: A class for storing distributed block matrices.

A dense-block block-diagonal matrix with inversion/factorization capabilities.

This class has a rigid map structure — the Domain and Range maps must be the same.

Definition at line 72 of file EpetraExt_BlockDiagMatrix.h.

Constructor & Destructor Documentation

EpetraExt_BlockDiagMatrix::EpetraExt_BlockDiagMatrix ( const Epetra_BlockMap Map,
bool  zero_out = true 
)

Constructor - This map is the map of the vector this can be applied to.

Definition at line 56 of file EpetraExt_BlockDiagMatrix.cpp.

EpetraExt_BlockDiagMatrix::EpetraExt_BlockDiagMatrix ( const EpetraExt_BlockDiagMatrix Source)

Copy constructor.

Definition at line 80 of file EpetraExt_BlockDiagMatrix.cpp.

EpetraExt_BlockDiagMatrix::~EpetraExt_BlockDiagMatrix ( )
virtual

Destructor.

Definition at line 71 of file EpetraExt_BlockDiagMatrix.cpp.

Member Function Documentation

EpetraExt_BlockDiagMatrix & EpetraExt_BlockDiagMatrix::operator= ( const EpetraExt_BlockDiagMatrix Source)

= Operator.

Parameters
InA - EpetraExt_BlockDiagMatrix to copy.
Returns
EpetraExt_BlockDiagMatrix.

Definition at line 150 of file EpetraExt_BlockDiagMatrix.cpp.

double* EpetraExt_BlockDiagMatrix::operator[] ( int  index)
inline

Block access function.

Returns
the pointer V[Index].

Definition at line 98 of file EpetraExt_BlockDiagMatrix.h.

const double* EpetraExt_BlockDiagMatrix::operator[] ( int  index) const
inline

Block access function.

Returns
the pointer V[Index].

Definition at line 103 of file EpetraExt_BlockDiagMatrix.h.

virtual int EpetraExt_BlockDiagMatrix::SetUseTranspose ( bool  )
inlinevirtual

SetUseTranspose - not implemented.

Implements Epetra_Operator.

Definition at line 111 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::SetParameters ( Teuchos::ParameterList List)
virtual

SetParameters.

Definition at line 127 of file EpetraExt_BlockDiagMatrix.cpp.

int EpetraExt_BlockDiagMatrix::Compute ( )
virtual

Computes the inverse / factorization if such is set on the list.

Definition at line 175 of file EpetraExt_BlockDiagMatrix.cpp.

virtual const char* EpetraExt_BlockDiagMatrix::Label ( ) const
inlinevirtual

Returns a character std::string describing the operator.

Implements Epetra_Operator.

Definition at line 126 of file EpetraExt_BlockDiagMatrix.h.

virtual bool EpetraExt_BlockDiagMatrix::UseTranspose ( ) const
inlinevirtual

Returns the current UseTranspose setting.

Implements Epetra_Operator.

Definition at line 129 of file EpetraExt_BlockDiagMatrix.h.

virtual bool EpetraExt_BlockDiagMatrix::HasNormInf ( ) const
inlinevirtual

Returns true if the this object can provide an approximate Inf-norm, false otherwise.

Implements Epetra_Operator.

Definition at line 132 of file EpetraExt_BlockDiagMatrix.h.

virtual const Epetra_Comm& EpetraExt_BlockDiagMatrix::Comm ( ) const
inlinevirtual

Returns a pointer to the Epetra_Comm communicator associated with this operator.

Implements Epetra_Operator.

Definition at line 135 of file EpetraExt_BlockDiagMatrix.h.

virtual const Epetra_Map& EpetraExt_BlockDiagMatrix::OperatorDomainMap ( ) const
inlinevirtual

Returns the Epetra_Map object associated with the domain of this operator.

Implements Epetra_Operator.

Definition at line 138 of file EpetraExt_BlockDiagMatrix.h.

virtual const Epetra_Map& EpetraExt_BlockDiagMatrix::OperatorRangeMap ( ) const
inlinevirtual

Returns the Epetra_Map object associated with the range of this operator.

Implements Epetra_Operator.

Definition at line 141 of file EpetraExt_BlockDiagMatrix.h.

virtual const Epetra_BlockMap& EpetraExt_BlockDiagMatrix::BlockMap ( ) const
inlinevirtual

Returns the Epetra_BlockMap object associated with the range of this operator.

Definition at line 144 of file EpetraExt_BlockDiagMatrix.h.

double* EpetraExt_BlockDiagMatrix::Values ( ) const
inline

Returns a pointer to the array containing the blocks.

Definition at line 147 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::BlockSize ( int  LID) const
inline

Returns the size of the given block.

Definition at line 150 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::DataSize ( int  LID) const
inline

Returns the size of the data in the given block.

Definition at line 153 of file EpetraExt_BlockDiagMatrix.h.

bool EpetraExt_BlockDiagMatrix::ConstantBlockSize ( ) const
inline

Returns true if the element size is constant.

Definition at line 156 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::NumMyBlocks ( ) const
inline

Returns the number of local blocks.

Definition at line 159 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::NumGlobalBlocks ( ) const
inline

Returns the number of global blocks.

Definition at line 163 of file EpetraExt_BlockDiagMatrix.h.

long long EpetraExt_BlockDiagMatrix::NumGlobalBlocks64 ( ) const
inline

Definition at line 165 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::NumMyUnknowns ( ) const
inline

Returns the number of local unknowns.

Definition at line 168 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::NumGlobalUnknowns ( ) const
inline

Returns the number of global unknowns.

Definition at line 172 of file EpetraExt_BlockDiagMatrix.h.

long long EpetraExt_BlockDiagMatrix::NumGlobalUnknowns64 ( ) const
inline

Definition at line 174 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::NumData ( ) const
inline

Returns the size of the total Data block.

Definition at line 177 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::GetApplyMode ( )
inline

Gets apply mode info.

Definition at line 180 of file EpetraExt_BlockDiagMatrix.h.

void EpetraExt_BlockDiagMatrix::Print ( std::ostream &  os) const
virtual

Print method.

Reimplemented from Epetra_DistObject.

Definition at line 307 of file EpetraExt_BlockDiagMatrix.cpp.

virtual int EpetraExt_BlockDiagMatrix::Apply ( const Epetra_MultiVector ,
Epetra_MultiVector  
) const
inlinevirtual

Returns the result of a Epetra_Operator applied to a Epetra_MultiVector X in Y.

Parameters
InX - A Epetra_MultiVector of dimension NumVectors to multiply with matrix.
OutY -A Epetra_MultiVector of dimension NumVectors containing result.
Returns
Integer error code, set to 0 if successful.

Implements Epetra_Operator.

Definition at line 199 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::ApplyInverse ( const Epetra_MultiVector X,
Epetra_MultiVector Y 
) const
virtual

Returns the result of a Epetra_Operator inverse applied to an Epetra_MultiVector X in Y.

Parameters
InX - A Epetra_MultiVector of dimension NumVectors to solve for.
OutY -A Epetra_MultiVector of dimension NumVectors containing result.
Returns
Integer error code, set to 0 if successful.
Warning
In order to work with AztecOO, any implementation of this method must support the case where X and Y are the same object.

Implements Epetra_Operator.

Definition at line 231 of file EpetraExt_BlockDiagMatrix.cpp.

virtual double EpetraExt_BlockDiagMatrix::NormInf ( ) const
inlinevirtual

NormInf - Not Implemented.

Implements Epetra_Operator.

Definition at line 216 of file EpetraExt_BlockDiagMatrix.h.

void EpetraExt_BlockDiagMatrix::PutScalar ( double  value)

PutScalar function.

Definition at line 143 of file EpetraExt_BlockDiagMatrix.cpp.

virtual const Epetra_BlockMap& EpetraExt_BlockDiagMatrix::DataMap ( ) const
inlinevirtual

Returns the Epetra_BlockMap object with the distribution of underlying values.

Definition at line 222 of file EpetraExt_BlockDiagMatrix.h.

void EpetraExt_BlockDiagMatrix::Allocate ( )
private

Definition at line 95 of file EpetraExt_BlockDiagMatrix.cpp.

int EpetraExt_BlockDiagMatrix::DoCopy ( const EpetraExt_BlockDiagMatrix Source)
private

Definition at line 155 of file EpetraExt_BlockDiagMatrix.cpp.

int EpetraExt_BlockDiagMatrix::CheckSizes ( const Epetra_SrcDistObject Source)
privatevirtual

Implements Epetra_DistObject.

Definition at line 379 of file EpetraExt_BlockDiagMatrix.cpp.

int EpetraExt_BlockDiagMatrix::CopyAndPermute ( const Epetra_SrcDistObject Source,
int  NumSameIDs,
int  NumPermuteIDs,
int *  PermuteToLIDs,
int *  PermuteFromLIDs,
const Epetra_OffsetIndex Indexor,
Epetra_CombineMode  CombineMode = Zero 
)
privatevirtual

Implements Epetra_DistObject.

Definition at line 386 of file EpetraExt_BlockDiagMatrix.cpp.

int EpetraExt_BlockDiagMatrix::PackAndPrepare ( const Epetra_SrcDistObject Source,
int  NumExportIDs,
int *  ExportLIDs,
int &  LenExports,
char *&  Exports,
int &  SizeOfPacket,
int *  Sizes,
bool &  VarSizes,
Epetra_Distributor Distor 
)
privatevirtual

Implements Epetra_DistObject.

Definition at line 508 of file EpetraExt_BlockDiagMatrix.cpp.

int EpetraExt_BlockDiagMatrix::UnpackAndCombine ( const Epetra_SrcDistObject Source,
int  NumImportIDs,
int *  ImportLIDs,
int  LenImports,
char *  Imports,
int &  SizeOfPacket,
Epetra_Distributor Distor,
Epetra_CombineMode  CombineMode,
const Epetra_OffsetIndex Indexor 
)
privatevirtual

Implements Epetra_DistObject.

Definition at line 580 of file EpetraExt_BlockDiagMatrix.cpp.

Member Data Documentation

Epetra_LAPACK EpetraExt_BlockDiagMatrix::LAPACK
private

Definition at line 266 of file EpetraExt_BlockDiagMatrix.h.

Teuchos::ParameterList EpetraExt_BlockDiagMatrix::List_
private

Definition at line 267 of file EpetraExt_BlockDiagMatrix.h.

bool EpetraExt_BlockDiagMatrix::HasComputed_
private

Has Computed? Needed for Inverse/Factorization modes.

Definition at line 270 of file EpetraExt_BlockDiagMatrix.h.

int EpetraExt_BlockDiagMatrix::ApplyMode_
private

Which Apply Mode to use.

Definition at line 273 of file EpetraExt_BlockDiagMatrix.h.

Epetra_BlockMap* EpetraExt_BlockDiagMatrix::DataMap_
private

Map for the data.

Definition at line 276 of file EpetraExt_BlockDiagMatrix.h.

double* EpetraExt_BlockDiagMatrix::Values_
private

Actual Data values.

Definition at line 279 of file EpetraExt_BlockDiagMatrix.h.

int* EpetraExt_BlockDiagMatrix::Pivots_
private

Pivots for factorization.

Definition at line 282 of file EpetraExt_BlockDiagMatrix.h.


The documentation for this class was generated from the following files: