From: Rahul S. <rah...@gm...> - 2009-11-30 23:04:13
|
Hi: Could someone please tell me how to access the ghost values (i.e. dof values shared between processors) from a NumericVector sharing the same parallel layout as the system.rhs vector. Thanks. Rahul |
From: Roy S. <roy...@ic...> - 2009-12-02 19:54:54
|
On Mon, 30 Nov 2009, Rahul Sampath wrote: > Could someone please tell me how to access the ghost values (i.e. dof > values shared between processors) from a NumericVector sharing the > same parallel layout as the system.rhs vector. I'm afraid the default type for those vectors, PARALLEL, doesn't have any local storage for ghost values. You'll either need to use a SERIAL or GHOSTED type vector instead, or localize your vector into one of those types. Hmm... I just noticed that everything we create with System::add_vector() gets created with PARALLEL type. That's exactly what I want in my applications, but I see now that it might be suboptimal for other people. You can reinitialize one of those vectors as SERIAL or GHOSTED and the new type will be preserved through projections, but should we add an optional argument for people to add non-PARALLEL vectors in the first place? --- Roy |
From: Rahul S. <rah...@gm...> - 2009-12-03 00:35:13
|
Hi Roy: Thanks for the response. I too use the PARALLEL type for the most part. However, I also need access to the ghosts and I'm afraid I'm interested in more than just a localize to a GHOSTED vector. I guess I'm trying to understand the parallel data layout. I looked at how the system.rhs and system.solution vectors were created. It looks like they are created using Petsc's VecCreateMPI function. So, can I assume that the following holds: 1. Each processor owns a consecutive set of global dofs. 2. The first dof owned by any processor is equal to 1 more than the last dof owned by the previous processor. Thanks. Regards, Rahul On Wed, Dec 2, 2009 at 2:54 PM, Roy Stogner <roy...@ic...> wrote: > > On Mon, 30 Nov 2009, Rahul Sampath wrote: > >> Could someone please tell me how to access the ghost values (i.e. dof >> values shared between processors) from a NumericVector sharing the >> same parallel layout as the system.rhs vector. > > I'm afraid the default type for those vectors, PARALLEL, doesn't have > any local storage for ghost values. You'll either need to use a > SERIAL or GHOSTED type vector instead, or localize your vector into > one of those types. > > Hmm... I just noticed that everything we create with > System::add_vector() gets created with PARALLEL type. That's exactly > what I want in my applications, but I see now that it might be > suboptimal for other people. You can reinitialize one of those > vectors as SERIAL or GHOSTED and the new type will be preserved > through projections, but should we add an optional argument for people > to add non-PARALLEL vectors in the first place? > --- > Roy > |
From: Roy S. <roy...@ic...> - 2009-12-03 03:11:53
|
On Wed, 2 Dec 2009, Rahul Sampath wrote: > Thanks for the response. I too use the PARALLEL type for the most > part. However, I also need access to the ghosts and I'm afraid I'm > interested in more than just a localize to a GHOSTED vector. Rather than localize a primary PARALLEL vector to a local GHOSTED version, would it be sufficient to make your primary vector GHOSTED in the first place? Even in the library, we do the solution->current_local_solution localizations just for compatibility reasons at this point: the GHOSTED vector interface support with PETSc is pretty recent, and with Trilinos/Epetra it's nonexistent. > I guess I'm trying to understand the parallel data layout. I looked > at how the system.rhs and system.solution vectors were created. It > looks like they are created using Petsc's VecCreateMPI function. So, > can I assume that the following holds: > > 1. Each processor owns a consecutive set of global dofs. > 2. The first dof owned by any processor is equal to 1 more than the > last dof owned by the previous processor. Yes, and yes. --- Roy |