<div dir="ltr">Thanks Matt , Thanks Barry. I'll get back to you.<div><br></div><div>Thanks,</div><div>Praveen</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 6, 2016 at 7:48 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
> On May 6, 2016, at 5:08 AM, praveen kumar <<a href="mailto:praveenpetsc@gmail.com">praveenpetsc@gmail.com</a>> wrote:<br>
><br>
> Hi,<br>
><br>
> I am trying to implement Petsc for DD in a serial fortran FVM code.  I want to use solver from serial code itself. Solver consists of gauss seidel + TDMA. BCs are given along with the solver at boundary virtual nodes. For Ex: CALL TDMA(0,nx+1), where BCs are given at 0 and nx+1 which are virtual nodes (which don't take part in computation). I partitioned the domain using DMDACreate and got the ghost nodes information using DMDAGetcorners. But how to create the virtual nodes at the processes boundary where BCs are to be given. Please suggest all the possibilities to fix this other than using PETSc for solver parallelization.<br>
<br>
</span>   DMCreateGlobalVector(dm,gvector,ierr);<br>
   DMCreateLocalVector(dm,lvector,ierr);<br>
<br>
    /* full up gvector with initial guess or whatever */<br>
<br>
   DMGlobalToLocalBegin(dm,gvector,INSERT_VALUES,lvector,ierr)<br>
  DMGlobalToLocalEnd(dm,gvector,INSERT_VALUES,lvector,ierr)<br>
<br>
    Now the vector lvector has the ghost values you can use<br>
<br>
    DMDAVecGetArrayF90(dm,lvector,fortran_array_pointer_of_correct dimension for your problem (1,2,3d))<br>
<br>
    Note that the indexing into the fortran_array_pointer uses the global indexing, not the local indexing. You can use DMDAGetCorners() to get the start and end indices for each process.<br>
<br>
   Barry<br>
<br>
<br>
<br>
><br>
> Thanks,<br>
> Praveen<br>
><br>
<br>
</blockquote></div><br></div>