<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Feb 24, 2016 at 7:47 AM, Julian Andrej <span dir="ltr"><<a href="mailto:juan@tf.uni-kiel.de" target="_blank">juan@tf.uni-kiel.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'm now using the petsc git master branch.<br>
<br>
I tried adding my code to the ex12<br>
<br>
  DM dm_mass;<br>
  PetscDS prob_mass;<br>
  PetscFE fe;<br>
  Mat M;<br>
  PetscFECreateDefault(dm, user.dim, 1, PETSC_TRUE, NULL, -1, &fe);<br>
<br>
  DMClone(dm, &dm_mass);<br>
  DMGetDS(dm_mass, &prob_mass);<br>
  PetscDSSetDiscretization(prob_mass, 0, (PetscObject) fe);<br>
  PetscDSSetJacobian(prob_mass, 0, 0, mass_kernel, NULL, NULL, NULL);<br>
  DMCreateMatrix(dm_mass, &M);<br>
<br>
  MatSetOptionsPrefix(M, "M_";)<br>
<br>
and receive the error on running<br>
./exe -interpolate -refinement_limit 0.0125 -petscspace_order 2 -M_mat_view binary<br>
<br>
WARNING! There are options you set that were not used!<br>
WARNING! could be spelling mistake, etc!<br>
Option left: name:-M_mat_view value: binary<br>
<br>
I don't know if the matrix is actually there and assembled or if the option is ommitted because something is wrong.<br></blockquote><div><br></div><div>Its difficult to know when I cannot see the whole code. You can always insert</div><div><br></div><div>  MatViewFromOptions(M, NULL, "-mat_view");</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Using<br>
MatView(M, PETSC_VIEWER_STDOUT_WORLD);<br>
<br>
gives me a reasonable output to stdout.<br></blockquote><div><br></div><div>Good.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
But saving the matrix and analysing it in matlab, results in an all zero matrix.<br>
<br>
PetscViewerBinaryOpen(PETSC_COMM_WORLD, "Mout",FILE_MODE_WRITE, &viewer);<br>
MatView(M, viewer);<br></blockquote><div><br></div><div>I cannot explain this, but it has to be something like you are viewing the matrix before it is</div><div>actually assembled. Feel free to send the code. It sounds like it is mostly working.</div><div><br></div><div>  Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Any hints?<br>
<br>
<br>
On <a href="tel:24.02.2016%2013" value="+12402201613" target="_blank">24.02.2016 13</a>:58, Matthew Knepley wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Wed, Feb 24, 2016 at 6:47 AM, Julian Andrej <<a href="mailto:juan@tf.uni-kiel.de" target="_blank">juan@tf.uni-kiel.de</a><br>
<mailto:<a href="mailto:juan@tf.uni-kiel.de" target="_blank">juan@tf.uni-kiel.de</a>>> wrote:<br>
<br>
    Hi,<br>
<br>
    i'm trying to assemble a mass matrix with the PetscFE/DMPlex<br>
    interface. I found something in the examples of TAO<br>
<br>
    <a href="https://bitbucket.org/petsc/petsc/src/da8116b0e8d067e39fd79740a8a864b0fe207998/src/tao/examples/tutorials/ex3.c?at=master&fileviewer=file-view-default" rel="noreferrer" target="_blank">https://bitbucket.org/petsc/petsc/src/da8116b0e8d067e39fd79740a8a864b0fe207998/src/tao/examples/tutorials/ex3.c?at=master&fileviewer=file-view-default</a><br>
<br>
    but using the lines<br>
<br>
    DMClone(dm, &dm_mass);<br>
    DMSetNumFields(dm_mass, 1);<br>
    DMPlexCopyCoordinates(dm, dm_mass);<br>
    DMGetDS(dm_mass, &prob_mass);<br>
    PetscDSSetJacobian(prob_mass, 0, 0, mass_kernel, NULL, NULL, NULL);<br>
    PetscDSSetDiscretization(prob_mass, 0, (PetscObject) fe);<br>
    DMPlexSNESComputeJacobianFEM(dm_mass, u, M, M, NULL);<br>
    DMCreateMatrix(dm_mass, &M);<br>
<br>
    leads to errors in DMPlexSNESComputeJacobianFEM (u is a global vector).<br>
<br>
    I don't can understand the necessary commands until<br>
    DMPlexSNESComputeJacobianFEM. What does it do and why is it<br>
    necessary? (especially why does the naming involve SNES?)<br>
<br>
    Is there another/easier/better way to create a mass matrix (the<br>
    inner product of the function space and the test space)?<br>
<br>
<br>
1) That example needs updating. First, look at SNES ex12 which is up to<br>
date.<br>
<br>
2) I assume you are using 3.6. If you use the development version, you<br>
can remove DMPlexCopyCoordinates().<br>
<br>
3) You need to create the matrix BEFORE calling the assembly<br>
<br>
4) Always always always send the entire error messge<br>
<br>
   Matt<br>
<br>
    Regards<br>
    Julian Andrej<br>
<br>
<br>
<br><span class="HOEnZb"><font color="#888888">
<br>
--<br>
What most experimenters take for granted before they begin their<br>
experiments is infinitely more interesting than any results to which<br>
their experiments lead.<br>
-- Norbert Wiener<br>
</font></span></blockquote>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">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></div>