<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<br>
<div class="moz-cite-prefix">On 15/11/2017 11:39, Matthew Knepley
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAMYG4G=PuzkduMe8AA5s=bpareJ-iC+UgsbyMZ=ZJudu0ONO=Q@mail.gmail.com">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Wed, Nov 15, 2017 at 3:11 AM,
Matteo Semplice <span dir="ltr"><<a
href="mailto:matteo.semplice@unito.it" target="_blank"
moz-do-not-send="true">matteo.semplice@unito.it</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">Hi.<br>
<br>
I am struggling with indices into matrices associated to a
DMPLex mesh. I can explain my problem to the following
minimal example.<br>
<br>
Let's say I want to assemble the matrix to solve an
equation (say Laplace) with data attached to cells and the
finite volume method. In principle I<br>
<br>
- loop over the faces of the DMPlex (height=1)<br>
<br>
- for each face, find neighbouring cells (say points i and
j in the DMPlex) and compute the contributions coming from
that face (in the example it would be something like
(u_j-u_i)*<x_j-x_i,n> with x=centroids, n=scaled
normal to face and <,> the inner product)<br>
<br>
- insert the contributions +/-<x_j-x_i,n> in
rows/columns n(i) and n(j) of the matrix where n(k) is the
index into Vec/Mat of the unknown associated to the k-th
cell<br>
<br>
My problem is how to find out n(k). I assume that the
Section should be able to tell me, but I cannot find the
correct function to call. I see that FEM methods can use
DMPlexMatSetClosure but here we'd need a
DMPlexMatSetCone...<br>
</blockquote>
<div><br>
</div>
<div>Everything always reduces to raw Section calls. For
instance, for cell c</div>
<div><br>
</div>
<div> PetscSectionGetDof(sec, c, &dof);</div>
<div> PetscSectionGetOffset(sec, c, &off);</div>
<div><br>
</div>
<div>give the number of degrees of freedom on the cell, and
the offset into storage (a local vector for the local
section, and global vector for the global section).</div>
<div>The Closure stuff just calls this for every point in
the closure.</div>
</div>
</div>
</div>
</blockquote>
<br>
All right, so the offset is also the (global) index and that is to
be used in calls to MatSetValues.<br>
<br>
Thanks a lot!<br>
<br>
Matteo<br>
</body>
</html>