[petsc-users] DMPLEX project function error

Matthew Knepley knepley at gmail.com
Fri Oct 12 15:36:27 CDT 2018


On Fri, Oct 12, 2018 at 3:51 PM Ellen M. Price <ellen.price at cfa.harvard.edu>
wrote:

> Hi Matt,
>
> Basically, I have a simple meshing script that generates a set of points
> for my FEM mesh and outputs a C file that compiles into my program.
> Along with those points is a static data field that I need to be
> associated with the correct data point. I don't have a function that
> evaluates at each point, it's just pre-generated data.
>

I cannot help but make editorial comments. Do not do this. It is incredibly
fragile, since
it depends on both a mesh and a discretization.


> Since I called DMPlexDistribute() early on, I think my mesh points get
> re-ordered, right? So I need a way to re-order my data field to match
> that ordering. Is there a good way to do this?
>

However, if you want to do this, it is not hard. You do use
DMPlexDistributeField (
https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMPLEX/DMPlexDistributeField.html),
but you need
to be careful about the arguments. You want

   DMPlexDistribute(dmOriginal, 0, &migrationSF, &dmNew);
   DMPlexDistributeField(dmOriginal, migrationSF, originalSection,
originalVec, newSection, newVec);

Your Sections are easy to make, just put 1 dof on every vertex. The
originalVec is just a Vec of your values
(you can use VecCreateSeqWithArray() to wrap one around it), and the newVec
you can get with
DMCreateLocalVector(dmNew, &newVec) if you do DMSetSection(dmNew,
newSection).

Does this make sense?

  Thanks,

     Matt


> I tried using DMPlexDistributeField as a first attempt, but I get some
> kind of error no matter what I do (presumably I'm not giving the right
> input), and there aren't any examples in the docs.
>
> Ellen
>
>
> On 10/12/2018 11:31 AM, Matthew Knepley wrote:
> > On Fri, Oct 12, 2018 at 11:12 AM Ellen M. Price
> > <ellen.price at cfa.harvard.edu <mailto:ellen.price at cfa.harvard.edu>>
> wrote:
> >
> >     So I found *that* problem -- turns out that using DMPlexCreateSection
> >     was messing things up, and it seems PETSc is handling that part
> >     internally?
> >
> >
> > DMPlexSection creates the Section based on the discretization
> > information in the DM (stored in a PetscDS).
> > If no discretization info is available, then it defaults to P0 I think,
> > which is what you got.
> >
> > After discretization info is put into the DM, if I ask for the Section,
> > the DM will create it automatically if it is missing.
> >
> >
> >     However, I've run into a related problem now. I need to
> >     project some field data onto the mesh; it's a static array of
> >     integration weights, and each one corresponds to a single point in
> the
> >     mesh. Based on this answer:
> >
> >
> https://lists.mcs.anl.gov/pipermail/petsc-users/2015-December/027964.html
> >
> >     I think I need DMPlexDistributeField.
> >
> >
> > I don't think that is what you want.  That is just sending data around.
> >
> > You want to define an FEM field. We use DMProject*() for this. These
> > take as input either
> > a function of the coordinates (regular function) or another FEM field.
> >
> > Can you tell me how your function is defined? I mean apart from the
> > particular data you
> > have at points.
> >
> >   Thanks,
> >
> >      Matt
> >
> >
> >     However, *that* function takes a
> >     section as an argument, and I had to take out the part where I
> create a
> >     section to get things working!  Calling DMGetDefaultSection or
> >     DMGetDefaultGlobalSection doesn't seem to help matters, either,
> because
> >     then I seem to get a null section?
> >
> >     So I either need to figure out how to set the section properly or
> how to
> >     get the section properly. As always, any help is appreciated.
> >
> >     Ellen
> >
> >
> >     On 10/11/2018 05:41 PM, Matthew Knepley wrote:
> >     > On Thu, Oct 11, 2018 at 4:39 PM Ellen M. Price
> >     > <ellen.price at cfa.harvard.edu <mailto:ellen.price at cfa.harvard.edu>
> >     <mailto:ellen.price at cfa.harvard.edu
> >     <mailto:ellen.price at cfa.harvard.edu>>> wrote:
> >     >
> >     >     I was working with a DMPLEX and FEM, following SNES example
> >     12. I get
> >     >     the following error when I call DMProjectFunction, but I don't
> >     know what
> >     >     it means. Can anyone explain where I might have gone wrong, or
> >     at least
> >     >     what this error is telling me? I think the point closure size
> is
> >     >     correct, since my mesh is 3d simplex,
> >     >
> >     >
> >     > Yes, if you have 3D SIMPLEX mesh and are using P1 elements, then
> you
> >     > would have
> >     > 4 dofs in the closure of a cell. The dual space dimension is the
> >     number
> >     > of dual space
> >     > basis vectors assigned to points in the closure. Since it is 1, it
> >     looks
> >     > like you have a P0
> >     > dual space. I assume you changed something in ex12?
> >     >
> >     >   Thanks,
> >     >
> >     >      Matt
> >     >
> >     >
> >     >     but what is the dual space
> >     >     dimension, and where might I have set it incorrectly?
> >     >
> >     >     [0]PETSC ERROR: Nonconforming object sizes
> >     >     [0]PETSC ERROR: The section point closure size 4 != dual space
> >     >     dimension 1
> >     >     [0]PETSC ERROR: See
> >     http://www.mcs.anl.gov/petsc/documentation/faq.html
> >     >     for trouble shooting.
> >     >     [0]PETSC ERROR: Petsc Release Version 3.9.2, May, 20, 2018
> >     >     ...
> >     >     [0]PETSC ERROR: Configure options
> >     >     --prefix=/home/eprice/software/petsc-opt --with-hdf5=1
> >     >     --with-hdf5-dir=/home/eprice/software/hdf5-parallel
> --with-mpe=1
> >     >     --with-mpe-dir=/home/eprice/software/mpe --with-debugging=0
> >     >     LDFLAGS="-pthread -lz" COPTFLAGS="-O3 -march=native
> -mtune=native"
> >     >     CXXOPTFLAGS="-O3 -march=native -mtune=native" FOPTFLAGS="-O3
> >     >     -march=native -mtune=native" --with-mpi=1
> >     >     --with-mpi-dir=/home/eprice/software/mpich --with-mumps=1
> >     >     --with-mumps-dir=/home/eprice/software/mumps --with-parmetis=1
> >     >     --with-parmetis-dir=/home/eprice/software/parmetis
> --with-metis=1
> >     >     --with-metis-dir=/home/eprice/software/parmetis
> --with-ptscotch=1
> >     >     --with-ptscotch-dir=/home/eprice/software/scotch
> >     --with-scalapack=1
> >     >     --with-scalapack-dir=/home/eprice/software/scalapack
> >     >     [0]PETSC ERROR: #1 DMProjectLocal_Generic_Plex() line 347 in
> >     >     /h/sabriel0/src/petsc-3.9.2/src/dm/impls/plex/plexproject.c
> >     >     [0]PETSC ERROR: #2 DMProjectFunctionLocal_Plex() line 428 in
> >     >     /h/sabriel0/src/petsc-3.9.2/src/dm/impls/plex/plexproject.c
> >     >     [0]PETSC ERROR: #3 DMProjectFunctionLocal() line 6265 in
> >     >     /h/sabriel0/src/petsc-3.9.2/src/dm/interface/dm.c
> >     >     [0]PETSC ERROR: #4 DMProjectFunction() line 6250 in
> >     >     /h/sabriel0/src/petsc-3.9.2/src/dm/interface/dm.c
> >     >     ...
> >     >
> >     >     (I know this is an optimized PETSc build, but I get the same
> >     error from
> >     >     my debug build, it's just much slower.)
> >     >
> >     >     Ellen
> >     >
> >     >
> >     >
> >     > --
> >     > 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
> >     >
> >     > https://www.cse.buffalo.edu/~knepley/
> >     <https://www.cse.buffalo.edu/%7Eknepley/>
> >     > <http://www.cse.buffalo.edu/%7Eknepley/>
> >
> >
> >
> > --
> > 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
> >
> > https://www.cse.buffalo.edu/~knepley/
> > <http://www.cse.buffalo.edu/%7Eknepley/>
>


-- 
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

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20181012/a5ad0f34/attachment-0001.html>


More information about the petsc-users mailing list