On Mon, May 2, 2011 at 8:16 AM, Tabrez Ali <span dir="ltr">&lt;<a href="mailto:stali@geology.wisc.edu">stali@geology.wisc.edu</a>&gt;</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;">


  
    
    
  
  <div text="#000000" bgcolor="#ffffff">
    Is there a way I can use this and other mesh routines from Fortran?
    The manual doesn&#39;t say much on this.</div></blockquote><div><br></div><div>Yes, but you are right that nothing is in the manual. DMMESH (in petsc-dev) now obeys the full DM interface,</div><div>so that DMGetMatrix() will return you a properly allocated Mat. So what is the problem? Of course, it is that</div>
<div>Petsc has no good way to specify what finite element you are dealing with.</div><div><br></div><div>The way I was doing this is to encode it using some C++ classes. This turns out to be a bad way to do things.</div><div>
I am currently reworking it so that this information is stored in a simple C struct that you can produce. Should</div><div>have this done soon.</div><div><br></div><div>Can you mail me a description of an example you would like to run?</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;"><div text="#000000" bgcolor="#ffffff">
<font color="#888888"><br>
    Tabrez</font><div><div></div><div class="h5"><br>
    <br>
    On 05/01/2011 09:53 AM, Matthew Knepley wrote:
    <blockquote type="cite">On Sat, Apr 30, 2011 at 12:58 PM, Tabrez Ali <span dir="ltr">&lt;<a href="mailto:stali@geology.wisc.edu" target="_blank">stali@geology.wisc.edu</a>&gt;</span>
      wrote:<br>
      <div class="gmail_quote">
        <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
          Petsc Developers/Users<br>
          <br>
          I having some performance issues with preallocation in a fully
          unstructured FE code. It would be very helpful if those using
          FE codes can comment.<br>
          <br>
          For a problem of size 100K nodes and 600K tet elements (on 1
          cpu)<br>
          <br>
          1. If I calculate the _exact_ number of non-zeros per row
          (using a running list in Fortran) by looping over nodes &amp;
          elements, the code takes 17 mins (to calculate nnz&#39;s/per row,
          assemble and solve).<br>
          2. If I dont use a running list and simply get the average of
          the max number of nodes a node might be connected to (again by
          looping over nodes &amp; elements but not using a running
          list) then it takes 8 mins<br>
          3. If I just magically guess the right value calculated in 2
          and use that as average nnz per row then it only takes 25
          secs.<br>
          <br>
          Basically in all cases Assembly and Solve are very fast (few
          seconds) but the nnz calculation itself (in 2 and 3) takes a
          long time. How can this be cut down? Is there a heuristic way
          to estimate the number (as done in 3) even if it slightly
          overestimates the nnz&#39;s per row or are efficient ways to do
          step 1 or 2. Right now I have do i=1,num_nodes; do
          j=1,num_elements ... which obviously is slow for large number
          of nodes/elements.<br>
        </blockquote>
        <div><br>
        </div>
        <div>If you want to see my code doing this, look at</div>
        <div><br>
        </div>
        <div>  include/petscdmmesh.hh:preallocateOperatorNew()</div>
        <div><br>
        </div>
        <div>which handles the determination of nonzero structure for a
          FEM operator. It should look mostly</div>
        <div>like your own code.</div>
        <div><br>
        </div>
        <div>    Matt</div>
        <div> </div>
        <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
          Thanks in advance<br>
          <font color="#888888">
            Tabrez<br>
          </font></blockquote>
      </div>
      <br>
      <br clear="all">
      <br>
      -- <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>
    </blockquote>
    <br>
  </div></div></div>

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