<div dir="ltr"><div dir="ltr">On Fri, Jul 10, 2020 at 1:58 PM MUKKUND SUNJII <<a href="mailto:mukkundsunjii@gmail.com">mukkundsunjii@gmail.com</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"><div style="overflow-wrap: break-word;">Greetings, <div><br></div><div>This is with regards to the exchange (see below) I had pertaining to P4est and DMPlex. The problem only persists with DM of type P4est. </div><div><br></div><div>As suggested by Mark Adams, the possible source of the problem (in my case) could be in the mapping from P4est to PETSc. In an effort to understand more, I went digging and I found this file:</div><div><a href="https://gitlab.com/petsc/petsc/-/blob/master/src/dm/impls/forest/p4est/dmp4est.c#L4" target="_blank">https://gitlab.com/petsc/petsc/-/blob/master/src/dm/impls/forest/p4est/dmp4est.c#L4</a></div><div><br></div><div>In line 4, the mapping for the faces from p4est to PETSc are defined. Any explanation of the contents of the array <span style="color:rgb(0,0,0)">P4estFaceToPetscFace</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,0)">] can help me out a lot. </span></div></div></blockquote><div><br></div><div>I believe this is about canonical numbering. DMPlex always wants outward normals, and so orients its quadrilateral in a loop:</div><div><br></div><div>  ---2---</div><div>  |        |</div><div>  3       1</div><div>  |        |</div><div>  ---0---</div><div><br></div><div>and we have</div><div><br></div><div>  <span class="gmail-n">PetscFaceToP4estFace</span><span class="gmail-p">[</span><span class="gmail-mi">4</span><span class="gmail-p">]</span> <span class="gmail-o">=</span> <span class="gmail-p">{</span><span class="gmail-mi">2</span><span class="gmail-p">,</span> <span class="gmail-mi">1</span><span class="gmail-p">,</span> <span class="gmail-mi">3</span><span class="gmail-p">,</span> <span class="gmail-mi">0</span><span class="gmail-p">}</span></div><div><span class="gmail-p"><br></span></div><div>which would renumber it</div><div><br></div><div>  ---3---</div><div>  |        |</div><div>  0       1</div><div>  |        |</div><div>  ---2---</div><div></div><div><br></div><div>The other one should be the inverse permutation,</div><div><br></div><div>  <span class="gmail-n">P4estFaceToPetscFace</span><span class="gmail-p">[</span><span class="gmail-mi">4</span><span class="gmail-p">]</span> <span class="gmail-o">=</span> <span class="gmail-p">{</span><span class="gmail-mi">3</span><span class="gmail-p">,</span> <span class="gmail-mi">1</span><span class="gmail-p">,</span> <span class="gmail-mi">0</span><span class="gmail-p">,</span> <span class="gmail-mi">2</span><span class="gmail-p">}</span></div><div><span class="gmail-p"><br></span></div><div><span class="gmail-p">which it is.</span></div><div><span class="gmail-p"><br></span></div><div><span class="gmail-p">  Thanks,</span></div><div><span class="gmail-p"><br></span></div><div><span class="gmail-p">     Matt</span></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"><div style="overflow-wrap: break-word;"><div><span style="color:rgb(0,0,0)">Thank you in advance. </span></div><div><span style="color:rgb(0,0,0)"><br></span></div><div><span style="color:rgb(0,0,0)">Regards, </span></div><div><span style="color:rgb(0,0,0)"><br></span></div><div><span style="color:rgb(0,0,0)">Mukkund  </span> </div><div><br></div><div>For Context: I am trying to expand the shallow water equation Riemann Solver provided in ./ts/tutorials/ex11.c to support bathymetry. I have successfully implemented a well-balanced Riemann Solver that works fine with PLEX DM but the behaviour changes when I use P4est DM (for adaptive mesh refinement). </div><div><br></div><div><br></div><div><div><blockquote type="cite"><div>Begin forwarded message:</div><br><div style="margin:0px"><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif;color:rgb(0,0,0)"><b>From: </b></span><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif">MUKKUND SUNJII <<a href="mailto:mukkundsunjii@gmail.com" target="_blank">mukkundsunjii@gmail.com</a>><br></span></div><div style="margin:0px"><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif;color:rgb(0,0,0)"><b>Subject: </b></span><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif"><b>Re: [petsc-users] Regarding P4est</b><br></span></div><div style="margin:0px"><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif;color:rgb(0,0,0)"><b>Date: </b></span><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif">17 June 2020 at 21:20:29 CEST<br></span></div><div style="margin:0px"><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif;color:rgb(0,0,0)"><b>To: </b></span><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif">Mark Adams <<a href="mailto:mfadams@lbl.gov" target="_blank">mfadams@lbl.gov</a>><br></span></div><div style="margin:0px"><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif;color:rgb(0,0,0)"><b>Cc: </b></span><span style="font-family:-webkit-system-font,"Helvetica Neue",Helvetica,sans-serif">petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>>, Domenico Lahaye <<a href="mailto:D.J.P.Lahaye@tudelft.nl" target="_blank">D.J.P.Lahaye@tudelft.nl</a>><br></span></div><br><div><div style="overflow-wrap: break-word;">Yes, precisely! I am not sure how I can replicate using the original version of ex11.c because it does not support bathymetry. <div><br></div><div>Regardless, to demonstrate the discrepancy, I have uploaded three plots. The scenario is a lake at rest. Essentially, you have a varying bathymetry but a level water surface. If the model is well balanced, then the water surface height must not change. The description of the files are below </div><div><br></div><div>1) Bathymetry.png : It shows you the bathymetry profile (z(x)) and the water surface height (H = h+z(x)) at t = 0.</div><div><img id="gmail-m_7435397644960904141B4B044BF-9005-4C27-B700-6B6BBF9D4682" src="cid:17339e93a5fe98675d81"></div><div><br></div><div>2) Plex.png : This is the water surface height after 1 time step (<span style="color:rgb(12,255,0);font-family:"Andale Mono";background-color:rgba(255,255,255,0.9)">0.007055 sec</span>)  and the dm type is Plex. As you can see, the water surface height is undisturbed as expected.</div><div><img id="gmail-m_74353976449609041414966DB14-E920-468E-9F7B-DF370908BF29" src="cid:17339e93a5f7a8a1b8a2"></div><div><br></div><div>3) P4est.png : This is the result after 1 time step (same final time) if I set the dm type as p4est. The noise is in the order of 1e-3 to be a little more specific. Since its not specifically at the boundaries and more or less spread throughout, it could indeed be noise introduced. But of course I could be wrong. <span style="white-space:pre-wrap">      </span><br><div><img id="gmail-m_7435397644960904141E5271AAD-474F-42A5-A8F1-76B1C3BEF792" src="cid:17339e93a5fa1399f7d3"></div><div><br></div><div>Maybe this paints a better picture. </div><div><br></div><div>Regards, </div><div><br></div><div>Mukkund </div><div><br></div><div>For your reference, the Riemann Solver is a modified version of the HLL solver: <span><b>A simple well-balanced and positive numerical scheme for the shallow-water system by </b></span><b>Emmanuel Audusse, Christophe Chalons, Philippe Ung. </b></div><div>(<a href="https://www.intlpress.com/site/pub/files/_fulltext/journals/cms/2015/0013/0005/CMS-2015-0013-0005-a011.pdf" target="_blank">https://www.intlpress.com/site/pub/files/_fulltext/journals/cms/2015/0013/0005/CMS-2015-0013-0005-a011.pdf</a>)</div><span><br><blockquote type="cite">On 17 Jun 2020, at 20:47, Mark Adams <<a href="mailto:mfadams@lbl.gov" target="_blank">mfadams@lbl.gov</a>> wrote:<br><br>So you get this noise with a regular grid in p4est. So the same grid as will Plex, and you are not getting the same results.<br><br>I don't know of any difference from p4est on a non-adapted grid. Can you reproduce this with ex11?<br><br>Matt and Toby could answer this better.<br><br><br>On Wed, Jun 17, 2020 at 1:33 PM MUKKUND SUNJII <<a href="mailto:mukkundsunjii@gmail.com" target="_blank">mukkundsunjii@gmail.com</a>> wrote:<br>Greetings, <br><br>I am a master’s student working on the shallow water model of the TS example 'ex11.c' as part of my thesis. Therefore, I am working with DMForest for the implementation of adaptive grids. I have a question and an observation. <br><br>I am trying to find relevant information about interpolation that takes place through the routine DMForestTransferVec. Perhaps it could be my inability to find it, but I am unable to locate the implementation of the routine <br><br>(forest->transfervec)(dmIn,vecIn,dmOut,vecOut,useBCs,time). <br><br>Any information on this particular routine is highly appreciated.<br><br>Furthermore, I have developed a well balanced Riemann Solver that includes topography in the model. In the process of testing both the non-adaptive and adaptive version, I found that my results differed when I changed the type of DM. For instance, when I run a scenario in a fixed, non-adaptive grid  with a DM of type 'P4est', I find that the well balanced nature is lost due to small perturbations all across the domain. However, this does not occur when I use a DM of type ‘plex’. Is there a radical change in the routines between the two DM’s? This is not as much of a question as it is an observation. <br><br>Thank you for all of your suggestions! <br><br>Regards, <br><br>Mukkund <br> <br><br></blockquote></span><br></div></div></div></blockquote></div><br></div></div></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="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>