[Trilinos-Users] Epetra_Vector with overlap
John Mitchell
jamitch at sandia.gov
Wed Jul 7 13:47:06 MDT 2010
Markus,
Perhaps the code below does what your looking for -- maybe not exactly
as you envisioned but it would have the same net effect. Note that
"colMapNDF" is the "overlap" map.
John
const Epetra_BlockMap ownedMapScalar,ownedMapNDF;
const Epetra_BlockMap overlapMapScalar,overlapMapNDF, colMapNDF;
Epetra_Import importScalar,importNDF;
Epetra_Import importNDF(colMapNDF,op->ownedMapNDF);
Epetra_Vector xOverlap(View,colMapNDF,xOverlapField.getArray().get());
Epetra_Vector xOwned(View,op->ownedMapNDF,op->xOwnedPtr.get());
xOverlap.Import(xOwned,importNDF,Insert);
Markus Berndt wrote:
> Is it possible to set up communication schedules for an Epetra_Vector
> with overlap that can be used to simply update the overlap region in
> place? The documentation for Epetra_Export and Epetra_Import indicates
> that one of the maps that these use to initialize communication patterns
> must have GIDs that are unique. I interpret that as one of the vectors
> in an Import or Export call must have no overlap at all.
>
>
> To illustrate, here is an example:
>
> x_ovl is an Epetra_Vector with overlap such that
> on PE0 it owns GIDs 0 1 2 3 4 and has a copy of 5 and
> on PE1 it owns GIDs 5 6 7 8 9 and has a copy of 4.
>
> How do I set up a communication pattern that
>
> - sends x_ovl(5) from PE1 to PE0 and
> - sends x_ovl(4) from PE0 to PE1
>
> without an intermediate vector that has only the local data and no
> overlap at all.
>
> If this is not possible, what would you consider a best practices
> approach to working with vectors that have overlap that avoids
> unnecessary copy operations between equivalent vectors with and without
> overlap?
>
> Thanks
>
> - Markus
>
>
More information about the Trilinos-Users
mailing list