<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, May 4, 2018 at 9:40 AM, Y. Shidi <span dir="ltr"><<a href="mailto:ys453@cam.ac.uk" target="_blank">ys453@cam.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear PETSc users,<br>
<br>
I am currently using MUMPS to solve linear systems directly.<br>
Generally, we use ICNTL(7) or ICNTL(29) to do the preprocessing<br>
step and then solve the system.<br>
<br>
In my code, the values in the matrix is changed in each iteration,<br>
but the structure of the matrix stays the same, which means the<br>
performance can be improved if symbolic factorisation is only<br>
performed once. Hence, it is necessary to split the symbolic<br>
and numeric factorisation. However, I cannot find a specific step<br>
(control parameter) to perform the numeric factorisation.<br>
I have used ICNTL(3) and ICNTL(4) to print the MUMPS information,<br>
it seems that the symbolic and numeric factorisation always perform<br>
together.<br></blockquote><div><br></div><div>If you use KSPSolve instead, it will automatically preserve the symbolic</div><div>factorization.</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">
So I am wondering if anyone has an idea about it.<br>
<br>
Below is how I set up MUMPS solver:<br>
  PC pc;<br>
  PetscBool flg_mumps, flg_mumps_ch;<br>
  flg_mumps    = PETSC_FALSE;<br>
  flg_mumps_ch = PETSC_FALSE;<br>
  PetscOptionsGetBool(NULL, NULL, "-use_mumps_lu", &flg_mumps, NULL);<br>
  PetscOptionsGetBool(NULL, NULL, "-use_mumps_ch", &flg_mumps_ch, NULL);<br>
  if(flg_mumps ||flg_mumps_ch)<br>
  {<br>
    KSPSetType(_ksp, KSPPREONLY);<br>
    PetscInt  ival,icntl;<br>
    PetscReal val;<br>
    KSPGetPC(_ksp, &pc);<br>
    /// Set preconditioner type<br>
    if(flg_mumps)<br>
    {<br>
      PCSetType(pc, PCLU);<br>
    }<br>
    else if(flg_mumps_ch)<br>
    {<br>
      MatSetOption(A, MAT_SPD, PETSC_TRUE);<br>
      PCSetType(pc, PCCHOLESKY);<br>
    }<br>
    PCFactorSetMatSolverPackage(pc<wbr>, MATSOLVERMUMPS);<br>
    PCFactorSetUpMatSolverPackage(<wbr>pc);<br>
    PCFactorGetMatrix(pc, &_F);<br>
    icntl = 7; ival = 0;<br>
    MatMumpsSetIcntl( _F, icntl, ival );<br>
    MatMumpsSetIcntl(_F, 3, 6);<br>
    MatMumpsSetIcntl(_F, 4, 2);<br>
  }<br>
  KSPSetUp(_ksp);<br>
<br>
Kind Regards,<br>
Shidi<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/~mk51/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div>
</div></div>