On Tue, Jul 24, 2012 at 12:31 PM, Chris Eldred <span dir="ltr"><<a href="mailto:chris.eldred@gmail.com" target="_blank">chris.eldred@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hey PETSC/Sieve Developers,<br><br>I am building a nonlinear shallow water testbed model (along with an associated eigensolver for the linear equations) intended to work on unstructured Voronoi meshes and cubed-sphere grids (with arbitrary block-structured refinement)- it will be a 2-D code. There will NOT be any adaptive mesh refinement- the mesh is defined once at the start of the application. It will support finite difference, finite volume and finite element-type (spectral elements and Discontinuous Galerkin) schemes- so variables will be defined on edges, cells and vertexes. I would like to use PETSC/SLEPC (currently limited to v3.2 for both since that is the latest version of SLEPC) for the spare linear algebra and eigenvalue solvers. This is intended as a useful tool for researchers in atmospheric model development- it will allow easy inter-comparison of different grids and schemes under a common framework.<br>
</blockquote><div><br></div><div>Cool. Use slepc-dev.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Right now I have a serial version (written in Fortran 90) that implements a few different finite-difference schemes (along with a multigrid solver for square and hexagonal meshes) on unstructured Voronoi meshes and I would like to move to a parallel version (also using Fortran 90). The Sieve framework seems like an excellent fit for defining the unstructured mesh, managing variables defined on edges/faces/vertices and handling scatter/gather options between processes. I was planning on doing parallel partitioning using ParMetis.<br>
</blockquote><div><br></div><div>That is definitely what it is for.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">My understanding is that DMMesh handles mesh topology (interconnections, etc) while Sections define variables and mesh geometry (edge lengths, areas, etc.).  Sections can be created over different depths/heights (chains of points in Sieve) in order to define variables on vertices/edges/cells. <br>
</blockquote><div><br></div><div>Yes.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I am looking for documentation and examples of code use. I found:<br>
<a href="http://www.mcs.anl.gov/petsc/petsc-dev/src/snes/examples/tutorials/ex62.c.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-dev/src/snes/examples/tutorials/ex62.c.html</a><br>



<a href="http://www.mcs.anl.gov/petsc/petsc-current/src/snes/examples/tutorials/ex12.c.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/src/snes/examples/tutorials/ex12.c.html</a><br><br>Are there other examples/documentation available?<br>
</blockquote><div><br></div><div>Here is my simple tutorial:</div><div><br></div><div><div>Building and Running <span class="il" style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">ex62</span></div>
<div>--------------------------------------</div><div><br></div><div>First, configure with FEM stuff turned on:</div><div><br></div><div><div>    '--download-triangle',</div><div>    '--download-ctetgen',</div>
<div>    '--download-fiat',</div><div>    '--download-generator',</div><div>    '--download-chaco',</div><div>    '--download-metis',</div><div>    '--download-parmetis',</div><div>
    '--download-scientificpython',</div><div><br></div><div>I also use</div><div><br></div><div>    '--with-dynamic-loading',</div><div>    '--with-shared-libraries',</div><div>    '--download-mpich',</div>
<div>    '--download-ml',</div><div><br></div><div>and if you want to try GPU stuff</div><div><br></div><div><div>    '--with-cuda',</div><div>    '--with-cuda-arch=sm_10',</div><div>    '--with-cuda-only',</div>
<div>    '--with-cudac=nvcc -m64',</div></div><div><br></div><div>Then build PETSc with the Python make:</div><div><br></div><div>   python2.7 ./config/builder2.py clean</div><div>   python2.7 ./config/builder2.py build    <This rebuilds only changed things correctly as well></div>
<div><br></div><div>  python2.7 ./config/builder2.py --help <This is useful></div><div>  python2.7 ./config/builder2.py build --help <This is too></div><div>  python2.7 ./config/builder2.py check --help <And this></div>
<div><br></div><div>Once you have this, you should be able to build and run <span class="il" style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">ex62</span></div><div><br></div>
<div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">   python2.7 ./config/builder2.py check src/snes/examples/tutorials/<span class="il" style="background-color:rgb(255,255,204)">ex62</span>.c --testnum=0</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
which runs the first test. You can run them all with no argument. All the options are listed</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">at the top of ./config/builder.py.</div>
</div></div></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Also, I was wondering what the difference is between DMMesh and DMComplex- it appears that they both implement the Sieve framework?<br>
</blockquote><div><br></div><div>DMMesh is the old DMComplex. I decided that C++ is a blight upon mankind and templates are its Furies, so</div><div>I rewrite all of DMMesh in C, used Jed's new communication stuff, got rid of iterators, and made things integrate</div>
<div>with the solvers much better.</div><div><br></div><div>   Thanks,</div><div><br></div><div>      Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks,<br>Chris Eldred<span class="HOEnZb"><font color="#888888"><br><br>-- <br>Chris Eldred<br>DOE Computational Science Graduate Fellow<br>

Graduate Student, Atmospheric Science, Colorado State University<br>B.S. Applied Computational Physics, Carnegie Mellon University, 2009<br>





<a href="mailto:chris.eldred@gmail.com" target="_blank">chris.eldred@gmail.com</a><br>

</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>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<br>