Uhmmm. Indeed. Sorry for the mistake. Just fixed my ordering before sending them to DMPlexCreateFromCellList and it worked fine. Thanks.

On Wed, Apr 11, 2018 at 10:15 AM, Matthew Knepley <knep...@gmail.com> wrote: > On Wed, Apr 11, 2018 at 9:06 AM, Bernardo Rocha < > bernardomartinsro...@gmail.com> wrote: > >> OK Matthew, thanks a lot for your feedback. >> >> Reading the code for the first two faces I noted you used the standard >> numbering for the faces. >> face 0 (bottom) -> nodes 0 1 2 3 >> face 1 (top) -> nodes 4 5 6 7 >> > > Hi Bernardo, > > No, you are misinterpreting the numbering. I want all cell faces to have > outward facing normal, so > the unit cell looks like > > 7------6 > /| /| > / | / | > 4------5 | > | | | | > | | | | > | 1------2 > | / | / > | / |/ > 0------3 > > Does it make more sense now? > > Thanks, > > Matt > > When this is defined, all the other faces are fixed. >> Therefore, I noticed some indexes errors in the code: >> >> //facesTmp[8] = cone[0]; facesTmp[9] = cone[3]; facesTmp[10] = >> cone[5]; facesTmp[11] = cone[4]; /* Front */ >> //facesTmp[12] = cone[2]; facesTmp[13] = cone[1]; facesTmp[14] = >> cone[7]; facesTmp[15] = cone[6]; /* Back */ >> //facesTmp[16] = cone[3]; facesTmp[17] = cone[2]; facesTmp[18] = >> cone[6]; facesTmp[19] = cone[5]; /* Right */ >> //facesTmp[20] = cone[0]; facesTmp[21] = cone[4]; facesTmp[22] = >> cone[7]; facesTmp[23] = cone[1]; /* Left */ >> >> It should be fixed to (basically swap cone[5] with cone[7]): >> >> facesTmp[8] = cone[0]; facesTmp[9] = cone[3]; facesTmp[10] = >> cone[7]; facesTmp[11] = cone[4]; /* Front */ >> facesTmp[12] = cone[2]; facesTmp[13] = cone[1]; facesTmp[14] = >> cone[5]; facesTmp[15] = cone[6]; /* Back */ >> facesTmp[16] = cone[3]; facesTmp[17] = cone[2]; facesTmp[18] = >> cone[6]; facesTmp[19] = cone[7]; /* Right */ >> facesTmp[20] = cone[0]; facesTmp[21] = cone[4]; facesTmp[22] = >> cone[5]; facesTmp[23] = cone[1]; /* Left */ >> >> I did it like this, recompiled the code and at least the number of faces >> and edge are correct for me now >> when using DMPlexCreateFromCellList. >> >> I don't know if this change has some impact in other parts of the code. >> I hope not. >> >> Best regards, >> Bernardo M. Rocha >> >> >> >> On Tue, Apr 10, 2018 at 5:14 PM, Matthew Knepley <knep...@gmail.com> >> wrote: >> >>> On Tue, Apr 10, 2018 at 2:19 PM, Bernardo Rocha < >>> bernardomartinsro...@gmail.com> wrote: >>> >>>> Hi everyone, >>>> >>>> I have two questions. >>>> >>>> (Q1) >>>> The first one is related to the new PETSc 3.9. >>>> I've been using Fortran and using the "userctx" to wrap some data >>>> for the function calls within my program. >>>> >>>> Just like : call func(...,userctx) >>>> and retrieving data as: >>>> PetscFortranAddr userctx(*) >>>> b = userctx(2) >>>> >>>> With the new version I got the following error: >>>> b = userctx(2) >>>> Error: Can't convert INTEGER(8) to TYPE(tvec) at (1) >>>> >>>> Is there a way to keep using the trick with "userctx", instead of >>>> passing >>>> all the arguments to the functions separately? >>>> >>>> (Q2) >>>> The second is related to DMPlex. >>>> When I use the CreateBoxMesh with 2x1x1 cells, I get the expected >>>> output: >>>> >>>> DM Object: 1 MPI processes >>>> type: plex >>>> DM_0x84000000_0 in 3 dimensions: >>>> 0-cells: 12 >>>> * 1-cells: 20* >>>> *2-cells: 11* >>>> 3-cells: 2 >>>> Labels: >>>> depth: 4 strata with value/size (0 (12), 1 (20), 2 (11), 3 (2)) >>>> >>>> However, If I try to create that manually to reproduce the same case >>>> 2x1x1 cells (creating this simple element connectivity by hand) using >>>> DMPlexCreateFromCellList I get the following: >>>> >>>> DM Object: DM_0x84000000_0 1 MPI processes >>>> type: plex >>>> DM_0x84000000_0 in 3 dimensions: >>>> 0-cells: 12 >>>> *1-cells: 22* >>>> * 2-cells: 12* >>>> 3-cells: 2 >>>> Labels: >>>> depth: 4 strata with value/size (0 (12), 1 (22), 2 (12), 3 (2)) >>>> >>>> That is, it seems the shared face between the two cells is counted >>>> twice. >>>> Is that right? What am I missing here? >>>> >>> >>> Since the input is cell-vertex, my guess is that the order of the >>> vertices on a cell is not what I expect. >>> I have readers for common formats, but FromCellList() is my own. You can >>> see what vertices I think >>> constitute the faces: >>> >>> https://bitbucket.org/petsc/petsc/src/05d412bc580c652749a0 >>> 91cc13ab756bb8816ec1/src/dm/impls/plex/plexinterpolate.c?at= >>> master&fileviewer=file-view-default#plexinterpolate.c-113 >>> >>> Sorry, this was confusing. Most people are using the input formats, mesh >>> generators, or predefined shapes, >>> so I do not get a lot of feedback on this interface. >>> >>> Thanks, >>> >>> Matt >>> >>> >>>> Best regards, >>>> Bernardo >>>> >>> >>> >>> >>> -- >>> 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.caam.rice.edu/~mk51/> >>> >> >> > > > -- > 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.caam.rice.edu/~mk51/> >