Hi, Sorry for my late response. I tried with your suggestions and I think I made a progress. But I still got issues. Let me explain my latest mesh routine:
- DMPlexCreateBoxMesh - DMSetFromOptions - PetscSectionCreate - PetscSectionSetNumFields - PetscSectionSetFieldDof - PetscSectionSetDof - PetscSectionSetUp - DMSetLocalSection - DMSetAdjacency - DMPlexDistribute It's still not working but it's promising, if I call DMPlexGetDepthStratum for cells, I can see that after distribution processors have more cells. But I couldn't figure out how to decide where the ghost/processor boundary cells start. In older mails I saw there is a function DMPlexGetHybridBounds but I think that function is deprecated. I tried to use, DMPlexGetCellTypeStratumas in ts/tutorials/ex11_sa.c but I'm getting -1 as cEndInterior before and after distribution. I tried it for DM_POLYTOPE_FV_GHOST, DM_POLYTOPE_INTERIOR_GHOST polytope types. I also tried calling DMPlexComputeCellTypes before DMPlexGetCellTypeStratum but nothing changed. I think I can calculate the ghost cell indices using cStart/cEnd before & after distribution but I think there is a better way I'm currently missing. Thanks again, Guer. ------- Original Message ------- On Thursday, September 28th, 2023 at 10:42 PM, Matthew Knepley <[email protected]> wrote: > On Thu, Sep 28, 2023 at 3:38 PM erdemguer via petsc-users > <[email protected]> wrote: > >> Hi, >> >> I am currently using DMPlex in my code. It runs serially at the moment, but >> I'm interested in adding parallel options. Here is my workflow: >> >> Create a DMPlex mesh from GMSH. >> Reorder it with DMPlexPermute. >> Create necessary pre-processing arrays related to the mesh/problem. >> Create field(s) with multi-dofs. >> Create residual vectors. >> Define a function to calculate the residual for each cell and, use SNES. >> As you can see, I'm not using FV or FE structures (most examples do). Now, >> I'm trying to implement this in parallel using a similar approach. However, >> I'm struggling to understand how to create corresponding vectors and how to >> obtain index sets for each processor. Is there a tutorial or paper that >> covers this topic? > > The intention was that there is enough information in the manual to do this. > > Using PetscFE/PetscFV is not required. However, I strongly encourage you to > use PetscSection. Without this, it would be incredibly hard to do what you > want. Once the DM has a Section, it can do things like automatically create > vectors and matrices for you. It can redistribute them, subset them, etc. The > Section describes how dofs are assigned to pieces of the mesh (mesh points). > This is in the manual, and there are a few examples that do it by hand. > > So I suggest changing your code to use PetscSection, and then letting us know > if things still do not work. > > Thanks, > > Matt > >> Thank you. >> Guer. >> >> Sent with [Proton Mail](https://proton.me/) secure email. > > -- > > 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/)
