[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