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_LINEARPROBLEM_MATRIXTRANS_H
00030 #define EpetraExt_LINEARPROBLEM_MATRIXTRANS_H
00031
00032 #include <EpetraExt_Transform.h>
00033
00034 class Epetra_LinearProblem;
00035 class Epetra_Map;
00036 class Epetra_MultiVector;
00037 class Epetra_CrsGraph;
00038 class Epetra_CrsMatrix;
00039 class Epetra_Export;
00040 class Epetra_Import;
00041
00042 namespace EpetraExt {
00043
00045 class LinearProblem_MatrixTrans : public SameTypeTransform<Epetra_LinearProblem>
00046 {
00047 SameTypeTransform<Epetra_CrsMatrix> & matrixTrans_;
00048
00049 Epetra_Import * Importer_;
00050 Epetra_Export * Exporter_;
00051
00052 Epetra_LinearProblem * OldProblem_;
00053 Epetra_CrsMatrix * OldMatrix_;
00054 Epetra_MultiVector * OldLHS_;
00055 Epetra_MultiVector * OldRHS_;
00056 Epetra_Map * OldRowMap_;
00057
00058 Epetra_LinearProblem * NewProblem_;
00059 Epetra_CrsMatrix * NewMatrix_;
00060 Epetra_MultiVector * NewLHS_;
00061 Epetra_MultiVector * NewRHS_;
00062
00063 public:
00064
00066 ~LinearProblem_MatrixTrans();
00067
00069 LinearProblem_MatrixTrans( SameTypeTransform<Epetra_CrsMatrix> & matrix_trans )
00070 : matrixTrans_(matrix_trans),
00071 Importer_(0),
00072 Exporter_(0),
00073 OldProblem_(0),
00074 OldMatrix_(0),
00075 OldLHS_(0),
00076 OldRHS_(0),
00077 OldRowMap_(0),
00078 NewProblem_(0),
00079 NewMatrix_(0),
00080 NewLHS_(0),
00081 NewRHS_(0)
00082 {}
00083
00085
00087 NewTypeRef operator()( OriginalTypeRef orig );
00088
00090 bool fwd();
00091
00093 bool rvs();
00094
00095 };
00096
00097 }
00098
00099 #endif //EpetraExt_LINEARPROBLEM_MATRIXTRANS_H
00100