this refinement seems to work pretty well for what I was looking for. still testing... but tetgen seems to load these background mesh files at the higher resolution to guide the refinement?
$ tetgen -Vrmqk coarse.1.node Opening coarse.1.node. Opening coarse.1.ele. Opening coarse.1.face. Opening coarse.1.b.node. Opening coarse.1.b.ele. Opening coarse.1.b.mtr. . . do you think a reasonable approach would be for me work with two meshes in petsc? a coarse and fine mesh. and load a uniformly refined fine dmplex mesh as the background mesh? https://bitbucket.org/petsc/ctetgen/src/8ca66eb7de95b82f7969984bab6aacada6626b1d/ctetgen.c?at=master&fileviewer=file-view-default#ctetgen.c-22245 [image: Screen Shot 2019-04-13 at 4.50.06 AM.png] On Tue, Jan 8, 2019 at 11:29 AM David Fuentes <fuente...@gmail.com> wrote: > sounds great! i've been working out of this guy - > https://github.com/fuentesdt/thermoembo > > and loading vtk data for the segmentation: > https://github.com/fuentesdt/thermoembo/blob/master/tutorials/exac.c#L50 > > I can clean this up and separate into relevant directories ? or start an > new repo? which ever you prefer. > > > > On Tue, Jan 8, 2019 at 11:20 AM Matthew Knepley <knep...@gmail.com> wrote: > >> On Mon, Jan 7, 2019 at 4:27 PM David Fuentes <fuente...@gmail.com> wrote: >> >>> ha! thanks for you time on this Matt. I'm trying to generate a mesh from >>> image segmentation data. >>> I would like to use an image segmentation to guide the refinement. >>> Figure 25 of this paper - >>> https://www.ices.utexas.edu/media/reports/2017/1707.pdf >>> >> >> Very cool. We can do that. Lets make an example and iterate. Want to make >> a repo you control? I will >> stick in a PETSc example that refines meshes (maybe Plex ex19), and we >> can experiment with both p4est >> and Pragmatic (installation of those is hardest part :) This sounds great. >> >> Matt >> >> >>> On Mon, Jan 7, 2019 at 2:53 PM Matthew Knepley <knep...@gmail.com> >>> wrote: >>> >>>> On Mon, Jan 7, 2019 at 11:41 AM David Fuentes <fuente...@gmail.com> >>>> wrote: >>>> >>>>> thanks Matt, >>>>> >>>>> I posted a slightly modified example >>>>> >>>>> https://github.com/fuentesdt/dmplexrefinement/blob/master/ex45.c >>>>> >>>>> and changes from the orginal >>>>> >>>>> >>>>> https://github.com/fuentesdt/dmplexrefinement/blob/master/refinement.diff >>>>> >>>>> >>>>> This is what I'm seeing >>>>> >>>>> https://github.com/fuentesdt/dmplexrefinement/blob/master/paraview.png >>>>> >>>>> >>>>> I'm refining based on this element centroid: >>>>> >>>>> >>>>> https://github.com/fuentesdt/dmplexrefinement/blob/master/testcentroid.stl >>>>> >>>>> unrefined - >>>>> https://github.com/fuentesdt/dmplexrefinement/blob/master/unrefined.vtu >>>>> >>>>> refined - >>>>> https://github.com/fuentesdt/dmplexrefinement/blob/master/refined.vtu >>>>> >>>>> >>>>> Maybe I don't understand the refinement algorithm, but the refinement >>>>> is a little offset from what I was expecting. >>>>> >>>> >>>> Okay, I have that working. I will make a branch and put this in it. For >>>> right now, I attach ex45.c (but it will not run since I put in stuff to >>>> take lower/upper from the command line). 3D refinement just sucks, but you >>>> can see it is refining cell 7, not 8. Its just that refinement >>>> propagates a long, long way. >>>> >>>> I have pretty much abandoned this type of refinement since it will not >>>> work in parallel, and the mesh generator >>>> interface is poor. I am transitioning everything to >>>> >>>> - uniform refinement (ha!) >>>> - cell marking (p4est likes this) >>>> - metric tensor (Pragmatic likes this) >>>> >>>> I have some routines to convert marking <--> metric but they are not >>>> perfect I think. I can try and help do what you want with >>>> AMR if I have a better idea what it is. >>>> >>>> Thanks, >>>> >>>> Matt >>>> >>>> >>>>> >>>>> Also, can you pass an application context to the user refinement >>>>> function ? >>>>> >>>>> https://github.com/fuentesdt/dmplexrefinement/blob/master/ex45.c#L119 >>>>> >>>>> >>>>> >>>>> On Thu, Jan 3, 2019 at 7:49 AM Matthew Knepley <knep...@gmail.com> >>>>> wrote: >>>>> >>>>>> On Wed, Jan 2, 2019 at 7:28 PM David Fuentes via petsc-users < >>>>>> petsc-users@mcs.anl.gov> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> Starting with TS example 45 >>>>>>> >>>>>>> $ pwd >>>>>>> /opt/apps/PETSc/petsc-3.10.2 >>>>>>> $ ls src/ts/examples/tutorials/ex45.c >>>>>>> src/ts/examples/tutorials/ex45.c >>>>>>> >>>>>>> petsc configured with: ./config/configure.py --with-shared-libraries >>>>>>> --with-clanguage=c++ --CFLAGS='-g -O0' --CXXFLAGS='-g -O0' >>>>>>> --with-c2html=0 >>>>>>> --download-ctetgen --download-triangle --with-debugging=yes >>>>>>> --download-netcdf --download-zlib --download-exodusii --download-hdf5 >>>>>>> --download-pnetcdf >>>>>>> >>>>>>> I'm trying to refine the DMPlexCreateBoxMesh with the >>>>>>> DMPlexSetRefinementFunction. >>>>>>> It generally seems to be working, except that the refined element is >>>>>>> slightly offset from what I was expecting. >>>>>>> Based on my application specific criteria, element id number 7 is >>>>>>> flagged to be refined by the DMPlexSetRefinementFunction but when I >>>>>>> open in >>>>>>> paraview, it looks like element id number 8 is being refined. See >>>>>>> attached >>>>>>> pic. >>>>>>> >>>>>>> [image: Screen Shot 2019-01-02 at 6.02.02 PM.png] >>>>>>> [image: Screen Shot 2019-01-02 at 6.02.11 PM.png] >>>>>>> >>>>>>> Is it possible that the maxVolumes array is 'off by one' when >>>>>>> transfering to tetgen data structures somehow ? >>>>>>> >>>>>> >>>>>> I looked through and cannot see it by eye. Could you send me your >>>>>> modified example and I will walk through it with the >>>>>> debugger? >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Matt >>>>>> >>>>>> >>>>>>> >>>>>>> https://bitbucket.org/petsc/petsc/src/bd27d3f284687498e4c4678d234c0e308a5bc236/src/dm/impls/plex/plexadapt.c?at=master&fileviewer=file-view-default#plexadapt.c-252 >>>>>>> >>>>>>> >>>>>>> >>>>>>> (gdb) bt >>>>>>> #0 DMPlexRefine_CTetgen (dm=0x932180, maxVolumes=0x919710, >>>>>>> dmRefined=0x7fffffffb938) at >>>>>>> /opt/apps/PETSc/petsc-3.10.2/src/dm/impls/plex/generators/ctetgen/ctetgenerate.c:182 >>>>>>> #1 0x00007ffff6b76401 in DMPlexRefine_Internal (dm=0x932180, >>>>>>> adaptLabel=0x0, dmRefined=0x7fffffffb938) at >>>>>>> /opt/apps/PETSc/petsc-3.10.2/src/dm/impls/plex/plexadapt.c:252 >>>>>>> #2 0x00007ffff6b72720 in DMRefine_Plex (dm=0x932180, comm=0x6b, >>>>>>> dmRefined=0x7fffffffb938) at >>>>>>> /opt/apps/PETSc/petsc-3.10.2/src/dm/impls/plex/plexrefine.c:10361 >>>>>>> #3 0x00007ffff6dad8ff in DMRefine (dm=0x932180, comm=0x6b, >>>>>>> dmf=0x7fffffffb938) at >>>>>>> /opt/apps/PETSc/petsc-3.10.2/src/dm/interface/dm.c:1808 >>>>>>> #4 0x0000000000405274 in CreateMesh (comm=0x7ffff5891680 >>>>>>> <ompi_mpi_comm_world>, dm=0x7fffffffb9d0, ctx=0x7fffffffba00) at >>>>>>> /rsrch1/ip/dtfuentes/github/thermoembo/tutorials/exac.c:253 >>>>>>> #5 0x00000000004063c4 in main (argc=32, argv=0x7fffffffdb68) at >>>>>>> /rsrch1/ip/dtfuentes/github/thermoembo/tutorials/exac.c:336 >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> 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/ >>>>>> <http://www.cse.buffalo.edu/~knepley/> >>>>>> >>>>> >>>> >>>> -- >>>> 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/ >>>> <http://www.cse.buffalo.edu/~knepley/> >>>> >>> >> >> -- >> 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/ >> <http://www.cse.buffalo.edu/~knepley/> >> >