[petsc-users] DMPlexSetRefinementFunction

Matthew Knepley knepley at gmail.com
Mon Jan 7 14:52:50 CST 2019


On Mon, Jan 7, 2019 at 11:41 AM David Fuentes <fuentesdt at 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 <knepley at gmail.com> wrote:
>
>> On Wed, Jan 2, 2019 at 7:28 PM David Fuentes via petsc-users <
>> petsc-users at 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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190107/2e311da9/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: check.png
Type: image/png
Size: 88215 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190107/2e311da9/attachment-0001.png>


More information about the petsc-users mailing list