That should work. But VecScatterCreateToZero() is more efficient. So if possible, better refactor your code in such a way.
--Junchao Zhang On Wed, Jun 30, 2021 at 7:13 AM Peder Jørgensgaard Olesen via petsc-users < [email protected]> wrote: > Dear Matt > > > Thank you for your reply. I'm guessing that the line > > if (rank) N = 0; > > should be changed to something like > > if (rank != target_rank) N = 0; > > such that an empty SEQVEC and scatter are created on each rank other than > target_rank. > > > Med venlig hilsen / Best regards > > Peder > ------------------------------ > *Fra:* Matthew Knepley <[email protected]> > *Sendt:* 30. juni 2021 13:58:49 > *Til:* Peder Jørgensgaard Olesen > *Cc:* [email protected] > *Emne:* Re: [petsc-users] Scatter parallel Vec to sequential Vec on > non-zeroth process > > On Wed, Jun 30, 2021 at 6:49 AM Peder Jørgensgaard Olesen via petsc-users < > [email protected]> wrote: > >> Hello >> >> >> I have a parallel vector, and I'd like to copy its data to a sequential >> vector located on a given process that is not necessarily the >> 0th process, so using VecScatterCreateToZero wouldn't do here. >> >> >> How might one approach this? >> > The function is very short: > https://www.mcs.anl.gov/petsc/petsc-current/src/vec/is/sf/interface/vscat.c.html#VecScatterCreateToZero > Just go in and replace '0' by the rank you want. > > Thanks, > > Matt > >> Med venlig hilsen / Best Regards >> >> >> Peder Jørgensgaard Olesen >> >> PhD Student, Turbulence Research Lab >> >> Dept. of Mechanical Engineering >> >> Technical University of Denmark >> >> Koppels Allé >> >> Bygning 403, Rum 105 >> >> DK-2800 Kgs. Lyngby >> > > > -- > 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/> >
