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";
171 if (!
newObj_->Filled())
return(
false);
bool GlobalIndicesLongLong() const
bool SameAs(const Epetra_BlockMap &Map) const
bool GlobalIndicesInt() const
int NumMyElements() const
bool rvs()
Reverse transfer of data from new object created in the operator() method call to the orig object inp...
const Epetra_Comm & Comm() 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.
int RemoteIDList(int NumIDs, const int *GIDList, int *PIDList, int *LIDList) const