<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" 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>
Best,<br>
Matteo<br>
<br>
<div class="moz-cite-prefix">On 30/11/2017 13:46, Matthew Knepley
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAMYG4G=QH2=i0HEsoxZsmAkDC3-1J+wdQZ2Rh=maefergHbMFw@mail.gmail.com">
<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"
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">
<div text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<br>
<div class="m_-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 class="">On Wed, Nov
29, 2017 at 2:26 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: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"
moz-do-not-send="true">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 class="">
<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_signature" data-smartmail="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/%7Emk51/"
target="_blank" moz-do-not-send="true">https://www.cse.buffalo.edu/~knepley/</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
</body>
</html>