44 #include <Epetra_CrsMatrix.h> 45 #include <Epetra_Map.h> 46 #include <Epetra_Import.h> 47 #include <Epetra_IntSerialDenseVector.h> 48 #include <Epetra_LongLongSerialDenseVector.h> 49 #include <Epetra_GIDTypeSerialDenseVector.h> 60 template<
typename int_type>
63 transform( OriginalTypeRef orig )
68 assert( orig.Filled() );
83 for(
int i = 0; i < nNumRows; ++i )
84 matched = matched && ( oRowMap.MyGID(newRowMap_.GID64(i)) );
85 if( !matched ) std::cerr <<
"EDT_CrsMatrix_SubCopy: Bad new_row_Map. GIDs of new row map must be GIDs of the original row map on the same processor.\n";
88 if( !newRangeMap_.
SameAs(newDomainMap_) ) {
90 int_type* newDomainMap_MyGlob = 0;
91 newDomainMap_.MyGlobalElementsPtr(newDomainMap_MyGlob);
93 for(
int i = 0; i < nNumDomain; ++i )
94 matched = matched && ( pidList[i]>=0 );
97 if( !matched ) std::cout <<
"EDT_CrsMatrix_SubCopy: Bad newDomainMap. One or more GIDs in new domain map are not part of original domain map.\n";
105 int_type* oColMap_MyGlob = 0;
106 oColMap.MyGlobalElementsPtr(oColMap_MyGlob);
110 int_type * origColGidList = 0;
111 oColMap.MyGlobalElementsPtr(origColGidList);
112 for(
int i = 0; i < oNumCols; ++i )
114 newColMapGidList[numNewCols++]= origColGidList[i];
115 newColMap_ =
Epetra_Map(-1, numNewCols, newColMapGidList.Values(), 0, oColMap.
Comm());
139 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 141 return transform<int>(orig);
145 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 147 return transform<long long>(orig);
151 throw "CrsMatrix_SubCopy::operator(): GlobalIndices type unknown";
bool SameAs(const Epetra_BlockMap &Map) const
EpetraExt::BlockCrsMatrix: A class for constructing a distributed block matrix.
int FillComplete(bool OptimizeDataStorage=true)
int PutScalar(double ScalarConstant)
int Export(const Epetra_SrcDistObject &A, const Epetra_Import &Importer, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0)
bool rvs()
Reverse transfer of data from new object created in the operator() method call to the orig object inp...
bool GlobalIndicesInt() const
int NumMyElements() const
const Epetra_Comm & Comm() const
int RemoteIDList(int NumIDs, const int *GIDList, int *PIDList, int *LIDList) const
bool fwd()
Forward transfer of data from orig object input in the operator() method call to the new object creat...
~CrsMatrix_SubCopy()
Destructor.
NewTypeRef operator()(OriginalTypeRef orig)
Transformation Operator.
bool GlobalIndicesLongLong() const
int Import(const Epetra_SrcDistObject &A, const Epetra_Import &Importer, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0)