<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><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">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. </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">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>