<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jun 5, 2017 at 11:20 AM, Francesco Migliorini <span dir="ltr"><<a href="mailto:francescomigliorini93@gmail.com" target="_blank">francescomigliorini93@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Dear Stefano, <div>Thank you for your answer. I tried to use VecScatterCreateToAll as you suggested but it does not work since the first processor can only view its part of the vector. </div></div></blockquote><div><br></div><div>Then there is a bug in your code. The example src/vec/vec/examples/tests/ex33.c tests this. Take a look at it.</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Here's how I managed the code:</div><div><br></div><div>Vec    fePS</div><div>VecScatter    Scatter</div><div>(...)</div><div><div>call VecScatterCreateToAll(feP,<wbr>Scatter,fePS,perr)</div><div>call VecScatterBegin(Scatter,feP,<wbr>fePS,INSERT_VALUES,SCATTER_<wbr>FORWARD,perr)</div><div>call VecScatterEnd(Scatter,feP,<wbr>fePS,INSERT_VALUES,SCATTER_<wbr>FORWARD,perr)</div><div>call VecScatterDestroy(Scatter,<wbr>perr)     </div><div>call VecDestroy(fePS,perr)</div></div><div><br></div><div>As I said, after this piece of code, if I print all the entries of feP from one processor, the values are correct if they belong to the part of the processor randon values. </div><div><br></div><div>Bests, </div><div>Francesco</div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-06-05 16:44 GMT+02:00 Stefano Zampini <span dir="ltr"><<a href="mailto:stefano.zampini@gmail.com" target="_blank">stefano.zampini@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Sorry, bad copy and paste<div dir="auto"><br></div><div dir="auto"><a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecScatterCreateToAll.html" target="_blank">http://www.mcs.anl.gov/petsc/p<wbr>etsc-current/docs/manualpages/<wbr>Vec/VecScatterCreateToAll.html</a><br></div></div><div class="gmail-m_-1710750799965011157HOEnZb"><div class="gmail-m_-1710750799965011157h5"><div class="gmail_extra"><br><div class="gmail_quote">Il 05 Giu 2017 4:43 PM, "Stefano Zampini" <<a href="mailto:stefano.zampini@gmail.com" target="_blank">stefano.zampini@gmail.com</a>> ha scritto:<br type="attribution"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">petsc-current/docs/manualpages<wbr>/Vec/VecScatterCreateToAll.htm<wbr>l</div><div class="gmail_extra"><br><div class="gmail_quote">Il 05 Giu 2017 4:12 PM, "Francesco Migliorini" <<a href="mailto:francescomigliorini93@gmail.com" target="_blank">francescomigliorini93@gmail.c<wbr>om</a>> ha scritto:<br type="attribution"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hello there!<div><br></div><div>I am working with an MPI code in which I should create a petsc vector such that all the processes can access to all its entries. So, I tried with VecCreateShared but it does not work with my machine. Then I tried VecCreateMPI but it seems to me that it does not change anything from the usual VecCreate. Finally I found the scatter commands but the examples are a bit tricky. So, are there any other way? If no, could someone please show me how to use scatter in this simple code?</div><div><br></div><div>Vec  feP    !The vector to be shared with all the processes</div><div>(...)</div><div>mpi_np = 2    !The number of processes</div><div><div>ind(1) = 10   !The global dimension of the vector</div><div>call VecCreate(PETSC_COMM_WORLD,feP<wbr>,perr)</div><div>call VecSetSizes(feP,PETSC_DECIDE,i<wbr>nd,perr)</div><div>call VecSetFromOptions(feP,perr)</div></div><div>(...)    !Here feP is filled in</div><div><div>call VecAssemblyBegin(feP,perr)</div><div>call VecAssemblyEnd(feP,perr)</div></div><div><br></div><div>Many thanks,</div><div>Francesco</div></div>
</blockquote></div></div>
</blockquote></div></div>
</div></div></blockquote></div><br></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.caam.rice.edu/~mk51/" target="_blank">http://www.caam.rice.edu/~mk51/</a><br></div></div></div>
</div></div>