Great hint, I found the tolerances not as I was setting them... Which brings me to the problem how to consistently set them. I am calling first:
PetscOptionsInsertString() where I obtain the string from a user config file, and then am calling several times later: KSPSetFromOptions() I found experimentally that only the options ABSENT in the config string are eventually accepted from the command line. Those that were PRESENT will not be overwriten from the commandline - behavior not quite intuitive. Or am I doing something wrong? Is there a way to completely disable processing of the options from the command line? Or at least to specify what has higher priority? I prefer to set the options only in one way not to confuse the users. Many thanks, Dominik Matthew Knepley wrote: > On Wed, Dec 9, 2009 at 12:49 PM, Dominik Szczerba <dominik at itis.ethz.ch > <mailto:dominik at itis.ethz.ch>> wrote: > > Excellent point. Where it broke the reason was: > > Starting KSPSolve > 0 KSP Residual norm 7.841852910113e-04 > 1 KSP Residual norm 8.927576540999e-05 > 2 KSP Residual norm 1.694401713084e-05 > 3 KSP Residual norm 5.069425875318e-06 > Linear solve converged due to CONVERGED_RTOL iterations 3 > > which I assume means that the norm became exactly 0 > > > I don't think so. It would have printed that for the residual. > > > HOWEVER: putting -ksp_rtol -1 still does not eliminate the problem. > Any further suggestions? > > > You -ksp_view to see the tolerances used. > > Matt > > > Dominik > > Matthew Knepley wrote: > > Did you use -ksp_converged_reason to determine why PETSc stopped > iterating? > > Matt > > On Wed, Dec 9, 2009 at 11:45 AM, Dominik Szczerba > <dominik at itis.ethz.ch <mailto:dominik at itis.ethz.ch> > <mailto:dominik at itis.ethz.ch <mailto:dominik at itis.ethz.ch>>> > wrote: > > I am using > > -ksp_rtol 0 -ksp_atol 1e-6 (defaults for all the rest) > > and observe for most of the times convergence, as expected. > > Starting KSPSolve > 0 KSP Residual norm 6.315132950112e-04 > 1 KSP Residual norm 9.139539245601e-05 > 2 KSP Residual norm 1.869750068013e-05 > 3 KSP Residual norm 6.788145356909e-06 > 4 KSP Residual norm 1.729115712274e-06 > 5 KSP Residual norm 7.214445966641e-07 > solved in 2.328146e+00/4.144644e+00 s > solution converged in 5 iterations > ||Ax-b|| = 7.21445e-07 > > with ||...|| being residue computed on my own for a check. > > However, SOMETIMES, I do observe: > > Starting KSPSolve > 0 KSP Residual norm 1.228562818225e-02 > 1 KSP Residual norm 4.045833318123e-04 > 2 KSP Residual norm 6.589999324657e-05 > 3 KSP Residual norm 1.494849372638e-05 > 4 KSP Residual norm 4.311592172896e-06 > solved in 1.368086e+00/2.235830e+00 s > solution converged in 4 iterations > ||Ax-b|| = 4.31159e-06 > > which means that the iterations break sooner than they should. > Again, this is not often, but worries me why this should > happen... > Using or not -ksp_converged_use_initial_residual_norm does > not make > any difference to this behavior: the last output Residual norm is > sometimes higher than the requested atol. > > Any clarifications are highly appreciated. > > Dominik > > > > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to > which their experiments lead. > -- Norbert Wiener > > > > > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which > their experiments lead. > -- Norbert Wiener
