<div dir="ltr"><span style="font-size:12.8px">Thanks for your quick response. (Sorry, Matt, I didn't reply to all for the first time.)</span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">When I add another field, I got the following (<span style="color:rgb(80,0,80);font-size:12.8px"> Now, </span><span style="color:rgb(80,0,80);font-size:12.8px">MatGetOwnershipRange gives [0 6] for rank 0 and [6 18] for rank 1 )</span></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">It seems that the global index for the second field is also starting from zero,, instead of starting from N_{first field} (9 for this case).  But, in the second column, the local index is accumulating. Is it reasonable or did I make some mistakes when defining the dofs to setup the section?</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I also have confusions when I play with <wbr>ISLocalToGlobalMappingGetInfo(<wbr>ltog, nproc_nbr,procs_nbr, numprocs, indices_nbr, ierr). What does <b>numprocs</b> mean here? I'm assuming the ith of its elements is  the number of indices that have "ghost" copies at processor proc_nbr(i). But for this example, my test  code gives numprocs of (\48, 24 \) on rank 0, which is larger than the total dofs number in my problem, which is only 18.  <wbr>ISLocalToGlobalMpngGetInfoSize<wbr>(ltog, nproc_nbr, numprocmax, ierr) gives nproc_nbr=2 and numprocmax=48 on both processors.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I attach the code and input file, both of which were found in this mail list.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">ISLocalToGlobalMapping results: <br></div><div style="font-size:12.8px"><span class="gmail-im"><div>ISLocalToGlobalMapping Object: 2 MPI processes</div><div>  type: basic</div><div>[0] 0 0</div></span><div>[0] 1 0</div><div>[0] 2 1</div><div>[0] 3 1</div><div>[0] 4 5</div><div>[0] 5 5</div><div>[0] 6 2</div><div>[0] 7 2</div><div>[0] 8 6</div><div>[0] 9 6</div><div>[0] 10 8</div><div>[0] 11 8</div><div>[1] 0 3</div><div>[1] 1 3</div><div>[1] 2 4</div><div>[1] 3 4</div><div>[1] 4 5</div><div>[1] 5 5</div><div>[1] 6 6</div><div>[1] 7 6</div><div>[1] 8 7</div><div>[1] 9 7</div><div>[1] 10 8</div><div>[1] 11 8</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jun 4, 2017 at 8:15 PM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Sun, Jun 4, 2017 at 7:08 PM, Wang <span dir="ltr"><<a href="mailto:quanwang.us@gmail.com" target="_blank">quanwang.us@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello. I have some confusions about the results given by ISLocalToGlobalMappingView.<wbr> <div><br></div><div>After reading a simple mesh and associate each vertex with a scalar dof, the test code uses DMPlexDistribute to get a distributed dm. Then I use the following calls </div><div><br></div><div><div> call DMGetLocalToGlobalMapping(dm,l<wbr>tog,ierr)</div></div><div><div> call ISLocalToGlobalMappingView(lto<wbr>g, PETSC_VIEWER_STDOUT_WORLD, ierr);</div></div><div><br></div><div>and get following results for l2g. (MatGetOwnershipRange gives [0 3] for rank 0 and [3 9] for rank 1)</div><div><br></div><div><div>ISLocalToGlobalMapping Object: 2 MPI processes</div><div>  type: basic</div><div>[0] 0 0</div><div>[0] 1 1</div><div>[0] 2 5</div><div>[0] 3 2</div><div>[0] 4 6</div><div>[0] 5 8</div><div>[1] 0 3</div><div>[1] 1 4</div><div>[1] 2 5</div><div>[1] 3 6</div><div>[1] 4 7</div><div>[1] 5 8</div></div><div><br></div><div><br></div><div>The question is why, on rank 0,  the global indices (I assume the third column) are not grouped into local chunks and ghost chunks. I understand how to do local to global mapping without any concern of the actual ordering, but I have some impression that in PETSC the ghost information is always coming later in the local vector. </div></div></blockquote><div><br></div></span><div>Nope. That is only guaranteed when using VecGhost.</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div> In this case, on rank 0, global index 5 should appear later than 0,1,2, because it is ghost vertex for rank 0. <br></div><div><br></div><div>I'm not trying to use this for FEM, but instead using the mesh management in dmplex for other tasks. So I need to know more details.</div></div></blockquote><div><br></div></span><div>We base the dof ordering on the mesh ordering. If you ordered the shared parts of the mesh last, this would produce the ordering you expect.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Thank you.</div><div><br></div><div>QW</div></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div class="m_3834779853123018764gmail_signature" data-smartmail="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/~<wbr>mk51/</a><br></div></div></div>
</font></span></div></div>
</blockquote></div><br></div>