<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, May 25, 2017 at 1:38 PM, Lawrence Mitchell <span dir="ltr"><<a href="mailto:lawrence.mitchell@imperial.ac.uk" target="_blank">lawrence.mitchell@imperial.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><br>
> On 25 May 2017, at 19:23, Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> wrote:<br>
><br>
> Ok, let me clarify.<br>
><br>
> Given shared facets, I'd like closure(support(facet)) this is a subset of the fem adjacency. "Add in the cell and its closure from the remote rank". This doesn't include remote cells I can only see through vertices. Without sending data evaluated at facet quad points, I think this is the adjacency I need to compute facet integrals: all the dofs in closure(support(facet)).<br>
><br>
> This seems incoherent to me. For FV, dofs reside in the cells, so you should only need the cell for adjacency. If you<br>
> need dofs defined at vertices, then you should also need cells which are only attached by vertices. How could this<br>
> scheme be consistent without this?<br>
<br>
</span>OK, so what I think is this:<br>
<br>
I need to compute integrals over cells and facets.<br></blockquote><div><br></div><div>Sounds like DG. I will get out my dead chicken for the incantation.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
So I do:<br>
<br>
GlobalToLocal(INSERT_VALUES)<br>
ComputeIntegralsOnOwnedEntitie<wbr>s<br>
LocalToGlobal(ADD_VALUES)<br>
<br>
That way, an integration is performed on every entity exactly once, and LocalToGlobal ensures that I get a consistent assembled Vec.<br>
<br>
OK, so if I only compute cell integrals, then the zero overlap distribution with all the points in the closure of the cell (including some remote points) is sufficient.<br></blockquote><div><br></div><div>Yep.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
If I compute facet integrals, I need both cells (and their closure) in the support of the facet.  Again, each facet is only integrated by one process, and the LocalToGlobal adds in contributions to remote dofs.  This is the same as cell integrals, just I need a bit more data, no?<br>
<br>
The other option is to notice that what I actually need when I compute a facet integral is the test function and/or any coefficients evaluated at quadrature points on the facet.  So if I don't want the extra overlapped halo, then what I need to do is for the remote process to evaluate any coefficients at the quad points, then send the evaluated data to the facet owner.  Now the facet owner can compute the integral, and again LocalToGlobal adds in contributions to remote dofs.</blockquote><div><br></div><div>That seems baroque. So this is just another adjacency pattern. You should be able to easily define it, or if you are a patient person,</div><div>wait for me to do it. Its here</div><div><br></div><div>  <a href="https://bitbucket.org/petsc/petsc/src/01c3230e040078628f5e559992965c1c4b6f473d/src/dm/impls/plex/plexdistribute.c?at=master&fileviewer=file-view-default#plexdistribute.c-239">https://bitbucket.org/petsc/petsc/src/01c3230e040078628f5e559992965c1c4b6f473d/src/dm/impls/plex/plexdistribute.c?at=master&fileviewer=file-view-default#plexdistribute.c-239</a></div><div><br></div><div>I am more than willing to make this overridable by the user through function composition or another mechanism.</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-HOEnZb"><font color="#888888"><br>
Lawrence</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.caam.rice.edu/~mk51/" target="_blank">http://www.caam.rice.edu/~mk51/</a><br></div></div></div>
</div></div>