[petsc-users] How to construct DMPlex of cells with different topological dimension?

Matthew Knepley knepley at gmail.com
Thu Oct 28 08:05:14 CDT 2021


On Thu, Oct 28, 2021 at 4:59 AM 袁煕 <yuanxi at advancesoft.jp> wrote:

> Dear Matt,
>
> Thank you for your quick response.
>
> I think what you mean is to build DAG from my mesh at first and then call
> DMPlexCreateFromDAG
> <https://petsc.org/main/docs/manualpages/DMPLEX/DMPlexCreateFromDAG.html#DMPlexCreateFromDAG>()
> to construct DMPlex.
>

No, I do not mean that.


> A new problem is,  as I know, the function DMPlexInterpolate would
> generate points with different depth. What's the difference  between those
> faces and segment elements generated by  DMPlexInterpolate  with that
> defined by the original mesh, or should we not use DMPlexInterpolate in
> such a case?
>
> On the other hand, can DMComposite be used in this case by defining DMPlex
> with different topological dimensions at first and then composite them?
>

You do not need that. I am obviously not understanding your question. My
short answer is that Plex _already_ handles cells of different
dimension automatically without anything extra.

Maybe it would help if you defined a specific problem you have.

  Thanks,

      Matt


> Thanks in advance.
>
> Yuan
>
>
> 2021年10月27日(水) 19:27 Matthew Knepley <knepley at gmail.com>:
>
>> On Wed, Oct 27, 2021 at 4:50 AM 袁煕 <yuanxi at advancesoft.jp> wrote:
>>
>>> Hi,
>>>
>>> I am trying to parallelize my serial FEM program using PETSc. This
>>> program calculates structure deformation by using various types of elements
>>> such as solid, shell, beam, and truss. At the very beginning, I found it
>>> was hard for me to put such kinds of elements into DMPlex. Because solid
>>> elements are topologically three dimensional, shell element two, and beam
>>> or truss are topologically one-dimensional elements. After reading chapter
>>> 2.10: "DMPlex: Unstructured Grids in PETSc" of users manual carefully,  I
>>> found the provided functions, such as DMPlexSetCone, cannot declare those
>>> topological differences.
>>>
>>> My question is : Is it possible and how to define all those
>>> topologically different elements into a DMPlex struct?
>>>
>>
>> Yes. The idea is to program in a dimension-independent way, so that the
>> code can handle cells of any dimension.
>> What you probably want is the "depth" in the DAG representation, which
>> you can think of as the dimension of a cell.
>>
>>
>> https://petsc.org/main/docs/manualpages/DMPLEX/DMPlexGetPointDepth.html#DMPlexGetPointDepth
>>
>>   Thanks,
>>
>>      Matt
>>
>>
>>> Thanks in advance!
>>>
>>> Best regards,
>>>
>>> Yuan.
>>>
>>>
>>
>> --
>> 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/20211028/eab67dc6/attachment-0001.html>


More information about the petsc-users mailing list