[petsc-users] VecCopy on ghosted vectors
Barry Smith
bsmith at mcs.anl.gov
Sun Apr 22 11:03:03 CDT 2012
Dominik,
If you want to copy the ghost point values, which DO NO exist in the x1 and x2 vectors, you need to use VecCopy(xlocal1,xlocal2) where xlocal1 and xlocal2 are obtained with VecGetLocalForm() on x1 and x2.
The rational is that x1 and x2 are just regular parallel vectors, copying their entries is just copying their entries, not the "extra" slots that are ONLY available via the local form.
You are mis-thinking about how "ghosted" vectors work.
Barry
On Apr 22, 2012, at 10:35 AM, Dominik Szczerba wrote:
> I do
>
> VecGhostUpdateBegin(x1, INSERT_VALUES, SCATTER_FORWARD);
> VecGhostUpdateEnd(x1, INSERT_VALUES, SCATTER_FORWARD);
>
> then
>
> VecCopy(x1,x2)
>
> to find that x2 does not have correct ghost values and I need to explicitly call
>
> VecGhostUpdateBegin(x2, INSERT_VALUES, SCATTER_FORWARD);
> VecGhostUpdateEnd(x2, INSERT_VALUES, SCATTER_FORWARD);
>
> Is there a rationale for this behavior? I would suggest to add a note
> to the VecCopy man page about it.
>
> Thanks
> Dominik
More information about the petsc-users
mailing list