[petsc-users] Mass matrix with PetscFE

Julian Andrej juan at tf.uni-kiel.de
Wed Feb 24 08:03:59 CST 2016


Thanks Matt,

I attached the modified example.

the corresponding code (and only changes to ex12) is starting at line 832.

It also seems that the mass matrix is of size 169x169 and the stiffness 
matrix is of dimension 225x225. I'd assume that if i multiply test and 
trial function i'd get a matrix of same size (if the space/quadrature is 
the same for the stiffness matrix)

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


More information about the petsc-users mailing list