> On 24. Oct 2018, at 12:49, Matthew Knepley <[email protected]> wrote:
> 
> On Wed, Oct 24, 2018 at 6:29 AM Lawrence Mitchell <[email protected] 
> <mailto:[email protected]>> wrote:
> Hi Max,
> 
> (I'm cc'ing in the petsc-users mailing list which may have more advice, if 
> you are using PETSc you should definitely subscribe!
> 
> > On 24 Oct 2018, at 09:27, Maximilian Hartig <[email protected] 
> > <mailto:[email protected]>> wrote:
> > 
> > Hello Lawrence,
> > 
> > sorry to message you out of the blue. My name is Max and I found your post 
> > on GitHub (https://github.com/firedrakeproject/firedrake/issues/1246 
> > <https://github.com/firedrakeproject/firedrake/issues/1246> ) on DMPlex 
> > being able to read periodic gmsh files. I am currently trying to do just 
> > that (creating a periodic DMPlex mesh with gmsh) in the context of my PhD 
> > work. So far I haven’ t found any documentation on the periodic BC’s with 
> > DMPlex and gmsh in the official petsc documentation. 
> > I was wondering whether you’d be so kind as to point me in a general 
> > direction concerning how to achieve this. You seem experienced in using 
> > petsc and I would greatly appreciate your help. 
> 
> 
> I think the answer is "it depends". If you're just using DMPlex directly and 
> all the of the functionality with PetscDS, then I /think/ that reading 
> periodic meshes via gmsh (assuming you're using the appropriate gmsh mesh 
> format [v2]) "just works".
> 
> There are two phases here: topological and geometric. DMPlex represents the 
> periodic topological entity directly. For example,  a circle is just a 
> segment with one end hooked to the other. Vertices are not duplicated, or 
> mapped to each other. This makes topology simple and easy to implement. 
> However, then geometry is more complicated. What Plex does is allow 
> coordinates to be represented by a discontinuous field taking values on 
> cells, in addition to vertices. In our circle example, each cells near the 
> cut will have 2 coordinates, one for each vertex, but they will not agree 
> across the cut. If you define a periodic domain, then Plex can construct this 
> coordinate field automatically using DMPlexLocalize(). These DG coordinates 
> are then used by the integration routines.

Ok, I think I understand the concept. DMPlex reads information about both 
topology and coordinates from the .msh file. Creating a periodic mesh in gmsh 
then should allow DMPlex to identify the periodic boundaries as the “cut” and 
build the mesh topology accordingly. Coordinate information is handled 
separately.
That means, as Lawrence suggested, building periodic meshes in gmsh and reading 
them in to petsc’s DMPlex should indeed “just work”.  (From the user 
perspective). The only extra step is to call DMLocalizeCoordinates() after 
DMPlexReadFromFile(). Sorry to reiterate, I am just trying to make sense of 
this. 
>  
> From my side, the issue is to do with mapping that coordinate field into one 
> that I understand (within Firedrake). You may not have this problem.
> 
> Firedrake uses its own coordinate mapping and integration routines, so they 
> must manage the second part independently. I hope to get change this slightly 
> soon by making the Firedrake representation a DMField, so that it looks the 
> same to Plex.
> 
>   Thanks,
> 
>     Matt
>  
> Thanks,
> 
> Lawrence
> 
> 
> -- 
> 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://www.cse.buffalo.edu/~knepley/>
> To read periodic meshes from GMSH, you need to use the option 
> -dm_plex_gmsh_periodic and DMPlexCreateFromFile

Ahh, thanks. I was missing the option " -dm_plex_gmsh_periodic “. But using 
this option I now generate a segmentation fault error when calling VecView() on 
the solution vector with vtk and hdf5 viewers. Any suggestions?

 
> 
> See  src/dm/impls/plex/examples/tests/ex1.c. An example runs
> 
> $ ./ex1 -filename 
> ${PETSC_DIR}/share/petsc/datafiles/meshes/cube_periodic_bin.msh 
> -dm_plex_gmsh_periodic -dm_view ::ascii_info_detail -interpolate -test_shape
> 
> generating periodic meshes in gmsh may be tricky, Lisandro for sure may 
> advice.

Thanks,
Max

Reply via email to