[petsc-users] Uninterpolating a distributed mesh
Justin Chang
jchang27 at uh.edu
Mon Apr 13 16:22:41 CDT 2015
Is there an example somewhere that does something similar to this?
Thanks,
On Mon, Apr 13, 2015 at 12:31 PM, Matthew Knepley <knepley at gmail.com> wrote:
> On Sat, Apr 11, 2015 at 6:55 PM, Justin Chang <jchang27 at uh.edu> wrote:
>
>> Hello,
>>
>> When I call DMPlexUninterpolate(...) on a distributed mesh (say 2
>> processors), it seems to overwrite the "ghost" points (i.e., the points not
>> locally owned by the processor) and treats all points as if they are local
>> to the processor.
>>
>
> Yes, I wrote Uninterpolate() just for testing, and do not currently handle
> the SF. I put it on my TODO list.
>
> Its not hard if you want to try. You just filter out any points that are
> not cells and vertices from the SF, so
>
> PetscSFGetGraph()
> for (leaves)
> if leaf not a cell or vertex, skip
> PetscSFSetGraph()
>
> Thanks,
>
> Matt
>
>
>> Say I have this 2D cell-vertex mesh:
>>
>> 14----15-----16
>> | \ 5 | \ 7 |
>> | \ | \ |
>> | 4 \ | 6 \ |
>> 11----12-----13
>> | \ 1 | \ 3 |
>> | \ | \ |
>> | 0 \ | 2 \ |
>> 8------9------10
>>
>> Which results in the following DM:
>>
>> DM Object: 2 MPI processes
>> type: plex
>> DM_0x84000004_0 in 2 dimensions:
>> 0-cells: 9 0
>> 2-cells: 8 0
>> Labels:
>> marker: 1 strata of sizes (8)
>> depth: 2 strata of sizes (9, 8)
>>
>> I proceed by interpolating this DM:
>>
>> DM Object: 2 MPI processes
>> type: plex
>> DM_0x84000004_1 in 2 dimensions:
>> 0-cells: 9 0
>> 1-cells: 16 0
>> 2-cells: 8 0
>> Labels:
>> marker: 1 strata of sizes (16)
>> depth: 3 strata of sizes (9, 16, 8)
>>
>> Then distributing across 2 processors:
>>
>> DM Object:Parallel Mesh 2 MPI processes
>> type: plex
>> Parallel Mesh in 2 dimensions:
>> 0-cells: 6 6
>> 1-cells: 9 9
>> 2-cells: 4 4
>> Labels:
>> marker: 1 strata of sizes (9)
>> depth: 3 strata of sizes (6, 9, 4)
>>
>> I have the option of uniformly refining the mesh here but I choose not to
>> for now. If my dofs are vertex based, then the global size of my DM vector
>> is 9 and the local sizes for ranks 0 and 1 are 3 and 6 respectively.
>> However, if I choose to uninterpolate the mesh by calling
>> DMPlexUninterpolate(...), I get this:
>>
>> DM Object: 2 MPI processes
>> type: plex
>> DM_0x84000004_2 in 2 dimensions:
>> 0-cells: 6 6
>> 2-cells: 4 4
>> Labels:
>> marker: 1 strata of sizes (5)
>> depth: 2 strata of sizes (6, 4)
>>
>> And the global size of my DM vector becomes 12 and the local size for
>> both ranks is 6. It looks like the ghost points in rank 0 have been
>> duplicated, which is not suppose to happen.
>>
>> Is there a way to capture the ghost point information when
>> uninterpolating the DM?
>>
>> Thanks,
>>
>> --
>> Justin Chang
>> PhD Candidate, Civil Engineering - Computational Sciences
>> University of Houston, Department of Civil and Environmental Engineering
>> Houston, TX 77004
>> (512) 963-3262
>>
>
>
>
> --
> 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
>
--
Justin Chang
PhD Candidate, Civil Engineering - Computational Sciences
University of Houston, Department of Civil and Environmental Engineering
Houston, TX 77004
(512) 963-3262
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150413/261e61b9/attachment-0001.html>
More information about the petsc-users
mailing list