<div dir="ltr"><div dir="ltr">On Mon, May 20, 2019 at 12:51 PM Swarnava Ghosh <<a href="mailto:swarnava89@gmail.com">swarnava89@gmail.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Barry and Matt,<div><br></div><div>Maybe try building by hand in a DMNetwork using a handrawn mesh with just a few vertices and endless and see if what you want to do makes sense</div><div>> Okay, will try to do that. Do you have any DMNetwork example which I could follow.</div><div><br></div><div><div>I think DMNetwork is not buying you anything here. It seems to make more sense to do it directly in Plex.</div><div>You can easily lay down a P1 element for each field so that you can interpolate wherever you want.</div><div>> Okay, then will it be possible to do vertex partitioning with plex? Essentially two processes can share an element but not vertex.</div></div></div></blockquote><div><br></div><div>We can worry about that when everything works. Some things are easy but that breaks a lot of the model, so it</div><div>unclear what all would have to change in order to do what you want. The partitioning of vertices, however, is trivial.</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"><div dir="ltr"><div><div>I would start from a clean example, such as SNES ex17. That solves elasticity, so it has multiple fields and FEM.</div><div>The change is that you don't want to use any of the assembly functions, so you keep the code that does data layout</div><div>and FEM discretization, but it ignore the residual/Jacobian stuff. Feel free to ask about using the lower-level</div><div>interpolation stuff which is not as documented.</div></div><div>>Thanks for pointing out the reference. Could you please share the functions for interpolation?</div></div></blockquote><div><br></div><div>There are at least two ways to do it:</div><div><br></div><div>  1) Locally: DMPlexEvaluateFieldJets_Internal() or DMFieldEvaluate() which is newer</div><div><br></div><div>  2) Globally: <a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/DMInterpolationEvaluate.html">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/DMInterpolationEvaluate.html</a></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"><div dir="ltr"><div>Sincerely,</div><div>SG</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 20, 2019 at 4:02 AM Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</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"><div dir="ltr"><div dir="ltr">On Mon, May 20, 2019 at 3:05 AM Swarnava Ghosh via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Barry,<div><br></div><div>Thank you for your email. My planned discretization is based on the fact that I need a distributed unstructured mesh, where at each vertex point I perform local calculations. For these calculations, I do NOT need need to assemble any global matrix. I will have fields defined at the vertices, and using linear interpolation, I am planing to find the values of these fields at some spatial points with are within a ball around each vertex. Once the values of these fields are known within the compact support around each vertex, I do local computations to calculate my unknown field. My reason for having the a mesh is essentially to 1) define fields at the vertices and 2) perform linear interpolation (using finite elements) at some spatial points. Also the local computations around at each vertex is computationally the most expensive step. In that case, having a cell partitioning will result in vertices being shared among processes, which will result in redundant computations. </div><div><br></div><div>My idea is therefore to have DMNetwork to distribute vertices across processes and use finite elements for the linear interpolation part.<br></div></div></blockquote><div><br></div><div>I think DMNetwork is not buying you anything here. It seems to make more sense to do it directly in Plex.</div><div>You can easily lay down a P1 element for each field so that you can interpolate wherever you want.</div><div><br></div><div>I would start from a clean example, such as SNES ex17. That solves elasticity, so it has multiple fields and FEM.</div><div>The change is that you don't want to use any of the assembly functions, so you keep the code that does data layout</div><div>and FEM discretization, but it ignore the residual/Jacobian stuff. Feel free to ask about using the lower-level</div><div>interpolation stuff which is not as documented.</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"><div dir="ltr"><div></div><div>Thanks,</div><div>SG</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, May 19, 2019 at 6:54 PM Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</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"><br>
  I am not sure you want DMNetwork, DMNetwork has no geometry; it only has vertices and edges. Vertices are connected to other vertices through the edges. For example I can't see how one would do vertex centered finite volume methods with DMNetwork. Maybe if you said something more about your planned discretization we could figure something out.<br>
<br>
> On May 19, 2019, at 8:32 PM, Swarnava Ghosh <<a href="mailto:swarnava89@gmail.com" target="_blank">swarnava89@gmail.com</a>> wrote:<br>
> <br>
> Hi Barry,<br>
> <br>
> No, the gmesh file contains a mesh and not a graph/network.<br>
> In that case, is it possible to create a DMNetwork first from the DMPlex and then distribute the DMNetwork.<br>
> <br>
> I have this case, because I want a vertex partitioning of my mesh. Domain decomposition of DMPlex gives me cell partitioning. Essentially what I want is that no two processes can share a vertex BUT that can share an edge. Similar to how a DMDA is distributed.<br>
> <br>
> Thanks,<br>
> Swarnava<br>
> <br>
> On Sun, May 19, 2019 at 4:50 PM Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>> wrote:<br>
> <br>
>    This use case never occurred to us. Is the gmesh file containing a graph/network (as opposed to a mesh)? There seem two choices<br>
> <br>
> 1) if the gmesh file contains a graph/network one could write a gmesh reader for that case that reads directly for and constructs a DMNetwork or<br>
> <br>
> 2) write a converter for a DMPlex to DMNetwork. <br>
> <br>
>    I lean toward the first<br>
> <br>
>    Either way you need to understand the documentation for DMNetwork and how to build one up.<br>
> <br>
> <br>
>    Barry<br>
> <br>
> <br>
> > On May 19, 2019, at 6:34 PM, Swarnava Ghosh via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:<br>
> > <br>
> > Hi Petsc users and developers,<br>
> > <br>
> > I am trying to find a way of creating a DMNetwork from a DMPlex. I have read the DMPlex from a gmesh file and have it distributed.<br>
> > <br>
> > Thanks,<br>
> > SG<br>
> <br>
<br>
</blockquote></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_-2181059992867850956gmail-m_2402057317972640342gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><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.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>
</blockquote></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><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.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>