<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Thank you for your answers. Barry's answer allowed me to get up
      to 50x faster code, so it was a huge help. I decided not to use
      ksp context altogether for this small operation.</p>
    <p>Thank you again,</p>
    <p>Ali<br>
    </p>
    <p><br>
    </p>
    <p>On 11-03-2018 18:53, Matthew Knepley wrote:<br>
    </p>
    <blockquote type="cite"
cite="mid:CAMYG4Gn8zLNvRPJAJxHKQ1uEaPf4kcwojaKur6LEjf3m4Rehtw@mail.gmail.com">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">On Sun, Mar 11, 2018 at 1:14 AM,
            Smith, Barry F. <span dir="ltr"><<a
                href="mailto:bsmith@mcs.anl.gov" target="_blank"
                moz-do-not-send="true">bsmith@mcs.anl.gov</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
                1) Run the problem with -ksp_view_mat and -ksp_view_rhs
              and mail <a href="mailto:petsc-maint@mcs.anl.gov"
                moz-do-not-send="true">petsc-maint@mcs.anl.gov</a>  the
              resulting file produced called binaryoutput<br>
              <br>
                 2) By default PCLU does a reordering to reduce fill
              that could introduce a zero pivoit, PCILU does not do a
              reordering by default. You can use
              -pc_factor_mat_ordering_type none to force no reordering
              (PCLU does not do numerical pivoting for stability so can
              fail with zero pivots).<br>
              <br>
                 3) If you need to solve these tiny 7 by 7 systems many
              times (presumably you are solving these to set up a large
              algebraic system solved afterwards) then you probably
              don't want to use KSP to solve them. You can use the low
              level kernel PetscKernel_A_gets_inverse_A_<wbr>7() that
              does do pivoting followed by a multiply like<br>
              <br>
              s1 = v[0]*x1 + v[6]*x2  + v[12]*x3 + v[18]*x4 + v[24]*x5 +
              v[30]*x6;<br>
                    s2 = v[1]*x1 + v[7]*x2  + v[13]*x3 + v[19]*x4 +
              v[25]*x5 + v[31]*x6;<br>
                    s3 = v[2]*x1 + v[8]*x2  + v[14]*x3 + v[20]*x4 +
              v[26]*x5 + v[32]*x6;<br>
                    s4 = v[3]*x1 + v[9]*x2  + v[15]*x3 + v[21]*x4 +
              v[27]*x5 + v[33]*x6;<br>
                    s5 = v[4]*x1 + v[10]*x2 + v[16]*x3 + v[22]*x4 +
              v[28]*x5 + v[34]*x6;<br>
                    s6 = v[5]*x1 + v[11]*x2 + v[17]*x3 + v[23]*x4 +
              v[29]*x5 + v[35]*x6;<br>
              <br>
              where v is the dense 7 by 7 matrix (stored column oriented
              like Fortran) an the x are the seven values of the right
              hand side.<br>
            </blockquote>
            <div><br>
            </div>
            <div>Note that PCPBJACOBI will do this automatically.</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">
                 Barry<br>
              <br>
              <br>
              <br>
              <br>
              <br>
              > On Mar 10, 2018, at 5:22 AM, Ali Berk Kahraman <<a
                href="mailto:aliberkkahraman@yahoo.com"
                moz-do-not-send="true">aliberkkahraman@yahoo.com</a>>
              wrote:<br>
              ><br>
              > Hello All,<br>
              ><br>
              > I am trying to get the finite difference coefficients
              for a given irregular grid. For this, I follow the
              following webpage, which tells me to solve a linear
              system.<br>
              ><br>
              > <a
                href="http://web.media.mit.edu/%7Ecrtaylor/calculator.html"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://web.media.mit.edu/~<wbr>crtaylor/calculator.html</a><br>
              ><br>
              > I solve a 7 unknown linear system with a 7x7 dense
              matrix to get the finite difference coefficients. Since I
              will call this code many many many times in my overall
              project, I need it to be as fast, yet as exact as
              possible. So I use PCLU. I make sure that there are no
              zero diagonals on the matrix, I swap required rows for it.
              However, PCLU still diverges with the output at the end of
              this e-mail. It indicates "FACTOR_NUMERIC_ZEROPIVOT" , but
              as I have written above I make sure there are no zero main
              diagonal entries on the matrix. When I use PCILU instead,
              it converges pretty well.<br>
              ><br>
              > So my question is, is PCILU the same thing
              mathematically as PCLU when applied on a small dense
              matrix? I need to know if I get the exact solution with
              PCILU, because my whole project will depend on the
              accuracy of the finite differences.<br>
              ><br>
              > Best Regards,<br>
              ><br>
              > Ali Berk Kahraman<br>
              > M.Sc. Student, Mechanical Engineering Dept.<br>
              > Boğaziçi Uni., Istanbul, Turkey<br>
              ><br>
              > Linear solve did not converge due to
              DIVERGED_PCSETUP_FAILED iterations 0<br>
              >                PCSETUP_FAILED due to
              FACTOR_NUMERIC_ZEROPIVOT<br>
              > KSP Object: 1 MPI processes<br>
              >   type: gmres<br>
              >     restart=30, using Classical (unmodified)
              Gram-Schmidt Orthogonalization with no iterative
              refinement<br>
              >     happy breakdown tolerance 1e-30<br>
              >   maximum iterations=10000, initial guess is zero<br>
              >   tolerances:  relative=1e-05, absolute=1e-50,
              divergence=10000.<br>
              >   left preconditioning<br>
              >   using PRECONDITIONED norm type for convergence test<br>
              > PC Object: 1 MPI processes<br>
              >   type: lu<br>
              >     out-of-place factorization<br>
              >     tolerance for zero pivot 2.22045e-14<br>
              >     matrix ordering: nd<br>
              >     factor fill ratio given 5., needed 1.<br>
              >       Factored matrix follows:<br>
              >         Mat Object: 1 MPI processes<br>
              >           type: seqaij<br>
              >           rows=7, cols=7<br>
              >           package used to perform factorization:
              petsc<br>
              >           total: nonzeros=49, allocated nonzeros=49<br>
              >           total number of mallocs used during
              MatSetValues calls =0<br>
              >             using I-node routines: found 2 nodes,
              limit used is 5<br>
              >   linear system matrix = precond matrix:<br>
              >   Mat Object: 1 MPI processes<br>
              >     type: seqaij<br>
              >     rows=7, cols=7<br>
              >     total: nonzeros=49, allocated nonzeros=49<br>
              >     total number of mallocs used during MatSetValues
              calls =0<br>
              >       using I-node routines: found 2 nodes, limit
              used is 5<br>
              ><br>
              ><br>
              <br>
            </blockquote>
          </div>
          <br>
          <br clear="all">
          <div><br>
          </div>
          -- <br>
          <div class="gmail_signature" data-smartmail="gmail_signature">
            <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.caam.rice.edu/%7Emk51/"
                      target="_blank" moz-do-not-send="true">https://www.cse.buffalo.edu/~knepley/</a><br>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>