<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
p.xmsonormal, li.xmsonormal, div.xmsonormal
        {mso-style-name:x_msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.xxapple-converted-space
        {mso-style-name:x_xapple-converted-space;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word;-webkit-nbsp-mode: space;line-break:after-white-space">
<div class="WordSection1">
<p class="MsoNormal">Barry, <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">That is exactly the case, I only have work dofs for passing flux variables. The variables that actually matter for the solution are only on the edges. Works completely correctly in that case as far as I can tell.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Your example is very interesting. Is this intended to be fixed so that DMNetwork can handle these cases or is not an intended usage?
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Even for our case with traffic flow it would be very convenient to be handle multi-edged graphs.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best, <o:p></o:p></p>
<p class="MsoNormal">Aidan <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Barry Smith <bsmith@petsc.dev><br>
<b>Date: </b>Thursday, December 2, 2021 at 5:07 PM<br>
<b>To: </b>Zhang, Hong <hzhang@mcs.anl.gov><br>
<b>Cc: </b>For users of the development version of PETSc <petsc-dev@mcs.anl.gov>, Sundermann, Rylee Edwin - SDSU Student <rylee.sundermann@jacks.sdstate.edu>, Hamilton, Aidan <ahamilton@anl.gov><br>
<b>Subject: </b>Re: [petsc-dev] DMPLEX cannot support two different edges for the same two vertices, hence DMPLEX cannot?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">  Aiden,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">    Do you have true degrees of freedom on both the edges and the vertices? If only have edge variables and no vertex variables but only use "work" values on vertices than maybe DMNETWORK might behave as you need. But my trivial example
 defintely shows a problem with only edge vertex variables. The DMPLEX object believes there are more than two vertices when there are only two because it cannot determine that some vertices are actually the same.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">  Barry<o:p></o:p></p>
<div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Dec 2, 2021, at 5:31 PM, Zhang, Hong via petsc-dev <<a href="mailto:petsc-dev@mcs.anl.gov">petsc-dev@mcs.anl.gov</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">All,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">I'm forwarding Aidan's comments on this issue (see below). Aidan has done extensive study on DMPlex and has been working on hyperbolic flow applications. <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Satish:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Please add Aidan to petsc-dev mailing list.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Hong<o:p></o:p></span></p>
</div>
<div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="font-size:13.5pt;font-family:Helvetica">
<hr size="2" width="1110" style="width:832.75pt" align="center">
</span></div>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b>From:</b><span class="apple-converted-space"> </span>Aidan Hamilton <<a href="mailto:aidan@udel.edu">aidan@udel.edu</a>><br>
<b>Sent:</b><span class="apple-converted-space"> </span>Thursday, December 2, 2021 2:34 PM<br>
<b>To:</b><span class="apple-converted-space"> </span>Zhang, Hong <<a href="mailto:hzhang@mcs.anl.gov">hzhang@mcs.anl.gov</a>><br>
<b>Cc:</b><span class="apple-converted-space"> </span>Sundermann, Rylee Edwin - SDSU Student <<a href="mailto:rylee.sundermann@jacks.sdstate.edu">rylee.sundermann@jacks.sdstate.edu</a>><br>
<b>Subject:</b><span class="apple-converted-space"> </span>Re: [petsc-dev] DMPLEX cannot support two different edges for the same two vertices, hence DMPLEX cannot?<span style="font-size:13.5pt;font-family:Helvetica"><o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:Helvetica"> <o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">Hong,<span class="apple-converted-space"> </span><o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">I am not on petsc-dev, I guess I should be. Also you can push, you’re always free to push changes.<o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">And it doesn’t matter for anything on my end. Each edge is distinct topological entity, so I have the directed graph<o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">V0 ---- E0 -<span style="font-family:Symbol">à</span><span class="apple-converted-space"> </span>V1   ----- E1 ----<span style="font-family:Symbol">à</span><span class="apple-converted-space"> </span>V0<o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">I don’t need any special identification. And it works in parallel with globaltolocal seemingly working . Now this is not a standard graph, it follows the more general notion of directed graph, see Diestel page 25, that allows for multi-edges.<o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">Now for my case I don’t need to distinguish  between the two edges at all beyond each one having their own unique edge id. In all of our use cases for traffic I don’t think we need to care (and honestly I’m not sure if Shri actually needs
 to care either).<o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">Now we do have the topological distinction of direction for all of our graphs, which we can use to assign direction to traffic flow. And that will always work. And this notion of direction is the only distinction we need to care about,
 and we have it.<o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">It’s worth noting that a CW-Complex does support this notion of multiedges, no reason for it not to, so DMPlex should be supporting its topological operations with this case in mind.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">If DMplex can’t support this then dmplex isn’t doing what it claims it does.<span class="apple-converted-space"> </span><o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">As long as you as the user know that you are dealing with a multi-edge graph, I don’t see why there would be any issues. Any topological query of a multi-edge graph should behave as you would expect a multi-edge graph to behave, though
 it may behave differently than single edge graphs, as long as you are aware of the difference when you code your residuals and other functions on dmnetwork it should be fine.<o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">Best,<span class="apple-converted-space"> </span><o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<p class="MsoNormal">Aidan<span class="apple-converted-space"> </span><o:p></o:p></p>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="xmsonormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:0in">
<b><span style="font-size:12.0pt">From:<span class="apple-converted-space"> </span></span></b><span style="font-size:12.0pt">Zhang, Hong <<a href="mailto:hzhang@mcs.anl.gov">hzhang@mcs.anl.gov</a>><br>
<b>Date:<span class="apple-converted-space"> </span></b>Thursday, December 2, 2021 at 1:56 PM<br>
<b>To:<span class="apple-converted-space"> </span></b>Aidan Hamilton <<a href="mailto:aidan@udel.edu">aidan@udel.edu</a>><br>
<b>Cc:<span class="apple-converted-space"> </span></b>Sundermann, Rylee Edwin - SDSU Student <<a href="mailto:rylee.sundermann@jacks.sdstate.edu">rylee.sundermann@jacks.sdstate.edu</a>><br>
<b>Subject:<span class="apple-converted-space"> </span></b>Fw: [petsc-dev] DMPLEX cannot support two different edges for the same two vertices, hence DMPLEX cannot?</span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Aidan,</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Are you on petsc-dev email list? </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">How do you distinguish two parallel edges connecting the same junctions in your traffic code? Do you use  </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">offset_vto, offset_vfrom in EdgeFE?</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="xmsonormal" style="margin:0in"><span style="font-size:12.0pt"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">I removed white spaces in dgnet.c and dgnet.h. Can I push the changes?</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Hong</span><o:p></o:p></p>
</div>
</div>
<div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="0" width="62%" align="center">
</div>
<div id="x_divRplyFwdMsg">
<div>
<p class="MsoNormal"><b>From:</b><span class="apple-converted-space"> </span>petsc-dev <<a href="mailto:petsc-dev-bounces@mcs.anl.gov">petsc-dev-bounces@mcs.anl.gov</a>> on behalf of Barry Smith <<a href="mailto:bsmith@petsc.dev">bsmith@petsc.dev</a>><br>
<b>Sent:</b><span class="apple-converted-space"> </span>Wednesday, December 1, 2021 7:41 PM<br>
<b>To:</b><span class="apple-converted-space"> </span>Abhyankar, Shrirang G <<a href="mailto:shrirang.abhyankar@pnnl.gov">shrirang.abhyankar@pnnl.gov</a>><br>
<b>Cc:</b><span class="apple-converted-space"> </span>petsc-dev <<a href="mailto:petsc-dev@mcs.anl.gov">petsc-dev@mcs.anl.gov</a>>; Betrie, Getnet <<a href="mailto:gbetrie@anl.gov">gbetrie@anl.gov</a>><br>
<b>Subject:</b><span class="apple-converted-space"> </span>Re: [petsc-dev] DMPLEX cannot support two different edges for the same two vertices, hence DMPLEX cannot?<o:p></o:p></p>
</div>
<div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  Shri,<span class="apple-converted-space"> </span><o:p></o:p></p>
</div>
<div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">    If you provided your graph in parallel I suspect that the GlobalToLocal and LocalToGlobal would not work as you expect and put everything in the appropriate place.<o:p></o:p></p>
</div>
</div>
<div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">    I'll set up a simple code that takes exactly Get's configuration and send it out so everyone can run it and see exactly what happens.<o:p></o:p></p>
</div>
</div>
<div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">   Barry<o:p></o:p></p>
</div>
</div>
<div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal">On Dec 1, 2021, at 8:00 PM, Abhyankar, Shrirang G via petsc-dev <<a href="mailto:petsc-dev@mcs.anl.gov">petsc-dev@mcs.anl.gov</a>> wrote:<o:p></o:p></p>
</div>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
<div>
<div>
<div>
<p class="xmsonormal" style="margin:0in"><span style="font-size:12.0pt;font-family:"Times New Roman",serif"> </span><o:p></o:p></p>
</div>
<div>
<p class="xmsonormal" style="margin:0in"><span style="font-size:12.0pt;font-family:"Times New Roman",serif"> </span><o:p></o:p></p>
</div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<div style="margin-left:.5in">
<div>
<p class="MsoNormal"><b><span style="font-size:12.0pt">From:<span class="xxapple-converted-space"> </span></span></b><span style="font-size:12.0pt">Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>><br>
<b>Date:<span class="xxapple-converted-space"> </span></b>Wednesday, December 1, 2021 at 5:57 PM<br>
<b>To:<span class="xxapple-converted-space"> </span></b>"Brown, Jedediah A (VISIT)" <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>><br>
<b>Cc:<span class="xxapple-converted-space"> </span></b>"Abhyankar, Shrirang G" <<a href="mailto:shrirang.abhyankar@pnnl.gov">shrirang.abhyankar@pnnl.gov</a>>, PETSc Development <<a href="mailto:petsc-dev@mcs.anl.gov">petsc-dev@mcs.anl.gov</a>>, Getnet Betrie
 <<a href="mailto:gbetrie@anl.gov">gbetrie@anl.gov</a>><br>
<b>Subject:<span class="xxapple-converted-space"> </span></b>Re: [petsc-dev] DMPLEX cannot support two different edges for the same two vertices, hence DMPLEX cannot?</span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<div style="margin-left:.5in">
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
</div>
<div style="border:none;border-left:solid #D77600 6.0pt;padding:0in 0in 0in 0in;font-size:1.15rem">
<div style="margin-left:.5in">
<p class="MsoNormal" align="center" style="text-align:center;background:#F7E3CC">
<span style="font-family:"Arial",sans-serif;color:black">Check twice before you click! This email originated from outside PNNL.</span><o:p></o:p></p>
</div>
</div>
<div style="margin-left:.5in">
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
<div>
<div>
<div>
<div style="margin-left:.5in">
<div>
<p class="MsoNormal">On Wed, Dec 1, 2021 at 6:55 PM Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:<o:p></o:p></p>
</div>
</div>
</div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div style="margin-left:.5in">
<div>
<p class="MsoNormal">Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> writes:<br>
<br>
> On Wed, Dec 1, 2021 at 5:17 PM Abhyankar, Shrirang G <<br>
><span class="xxapple-converted-space"> </span><a href="mailto:shrirang.abhyankar@pnnl.gov" target="_blank">shrirang.abhyankar@pnnl.gov</a>> wrote:<br>
><br>
>> “You can certainly have many fields on a given edge, but I don't know<br>
>> what it would mean to have two edges since no topological query could tell<br>
>> the difference.”<br>
>><br>
>><br>
>><br>
>> The two edges in a power grid represent two parallel power lines that are<br>
>> connected between two locations (vertices). There are line ids (stored in<br>
>> the component data) to distinguish the two lines.<br>
>><br>
><br>
> Yes, so you can tell the difference in the function space (since difference<br>
> current passes down each one), but _topologically_ you cannot. If you put<br>
> duplicate cells in, then<br>
> some topological queries will give unexpected results, like the join of the<br>
> two vertices.<br>
<br>
This could be modeled with some ghost vertices. So instead of<br>
<br>
  a ------ b<br>
   \_____/<br>
<br>
you would set up<br>
<br>
  a ---o---- b<br>
   \___o___/<br>
<br>
Those ghost vertices don't have to "do" anything, but they make the edges topologically distinct.<br>
<br>
Shri, what problems might this cause?<o:p></o:p></p>
</div>
</div>
</blockquote>
</div>
<div style="margin-left:.5in">
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman",serif">I don’t understand the figure you’ve drawn above. Sorry.</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="xmsonormal" style="margin:0in"><span style="font-size:12.0pt;font-family:"Times New Roman",serif"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman",serif">As a user, would I need to add anything to the way I am setting up the network/plex or any additional equations in the residual evaluation?</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="xmsonormal" style="margin:0in"><span style="font-size:12.0pt;font-family:"Times New Roman",serif"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman",serif">I do not have any issue right now for the power grid problem since I don’t require DMNetwork or DMPLEX to do the topological distinction between parallel edges. There are
 unique edge identifiers in my dataset through which I can make this distinction.</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="xmsonormal" style="margin:0in"><span style="font-size:12.0pt;font-family:"Times New Roman",serif"> </span><o:p></o:p></p>
</div>
<div>
<p class="xmsonormal" style="margin:0in"><span style="font-size:12.0pt;font-family:"Times New Roman",serif"> </span><o:p></o:p></p>
</div>
<div>
<div style="margin-left:.5in">
<div>
<p class="MsoNormal">Yes, this would work, but it looks like the multiple cells are not causing them problems right now with the questions they are asking the mesh.<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div style="margin-left:.5in">
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:.5in">
<div>
<p class="MsoNormal">   Matt<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div style="margin-left:.5in">
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
</div>
<div style="margin-left:.5in">
<div>
<p class="MsoNormal">--<span class="xxapple-converted-space"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div style="margin-left:.5in">
<div>
<p class="MsoNormal">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<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div style="margin-left:.5in">
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
</div>
<div>
<div style="margin-left:.5in">
<div>
<p class="MsoNormal"><a href="https://www.google.com/url?q=https://gcc02.safelinks.protection.outlook.com/?url%3Dhttp%253A%252F%252Fwww.cse.buffalo.edu%252F~knepley%252F%26data%3D04%257C01%257Cshrirang.abhyankar%2540pnnl.gov%257Cbcbb40fc51f6428ac17708d9b5264361%257Cd6faa5f90ae240338c0130048a38deeb%257C0%257C0%257C637739998211230005%257CUnknown%257CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%253D%257C3000%26sdata%3DSg7eEbjzkSqVd6Sjg8IpTN3iXxMAvih0UNV0fkolO8w%253D%26reserved%3D0&source=gmail-imap&ust=1639079810000000&usg=AOvVaw2q1URmUrcN7rBglSVGeqIH" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="xmsonormal" style="margin:0in"> <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><DiestelGT.pdf><o:p></o:p></p>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>