> On Aug 7, 2020, at 11:19 AM, Adolfo Rodriguez <[email protected]> wrote:
> 
> Great, that works. What would be the way to change the ilu level, I need to 
> use ilu(1). I would assume that I can accomplish that by means of:
> 
> -npc_fas_coarse_pc_type ilu
> -npc_fas_coarse_pc_ilu_levels 1  
> 
> I noticed that the first line actually works, but I am not sure about the 
> second one.

  The number of levels should be noted in the -snes_view output.  

  You can run with -help -npc_fas_coarse_pc_type ilu | grep npc_fas_coarse_pc 
see what the exact names of the options are if you are unsure


> 
> Thanks,
> Adolfo
> 
>  
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon>
>   Virus-free. www.avast.com 
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link>
>  <x-msg://13/#m_-242385451441738719_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
> On Thu, Aug 6, 2020 at 9:23 PM Matthew Knepley <[email protected] 
> <mailto:[email protected]>> wrote:
> On Thu, Aug 6, 2020 at 10:08 PM Adolfo Rodriguez <[email protected] 
> <mailto:[email protected]>> wrote:
> Considering the output produced by snes_view (attachment), would be possible 
> to change the linear solver tolerances and the preconditioning level or type?
> 
> Yes. The options prefix is shown for each subsolver. For example, you can 
> change the linear solver type for the coarse level of FAS using
> 
>   -npc_fas_coarse_ksp_type bigcg
> 
> Notice that you are using 1 level of FAS, so its the same as just Newton.
> 
>   Thanks,
> 
>      Matt
>  
> Adolfo
> 
>  
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon>
>   Virus-free. www.avast.com 
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link>
>  
> <x-msg://13/#m_-242385451441738719_m_5425691679335133860_m_9065914518290907664_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
> On Wed, Aug 5, 2020 at 8:31 PM Barry Smith <[email protected] 
> <mailto:[email protected]>> wrote:
> 
>    Turtles on top of turtles on top of turtles. 
> 
>    It is probably easiest for you to look at the actual code to see how it 
> handles things
> 
>   1) the SNESFAS uses SNES for each of the levels, for each of these level 
> SNES you can control the convergence criteria (either from the command lineor 
> with appropriate prefix (highly recommended) or with function calls (not 
> recommended)); and even provide your own convergence functions  run with 
> -snes_view to see the various solvers and their prefixes). 
> 
>   2) at the finest level of SNESFAS it does call 
> 
>     /* Test for convergence */
>     if (isFine) {
>       ierr = 
> (*snes->ops->converged)(snes,snes->iter,0.0,0.0,snes->norm,&snes->reason,snes->cnvP);CHKERRQ(ierr);
>       if (snes->reason) break;
>     }
> 
> src/snes/impls/fas/fas.c line 881 so at least in theory you can provide your 
> own convergence test function.
> 
>   It was certainly our intention that users can control all the convergence 
> knobs for arbitrary imbedded nonlinear solvers including FAS but, of course, 
> there may be bugs so let us know what doesn't work.
> 
>  Generally the model for FAS is to run a single (or small number of) 
> iteration(s) on the level solves and so not directly use convergence 
> tolerances like rtol to control the number of iterations on a level but you 
> should be able to set any criteria you want.
> 
>   You should be able to run with -snes_view and change some of the criteria 
> on the command line and see the changes presented in the -snes_view output, 
> plus see differences in convergence behavior.
> 
>    
> 
>   Barry
> 
> 
> 
>> On Aug 5, 2020, at 8:10 PM, Adolfo Rodriguez <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> It looks like I cannot really change the test function or anything else for 
>> this particular SNES solver  (I am using SNESFas). Basically, I am trying to 
>> use the ideas exposed in the paper on Composing scalable solvers but it 
>> seems that SNESFas does not allow to change the function for testing 
>> convergence, or anything else. Is this correct?
>> 
>> Adolfo
>> 
>>  
>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon>
>>  Virus-free. www.avast.com 
>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link>
>>  <>
>> On Wed, Aug 5, 2020 at 3:41 PM Barry Smith <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>>    Adolfo,
>> 
>>      You can also just change the tolerances for the inner solve using the 
>> options data base and the prefix for the inner solve. 
>> 
>>      When you run with -snes_view it will show the prefix for each of the 
>> (nested) solvers. You can also run with -help to get all the possible 
>> options for the inner solvers.
>> 
>>      In this case I think the prefix is npc so you can set tolerances with 
>> -npc_snes_rtol <rtol> -npc_ksp_rtol <rtol> etc.  From the program you can 
>> use SNESGetNPC() and then call SNESSetXXX() to set options, for the linear 
>> solver (if there is one) call SNESGetKSP() on the npc and then set options 
>> on that KSP.
>> 
>> 
>>    Barry
>> 
>> 
>>> On Aug 5, 2020, at 3:30 PM, Adolfo Rodriguez <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> Jed, 
>>> 
>>> I tred your suggestion 
>>> 
>>>   SNESGetNPC(snes, &inner);
>>>   SNESSetConvergenceTest(inner, YourFunc, ...); 
>>> 
>>> and it is working as expected. I had not pieced together the fact that 
>>> "inner" is a "snes" object as well.
>>> 
>>> Thanks!
>>> 
>>>  
>>> 
>>>  
>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon>
>>>         Virus-free. www.avast.com 
>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link>
>>>  <>
>>> On Wed, Aug 5, 2020 at 3:11 PM Jed Brown <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> Adolfo Rodriguez <[email protected] <mailto:[email protected]>> writes:
>>> 
>>> > Actually I can set the non-linear pc. My problem relates to the 
>>> > convergence
>>> > test. I have not found a way to set the tolerances for the inner problem,
>>> > are they hard coded?
>>> 
>>> I suggested code to set a custom convergence test.  Nothing is hard-coded.  
>>> What have you done?
>> 
> 
> 
> 
> -- 
> 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
> 
> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>

Reply via email to