[petsc-users] DMPlexComputeCellGeometryFVM: "Cannot handle faces with 1 vertices"

finnkochinski at keemail.me finnkochinski at keemail.me
Tue Mar 12 09:09:57 CDT 2019


Next try:
Vertex and face numbering corrected (I hope), code and full output attached.
Orientations still wrong, but the crash is elsewhere:
...
reconstructed depth,dim: 1 3
[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
[0]PETSC ERROR: Invalid argument
[0]PETSC ERROR: Mesh must be interpolated
...

DMPlexComputeCellGeometryFVM() checks depth and dim in the beginning, finds they are different and quits because mesh seems not interpolated.
Actually, DMPlexGetDepth and DMGetDimension return 1 and 3 with this vertex/face numbering. They returned the correct 3 and 3 with my previous wrong numbering.

It can't be so difficult to create a simplex from scratch?

regards
Chris

Mar 12, 2019, 1:38 PM by knepley at gmail.com:

> On Tue, Mar 12, 2019 at 9:25 AM <> finnkochinski at keemail.me <mailto:finnkochinski at keemail.me>> > wrote:
>
>> Thank you,
>> I added DMPlexInterpolate(). Now I get a different error in DMPlexInterpolate():
>> ...
>>
>
> Okay, you did not need interpolate. You already specified all the levels. However, your orientations are wrong.
> Get rid of that code.
>  
>
>>
>> [0]PETSC ERROR: Dimension 0 not supported
>> ...
>>
>> The source code and full output are attached. Anybody able to fix this?
>>
>
> The problem is a numbering convention in the library. Plex will accept any consistent DAG. However, if you
> want to use other things in the library, like geometry routines, then there is a convention on numbering (which
> makes many things simpler). We require that you number contiguously:
>
>   Cells:      [0, Nc)
>   Vertices: [Nc, Nc+Nv)
>   Edges:    [Nc+Nv, Nc+Nv+Ne)
>   Faces:    [Nc+Nv+Ne, Nc+Nv+Ne+Nf)
>
> You numbered the faces in the vertices slot,  so the geometry routines got confused.
>
>   Thanks,
>
>     Matt
>  
>
>>
>> regards
>> Chris
>>
>> -- 
>> Securely sent with Tutanota. Get your own encrypted, ad-free mailbox: 
>> https://tutanota.com <https://tutanota.com>
>>
>>
>> Mar 12, 2019, 1:08 PM by >> knepley at gmail.com <mailto:knepley at gmail.com>>> :
>>
>>> On Tue, Mar 12, 2019 at 9:03 AM Chris Finn via petsc-users <>>> petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>>>> > wrote:
>>>
>>>> Hello,
>>>> with the code below, I create a tetrahedron using DMPlexCreateFromDAG, then I try to run DMPlexComputeCellGeometryFVM on this cell. The latter call fails with output:
>>>>
>>>
>>> All the geometry stuff requires that you interpolate the mesh I think, Just use DMPlexInterpolate().
>>>
>>>   Thanks,
>>>
>>>     Matt
>>>  
>>>
>>>>
>>>> ...
>>>> [0]PETSC ERROR: --------------------- Error Message -----------------
>>>> [0]PETSC ERROR: Argument out of range
>>>> [0]PETSC ERROR: Cannot handle faces with 1 vertices
>>>> ...
>>>> (full output is attached).
>>>>
>>>> What am I doing wrong?
>>>> regards
>>>> Chris
>>>>
>>>> Here is the code:
>>>> static char help[] = "No help \n";
>>>>
>>>> #include <petscdmplex.h>
>>>>
>>>> #undef __FUNCT__
>>>> #define __FUNCT__ "main"
>>>> int main(int argc,char **args)
>>>> {
>>>>   PetscErrorCode ierr;
>>>>   PetscInitialize(&argc,&args,(char*)0,help);
>>>>
>>>>   DM                dm;
>>>>   int cStart,cEnd;
>>>>   int fStart,fEnd;
>>>>
>>>>   int depth = 3;
>>>>   int dim = 3;
>>>>
>>>>   PetscInt    numPoints[4]        = {1,4,6,4};
>>>>   PetscInt    coneSize[15]         = {4,3,3,3,3,2,2,2,2,2,2,0,0,0,0};
>>>>   PetscInt    cones[28]            = {1,2,3,4, 5,9,8, 9,6,10, 10,8,7, 5,6,7, 11,12, 12,13, 13,11, 11,14, 12,14, 13,14};
>>>>   PetscInt    coneOrientations[28] = {0 };
>>>>   PetscScalar vertexCoords[12]     = {0,0,0, 1,0,0, 0,1,0, 0,0,1};
>>>>
>>>>   DMCreate(PETSC_COMM_WORLD, &dm);
>>>>   DMSetType(dm, DMPLEX);
>>>>   DMSetDimension(dm,dim);
>>>>   DMPlexCreateFromDAG(dm, depth, numPoints, coneSize, cones, coneOrientations, vertexCoords);
>>>>
>>>>   DMPlexGetHeightStratum(dm, 0, &cStart, &cEnd);
>>>>   DMPlexGetHeightStratum(dm, 1, &fStart, &fEnd);
>>>>
>>>>   for (int k =cStart;k<cEnd;k++){
>>>>     double vol;
>>>>     double centroid[3];
>>>>     double normal[3];
>>>>     ierr = DMPlexComputeCellGeometryFVM(dm, k, &vol, centroid,NULL);CHKERRQ(ierr);
>>>>     printf("FVM: V=%f c=(%f %f %f) n=(%f %f %f)\n",vol,centroid[0],centroid[1],centroid[2],
>>>>       normal[0],normal[1],normal[2]);
>>>>   }
>>>>   ierr = PetscFinalize();
>>>>   return 0;
>>>> }
>>>>
>>>>
>>>>
>>>
>>>
>>> -- 
>>> 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/>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190312/f0852eb9/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: log3
Type: application/octet-stream
Size: 4113 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190312/f0852eb9/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: testplex.c
Type: text/x-csrc
Size: 1603 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190312/f0852eb9/attachment-0001.bin>


More information about the petsc-users mailing list