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/>

Reply via email to