[petsc-users] setting a vector with VecSetValue versus VecSetValues
Barry Smith
bsmith at petsc.dev
Thu Jan 5 22:21:36 CST 2023
Note there is also VecSetValuesLocal() that takes ghosted local indices (ghosted local indices are different from your meaning of "local indices"). See https://petsc.org/release/docs/manualpages/Vec/VecSetValuesLocal/ https://petsc.org/release/docs/manualpages/Vec/VecSetLocalToGlobalMapping/
Barry
> On Jan 5, 2023, at 12:41 PM, Alfredo Jaramillo <ajaramillopalma at gmail.com> wrote:
>
> omg... for some reason I was thinking it takes local indices. Yes.. modifying that line the code works well.
>
> thank you!
> Alfredo
>
> On Thu, Jan 5, 2023 at 10:38 AM Junchao Zhang <junchao.zhang at gmail.com <mailto:junchao.zhang at gmail.com>> wrote:
>> VecSetValue() also needs global indices, so you need PetscInt gl_row = (PetscInt)(i)+rstart;
>>
>> --Junchao Zhang
>>
>>
>> On Thu, Jan 5, 2023 at 11:25 AM Alfredo Jaramillo <ajaramillopalma at gmail.com <mailto:ajaramillopalma at gmail.com>> wrote:
>>> dear PETSc developers,
>>>
>>> I have a code where I copy an array to a distributed petsc vector with the next lines:
>>>
>>> 1 for (int i = 0; i < ndof_local; i++) {
>>> 2 PetscInt gl_row = (PetscInt)(i)+rstart;
>>> 3 PetscScalar val = (PetscScalar)u[i];
>>> 4 VecSetValues(x,1,&gl_row,&val,INSERT_VALUES);
>>> 5 }
>>>
>>> // for (int i = 0; i < ndof_local; i++) {
>>> // PetscInt gl_row = (PetscInt)(i);
>>> // PetscScalar val = (PetscScalar)u[i];
>>> // VecSetValue(x,gl_row,val,INSERT_VALUES);
>>> // }
>>>
>>> VecAssemblyBegin(x);
>>> VecAssemblyEnd(x);
>>>
>>> This works as expected. If, instead of using lines 1-5, I use the lines where VecSetValue is used with local indices, then the vector is null on all the processes but rank 0, and the piece of information at rank zero is incorrect.
>>>
>>> What could I be doing wrong?
>>>
>>> bests regards
>>> Alfredo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230105/b696d054/attachment.html>
More information about the petsc-users
mailing list