On Mon, Feb 27, 2023 at 10:26 AM Pierre Jolivet <[email protected]> wrote:
> On 27 Feb 2023, at 4:16 PM, Matthew Knepley <[email protected]> wrote: > > On Mon, Feb 27, 2023 at 10:13 AM Pierre Jolivet <[email protected]> wrote: > >> On 27 Feb 2023, at 3:59 PM, Matthew Knepley <[email protected]> wrote: >> >> On Mon, Feb 27, 2023 at 9:53 AM Zongze Yang <[email protected]> wrote: >> >>> 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? >>> >> >> I replied on the issue. More generally, the adaptive refinement software >> has not seen wide use >> >> >> :) >> Matt probably meant “the _DMPlex interface_ to adaptive refinement >> software has not seen wide use”, Mmg has been rather widely used for 10+ >> years (here is a 13-year old presentation >> https://www.ljll.math.upmc.fr/hecht/ftp/ff++days/2010/exposes/Morice-MeshMetric.pdf >> ). >> > > The interface is certainly new, but even ParMMG is only from Nov 2016, > which is very new if you are an old person :) > > > Indeed. In fact, I do believe we should add a DMPlex mechanism to > centralize (redistribute on a single process) a DMPlex and to call Mmg > instead of ParMmg. > It would certainly not be scalable for large meshes but: > 1) there is no need for ParMmg on small-/medium-scale meshes > 2) Mmg is more robust than ParMmg at this point in time > 3) Mmg has more feature than ParMmg at this point in time, e.g., implicit > remeshing using a level-set > 4) there is more industry money funnelled into Mmg than into ParMmg > I think the mechanism I mentioned initially was in the TODO list of the > Firedrake people (or yours?), maybe it’s already done, but in any case it’s > not hooked in the Mmg adaptor code, though it should (erroring out in the > case where the communicator is of size greater than one would then not > happen anymore). > Yes, we used to do the same thing with partitioners. We can use DMPlexGather(). I thought MMG only did 2D and ParMMG only did 3D, but this must be wrong now. Can MMG do both? Thanks, Matt > Thanks, > Pierre > > Thanks, > > Matt > > >> Thanks, >> Pierre >> >> , and I expect >> more of these kinds of bugs until more people use it. >> >> Thanks, >> >> Matt >> >> >>> Best wishes, >>> Zongze >>> >>> >>> On Mon, 27 Feb 2023 at 20:19, Matthew Knepley <[email protected]> wrote: >>> >>>> On Sat, Feb 18, 2023 at 6:41 AM Zongze Yang <[email protected]> >>>> 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 <[email protected]> >>>>> 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/> >>>> >>> >> >> -- >> 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/>
