44 #include <Epetra_Import.h> 45 #include <Epetra_CrsGraph.h> 46 #include <Epetra_Map.h> 55 if( OverlapMap_ )
delete OverlapMap_;
65 if( orig.DomainMap().DistributedGlobal() && levelOverlap_ )
67 Epetra_CrsGraph * OverlapGraph =
new Epetra_CrsGraph( orig );
68 OverlapMap_ =
new Epetra_BlockMap( orig.RowMap() );
70 Epetra_BlockMap * DomainMap = &(
const_cast<Epetra_BlockMap&
>(orig.DomainMap()));
71 Epetra_BlockMap * RangeMap = &(
const_cast<Epetra_BlockMap&
>(orig.RangeMap()));
73 for(
int level = 0; level < levelOverlap_; ++level )
75 Epetra_BlockMap * OldRowMap = OverlapMap_;
76 Epetra_CrsGraph * OldGraph = OverlapGraph;
78 Epetra_Import & OverlapImporter = *(
const_cast<Epetra_Import *
>( OldGraph->Importer() ));
79 OverlapMap_ =
new Epetra_BlockMap( OverlapImporter.TargetMap() );
82 if( squareLocalBlock_ && level==(levelOverlap_-1) )
83 OverlapGraph =
new Epetra_CrsGraph( Copy, *OverlapMap_, *OverlapMap_, 0 );
85 OverlapGraph =
new Epetra_CrsGraph( Copy, *OverlapMap_, 0 );
87 OverlapGraph->Import( *OldGraph, OverlapImporter, Insert );
88 OverlapGraph->FillComplete( *DomainMap, *RangeMap );
97 newObj_ =
new Epetra_CrsGraph( orig );
EpetraExt::BlockCrsMatrix: A class for constructing a distributed block matrix.
~CrsGraph_Overlap()
Destructor.
NewTypeRef operator()(OriginalTypeRef orig)
Constructs "overlapped" Epetra_CrsGraph from original.