[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