[Trilinos-Users] Question about inserting a row not owned by a processor.

Williams, Alan B william at sandia.gov
Tue Jun 15 12:32:42 MDT 2010


Scot,
It's possible that the class Epetra_FECrsMatrix can do what you need. It allows for inserting entries that are owned by another processor, and then communicates them to that processor during the globalAssemble() method.
Alan


> -----Original Message-----
> From: trilinos-users-bounces at software.sandia.gov [mailto:trilinos-
> users-bounces at software.sandia.gov] On Behalf Of M. Scot Breitenfeld
> Sent: Tuesday, June 15, 2010 10:52 AM
> To: trilinos-users at software.sandia.gov
> Subject: [Trilinos-Users] Question about inserting a row not owned by a
> processor.
> 
> Greetings,
> 
> I'll try to explain a simplified version of my situation the best that
> I
> can. Lets say I have a line discretized as follows:
> 
>        Proc 0            |    Proc 1
>       o------o------o---|---o-----o-----o
>       1       2      3          4     5      6  (global number)
> 
> where o are nodes (there are no elements for this method) and there is
> only 1 d.o.f at each node
> 
> For Processor 0 I register: as my global node list: 1, 2, 3, 4
>                                            as the row list: 1, 2, 3, 4
>                                            as my owned node list: 1, 2,
> 3
> 
>        Proc 0
>       o------o------o---|---o
>       1       2        3       4 (global number)
>         1         2          3         4   (rows in global list)
> 
> For Processor 1 I register: as my global node list: 4, 5, 6, 3
>                                            as the row list: 4, 5, 6, 3
>                                            as my owned node list: 4, 5,
> 6
> 
>       Proc 1
>       o---|---o------o------o
>       3        4       5       6 (global number)
>         3         4          5         6   (rows in global list)
> 
> Now up to this point it works fine in parallel. But for my method I
> have
> something like this:
> 
> row 1:  (T12-T21)*V2+(T13-T31)*V3+(T14-T41)*V4
> row 2:  (T21-T12)*V2+(T23-T32)*V3+(T24-T42)*V4
> row 3:  (T31-T13)*V2+(T34-T43)*V3
> row 4:  (T41-T14)*V2+(T45-T54)*V3+(T34-T43)*V4
> ....
> 
> T12, for example, means node 1 is influenced by node 2; meaning
> processor 0 will calculate T12, T13, T14 which is fine. But T14 also
> needs to be subtracted from row 4. The problem is row 4 (node 4) is not
> owned by processor 0, it's on processor 1. When I use
> InsertGlobalValues
> to insert the values in row 4 on processor 0 it will return an error.
> Do
> I have to write mpi code to pass the T14 matrix to processor one to
> insert into row 4, or is there a routine that I can use instead, or
> maybe I'm missing something.
> 
> Thanks,
> Scot
> 
> 
> 
> 
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> http://software.sandia.gov/mailman/listinfo/trilinos-users



More information about the Trilinos-Users mailing list