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

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/05d412bc580c652749a091cc13ab75
> 6bb8816ec1/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/>
>

Reply via email to