<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
<div style="color: rgb(33, 33, 33); background-color: rgb(255, 255, 255); text-align: left;" dir="auto">
What Nicolas wants is pretty common in DG, and the quantity is available as just the cross product of the two vectors of the facet Jacobian.  Computing it the way you suggest is kind of a backward reconstruction.</div>
<div id="ms-outlook-mobile-signature">
<div><br>
</div>
Toby Isaac, Assistant Professor, GTCSE</div>
<div id="id-e1f3ff82-47e2-492b-b84d-00e73cc5c24d" class="ms-outlook-mobile-reference-message">
<div style="font-family: sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><br>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg"><strong>From:</strong> petsc-users <petsc-users-bounces@mcs.anl.gov> on behalf of Matthew Knepley <knepley@gmail.com><br>
<strong>Sent:</strong> Monday, March 8, 2021, 09:56<br>
<strong>To:</strong> Nicolas Barral<br>
<strong>Cc:</strong> PETSc<br>
<strong>Subject:</strong> Re: [petsc-users] DMPlex tetrahedra facets orientation<br>
</div>
<br>
<meta content="text/html; charset=us-ascii">
<div dir="ltr">
<div dir="ltr">On Mon, Mar 8, 2021 at 4:02 AM Nicolas Barral <<a href="mailto:nicolas.barral@math.u-bordeaux.fr">nicolas.barral@math.u-bordeaux.fr</a>> wrote:<br>
</div>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
On 07/03/2021 22:56, Matthew Knepley wrote:<br>
> On Sun, Mar 7, 2021 at 4:51 PM Nicolas Barral <br>
> <<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>
<br>
> <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>>> wrote:<br>
> <br>
> <br>
>     On 07/03/2021 22:30, Matthew Knepley wrote:<br>
>      > On Sun, Mar 7, 2021 at 4:13 PM Nicolas Barral<br>
>      > <<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>><br>
>      > <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>>>> wrote:<br>
>      ><br>
>      >     On 07/03/2021 16:54, Matthew Knepley wrote:<br>
>      >      > On Sun, Mar 7, 2021 at 8:52 AM Nicolas Barral<br>
>      >      > <<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>><br>
>      >     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>>><br>
>      >      > <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>><br>
>      >     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>>>>> wrote:<br>
>      >      ><br>
>      >      >     Matt,<br>
>      >      ><br>
>      >      >     Thanks for your answer.<br>
>      >      ><br>
>      >      >     However, DMPlexComputeCellGeometryFVM does not compute<br>
>     what I<br>
>      >     need<br>
>      >      >     (normals of height 1 entities). I can't find any<br>
>     function doing<br>
>      >      >     that, is<br>
>      >      >     there one ?<br>
>      >      ><br>
>      >      ><br>
>      >      > The normal[] in DMPlexComputeCellGeometryFVM() is exactly what<br>
>      >     you want.<br>
>      >      > What does not look right to you?<br>
>      ><br>
>      ><br>
>      >     So it turns out it's not what I want because I need<br>
>     non-normalized<br>
>      >     normals. It doesn't seem like I can easily retrieve the norm,<br>
>     can I?<br>
>      ><br>
>      ><br>
>      > You just want area-weighted normals I think, which means that you<br>
>     just<br>
>      > multiply by the area,<br>
>      > which comes back in the same function.<br>
>      ><br>
> <br>
>     Ah by the area times 2, of course, my bad.<br>
>     Do you order height-1 elements in a certain way ? I need to access the<br>
>     facet (resp. edge) opposite to a vertex in a tet (resp. triangle).<br>
> <br>
> <br>
> Yes. Now that I have pretty much settled on it, I will put it in the <br>
> manual. It is currently here:<br>
> <br>
> <a href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.com%2Fpetsc%2Fpetsc%2F-%2Fblob%2Fmain%2Fsrc%2Fdm%2Fimpls%2Fplex%2Fplexinterpolate.c%23L56&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599336310%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Ri17JMapieeD7CJm8BfQNLkQ0V00WG6IFgCLtsNNKbM%3D&reserved=0" originalsrc="https://gitlab.com/petsc/petsc/-/blob/main/src/dm/impls/plex/plexinterpolate.c#L56" shash="rwww+mq7Q/pqN+t6ijMLIKTSnwEDa1V3yhKLsoxfN/bg6BqVGzaKzll8K5MSt+tMFehfVwoubcb6x7Tw/OdeRYMYW0V+y2QM2SLgkLlG2nlnOyRbadKf48aRPgoA8cELQV9V4GmH6tZUfPxW00/wjAp2mZJqYdvfSJHjFyvNvQM=" rel="noreferrer" target="_blank">
https://gitlab.com/petsc/petsc/-/blob/main/src/dm/impls/plex/plexinterpolate.c#L56</a><br>
> <br>
> All normals are outward facing, but hopefully the ordering in the sourse <br>
> file makes sense.<br>
<br>
Thanks Matt, but I'm not sure I understand well. What I do so far is:<br>
<br>
ierr = DMPlexGetCone(dm, c, &cone);CHKERRQ(ierr);<br>
   for (i=0; i<dim+1; ++i) {<br>
     f = cone[i];<br>
     ierr = DMPlexComputeCellGeometryFVM(dm, f, &area, NULL, <br>
&vn[i*dim]);CHKERRQ(ierr);<br>
     if (dim == 3) { area *= 2; }<br>
     for (j=0; j<dim; ++j) { vn[i*dim+j] *= area; }<br>
<br>
So in 3D, it seems that:<br>
(vn[9],vn[10],vn[11]) is the inward normal to the facet opposing vertex0<br>
(vn[6],vn[7],vn[8])             "                    "                 1<br>
(vn[3],vn[4],vn[5])             "                    "                 2<br>
(vn[0],vn[1],vn[2])             "                    "                 3<br>
<br>
in 2D:<br>
(vn[2],vn[3]) is a normal to the edge opposing vertex 0<br>
(vn[4],vn[5])          "                  "           1<br>
(vn[0],vn[1])          "                  "           2<br>
Yet in 2D, whether the normals are inward or outward does not seem <br>
consistent across elements.<br>
<br>
What am I wrongly assuming ?<br>
</blockquote>
<div><br>
</div>
<div>Ah, I see the problem. I probably need another function. You can tell that not many people use Plex this way yet.</div>
<div>The logic for what you want is embedded my traversal, but it simple:</div>
<div><br>
</div>
<div>ierr = DMPlexGetConeSize(dm, c, &coneSize);CHKERRQ(ierr);<br>
ierr = DMPlexGetCone(dm, c, &cone);CHKERRQ(ierr);<br>
ierr = DMPlexGetConeOrientation(dm, c, &ornt);CHKERRQ(ierr);<br>
   for (i=0; i<coneSize; ++i) {<br>
     f = cone[i];</div>
<div>     flip = ornt[i] >= 0 ? 1 : -1;<br>
     ierr = DMPlexComputeCellGeometryFVM(dm, f, &area, NULL, &vn[i*dim]);CHKERRQ(ierr);<br>
     if (dim == 3) { area *= 2; }<br>
     for (j=0; j<dim; ++j) { vn[i*dim+j] *= area * flip; }<br>
</div>
<div> </div>
<div>I could make a function that returns all normals, properly oriented. It would just do this.</div>
<div><br>
</div>
<div>  Thanks,</div>
<div><br>
</div>
<div>     Matt</div>
<div><br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
Thanks,<br>
<br>
-- <br>
Nicolas<br>
<br>
> <br>
>    Thanks,<br>
> <br>
>      Matt<br>
> <br>
>     Thanks<br>
> <br>
>     -- <br>
>     Nicolas<br>
> <br>
> <br>
>      >    Thanks,<br>
>      ><br>
>      >      Matt<br>
>      ><br>
>      >     If not, I'll fallback to computing them by hand for now. Is the<br>
>      >     following assumption safe or do I have to use<br>
>     DMPlexGetOrientedFace?<br>
>      >       >  if I call P0P1P2P3 a tet and note x the cross product,<br>
>      >       >  P3P2xP3P1 is the outward normal to face P1P2P3<br>
>      >       >  P0P2xP0P3              "                P0P2P3<br>
>      >       >  P3P1xP3P0              "                P0P1P3<br>
>      >       >  P0P1xP0P2              "                P0P1P2<br>
>      ><br>
>      >     Thanks<br>
>      ><br>
>      >     --<br>
>      >     Nicolas<br>
>      >      ><br>
>      >      >    Thanks,<br>
>      >      ><br>
>      >      >      Matt<br>
>      >      ><br>
>      >      >     So far I've been doing it by hand, and after a lot of<br>
>      >     experimenting the<br>
>      >      >     past weeks, it seems that if I call P0P1P2P3 a tetrahedron<br>
>      >     and note x<br>
>      >      >     the cross product,<br>
>      >      >     P3P2xP3P1 is the outward normal to face P1P2P3<br>
>      >      >     P0P2xP0P3              "                P0P2P3<br>
>      >      >     P3P1xP3P0              "                P0P1P3<br>
>      >      >     P0P1xP0P2              "                P0P1P2<br>
>      >      >     Have I been lucky but can't expect it to be true ?<br>
>      >      ><br>
>      >      >     (Alternatively, there is a link between the normals<br>
>     and the<br>
>      >     element<br>
>      >      >     Jacobian, but I don't know the formula and can  find them)<br>
>      >      ><br>
>      >      ><br>
>      >      >     Thanks,<br>
>      >      ><br>
>      >      >     --<br>
>      >      >     Nicolas<br>
>      >      ><br>
>      >      >     On 08/02/2021 15:19, Matthew Knepley wrote:<br>
>      >      >      > On Mon, Feb 8, 2021 at 6:01 AM Nicolas Barral<br>
>      >      >      > <<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>><br>
>      >     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>>><br>
>      >      >     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>><br>
>      >     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>>>><br>
>      >      >      > <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>><br>
>      >     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>>><br>
>      >      >     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>><br>
>      >     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a><br>
>     <mailto:<a href="mailto:nicolas.barral@math.u-bordeaux.fr" target="_blank">nicolas.barral@math.u-bordeaux.fr</a>>>>>> wrote:<br>
>      >      >      ><br>
>      >      >      >     Hi all,<br>
>      >      >      ><br>
>      >      >      >     Can I make any assumption on the orientation of<br>
>     triangular<br>
>      >      >     facets in a<br>
>      >      >      >     tetrahedral plex ? I need the inward facet<br>
>     normals. Do<br>
>      >     I need<br>
>      >      >     to use<br>
>      >      >      >     DMPlexGetOrientedFace or can I rely on either<br>
>     the tet<br>
>      >     vertices<br>
>      >      >      >     ordering,<br>
>      >      >      >     or the faces ordering ? Could<br>
>      >     DMPlexGetRawFaces_Internal be<br>
>      >      >     enough ?<br>
>      >      >      ><br>
>      >      >      ><br>
>      >      >      > You can do it by hand, but you have to account for<br>
>     the face<br>
>      >      >     orientation<br>
>      >      >      > relative to the cell. That is what<br>
>      >      >      > DMPlexGetOrientedFace() does. I think it would be<br>
>     easier<br>
>      >     to use the<br>
>      >      >      > function below.<br>
>      >      >      ><br>
>      >      >      >     Alternatively, is there a function that<br>
>     computes the<br>
>      >     normals<br>
>      >      >     - without<br>
>      >      >      >     bringing out the big guns ?<br>
>      >      >      ><br>
>      >      >      ><br>
>      >      >      > This will compute the normals<br>
>      >      >      ><br>
>      >      >      ><br>
>      >      ><br>
>      ><br>
>     <a href="https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.mcs.anl.gov%2Fpetsc%2Fpetsc-current%2Fdocs%2Fmanualpages%2FDMPLEX%2FDMPlexComputeCellGeometryFVM.html&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599346300%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ut9h%2Bj4CWdc0JHHVCH1ZiM5ryR3M%2BJTEry2gfnSQuWI%3D&reserved=0" originalsrc="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMPLEX/DMPlexComputeCellGeometryFVM.html" shash="jk/sbUKHacMZ8CGdEddHRNpMcc0cEOKxiXFzdrD18jO1xwk8nSsu1zC9Px3VuJemMr+62+3EZDod8fjk+wSaPSHPxwB9CbxKfEg2k3x1GIQrGU9fJuAZyi9awQnRlfBdifOr7fMtOUz4BOHSt9DOMZSIcFwiLE+DvG0r6TBvqdA=" rel="noreferrer" target="_blank">https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMPLEX/DMPlexComputeCellGeometryFVM.html</a><br>
>      >      >      > Should not be too heavy weight.<br>
>      >      >      ><br>
>      >      >      >    THanks,<br>
>      >      >      ><br>
>      >      >      >      Matt<br>
>      >      >      ><br>
>      >      >      >     Thanks<br>
>      >      >      ><br>
>      >      >      >     --<br>
>      >      >      >     Nicolas<br>
>      >      >      ><br>
>      >      >      ><br>
>      >      >      ><br>
>      >      >      > --<br>
>      >      >      > What most experimenters take for granted before<br>
>     they begin<br>
>      >     their<br>
>      >      >      > experiments is infinitely more interesting than any<br>
>      >     results to which<br>
>      >      >      > their experiments lead.<br>
>      >      >      > -- Norbert Wiener<br>
>      >      >      ><br>
>      >      >      > <a href="https://nam12.safelinks.protection.outlook.com/?url=https:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599346300%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=K%2BiksJEah9OWRTKBmN5V%2BuhGcbpq7%2BcOGj7f4ROR%2Fu4%3D&reserved=0" originalsrc="https://www.cse.buffalo.edu/~knepley/" shash="ixwQVDb5LiG44pb5ASZ7fShhiff/0VmSazaF/ngPFoPTMawH0JtwL6TZ01PeQIHeqstnOYJ9lOtPb9+QbWYJLQt4Ap4Bm3aa2YEgndl4N0/KmeoMRTp+PJmRONBijAlg5cEKXUWCCfN4ovMIxVbMCxvXlH6yK6I9J6oe/gB1CZo=" rel="noreferrer" target="_blank">
https://www.cse.buffalo.edu/~knepley/</a><br>
>      >      >     <<a href="https://nam12.safelinks.protection.outlook.com/?url=http:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599356300%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=auAm0U9Q7TWyqYSWAs8zSjbIAk20DycTMk5ICVKEVik%3D&reserved=0" originalsrc="http://www.cse.buffalo.edu/~knepley/" shash="NkqKgamHILYU+fcpotg8qBFp54Qy+4DPFR2A2szzfyzefpvDMdQLRr86dmrOHTdfHIMJf5h9qycFk34Pb4AxgXRcpNiW6SQP4/zyRah/zwCFJxXiJao7t5khMdfXRTzmHLIwqPGqAODStEXqdJdBZDrIKURy/mXAjItzj3u6yk8=" rel="noreferrer" target="_blank">http://www.cse.buffalo.edu/~knepley/</a>><br>
>      >      ><br>
>      >      ><br>
>      >      ><br>
>      >      > --<br>
>      >      > What most experimenters take for granted before they begin<br>
>     their<br>
>      >      > experiments is infinitely more interesting than any<br>
>     results to which<br>
>      >      > their experiments lead.<br>
>      >      > -- Norbert Wiener<br>
>      >      ><br>
>      >      > <a href="https://nam12.safelinks.protection.outlook.com/?url=https:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599356300%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ViZdydtMchq0A0ue%2FAaFBnvjo5ZGU37x7Q%2BPGG0%2F9pM%3D&reserved=0" originalsrc="https://www.cse.buffalo.edu/~knepley/" shash="uMvFLya0qIoFIiI+MMr2dnnaJQ06OgWwbUmGbqloxKeeRB40Nmwi292Y5MVeiSJlRn0Q3uHV+Z0moMpHVu9KsrwnJURNaw0MU9RiGO2VORKlnheOWmSCj2hN44UcVwGhrsECuIl0m+cUkuNIhruflgLLDYbYdc2AXBXQjfKyPdI=" rel="noreferrer" target="_blank">
https://www.cse.buffalo.edu/~knepley/</a><br>
>      >     <<a href="https://nam12.safelinks.protection.outlook.com/?url=http:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599366290%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=JSvoNaYHiClCWi4my4TharBR4J5SgV82Dydvjpq9%2FDU%3D&reserved=0" originalsrc="http://www.cse.buffalo.edu/~knepley/" shash="H6qRxD2ACKM+ickn4BHujPDCN701IBGtHDyRwZ0q/2uaJzPd0a16lT3nDXsqcGK1HiAX2NzRNIMvV2BR4OBWNOFm5Wp/Rz/sU2++jcOR22jGQ9+6FN4hEQRukbuROJAMdXrr9qjfjM7xz5bTr9hDSbEmuirGyL2KrBNhOMtutr0=" rel="noreferrer" target="_blank">http://www.cse.buffalo.edu/~knepley/</a>><br>
>      ><br>
>      ><br>
>      ><br>
>      > --<br>
>      > What most experimenters take for granted before they begin their<br>
>      > experiments is infinitely more interesting than any results to which<br>
>      > their experiments lead.<br>
>      > -- Norbert Wiener<br>
>      ><br>
>      > <a href="https://nam12.safelinks.protection.outlook.com/?url=https:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599366290%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=L%2FE8H2yjaHb0y2xexhjcz0CY9psrLdDNv1mmuuTCgcU%3D&reserved=0" originalsrc="https://www.cse.buffalo.edu/~knepley/" shash="cap3fkrLKIDF48lM3rYW0AYMQuHuBtqpmc3ff1BTVW/1ZfYMlpcRPv8Jxi6iCQm2rbVs+pV9iKaAx67zXPw1AsydZqiiPkAZFxJevqqUdq5RCDSvo6GIb+O0pu8VbJ6WDgYyjeXtF+QpVxCirHwlclW8NzFiDd0bvBqffZoofcs=" rel="noreferrer" target="_blank">
https://www.cse.buffalo.edu/~knepley/</a><br>
>     <<a href="https://nam12.safelinks.protection.outlook.com/?url=http:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599376285%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=SYp%2BRkQx8aVp%2BtJvvfzqSi8nnDvd9ezxh2kEtiRyLSY%3D&reserved=0" originalsrc="http://www.cse.buffalo.edu/~knepley/" shash="pjWer/zWk6RI5Ato9xSjQFSDi9Hmvh6VCCrNANTlUQEFuiKcc9qIG5p3GBTM2udlic5X0P4h1BA2VrEqL05TtPWA5JlpTYmWuVLR0Dj7LXq/WIaIOeiI6/ieMLk6VqsyJWo87JzcQQ2N/Et8m+FNA30J+cj+mFkM12tznrCIu80=" rel="noreferrer" target="_blank">http://www.cse.buffalo.edu/~knepley/</a>><br>
> <br>
> <br>
> <br>
> -- <br>
> What most experimenters take for granted before they begin their <br>
> experiments is infinitely more interesting than any results to which <br>
> their experiments lead.<br>
> -- Norbert Wiener<br>
> <br>
> <a href="https://nam12.safelinks.protection.outlook.com/?url=https:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599376285%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=vwTodVxb3WpSg1SSgyQcBEzWq6PwOGfy1usuDAf%2FjZg%3D&reserved=0" originalsrc="https://www.cse.buffalo.edu/~knepley/" shash="zUfCezwL7T255JS2I9nCB7hH9IJxG7N5e3Wt4/G+J2pfEcdJIoZbw1jkDvroDf5TPuDv4mHRG8Kq9AVc2AQ2MU3U9u7tyCpTKwLozi7pzSgo4RfANlSYpGYdxt3IhFBhLUPvwzQ7qQsK6bNTtCTOmpYRT/OM3fT31lieSQgD0uE=" rel="noreferrer" target="_blank">
https://www.cse.buffalo.edu/~knepley/</a> <<a href="https://nam12.safelinks.protection.outlook.com/?url=http:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599376285%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=SYp%2BRkQx8aVp%2BtJvvfzqSi8nnDvd9ezxh2kEtiRyLSY%3D&reserved=0" originalsrc="http://www.cse.buffalo.edu/~knepley/" shash="pjWer/zWk6RI5Ato9xSjQFSDi9Hmvh6VCCrNANTlUQEFuiKcc9qIG5p3GBTM2udlic5X0P4h1BA2VrEqL05TtPWA5JlpTYmWuVLR0Dj7LXq/WIaIOeiI6/ieMLk6VqsyJWo87JzcQQ2N/Et8m+FNA30J+cj+mFkM12tznrCIu80=" rel="noreferrer" target="_blank">http://www.cse.buffalo.edu/~knepley/</a>><br>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr" class="gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener</div>
<div><br>
</div>
<div><a href="https://nam12.safelinks.protection.outlook.com/?url=http:%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Ctisaac%40cc.gatech.edu%7Cfc7c2a129127412423eb08d8e2424867%7C482198bbae7b4b258b7a6d7f32faa083%7C0%7C0%7C637508121599386283%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Za%2Fud4xn%2FTbDAWv3jtZJgGaRvp5PevATTO2XdkLISzw%3D&reserved=0" originalsrc="http://www.cse.buffalo.edu/~knepley/" shash="pzFi5M0krXGZ2SIbYESRuYYyDvV2t6ZyoI4xx5xhQoRsqwxvzlCuzO3VntL5s6gHW7K264mFfokpkEQjqbFZ3r3XIrtJVg1qUyjdBN3DDlsvu9KhwPhrsF2lmCVKXSOLCz2x0XOgXhlVDd6qzHm0oSyXS4FYvjs5A3kWhbLOc7Y=" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
</div>
</body>
</html>