Barry Smith wrote: > 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.
Great! Thanks a lot. Dominik > > 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 >
