clarification about convergence
Dominik Szczerba
dominik at itis.ethz.ch
Wed Dec 9 14:06:46 CST 2009
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
More information about the petsc-users
mailing list