<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, Nov 30, 2018 at 9:50 AM RAELI ALICE via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Hi All,<br>My team is working on a PETSC version of an existent code.<br>In order to convert the main part of this work retaining the c++ levels of abstraction,<br><div>we would access to c++ vector data structures easily.</div><div><br></div><div>We would like to use the memory area allocated using c++ as a Petsc Vector<br></div><div><br></div><div>a supposed pseudocode could be:</div><div><i><br></i></div><i>int data[] = { 1,2,3,4,5,6,7,8,9 };<br>unsigned int sizeVectorPetsC = data.size();<br><b>Vec v(data, sizeVectorPetsC); (Can it exists with easy access petsc routines?)</b><br></i><div><i>cout<< "The mapped vector v is: [";</i></div><div><i>    PetscScalar *vecArray;<br></i></div><i>PetscGetArray(v, &array);<br>for (unsigned int i = 0; i < sizeVectorPetsC; i++)<br>{<br><u><b>Informations of v are the informations of data.(same memory read by both data structures)</b></u><br>}<br>PetscRestoreArray(v,&array);<br></i><div><i>
 cout<< "]"<< endl;</i></div><div><i><br></i></div><div><i><br></i></div><div>Is it provided this kind of duality between c++ and Petsc objects without a re-copy of the concerned informations?</div></div></blockquote><div><br></div><div>Yes, I think you want</div><div><br></div><div>  <a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecCreateSeqWithArray.html">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecCreateSeqWithArray.html</a></div><div>  <a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecCreateMPIWithArray.html#VecCreateMPIWithArray">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecCreateMPIWithArray.html#VecCreateMPIWithArray</a></div><div><br></div><div>and you can even do advanced things with the storage</div><div><br></div><div>  <a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecPlaceArray.html#VecPlaceArray">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecPlaceArray.html#VecPlaceArray</a></div><div><br></div><div>but you need to be more careful.</div><div><br></div><div>Let me know if this does not do what you wanted.</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><div>Thank you,</div><div>Alice <br><i></i></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><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.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div></div></div></div>