[petsc-users] Structured grid in DMPlex?

Matthew Knepley knepley at gmail.com
Fri May 8 08:48:39 CDT 2015


On Fri, May 8, 2015 at 8:08 AM, Justin Chang <jychang48 at gmail.com> wrote:

> Matt,
>
> Creating structured meshes on rank 0 is no problem. The issue I am having
> is the amount of time it takes to distribute the mesh across multiple
> processes. If I know the grid has a structured format, then wouldn't it be
> much faster to have each process create its local portion of the DMPlex
> chart instead of calling a graph partitioner? As long as we know the global
> number of cells/points in each spatial direction, the desired local
> organization of cells/points for each rank, and where the ghost nodes
> reside, I imagine this should be (almost) entirely local and scalable. I
> would think the only real work that goes into this is to determine a prior
> an algorithm that evenly distributes the mesh points and to create the SF
> associate with each local portion of the DM?
>

Ah, yes that is a bottleneck as you get larger. If that is the problem, for
now just use -dm_refine <num>.

  Thanks,

     Matt


> Thanks,
> Justin
>
> On Fri, May 8, 2015 at 7:40 AM, Matthew Knepley <knepley at gmail.com> wrote:
>
>> On Thu, May 7, 2015 at 10:31 PM, Justin Chang <jychang48 at gmail.com>
>> wrote:
>>
>>> Hello everyone,
>>>
>>> If I know for a fact that I will be using structured grids AND still
>>> want the DMPlex data structure, what's the best/fastest way of achieving
>>> this? Should I:
>>>
>>> a) Invoke DMDACreate2d(PETSC_COMM_WORLD, DM_BOUNDARY_NONE,
>>> DM_BOUNDARY_NONE,DMDA_STENCIL_BOX,-3,-3,PETSC_DECIDE,PETSC_DECIDE,1,1,NULL,NULL,&da);
>>> to get the parallel cell-vertex layout and (somehow) translate this into a
>>> DMPlex?
>>>
>>> b) Manually set the local DMPlex chart/DAG and assign the SF along the
>>> appropriate processors?
>>>
>>> c) Invoke some DMDA/DMPlex function or set of functions that already
>>> exist for this purpose?
>>>
>>
>> It was supposed to work the same way as DMPlex in that you create the DM
>> and a DS, and then
>> the Section is created automatically. However, there is so much DA
>> specific stuff coded and no
>> one really wanted to use it, so its not maintained or consistent.
>>
>>
>>> d) Something else?
>>>
>>
>> RIght now, I think the best thing to do is use DMPlexCreateHexBoxMesh(),
>> which gives you a structured mesh. Get
>> everything in your code working. Then, if you really feel limited by the
>> mesh structure, we can make the DMDA code
>> work.
>>
>>   Thanks,
>>
>>      Matt
>>
>>
>>> I know I could just input or create a coarse DAG and invoke -dm_refine,
>>> but I was wondering if there is an alternative to this method.
>>>
>>> Thanks,
>>> Justin
>>>
>>
>>
>>
>> --
>> 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
>>
>
>


-- 
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150508/140cf5d7/attachment.html>


More information about the petsc-users mailing list