This is a read only copy of the old FEniCS QA forum. Please visit the new QA forum to ask questions

Basic Questions on parameters of nonlinear solver

0 votes

Dear All,

I am new to FEniCS and trying to understand how nonlinear problems work and how they are solved.

I was looking at few demos, where I found that the nonlinear solver has a parameter called 'convergence criteria'.

nonlinear_solver.parameters["convergence_criterion"] = "incremental";
nonlinear_solver.parameters["convergence_criterion"] = "residual";

I read the following in fenics book:

When testing for convergence, usually a norm of the residual F is checked. Sometimes it is useful instead to check a norm of the iterative correction dx. This is controlled by the parameter "convergence_criterion" , which can be set to "residual" , for checking the size of the residual F, or "incremental" , for checking the size of the increment dx.

I am still trying to understand what a norm of residual or iterative correction is. However, my main questions are:

  1. This criteria should not have any effect on the main result/ output or the speed of computation right?

  2. I also read about preconditioners. They may alter the speed for specific problems but they cant alter the output for the problems right? or can they? I mean if I use 'ilu' instead of 'amg', it may change the speed but not the output,.. correct?

Thanks for your help,

asked Aug 6, 2016 by Nikita FEniCS Novice (410 points)
edited Aug 6, 2016 by Nikita

1 Answer

0 votes
 
Best answer

This criteria should not have any effect on the main result/ output

They can. If tolerances are not much tight then there is a space to a difference when different criterion stops at different level of approximation. Moreover, one can see severe difference if there is a numerical instability involved in the algorithm (or even physical instability in the eqautions).

They may alter the speed for specific problems but they cant alter the output for the problems right?

Here the answer would be pretty much same and applies to numerical algorithms in general. Two different algorithms can give a same result after convergence. Theoretical knowledge may or may not guarantee convergence. Convergence may not be enough from a practical point of view - numerical instability may spoil an approximation so that two different algorithms may give very different approximations.

answered Aug 8, 2016 by Jan Blechta FEniCS Expert (51,420 points)
selected Aug 11, 2016 by Nikita

Thank you very much for your help Jan. I' ll soon be asking a related question with more details.

...