> On 23 Apr 2025, at 5:31 PM, neil liu <liufi...@gmail.com> wrote: > > Thanks a lot, Stefano. > I tried DMPlexGetGatherDM and DMPlexDistributeField. It can give what we > expected. > The final gatherDM is listed as follows, rank 0 has all information (which is > right) while rank 1 has nothing. > Then I tried to feed this gatherDM into adaptMMG on rank 0 only (it seems > MMG works better than ParMMG, that is why I want MMG to be tried first). But > it was stuck at collective petsc functions in DMAdaptMetric_Mmg_Plex(). By > the way, the present work can work well with 1 rank. > > Do you have any suggestions ? Build a real serial DM?
Yes, you need to change the underlying MPI_Comm as well, but I’m not sure if there is any user-facing API for doing this with a one-liner. Thanks, Pierre > Thanks a lot. > Xiaodong > > DM Object: Parallel Mesh 2 MPI processes > type: plex > Parallel Mesh in 3 dimensions: > Number of 0-cells per rank: 56 0 > Number of 1-cells per rank: 289 0 > Number of 2-cells per rank: 452 0 > Number of 3-cells per rank: 216 0 > Labels: > depth: 4 strata with value/size (0 (56), 1 (289), 2 (452), 3 (216)) > celltype: 4 strata with value/size (0 (56), 1 (289), 3 (452), 6 (216)) > Cell Sets: 2 strata with value/size (29 (152), 30 (64)) > Face Sets: 3 strata with value/size (27 (8), 28 (40), 101 (20)) > Edge Sets: 1 strata with value/size (10 (10)) > Vertex Sets: 5 strata with value/size (27 (2), 28 (6), 29 (2), 101 (4), 106 > (4)) > Field Field_0: > adjacency FEM > > > > On Fri, Apr 18, 2025 at 10:09 AM Stefano Zampini <stefano.zamp...@gmail.com > <mailto:stefano.zamp...@gmail.com>> wrote: >> If you have a vector distributed on the original mesh, then you can use the >> SF returned by DMPlexGetGatherDM and use that in a call to >> DMPlexDistributeField >> >> Il giorno ven 18 apr 2025 alle ore 17:02 neil liu <liufi...@gmail.com >> <mailto:liufi...@gmail.com>> ha scritto: >>> Dear PETSc developers and users, >>> >>> I am currently exploring the integration of MMG3D with PETSc. Since MMG3D >>> supports only serial execution, I am planning to combine parallel and >>> serial computing in my workflow. Specifically, after solving the linear >>> systems in parallel using PETSc: >>> >>> I intend to use DMPlexGetGatherDM to collect the entire mesh on the root >>> process for input to MMG3D. >>> >>> Additionally, I plan to gather the error field onto the root process using >>> VecScatter. >>> >>> However, I am concerned that the nth value in the gathered error vector >>> (step 2) may not correspond to the nth element in the gathered mesh (step >>> 1). Is this a valid concern? >>> >>> Do you have any suggestions or recommended practices for ensuring correct >>> correspondence between the solution fields and the mesh when switching from >>> parallel to serial mode? >>> >>> >>> Thanks, >>> >>> Xiaodong >> >> >> >> -- >> Stefano