<div dir="ltr"><div dir="ltr">On Mon, Nov 7, 2022 at 10:51 AM Blaise Bourdin <<a href="mailto:bourdin@mcmaster.ca">bourdin@mcmaster.ca</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
How are degree of freedom ordered in calls to DMPlexVec[Set/Get/Restore]Closure?<br>
Given a FE mesh and a section for P2-Lagrange elements (i.e. 1 dof per vertex and edge), I was naively assuming that the “local” vector would contain dof at vertices then edges (in this order), since it matches the section ordering, but it looks like I get edges then vertices…<br>
<br>
Here is my section (my mesh has 8 cells, 16 edges, and 9 vertices)<br>
PetscSection Object: U 1 MPI process<br>
  type not yet set<br>
1 fields<br>
  field 0 with 1 components<br>
Process 0:<br>
  (   0) dim  0 offset   0<br>
  (   1) dim  0 offset   0<br>
  (   2) dim  0 offset   0<br>
  (   3) dim  0 offset   0<br>
  (   4) dim  0 offset   0<br>
  (   5) dim  0 offset   0<br>
  (   6) dim  0 offset   0<br>
  (   7) dim  0 offset   0<br>
  (   8) dim  1 offset   0<br>
  (   9) dim  1 offset   1<br>
  (  10) dim  1 offset   2<br>
  (  11) dim  1 offset   3<br>
  (  12) dim  1 offset   4<br>
  (  13) dim  1 offset   5<br>
  (  14) dim  1 offset   6<br>
  (  15) dim  1 offset   7<br>
  (  16) dim  1 offset   8<br>
  (  17) dim  1 offset   9<br>
  (  18) dim  1 offset  10<br>
  (  19) dim  1 offset  11<br>
  (  20) dim  1 offset  12<br>
  (  21) dim  1 offset  13<br>
  (  22) dim  1 offset  14<br>
  (  23) dim  1 offset  15<br>
  (  24) dim  1 offset  16<br>
  (  25) dim  1 offset  17<br>
  (  26) dim  1 offset  18<br>
  (  27) dim  1 offset  19<br>
  (  28) dim  1 offset  20<br>
  (  29) dim  1 offset  21<br>
  (  30) dim  1 offset  22<br>
  (  31) dim  1 offset  23<br>
  (  32) dim  1 offset  24<br>
<br>
Start from the following local vector:<br>
Vec Object: U 1 MPI process<br>
  type: seq<br>
1.<br>
2.<br>
3.<br>
4.<br>
5.<br>
6.<br>
7.<br>
8.<br>
9.<br>
10.<br>
11.<br>
12.<br>
13.<br>
14.<br>
15.<br>
16.<br>
17.<br>
18.<br>
19.<br>
20.<br>
21.<br>
22.<br>
23.<br>
24.<br>
25.<br>
<br>
Call PetscCallA(DMPlexVecGetClosure(dmU,sectionU,U,0_Ki,UArray,ierr)) and get the following for Array:<br>
10.000000000000000        11.000000000000000        12.000000000000000        1.0000000000000000        2.0000000000000000        3.0000000000000000<br>
<br>
Is this ordering predictable and documented somewhere? Is it ordered by stratum?<br></blockquote><div><br></div><div>The ordering is determined. It follows the same order that DMPlexGetTransitiveClosure() gives for the points.</div><div><br></div><div>Transitive closure orders points by stratum. It is a BFS of the Hasse Diagram, starting from the initial point. For</div><div>your triangle, it would be </div><div><br></div><div>  tri0, e0, e1, e2, v0, v1, v2</div><div><br></div><div>For each cell type, the order of faces is specified in Table 1.2 of the attached. This gives an order to each level</div><div>of the BFS.</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">
Regards,<br>
Blaise<br>
<br>
— <br>
Canada Research Chair in Mathematical and Computational Aspects of Solid Mechanics (Tier 1)<br>
Professor, Department of Mathematics & Statistics<br>
Hamilton Hall room 409A, McMaster University<br>
1280 Main Street West, Hamilton, Ontario L8S 4K1, Canada <br>
<a href="https://www.math.mcmaster.ca/bourdin" rel="noreferrer" target="_blank">https://www.math.mcmaster.ca/bourdin</a> | +1 (905) 525 9140 ext. 27243<br>
<br>
</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>