[petsc-users] DMPlex H27 elements

Yann Jobic yann.jobic at univ-amu.fr
Thu Jan 10 05:46:59 CST 2019


On 08/01/2019 19:45, Yann Jobic via petsc-users wrote:
>
>
> On 05/01/2019 13:23, Matthew Knepley wrote:
>> On Sat, Jan 5, 2019 at 4:04 AM Yann Jobic <yann.jobic at univ-amu.fr 
>> <mailto:yann.jobic at univ-amu.fr>> wrote:
>>
>>
>>     On 05/01/2019 02:36, Matthew Knepley wrote:
>>>     On Fri, Jan 4, 2019 at 10:04 AM Yann Jobic via petsc-users
>>>     <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>> wrote:
>>>
>>>         Dear Petsc Users,
>>>
>>>         I'm using DMPlexCreateFromCellList to create my DM. I would
>>>         like to have
>>>         an order 2 geometry.
>>>
>>>         It's working fine in 2D for elements of type Q9.
>>>
>>>
>>>     I do not see how that is possible. The topology does not work
>>>     that way, and there
>>>     is no way a 9 vertex quad was interpolated, so something else is
>>>     happening.
>>>
>>>     Moreover, anything you input still has affine geometry. Toby has
>>>     been working on
>>>     non-affine geometry, and all the code is there, but right now
>>>     you have to build and
>>>     populate the coordinate space by hand. What this means is that
>>>     you create a
>>>     quadratic space for the coordinate DM (rather than the default
>>>     linear), get the
>>>     global coordinate vector out, and stick in the Q9 coordinates.
>>>     The topology is still
>>>     the same no matter what coordinates you read in.
>>
>>     I get the idea. So at the beginning i start with the Q4/H8
>>     dmplex, then i fill from the global coordinate vector the missing
>>     coordinates, and attach this new coordinate vector to the DM.
>>
>> Yes.
>
> So far, i can change the PetscSpace order, add this space to a 
> PetscFE, and finally attach this PetscFE to a PetscDS (discetization) 
> to my DM.
>
> But if i'm doing that, the middle nodes will already be added (i 
> couldn't find this function so far, could you point me the name ?). I 
> can still move those middle vertex to my geometry.
>
> But i couldn't find a way to define the quadratic space for the 
> coordinate DM before all of that, at the DM (or DMPlex) level.
>
> What way can you advise me to use in order to do that ?
>
I think i got it, if i'm not wrong. I mean, the first step. It was in 
the documentation...

I defined the PetscSection according to the element i use. The size of 
the matrix coming from the DM is correct.

I'm working on the next step : "populate the space coordinates".

Yann

> Thank you,
>
> Yann
>
>>     Then the interpolation will be correct ?
>>
>> This is the tricky part. What you likely have to do is:
>>
>>   1) Build the topology
>>   2) Run over the cells
>>   3) For each cell, put in the coordinates using 
>> DMPlexVecSetClosure(). This is redundant, but the only way
>>       you can connect with the Q9 format.
>>
>>     Can i use DMproject and all the petsc functions ?
>>
>> This is the idea. The amount of testing is so far almost nothing.
>>
>>     In order to output the results, i've got to write my own vtk
>>     interface no ? (by splitting the Q9/H27 in 4xQ4 or 8xH8).
>>
>> That is a good question. Right now, it will just output Q4. However, 
>> compared to everything else, writing Q9 should
>> be comparatively easy.
>>
>>     Or is it working with the hdf5 one ?
>>
>> I would probably write code to to Xdmf through HDF5 rather than 
>> straight VTK, but we will end up having both.
>>
>>     Does the p4est interface work with this setup ?
>>
>> It will. I do not know if it currently does. We have to check.
>>
>>   Thanks,
>>
>>     Matt
>>
>>>
>>>     We will get around to making an interface for this soon.
>>
>>     Great !
>>
>>     Thanks,
>>
>>     Yann
>>
>>>
>>>       Thanks,
>>>
>>>          Matt
>>>
>>>         I checked that it's working correctly by using
>>>         DMPlexComputeCellGeometryFEM, and compute the value of the
>>>         determinant
>>>         (CheckMeshGeometry of dm/impls/plex/examples/tutorials/ex2.c)
>>>
>>>         I can import H8 elements, it's working fine.
>>>
>>>         But for H27 element, it's not working. I really don't know
>>>         how to order
>>>         my vertex in the cells array. So far, the determinant is zero...
>>>
>>>         I don't know where to look in order to find this
>>>         information. I tried
>>>         the function DMPlexGetRawFaces_Internal of the file
>>>
>>>         https://www.mcs.anl.gov/petsc/petsc-current/src/dm/impls/plex/plexinterpolate.c.html#DMPlexGetRawFaces_Internal
>>>
>>>         but it didn't help me.
>>>
>>>         Could you please point me where to look ?
>>>
>>>         Thanks, and happy new year !
>>>
>>>         Yann
>>>
>>>
>>>
>>>     -- 
>>>     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/20190110/4d49f526/attachment.html>


More information about the petsc-users mailing list