Hello,
if I create an application ordering using AOCreateBasic, should I
provide the same array for const PetscInt myapp[] and const PetscInt
mypetsc[] in order to get the same ordering of the application within PETSC?
And once I define the ordering so that the local vector and matrix are
defined in PETSC as in my application, how can I use it to create the
actual vector and matrix?
Thanks in advance for the help.
Cheers,
Enrico
On 18/10/2023 13:39, Matthew Knepley wrote:
On Wed, Oct 18, 2023 at 5:55 AM Enrico <[email protected]
<mailto:[email protected]>> wrote:
Hello,
I'm trying to use Petsc to solve a linear system in an application. I'm
using the coordinate format to define the matrix and the vector (it
should work better on GPU but at the moment every test is on CPU).
After
the call to VecSetValuesCOO, I've noticed that the vector is storing
the
data in a different way from my application. For example with two
processes in the application
process 0 owns cells 2, 3, 4
process 1 owns cells 0, 1, 5
But in the vector data structure of Petsc
process 0 owns cells 0, 1, 2
process 1 owns cells 3, 4, 5
This is in principle not a big issue, but after solving the linear
system I get the solution vector x and I want to get the values in the
correct processes. Is there a way to get vector values from other
processes or to get a mapping so that I can do it myself?
By definition, PETSc vectors and matrices own contiguous row blocks. If
you want to have another,
global ordering, we support that with
https://petsc.org/main/manualpages/AO/
<https://petsc.org/main/manualpages/AO/>
Thanks,
Matt
Cheers,
Enrico Degregori
--
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which
their experiments lead.
-- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>