本文整理汇总了C++中teuchos::RefCountPtr::Importer方法的典型用法代码示例。如果您正苦于以下问题:C++ RefCountPtr::Importer方法的具体用法?C++ RefCountPtr::Importer怎么用?C++ RefCountPtr::Importer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类teuchos::RefCountPtr
的用法示例。
在下文中一共展示了RefCountPtr::Importer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ConstructOverlapGraph
//==============================================================================
int Ifpack_IlukGraph::ConstructOverlapGraph() {
OverlapGraph_ = Teuchos::rcp( (Epetra_CrsGraph *) &Graph_, false );
OverlapRowMap_ = Teuchos::rcp( (Epetra_BlockMap *) &Graph_.RowMap(), false );
if (LevelOverlap_==0 || !Graph_.DomainMap().DistributedGlobal()) return(0); // Nothing to do
Teuchos::RefCountPtr<Epetra_CrsGraph> OldGraph;
Teuchos::RefCountPtr<Epetra_BlockMap> OldRowMap;
Epetra_BlockMap * DomainMap_tmp = (Epetra_BlockMap *) &Graph_.DomainMap();
Epetra_BlockMap * RangeMap_tmp = (Epetra_BlockMap *) &Graph_.RangeMap();
for (int level=1; level <= LevelOverlap_; level++) {
OldGraph = OverlapGraph_;
OldRowMap = OverlapRowMap_;
OverlapImporter_ = Teuchos::rcp( (Epetra_Import *) OldGraph->Importer(), false );
OverlapRowMap_ = Teuchos::rcp( new Epetra_BlockMap(OverlapImporter_->TargetMap()) );
if (level<LevelOverlap_)
OverlapGraph_ = Teuchos::rcp( new Epetra_CrsGraph(Copy, *OverlapRowMap_, 0) );
else
// On last iteration, we want to filter out all columns except those that correspond
// to rows in the graph. This assures that our matrix is square
OverlapGraph_ = Teuchos::rcp( new Epetra_CrsGraph(Copy, *OverlapRowMap_, *OverlapRowMap_, 0) );
EPETRA_CHK_ERR(OverlapGraph_->Import( Graph_, *OverlapImporter_, Insert));
if (level<LevelOverlap_) {
EPETRA_CHK_ERR(OverlapGraph_->FillComplete(*DomainMap_tmp, *RangeMap_tmp));
}
else {
// Copy last OverlapImporter because we will use it later
OverlapImporter_ = Teuchos::rcp( new Epetra_Import(*OverlapRowMap_, *DomainMap_tmp) );
EPETRA_CHK_ERR(OverlapGraph_->FillComplete(*DomainMap_tmp, *RangeMap_tmp));
}
}
NumMyBlockRows_ = OverlapGraph_->NumMyBlockRows();
NumMyBlockCols_ = OverlapGraph_->NumMyBlockCols();
NumMyRows_ = OverlapGraph_->NumMyRows();
NumMyCols_ = OverlapGraph_->NumMyCols();
return(0);
}