<div dir="ltr">This is a Matt question, but You can set a "Boundary" label (<a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMPLEX/DMPlexMarkBoundaryFaces.html">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMPLEX/DMPlexMarkBoundaryFaces.html</a>) and that will label boundaries.<div>Next you want the dual of that ...</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 11, 2021 at 12:44 AM Adrian Croucher <<a href="mailto:a.croucher@auckland.ac.nz">a.croucher@auckland.ac.nz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">hi<br>
<br>
I have a DMPlex in a finite volume simulation and I want to create a Vec <br>
containing flux data only on the mesh faces where fluxes are computed <br>
(e.g. not on closed boundaries). Basically these are all the faces with <br>
support size 2 (aside from some complications related to boundary <br>
conditions).<br>
<br>
To do this I clone the DM using DMClone() and create a section on it <br>
with DMPlexCreateSection(), passing in a label which has value 1 on all <br>
the required faces. The problem then consists of labelling the <br>
appropriate faces.<br>
<br>
The tricky part is that when a face exists on more than one process, you <br>
have to make sure it has the same label value on all processes, <br>
otherwise an error results when you try and create a global vector on <br>
the DM. Because I distribute the DMPlex with overlap = 1, a face can <br>
have different support sizes on different processes.<br>
<br>
So on each process, I need to label a face if it has support size 2 on <br>
*any* process.<br>
<br>
Would it be possible to use PetscSFBcast and the point SF from <br>
DMGetPointSF() to somehow broadcast the support sizes? Or is there a <br>
simpler way?<br>
<br>
- Adrian<br>
<br>
-- <br>
Dr Adrian Croucher<br>
Senior Research Fellow<br>
Department of Engineering Science<br>
University of Auckland, New Zealand<br>
email: <a href="mailto:a.croucher@auckland.ac.nz" target="_blank">a.croucher@auckland.ac.nz</a><br>
tel: +64 (0)9 923 4611<br>
<br>
</blockquote></div>