Interesting. This <meta charset="utf-8"><div><br></div><div><div>KSPSetOptionsPrefix(ksp,&quot;a_&quot;);</div></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">PetscOptionsSetValue(&quot;a_A&quot;, &quot;1&quot;);<br>

PetscOptionsSetValue(&quot;</span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">a_</span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">B&quot;, &quot;2&quot;);</span></div>

<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">PetscOptionsSetValue(&quot;</span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">a_</span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">C&quot;, &quot;3&quot;);</span></div>

<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">ierr = KSPSolve();<br><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><span class="Apple-style-span" style="border-collapse: separate; font-family: arial; font-size: small; "><div>

<div>SNESSetOptionsPrefix(snes,&quot;b_&quot;);</div></div></span>PetscOptionsSetValue(&quot;b_A&quot;, &quot;10&quot;);<br>PetscOptionsSetValue(&quot;</span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">b_</span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">B&quot;, &quot;20&quot;);</span></div>

<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">ierr = SNESSolve();<br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br>

</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">should work because the preset will be </span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">- KSP : {A=1, B=2, C=3}<br>

- SNES : {A=10, B=20, C=PETSC_DEFAULT}.</span></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">exactly as I want.</span></font></div><div>

<font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><br></span></font></div><div><span class="Apple-style-span" style="border-collapse: collapse; "><font class="Apple-style-span" face="arial, sans-serif">I know that it is possible to use API to set parameters (KSPSetType, SNESSetType). But a lot of options of HYPRE or SUPERLU for example have no API. Instead of mix option from command-line and API I would like to put everything in a config file, read it and use </font></span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">PetscOptionsSetValue in the right way. It seems reasonable to me.</span></div>

<meta charset="utf-8"><div><span class="Apple-style-span" style="border-collapse: collapse; "><font class="Apple-style-span" face="arial, sans-serif"><br></font></span></div><div><span class="Apple-style-span" style="border-collapse: collapse; "><font class="Apple-style-span" face="arial, sans-serif">Anyway, every suggestion is welcome (-:</font></span></div>

<div><span class="Apple-style-span" style="border-collapse: collapse; "><font class="Apple-style-span" face="arial, sans-serif"><br></font></span></div><div><span class="Apple-style-span" style="border-collapse: collapse; "><font class="Apple-style-span" face="arial, sans-serif">Thanks a lot!</font></span></div>

<div><br></div>--<br>Filippo SPIGA, MSc Computer Science<br><div>~ homepage: <a href="http://tinyurl.com/fspiga" target="_blank">http://tinyurl.com/fspiga</a> ~<br> <br>«Nobody will drive us out of Cantor&#39;s paradise.»<br>

    -- David Hilbert<br><br>*****<br>Disclaimer: &quot;Please note this message and any attachment are CONFIDENTIAL an may be privileged or otherwise protected from disclosure. The contents are not to be disclosed to anyone other than the addressee. Unauthorized recipients are requested to preserve this confidentiality and to advise the sender immediately of any error in transmission.&quot;</div>

<br>
<br><br><div class="gmail_quote">On Fri, Dec 10, 2010 at 1:46 PM, Jed Brown <span dir="ltr">&lt;<a href="mailto:jed@59a2.org">jed@59a2.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im"><div class="gmail_quote">On Fri, Dec 10, 2010 at 19:22, Filippo Spiga <span dir="ltr">&lt;<a href="mailto:filippo.spiga@disco.unimib.it" target="_blank">filippo.spiga@disco.unimib.it</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
So SNES runs with C=3 that is different from the default. But I would like to use the default because C=3 produces wrong errors. How I can easily reset the options&#39; database?</blockquote></div><br></div><div>You&#39;re making this much more complicated than necessary.  Call</div>


<div><br></div><div>KSPSetOptionsPrefix(ksp,&quot;a_&quot;);</div><div>SNESSetOptionsPrefix(snes,&quot;b_&quot;);</div><div><br></div><div>KSPSetFromOptions(ksp);</div><div>SNESSetFromOptions(snes);</div><div><br></div><div>


KSPSolve(ksp,...);</div><div>SNESSolve(snes,...);</div><div><br></div><div><br></div><div>Then you run the program with</div><div><br></div><div>  -a_ksp_type gmres -a_pc_type asm -b_snes_monitor -b_ksp_type ibcgs -b_pc_type bjacobi</div>


<div><br></div><div>or whatever.  You can control all the details of each solver independently.</div><div><br></div><div>If you *need* to control the solvers in code (usually only if you have an adaptive method where *your program* takes *active* control of the solution process), you should pull out the objects and use the API instead of strings to get what you need:</div>


<div><br></div><div>SNESGetKSP(snes,&amp;inner_ksp);</div><div>KSPSetType(inner_ksp,KSPIBCGS);</div>
</blockquote></div><br>