[Trilinos-Users] Epetra Vectors/Maps

Littlewood, David John djlittl at sandia.gov
Fri Jan 29 17:15:36 MST 2010


I was also confused when I read this documentation.  I'm only slightly less confused now.

The way I understand it is that numGlobalElements is equal to sum(numMyElements), even in cases where there are shared IDs.  I'm guessing that the argument numGlobalElements can be provided by the user to avoid the vector having to compute numGlobalElements itself (requiring parallel communication).

Trilinos experts please correct me if I'm wrong here, but I believe the assembly operation you're talking about requires two vectors, for example vector A of length(owned+shared) and vector B of length(owned).  If you have local data for owned and shared nodes in vector A, and you want to do an assemble add, you could do an export add from vector A to vector B, and then to an import insert from vector B to vector A.  Then your local copies of A would be updated with the summed values.


On 1/29/10 4:55 PM, "John Mitchell" <jamitch at sandia.gov> wrote:

Thanks Alan and Mike.

The reason I was asking is because the documentation says:

    \param In
            NumGlobalElements - Number of elements to distribute.  Must be
     either -1 or equal to the computed sum of NumMyElements across all
     processors in the Epetra_Comm communicator.

This documentation must not be correct or I'm reading it the wrong way?


Williams, Alan B wrote:
> Hi John,
> Yes you can have vectors/maps that overlap in the way that you describe. We have finite-element codes that use epetra in exactly that way.
> Alan
>> -----Original Message-----
>> From: trilinos-users-bounces at software.sandia.gov [mailto:trilinos-
>> users-bounces at software.sandia.gov] On Behalf Of John Mitchell
>> Sent: Friday, January 29, 2010 4:38 PM
>> To: trilinos-users at software.sandia.gov
>> Subject: [Trilinos-Users] Epetra Vectors/Maps
>> I am new to the use of Epetra and have a couple basic questions that
>> don't appear to be directly addressed in the tutorial.
>> Is it possible to create an
>> Epetra_Map(numGlobalElements,numMyElements,myElements,0,comm)
>> where sum(numMyElements) over all processors != numGlobalElements?
>> What I have, is a list of ids that I own, and then a list of ids that I
>> share but don't own.  I need to do parallel calculations and assemblies
>> on a vector that is of length numOwned+numShared.  Assembly operations
>> for both owned and shared may require off-processor communications.  I
>> have a vector f = {f_owned, f_shared}; If a point that is owned on
>> processor is shared on another processor, then the assembly of f_owned
>> will require contributions f_shared from the sharing off processor
>> I was planning on using the above Epetra_Map as a target map for
>> creating an Epetra_Import -- does that make sense?
>> Thanks,
>> John
>> _______________________________________________
>> Trilinos-Users mailing list
>> Trilinos-Users at software.sandia.gov
>> http://software.sandia.gov/mailman/listinfo/trilinos-users

Trilinos-Users mailing list
Trilinos-Users at software.sandia.gov

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://software.sandia.gov/pipermail/trilinos-users/attachments/20100129/ae6069bf/attachment.html 

More information about the Trilinos-Users mailing list