On 07/03/2021 22:56, Matthew Knepley wrote:
On Sun, Mar 7, 2021 at 4:51 PM Nicolas Barral
<[email protected]
<mailto:[email protected]>> wrote:
On 07/03/2021 22:30, Matthew Knepley wrote:
> On Sun, Mar 7, 2021 at 4:13 PM Nicolas Barral
> <[email protected]
<mailto:[email protected]>
> <mailto:[email protected]
<mailto:[email protected]>>> wrote:
>
> On 07/03/2021 16:54, Matthew Knepley wrote:
> > On Sun, Mar 7, 2021 at 8:52 AM Nicolas Barral
> > <[email protected]
<mailto:[email protected]>
> <mailto:[email protected]
<mailto:[email protected]>>
> > <mailto:[email protected]
<mailto:[email protected]>
> <mailto:[email protected]
<mailto:[email protected]>>>> wrote:
> >
> > Matt,
> >
> > Thanks for your answer.
> >
> > However, DMPlexComputeCellGeometryFVM does not compute
what I
> need
> > (normals of height 1 entities). I can't find any
function doing
> > that, is
> > there one ?
> >
> >
> > The normal[] in DMPlexComputeCellGeometryFVM() is exactly what
> you want.
> > What does not look right to you?
>
>
> So it turns out it's not what I want because I need
non-normalized
> normals. It doesn't seem like I can easily retrieve the norm,
can I?
>
>
> You just want area-weighted normals I think, which means that you
just
> multiply by the area,
> which comes back in the same function.
>
Ah by the area times 2, of course, my bad.
Do you order height-1 elements in a certain way ? I need to access the
facet (resp. edge) opposite to a vertex in a tet (resp. triangle).
Yes. Now that I have pretty much settled on it, I will put it in the
manual. It is currently here:
https://gitlab.com/petsc/petsc/-/blob/main/src/dm/impls/plex/plexinterpolate.c#L56
All normals are outward facing, but hopefully the ordering in the sourse
file makes sense.
Thanks Matt, but I'm not sure I understand well. What I do so far is:
ierr = DMPlexGetCone(dm, c, &cone);CHKERRQ(ierr);
for (i=0; i<dim+1; ++i) {
f = cone[i];
ierr = DMPlexComputeCellGeometryFVM(dm, f, &area, NULL,
&vn[i*dim]);CHKERRQ(ierr);
if (dim == 3) { area *= 2; }
for (j=0; j<dim; ++j) { vn[i*dim+j] *= area; }
So in 3D, it seems that:
(vn[9],vn[10],vn[11]) is the inward normal to the facet opposing vertex0
(vn[6],vn[7],vn[8]) " " 1
(vn[3],vn[4],vn[5]) " " 2
(vn[0],vn[1],vn[2]) " " 3
in 2D:
(vn[2],vn[3]) is a normal to the edge opposing vertex 0
(vn[4],vn[5]) " " 1
(vn[0],vn[1]) " " 2
Yet in 2D, whether the normals are inward or outward does not seem
consistent across elements.
What am I wrongly assuming ?
Thanks,
--
Nicolas
Thanks,
Matt
Thanks
--
Nicolas
> Thanks,
>
> Matt
>
> If not, I'll fallback to computing them by hand for now. Is the
> following assumption safe or do I have to use
DMPlexGetOrientedFace?
> > if I call P0P1P2P3 a tet and note x the cross product,
> > P3P2xP3P1 is the outward normal to face P1P2P3
> > P0P2xP0P3 " P0P2P3
> > P3P1xP3P0 " P0P1P3
> > P0P1xP0P2 " P0P1P2
>
> Thanks
>
> --
> Nicolas
> >
> > Thanks,
> >
> > Matt
> >
> > So far I've been doing it by hand, and after a lot of
> experimenting the
> > past weeks, it seems that if I call P0P1P2P3 a tetrahedron
> and note x
> > the cross product,
> > P3P2xP3P1 is the outward normal to face P1P2P3
> > P0P2xP0P3 " P0P2P3
> > P3P1xP3P0 " P0P1P3
> > P0P1xP0P2 " P0P1P2
> > Have I been lucky but can't expect it to be true ?
> >
> > (Alternatively, there is a link between the normals
and the
> element
> > Jacobian, but I don't know the formula and can find them)
> >
> >
> > Thanks,
> >
> > --
> > Nicolas
> >
> > On 08/02/2021 15:19, Matthew Knepley wrote:
> > > On Mon, Feb 8, 2021 at 6:01 AM Nicolas Barral
> > > <[email protected]
<mailto:[email protected]>
> <mailto:[email protected]
<mailto:[email protected]>>
> > <mailto:[email protected]
<mailto:[email protected]>
> <mailto:[email protected]
<mailto:[email protected]>>>
> > > <mailto:[email protected]
<mailto:[email protected]>
> <mailto:[email protected]
<mailto:[email protected]>>
> > <mailto:[email protected]
<mailto:[email protected]>
> <mailto:[email protected]
<mailto:[email protected]>>>>> wrote:
> > >
> > > Hi all,
> > >
> > > Can I make any assumption on the orientation of
triangular
> > facets in a
> > > tetrahedral plex ? I need the inward facet
normals. Do
> I need
> > to use
> > > DMPlexGetOrientedFace or can I rely on either
the tet
> vertices
> > > ordering,
> > > or the faces ordering ? Could
> DMPlexGetRawFaces_Internal be
> > enough ?
> > >
> > >
> > > You can do it by hand, but you have to account for
the face
> > orientation
> > > relative to the cell. That is what
> > > DMPlexGetOrientedFace() does. I think it would be
easier
> to use the
> > > function below.
> > >
> > > Alternatively, is there a function that
computes the
> normals
> > - without
> > > bringing out the big guns ?
> > >
> > >
> > > This will compute the normals
> > >
> > >
> >
>
https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMPLEX/DMPlexComputeCellGeometryFVM.html
> > > Should not be too heavy weight.
> > >
> > > THanks,
> > >
> > > Matt
> > >
> > > 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/>
>
>
>
> --
> 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/>