<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Dec 1, 2017 at 5:50 AM, Matteo Semplice <span dir="ltr"><<a href="mailto:matteo.semplice@unito.it" target="_blank">matteo.semplice@unito.it</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">
<div bgcolor="#FFFFFF">
<p>Thanks for the fix!</p>
<p>(If you need a volunteer for testing the bug-fix, drop me a line)<br>
</p>
</div></blockquote><div>Cool. Its in next, and in </div><div><br></div><div> <a href="https://bitbucket.org/petsc/petsc/branch/knepley/fix-plex-fvm-adjacency">https://bitbucket.org/petsc/petsc/branch/knepley/fix-plex-fvm-adjacency</a></div><div><br></div><div> Thanks,</div><div><br></div><div> Matt</div><div> <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 bgcolor="#FFFFFF">Best,<br>
Matteo<div><div class="gmail-h5"><br>
<br>
<div class="gmail-m_1051752934641907621moz-cite-prefix">On 30/11/2017 13:46, Matthew Knepley
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Thanks for finding this bug. I guess no one has
been making matrices with FVM. I will fix this internally, but
here
<div>is a workaround which makes the code go for now.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Wed, Nov 29, 2017 at 6:36 AM, Matteo
Semplice <span dir="ltr"><<a href="mailto:matteo.semplice@unito.it" target="_blank">matteo.semplice@unito.it</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">
<div bgcolor="#FFFFFF">
<p><br>
</p>
<br>
<div class="gmail-m_1051752934641907621m_-3237254272824140482moz-cite-prefix">On
29/11/2017 12:46, Matthew Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote"><span>On Wed, Nov
29, 2017 at 2:26 AM, Matteo Semplice <span dir="ltr"><<a href="mailto:matteo.semplice@unito.it" target="_blank">matteo.semplice@unito.it</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">
<div bgcolor="#FFFFFF"> On 25/11/2017 02:05,
Matthew Knepley wrote:<br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Fri, Nov
24, 2017 at 4:21 PM, Matteo Semplice
<span dir="ltr"><<a href="mailto:matteo.semplice@unito.it" target="_blank">matteo.semplice@unito.it</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">Hi.<br>
<br>
The manual for DMCreateMatrix says
"Notes: This properly preallocates
the number of nonzeros in the
sparse matrix so you do not need
to do it yourself", so I got the
impression that one does not need
to call the preallocation routine
for the matrix and indeed in most
examples listed in the manual page
for DMCreateMatrix this is not
done or (KSP tutorial ex4) it is
called declaring 0 entries per
row.<br>
<br>
However, if read in a mesh in a
DMPlex ore create a DMDA and then
call DMCreateMatrix, the resulting
matrix errors out when I call
MatSetValues. I have currently
followed the suggestion of the
error message and call
MatSetOption(A,
MAT_NEW_NONZERO_ALLOCATION_ERR<wbr>,
PETSC_FALSE), but I'd like to fix
this properly.<br>
</blockquote>
<div><br>
</div>
<div>It sounds like your nonzero
pattern does not obey the
topology. What nonzero pattern are
you trying to input?</div>
</div>
</div>
</div>
</blockquote>
<br>
Hi.<br>
<br>
The problem with the DMDA was a bug in
our code. Sorry for the noise.<br>
<br>
On the other hand, with the DMPLex, I still
experience problems. It's a FV code and I
reduced it to the case of the simple case of
a laplacian operator: I need non-diagonal
entries at (i,j) if cell i and cell j have a
common face. <br>
Here below is my code that reads in a grid
of 4 cells (unit square divided by the
diagonals), create a section with 1 dof per
cell, creates a matrix and assembles it.</div>
</blockquote>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF"><tt><br>
</tt><tt> ierr =
DMPlexCreateFromFile(PETSC_COM<wbr>M_WORLD,
"square1.msh", PETSC_TRUE,
&dm);CHKERRQ(ierr);</tt></div>
</blockquote>
<div><br>
</div>
</span>
<div>Can you show me the mesh?</div>
<div><br>
</div>
<div> ierr = DMViewFromOptions(dm, NULL,
"-dm_view");CHKERRQ(ierr);</div>
<div><br>
</div>
<div>and then run with -dm_view
::ascii_info_detail</div>
<span>
<div><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 bgcolor="#FFFFFF"><tt><br>
</tt><tt> ierr =
DMPlexSetAdjacencyUseCone(dm, PETSC_TRUE);
CHKERRQ(ierr);</tt><tt><br>
</tt><tt> ierr =
DMPlexSetAdjacencyUseClosure(d<wbr>m,
PETSC_FALSE); CHKERRQ(ierr);</tt></div>
</blockquote>
<div><br>
</div>
</span>
<div>This looks like the right FVM adjacency, but
your matrix is diagonal it appears below. TS
ex11</div>
<div>has an identical call, but produces the
correct matrix, which is why I want to look at
your mesh.</div>
</div>
</div>
</div>
</blockquote>
<br>
I have put the DMViewFromOptions call after the
SetAdjacency calls and this is the output:<br>
<br>
<tt>matteo@signalkuppe:~/software/<wbr>petscMplex$
./mplexMatrix -dm_view ::ascii_info_detail</tt><tt><br>
</tt><tt>DM Object: 1 MPI processes</tt><tt><br>
</tt><tt> type: plex</tt><tt><br>
</tt><tt>Mesh 'DM_0x557496ad8380_0':</tt><tt><br>
</tt><tt>orientation is missing</tt><tt><br>
</tt><tt>cap --> base:</tt><tt><br>
</tt><tt>[0] Max sizes cone: 3 support: 4</tt><tt><br>
</tt><tt>[0]: 4 ----> 9</tt><tt><br>
</tt><tt>[0]: 4 ----> 11</tt><tt><br>
</tt><tt>[0]: 4 ----> 12</tt><tt><br>
</tt><tt>[0]: 5 ----> 10</tt><tt><br>
</tt><tt>[0]: 5 ----> 11</tt><tt><br>
</tt><tt>[0]: 5 ----> 15</tt><tt><br>
</tt><tt>[0]: 6 ----> 14</tt><tt><br>
</tt><tt>[0]: 6 ----> 15</tt><tt><br>
</tt><tt>[0]: 6 ----> 16</tt><tt><br>
</tt><tt>[0]: 7 ----> 12</tt><tt><br>
</tt><tt>[0]: 7 ----> 13</tt><tt><br>
</tt><tt>[0]: 7 ----> 16</tt><tt><br>
</tt><tt>[0]: 8 ----> 9</tt><tt><br>
</tt><tt>[0]: 8 ----> 10</tt><tt><br>
</tt><tt>[0]: 8 ----> 13</tt><tt><br>
</tt><tt>[0]: 8 ----> 14</tt><tt><br>
</tt><tt>[0]: 9 ----> 0</tt><tt><br>
</tt><tt>[0]: 9 ----> 1</tt><tt><br>
</tt><tt>[0]: 10 ----> 0</tt><tt><br>
</tt><tt>[0]: 10 ----> 2</tt><tt><br>
</tt><tt>[0]: 11 ----> 0</tt><tt><br>
</tt><tt>[0]: 12 ----> 1</tt><tt><br>
</tt><tt>[0]: 13 ----> 1</tt><tt><br>
</tt><tt>[0]: 13 ----> 3</tt><tt><br>
</tt><tt>[0]: 14 ----> 2</tt><tt><br>
</tt><tt>[0]: 14 ----> 3</tt><tt><br>
</tt><tt>[0]: 15 ----> 2</tt><tt><br>
</tt><tt>[0]: 16 ----> 3</tt><tt><br>
</tt><tt>base <-- cap:</tt><tt><br>
</tt><tt>[0]: 0 <---- 9 (0)</tt><tt><br>
</tt><tt>[0]: 0 <---- 10 (0)</tt><tt><br>
</tt><tt>[0]: 0 <---- 11 (0)</tt><tt><br>
</tt><tt>[0]: 1 <---- 12 (0)</tt><tt><br>
</tt><tt>[0]: 1 <---- 13 (0)</tt><tt><br>
</tt><tt>[0]: 1 <---- 9 (-2)</tt><tt><br>
</tt><tt>[0]: 2 <---- 10 (-2)</tt><tt><br>
</tt><tt>[0]: 2 <---- 14 (0)</tt><tt><br>
</tt><tt>[0]: 2 <---- 15 (0)</tt><tt><br>
</tt><tt>[0]: 3 <---- 14 (-2)</tt><tt><br>
</tt><tt>[0]: 3 <---- 13 (-2)</tt><tt><br>
</tt><tt>[0]: 3 <---- 16 (0)</tt><tt><br>
</tt><tt>[0]: 9 <---- 4 (0)</tt><tt><br>
</tt><tt>[0]: 9 <---- 8 (0)</tt><tt><br>
</tt><tt>[0]: 10 <---- 8 (0)</tt><tt><br>
</tt><tt>[0]: 10 <---- 5 (0)</tt><tt><br>
</tt><tt>[0]: 11 <---- 5 (0)</tt><tt><br>
</tt><tt>[0]: 11 <---- 4 (0)</tt><tt><br>
</tt><tt>[0]: 12 <---- 4 (0)</tt><tt><br>
</tt><tt>[0]: 12 <---- 7 (0)</tt><tt><br>
</tt><tt>[0]: 13 <---- 7 (0)</tt><tt><br>
</tt><tt>[0]: 13 <---- 8 (0)</tt><tt><br>
</tt><tt>[0]: 14 <---- 8 (0)</tt><tt><br>
</tt><tt>[0]: 14 <---- 6 (0)</tt><tt><br>
</tt><tt>[0]: 15 <---- 6 (0)</tt><tt><br>
</tt><tt>[0]: 15 <---- 5 (0)</tt><tt><br>
</tt><tt>[0]: 16 <---- 7 (0)</tt><tt><br>
</tt><tt>[0]: 16 <---- 6 (0)</tt><tt><br>
</tt><tt>coordinates with 1 fields</tt><tt><br>
</tt><tt> field 0 with 2 components</tt><tt><br>
</tt><tt>Process 0:</tt><tt><br>
</tt><tt> ( 4) dim 2 offset 0 0. 0.</tt><tt><br>
</tt><tt> ( 5) dim 2 offset 2 0. 1.</tt><tt><br>
</tt><tt> ( 6) dim 2 offset 4 1. 1.</tt><tt><br>
</tt><tt> ( 7) dim 2 offset 6 1. 0.</tt><tt><br>
</tt><tt> ( 8) dim 2 offset 8 0.5 0.5</tt><tt><br>
</tt><br>
For the records, the mesh is loaded from the (gmsh
generated) file<br>
<br>
<tt>==== square1.msh =====</tt><tt><br>
</tt><tt>$MeshFormat</tt><tt><br>
</tt><tt>2.2 0 8</tt><tt><br>
</tt><tt>$EndMeshFormat</tt><tt><br>
</tt><tt>$Nodes</tt><tt><br>
</tt><tt>5</tt><tt><br>
</tt><tt>1 0 0 0</tt><tt><br>
</tt><tt>2 0 1 0</tt><tt><br>
</tt><tt>3 1 1 0</tt><tt><br>
</tt><tt>4 1 0 0</tt><tt><br>
</tt><tt>5 0.5 0.5 0</tt><tt><br>
</tt><tt>$EndNodes</tt><tt><br>
</tt><tt>$Elements</tt><tt><br>
</tt><tt>12</tt><tt><br>
</tt><tt>1 15 2 0 1 1</tt><tt><br>
</tt><tt>2 15 2 0 2 2</tt><tt><br>
</tt><tt>3 15 2 0 3 3</tt><tt><br>
</tt><tt>4 15 2 0 4 4</tt><tt><br>
</tt><tt>5 1 2 0 1 4 3</tt><tt><br>
</tt><tt>6 1 2 0 2 3 2</tt><tt><br>
</tt><tt>7 1 2 0 3 2 1</tt><tt><br>
</tt><tt>8 1 2 0 4 1 4</tt><tt><br>
</tt><tt>9 2 2 0 6 1 5 2</tt><tt><br>
</tt><tt>10 2 2 0 6 1 4 5</tt><tt><br>
</tt><tt>11 2 2 0 6 2 5 3</tt><tt><br>
</tt><tt>12 2 2 0 6 3 5 4</tt><tt><br>
</tt><tt>$EndElements</tt><tt><br>
</tt><tt>===================</tt><tt><br>
</tt><br>
Thanks,<br>
Matteo<br>
<br>
<br>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="gmail-m_1051752934641907621gmail_signature">
<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.caam.rice.edu/%7Emk51/" target="_blank">https://www.cse.buffalo.edu/~<wbr>knepley/</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><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.caam.rice.edu/~mk51/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div>
</div></div>