Hi, Matt, I tested coarsening a mesh by using ParMMg without firedrake, and found some issues: see the code and results here: https://gitlab.com/petsc/petsc/-/issues/1331
Could you have a look and give some comments or suggestions? Best wishes, Zongze On Mon, 27 Feb 2023 at 20:19, Matthew Knepley <knep...@gmail.com> wrote: > On Sat, Feb 18, 2023 at 6:41 AM Zongze Yang <yangzon...@gmail.com> wrote: > >> Another question on mesh coarsening is about `DMCoarsen` which will fail >> when running in parallel. >> >> I generate a mesh in Firedrake, and then create function space and >> functions, after that, I get the dmplex and coarsen it. >> When running in serials, I get the mesh coarsened correctly. But it >> failed with errors in ParMMG when running parallel. >> >> However, If I did not create function space and functions on the original >> mesh, everything works fine too. >> >> The code and the error logs are attached. >> > > I believe the problem is that Firedrake and PETSc currently have > incompatible coordinate spaces. We are working > to fix this, and I expect it to work by this summer. > > Thanks, > > Matt > > >> Thank you for your time and attention。 >> >> Best wishes, >> Zongze >> >> >> On Sat, 18 Feb 2023 at 15:24, Zongze Yang <yangzon...@gmail.com> wrote: >> >>> Dear PETSc Group, >>> >>> I am writing to inquire about the function DMAdaptLabel in PETSc. >>> I am trying to use it coarse a mesh, but the resulting mesh is refined. >>> >>> In the following code, all of the `adpat` label values were set to 2 >>> (DM_ADAPT_COARSEN). >>> There must be something wrong. Could you give some suggestions? >>> >>> ```python >>> from firedrake import * >>> from firedrake.petsc import PETSc >>> >>> def mark_all_cells(mesh): >>> plex = mesh.topology_dm >>> with PETSc.Log.Event("ADD_ADAPT_LABEL"): >>> plex.createLabel('adapt') >>> cs, ce = plex.getHeightStratum(0) >>> for i in range(cs, ce): >>> plex.setLabelValue('adapt', i, 2) >>> >>> return plex >>> >>> mesh = RectangleMesh(10, 10, 1, 1) >>> >>> x = SpatialCoordinate(mesh) >>> V = FunctionSpace(mesh, 'CG', 1) >>> f = Function(V).interpolate(10 + 10*sin(x[0])) >>> triplot(mesh) >>> >>> plex = mark_all_cells(mesh) >>> new_plex = plex.adaptLabel('adapt') >>> mesh = Mesh(new_plex) >>> triplot(mesh) >>> ``` >>> >>> Thank you very much for your time. >>> >>> Best wishes, >>> Zongze >>> >> > > -- > 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/> >