[petsc-users] petsc4py/Plex createSection

Matthew Knepley knepley at gmail.com
Sat Mar 28 12:13:41 CDT 2020


On Sat, Mar 28, 2020 at 1:06 PM Nicolas Barral <
nicolas.barral at math.u-bordeaux.fr> wrote:

> Thanks Matt!
>
> with your explanation I realized it was actually one line above in the
> test. It seems that you can just specify the number of fields with:
> self.plex.setNumFields(1)
>

Great find. I need to figure out where to put that in the documentation.

  Thanks,

    MAtt


> Thanks,
>
> --
> Nicolas
>
> On 28/03/2020 17:15, Matthew Knepley wrote:
> > On Sat, Mar 28, 2020 at 10:04 AM Nicolas Barral
> > <nicolas.barral at math.u-bordeaux.fr
> > <mailto:nicolas.barral at math.u-bordeaux.fr>> wrote:
> >
> >     All,
> >
> >     I hope you're all safe and fine.
> >
> >     My question may be due to me being rusty with dmplex, please forgive
> me
> >
> >
> > Hi Nicolas! I hope everything is good Bordeaux despite the lockdown.
> >
> > I think I know this one. I put in support for having fields that extend
> > over only part of the mesh, which some
> > users really needed. This means that the DM has a description of fields
> > independent from the DS and Section.
> > Thus we have to ask the DM how many fields it has when creating the
> > Section automatically now. I think you
> > can fix this by first telling the DM that it has one field:
> >
> >    field = PETSc.Object()
> >    field.setName('potential')
> >    dm.addField(field)
> >    <createSection>
> >
> >    Thanks,
> >
> >       Matt
> >
> >     if I missed something obvious...
> >     In my Firedrake code, I had the following line for a 2D mesh
> >      > section = createSection([1], [2, 0, 0],
> perm=mesh._plex_renumbering)
> >     where mesh._plex_renumbering was an IS containing the mesh
> renumbering.
> >     This created a nice section mapping the plex to a P1 field.
> >
> >     However, with a recently installed Petsc/petsc4py, this does not work
> >     anymore and results in a section pointing all points of the plex to
> 0.
> >     I investigated a bit (although I don't understand the doc for this
> >     function), and found a similar construction in petsc4py
> >     test/test_dmplex.py in 1D:
> >      > DIM = 1
> >      > CELLS = [[0, 1], [1, 2]]
> >      > COORDS = [[0.], [0.5], [1.]]
> >      > COMP = 1
> >      > DOFS = [1, 0]
> >      >
> >      > plex = PETSc.DMPlex().createFromCellList(DIM, CELLS, COORDS)
> >      > section = plex.createSection([COMP], [DOFS])
> >      > plex.view()
> >      > section.view()
> >
> >     This also results in an empty section (which makes the test fail
> when I
> >     run it manually):
> >      > PetscSection Object: 1 MPI processes
> >      >   type not yet set
> >      > Process 0:
> >      >   (   0) dim  0 offset   0
> >      >   (   1) dim  0 offset   0
> >      >   (   2) dim  0 offset   0
> >      >   (   3) dim  0 offset   0
> >      >   (   4) dim  0 offset   0
> >
> >     So, what did I miss ?
> >
> >     Thanks,
> >
> >     --
> >     Nicolas
> >
> >
> >
> > --
> > 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/>
>


-- 
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/20200328/26cee4d2/attachment.html>


More information about the petsc-users mailing list