<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div>Hi Matthew and Stefano,</div><div><br class=""></div><div>@Stefano, thank you for the explanation. DMPlexGetTransitiveClosure is exactly what I needed.</div><div><br class=""></div><div>@Matthew, t<font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">hank you for your advise on using DMPlexFilter, this is much better !</span></font></div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class=""><br class=""></span></font></div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">Regards,</span></font></div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">Fabien</span></font></div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class=""><br class=""></span></font><blockquote type="cite" class=""><div class="">Le 22 févr. 2021 à 14:36, Matthew Knepley <<a href="mailto:knepley@gmail.com" class="">knepley@gmail.com</a>> a écrit :</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div dir="ltr" class="">On Mon, Feb 22, 2021 at 6:28 AM Fabien Vergnet <<a href="mailto:fabien.vergnet@sorbonne-universite.fr" class="">fabien.vergnet@sorbonne-universite.fr</a>> wrote:<br class=""></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="overflow-wrap: break-word;" class="">Dear PETSc community,<div class=""><br class=""></div><div class="">Thank you for your amazing work. I discovered PETSc recently and I need your help for a project.</div><div class=""><br class=""></div><div class="">As a training, I would like to assemble the Finite Element Matrix for the Poisson problem on a part of my mesh. So, I create a DMPlex from a .msh file and I create a Submesh with</div><div class=""><br class=""></div><div class=""><div style="color: rgb(54, 54, 54); background-color: rgb(255, 255, 255); font-family: Menlo, Monaco, "Courier New", monospace; line-height: 18px; white-space: pre-wrap;" class=""><span style="color: rgb(99, 99, 36);" class="">DMPlexCreateSubmesh</span>(<span style="color: rgb(9, 89, 132);" class="">dm</span>, <span style="color: rgb(9, 89, 132);" class="">label</span>, <span style="color: rgb(73, 104, 57);" class="">1</span>, PETSC_TRUE, &sub<span style="color: rgb(9, 89, 132);" class="">dm</span>);</div></div></div></blockquote><div class=""><br class=""></div><div class="">I don't think you want this call. It is designed to pick out hypersurfaces. If you just want part of a mesh, DMPlexFilter is better.</div></div></div></div></blockquote><blockquote type="cite" class=""><div class=""><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div class="gmail_quote"><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="overflow-wrap: break-word;" class=""><div class=""><div class="">In order to assemble my Finite Element Matrix, I need to iterate over the cells of the mesh <span style="" class="">(which are triangles)</span> and identify the vertices composing each cell.</div></div><div class=""><br class=""></div><div class="">My question is the following : how can I get, for each cell, the vertices composing the cell ?</div><div class=""><br class=""></div><div class="">I have tried to uninterpolate the subdm with <span style="color: rgb(99, 99, 36); font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre-wrap; background-color: rgb(255, 255, 255);" class="">DMPlexUninterpolate</span> (with the objective to get the vertices from <span style="color: rgb(99, 99, 36); font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre-wrap; background-color: rgb(255, 255, 255);" class="">DMPlexGetCone</span>) but it does not seem to work for a Submesh since I get the following error:</div><div class=""><br class=""></div><div class="">----------</div><div class=""><br class=""></div><div class=""><div class="">[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------</div><div class="">[0]PETSC ERROR: Invalid argument</div><div class="">[0]PETSC ERROR: Not for partially interpolated meshes</div><div class="">[0]PETSC ERROR: See<span class="Apple-converted-space"> </span><a href="https://www.mcs.anl.gov/petsc/documentation/faq.html" target="_blank" class="">https://www.mcs.anl.gov/petsc/documentation/faq.html</a><span class="Apple-converted-space"> </span>for trouble shooting.</div><div class="">[0]PETSC ERROR: Petsc Release Version 3.14.4, Feb 03, 2021 </div><div class="">[0]PETSC ERROR: Configure options --prefix=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/petsc-3.14.4-xtae5tcwlzkb4oiifbayj77bqlz5nngk --with-ssl=0 --download-c2html=0 --download-sowing=0 --download-hwloc=0 CFLAGS= FFLAGS= CXXFLAGS= --with-cc=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/openmpi-4.0.5-ygn7zymoy7crl7b4xsdkc4zmfojugmdy/bin/mpicc --with-cxx=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/openmpi-4.0.5-ygn7zymoy7crl7b4xsdkc4zmfojugmdy/bin/mpic++ --with-fc=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/openmpi-4.0.5-ygn7zymoy7crl7b4xsdkc4zmfojugmdy/bin/mpif90 --with-precision=double --with-scalar-type=real --with-shared-libraries=1 --with-debugging=0 --with-64-bit-indices=0 COPTFLAGS= FOPTFLAGS= CXXOPTFLAGS= --with-blaslapack-lib=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/openblas-0.3.13-6b3u6zc5j4hvauqh3ldcwnf7lm2o4vyl/lib/libopenblas.so --with-x=0 --with-clanguage=C --with-scalapack=0 --with-cuda=0 --with-metis=1 --with-metis-dir=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/metis-5.1.0-lm3k7dh2vslghqtqc6dvcpnc54bfpqq2 --with-hypre=1 --with-hypre-dir=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/hypre-2.20.0-4pyxhku65wb5lmh2fpflhmjmow2pbjg7 --with-parmetis=1 --with-parmetis-dir=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/parmetis-4.0.3-pfiam4ccxkyqpapejcdjtlyr6cyz7irc --with-mumps=0 --with-trilinos=0 --with-fftw=0 --with-valgrind=0 --with-gmp=0 --with-libpng=0 --with-giflib=0 --with-mpfr=0 --with-netcdf=0 --with-pnetcdf=0 --with-moab=0 --with-random123=0 --with-exodusii=0 --with-cgns=0 --with-memkind=0 --with-p4est=0 --with-saws=0 --with-yaml=0 --with-libjpeg=0 --with-cxx-dialect=C++11 --with-superlu_dist-include=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/superlu-dist-6.4.0-bagymefhq7s7gerf7jxwiv4fv7szoljh/include --with-superlu_dist-lib=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/superlu-dist-6.4.0-bagymefhq7s7gerf7jxwiv4fv7szoljh/lib/libsuperlu_dist.a --with-superlu_dist=1 --with-suitesparse=0 --with-ptscotch=0 --with-hdf5-include=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/hdf5-1.10.7-dkfs4ir3hlahyfs5z4xcmsf4ogklimji/include --with-hdf5-lib=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/hdf5-1.10.7-dkfs4ir3hlahyfs5z4xcmsf4ogklimji/lib/libhdf5.so --with-hdf5=1 --with-zlib-include=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/zlib-1.2.11-2pwsgfxppopolmjj6tf34k5jsaqzpodo/include --with-zlib-lib=/users/home/vergnet/apps/spack/opt/spack/linux-ubuntu20.04-zen2/gcc-9.3.0/zlib-1.2.11-2pwsgfxppopolmjj6tf34k5jsaqzpodo/lib/libz.so --with-zlib=1</div><div class="">[0]PETSC ERROR: #1 DMPlexUninterpolate() line 1514 in /tmp/vergnet/spack-stage/spack-stage-petsc-3.14.4-xtae5tcwlzkb4oiifbayj77bqlz5nngk/spack-src/src/dm/impls/plex/plexinterpolate.c</div><div class="">[0]PETSC ERROR: #2 assemble_mass() line 59 in /users/home/vergnet/codes/cilia/cilia/cpp/assembling.hpp</div></div><div class=""><br class=""></div><div class="">----------</div><div class=""><br class=""></div><div class="">Attached are a minimal working example, a mesh file and a makefile.</div></div></blockquote><div class=""><br class=""></div><div class="">The code does not seem to be attached.</div><div class=""><br class=""></div><div class="">As Stefano says, you can use DMPlexGetTransitiveClosure() to get vertices, but if you actually want values attached to the</div><div class="">vertices, it is easier to use DMPlexVecGetClosure().</div><div class=""><br class=""></div><div class=""> Thanks,</div><div class=""><br class=""></div><div class=""> Matt</div><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="overflow-wrap: break-word;" class=""><div class="">Any ideas or suggestions are more than welcome !</div><div class=""><br class=""></div><div class="">Regards,</div><div class="">Fabien</div><div class=""><br class=""></div><div class=""></div></div><div style="overflow-wrap: break-word;" class=""><div class=""></div></div><div style="overflow-wrap: break-word;" class=""><div class=""></div></div><div style="overflow-wrap: break-word;" class=""><div class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></div></blockquote></div><br clear="all" class=""><div class=""><br class=""></div>--<span class="Apple-converted-space"> </span><br class=""><div dir="ltr" class="gmail_signature"><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class="">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br class="">-- Norbert Wiener</div><div class=""><br class=""></div><div class=""><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank" class="">https://www.cse.buffalo.edu/~knepley/</a></div></div></div></div></div></div></div></div></div></blockquote></div><br class=""></body></html>