<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Sep 28, 2014 at 6:24 PM, Evan Um <span dir="ltr"><<a href="mailto:evanum@gmail.com" target="_blank">evanum@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">Dear PETSC Users, </font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">I try to solve a diffusion
problem in the time domain. Its system matrix is theoretically SPD. I use KSPCG
solver. Direct MUMPS solver generates a preconditioner. Thus, within 1-2
iterations, a solution is expected to converge. Such convergence is observed in
most test problems. However, in some test problems, I get non-convergence with
a message: KSP_DIVERGED_INDEFINITE_PC. This problem is alleviated when I use
PCFactorSetShiftType(pc_fetd_dt,MAT_SHIFT_POSITIVE_DEFINITE). However, the
indefiniteness error message occurs later during time-stepping. I am aware of
PETSC function PCFactorSetShiftAmount. However, before I try this, I couldn't
find the information about a default shift amount when I use
PCFactorSetShiftType(pc_fetd_dt,MAT_SHIFT_POSITIVE_DEFINITE). How can I find
the default shift amount?</font></p></div></blockquote><div>-ksp_view should tell you the shift amount</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><p style="margin:0in 0in 10pt;line-height:normal"><span style="color:rgb(0,0,0);font-family:Calibri;font-size:medium">More generally, how can I stably
solve SPD problems that are close to indefiniteness using KSP options? To get the reference solution, I was able to
solve the same problem above using SuiteSparse (serial) but its solution time
was not practical.</span></p></div></blockquote><div>This sounds like a discretization problem. However, you can always change solvers to GMRES. If you are only doing 1-2</div><div>iterates, there is no advantage to CG (other than it minimizing a different norm).</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 dir="ltr"><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">In advance, thanks for your
advice.</font></p><font color="#000000" face="Times New Roman" size="3">

</font><div style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3"></font><br></div><div style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">Regards,</font></div><font color="#000000" face="Times New Roman" size="3">

</font><div style="margin:0in 0in 10pt;line-height:normal"><font size="3"><font color="#000000"><font face="Calibri">Evan <span> </span></font></font></font><font color="#000000" face="Calibri" size="3"> </font></div><div style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3"></font><br></div><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">Sample Code:</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">KSPCreate(PETSC_COMM_WORLD,
&ksp_fetd_dt);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">KSPSetOperators(ksp_fetd_dt,
A_dt, A_dt);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">KSPSetType (ksp_fetd_dt,
KSPPREONLY);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">KSPGetPC(ksp_fetd_dt,
&pc_fetd_dt);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">MatSetOption(A_dt, MAT_SPD,
PETSC_TRUE);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">PCSetType(pc_fetd_dt,
PCCHOLESKY);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">PCFactorSetMatSolverPackage(pc_fetd_dt,
MATSOLVERMUMPS);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">PCFactorSetUpMatSolverPackage(pc_fetd_dt);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">PCFactorGetMatrix(pc_fetd_dt,
&F_dt);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">KSPSetType(ksp_fetd_dt, KSPCG);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt;line-height:normal"><font color="#000000" face="Calibri" size="3">PCFactorSetShiftType(pc_fetd_dt,MAT_SHIFT_POSITIVE_DEFINITE);</font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt"><font color="#000000" face="Calibri" size="3"> </font></p><font color="#000000" face="Times New Roman" size="3">

</font><p style="margin:0in 0in 10pt"><font color="#000000" face="Calibri" size="3"> </font></p><font color="#000000" face="Times New Roman" size="3">

</font></div>
</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
</div></div>