[petsc-users] SNES norm control

Barry Smith bsmith at mcs.anl.gov
Tue Jan 12 07:24:13 CST 2016


> On Jan 12, 2016, at 7:14 AM, Gideon Simpson <gideon.simpson at gmail.com> wrote:
> 
> That seems to to allow for me to cook up a convergence test in terms of the 2 norm.  

  No, why just the two norm? You can put whatever tests you want into your convergence test, including looking at F_i/|x_i| if you want.  You need to call SNESGetSolution() and SNESGetFunction() from within your test routine to get the vectors you want to look at.


   Barry

> What I’m really looking for is the ability to change things to be something like the 2 norm of the vector with elements
> 
> F_i/|x_i|
> 
> where I am looking for a root of F(x).  I can just build that scaling into the form function, but is there a way to do it without rewriting that piece of the code?
> 
> 
> -gideon
> 
>> On Jan 12, 2016, at 12:14 AM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>> 
>> 
>>   You can use SNESSetConvergenceTest() to use whatever test you want to decide on convergence.
>> 
>> Barry
>> 
>>> On Jan 11, 2016, at 3:26 PM, Gideon Simpson <gideon.simpson at gmail.com> wrote:
>>> 
>>> I’m solving nonlinear problem for a complex valued function which is decomposed into real and imaginary parts, Q = u + i v.  What I’m finding is that where |Q| is small, the numerical phase errors tend to be larger.  I suspect this is because it’s using the 2-norm for convergence in the SNES, so, where the solution is already, the phase errors are seen as small too.  Is there a way to use something more like an infinity norm with SNES, to get more point wise control?
>>> 
>>> -gideon
>>> 
>> 
> 



More information about the petsc-users mailing list