00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef EpetraExt_CRSMATRIX_TRANSPOSE_H
00030 #define EpetraExt_CRSMATRIX_TRANSPOSE_H
00031
00032 #include <EpetraExt_Transform.h>
00033
00034 class Epetra_RowMatrix;
00035 class Epetra_CrsMatrix;
00036 class Epetra_Map;
00037 class Epetra_Export;
00038
00039 namespace EpetraExt {
00040
00042 class RowMatrix_Transpose : public SameTypeTransform<Epetra_RowMatrix>
00043 {
00044
00045 public:
00046
00048 ~RowMatrix_Transpose();
00049
00051
00059 RowMatrix_Transpose( bool MakeDataContiguous = false,
00060 Epetra_Map * TransposeRowMap = 0,
00061 bool IgnoreNonLocalCols = false)
00062 : TransposeMatrix_(0),
00063 TransposeExporter_(0),
00064 TransposeRowMap_(TransposeRowMap),
00065 MakeDataContiguous_(MakeDataContiguous),
00066 IgnoreNonLocalCols_(IgnoreNonLocalCols),
00067 NumMyRows_(0),
00068 NumMyCols_(0),
00069 MaxNumEntries_(0),
00070 Indices_(0),
00071 Values_(0),
00072 TransNumNz_(0),
00073 TransIndices_(0),
00074 TransValues_(0),
00075 TransMyGlobalEquations_(0),
00076 OrigMatrixIsCrsMatrix_(false)
00077 {}
00078
00080 NewTypeRef operator()( OriginalTypeRef orig );
00081
00083 bool fwd();
00084
00086 bool rvs();
00087
00088 private:
00089
00090 Epetra_CrsMatrix * TransposeMatrix_;
00091
00092 Epetra_Export * TransposeExporter_;
00093
00094 Epetra_Map * TransposeRowMap_;
00095
00096 bool MakeDataContiguous_;
00097 bool IgnoreNonLocalCols_;
00098
00099 int NumMyRows_;
00100 int NumMyCols_;
00101 int MaxNumEntries_;
00102 int * Indices_;
00103 double * Values_;
00104
00105 int * TransNumNz_;
00106 int ** TransIndices_;
00107 double ** TransValues_;
00108 int * TransMyGlobalEquations_;
00109
00110 bool OrigMatrixIsCrsMatrix_;
00111
00112 };
00113
00114 }
00115
00116 #endif //EpetraExt_ROWMATRIX_TRANSPOSE_H