clarification about convergence

Barry Smith bsmith at mcs.anl.gov
Wed Dec 9 14:13:45 CST 2009


On Dec 9, 2009, at 2:06 PM, Dominik Szczerba wrote:

> 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?

    You call PetscInitialize(args) then PetscOptionsInsertString().  
The args are processed before the string since it comes first. If you  
want to process the string first then the args you can do:
    PetscInitialize(args); PetscOptionsInsertString();  
PetscOptionsInsert(args); now the args will overwrite the string.

    You can also pass PetscOptionsInsertFile() to pass options  
directly from a file

    Barry

>
> 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