It's confusing, but this line makes high order simplices always read as discontinuous coordinate spaces. I would love if someone would revisit that, perhaps also using DMPlexSetIsoperiodicFaceSF(), which should simplify the code and avoid the confusing cell coordinates pattern. Sadly, I don't have time to dive in.
https://gitlab.com/petsc/petsc/-/commit/066ea43f7f75752f012be6cd06b6107ebe84cc6d#3616cad8148970af5b97293c49492ff893e25b59_1552_1724 "Daniel R. Shapero" <shap...@uw.edu> writes: > Sorry either your mail system or mine prevented me from attaching the file, > so I put it on pastebin: > https://pastebin.com/awFpc1Js > > On Wed, Jan 11, 2023 at 4:54 PM Matthew Knepley <knep...@gmail.com> wrote: > >> Can you send the .msh file? I still have not installed Gmsh :) >> >> Thanks, >> >> Matt >> >> On Wed, Jan 11, 2023 at 2:43 PM Daniel R. Shapero <shap...@uw.edu> wrote: >> >>> Hi all -- I'm trying to read in 2nd-order / piecewise quadratic meshes >>> that are generated by gmsh and I don't understand how the coordinates are >>> stored in the plex. I've been discussing this with Matt Knepley here >>> <https://urldefense.com/v3/__https://github.com/firedrakeproject/firedrake/issues/982__;!!K-Hz7m0Vt54!hL9WLR51ieyHFZx8N9AjhDwJCRpvmQto9CL1XOTkkAxFfUbtsabHuBDOATnWyP6lQszhA2gOStva7A$> >>> as it pertains to Firedrake but I think this is more an issue at the PETSc >>> level. >>> >>> This code >>> <https://urldefense.com/v3/__https://gist.github.com/danshapero/a140daaf951ba58c48285ec29f5973cc__;!!K-Hz7m0Vt54!hL9WLR51ieyHFZx8N9AjhDwJCRpvmQto9CL1XOTkkAxFfUbtsabHuBDOATnWyP6lQszhA2hho2eD1g$> >>> uses gmsh to generate a 2nd-order mesh of the unit disk, read it into a >>> DMPlex, print out the number of cells in each depth stratum, and finally >>> print a view of the coordinate DM's section. The resulting mesh has 64 >>> triangles, 104 edges, and 41 vertices. For 2nd-order meshes, I'd expected >>> there to be 2 degrees of freedom at each node and 2 at each edge. The >>> output is: >>> >>> ``` >>> Depth strata: [(64, 105), (105, 209), (0, 64)] >>> >>> PetscSection Object: 1 MPI process >>> type not yet set >>> 1 fields >>> field 0 with 2 components >>> Process 0: >>> ( 0) dim 12 offset 0 >>> ( 1) dim 12 offset 12 >>> ( 2) dim 12 offset 24 >>> ... >>> ( 62) dim 12 offset 744 >>> ( 63) dim 12 offset 756 >>> ( 64) dim 0 offset 768 >>> ( 65) dim 0 offset 768 >>> ... >>> ( 207) dim 0 offset 768 >>> ( 208) dim 0 offset 768 >>> PetscSectionSym Object: 1 MPI process >>> type: label >>> Label 'depth' >>> Symmetry for stratum value 0 (0 dofs per point): no symmetries >>> Symmetry for stratum value 1 (0 dofs per point): no symmetries >>> Symmetry for stratum value 2 (12 dofs per point): >>> Orientation range: [-3, 3) >>> Symmetry for stratum value -1 (0 dofs per point): no symmetries >>> ``` >>> >>> The output suggests that there are 12 degrees of freedom in each >>> triangle. That would mean the coordinate field is discontinuous across cell >>> boundaries. Can someone explain what's going on? I tried reading the .msh >>> file but it's totally inscrutable to me. I'm happy to RTFSC if someone >>> points me in the right direction. Matt tells me that the coordinate field >>> should only be discontinuous if the mesh is periodic, but this mesh >>> shouldn't be periodic. >>> >> >> >> -- >> What most experimenters take for granted before they begin their >> experiments is infinitely more interesting than any results to which their >> experiments lead. >> -- Norbert Wiener >> >> https://www.cse.buffalo.edu/~knepley/ >> <https://urldefense.com/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!K-Hz7m0Vt54!hL9WLR51ieyHFZx8N9AjhDwJCRpvmQto9CL1XOTkkAxFfUbtsabHuBDOATnWyP6lQszhA2go23tjRg$> >>