To provide the functions to the Picard iteration you call SNESSetPicard() not 
SNESSetFunction() and SNESSetJacobian(), you provide code to compute A(x) and 
b(x).

  Note that in the Picard iteration the matrix A(x) is NOT the Jacobian of  
F(x) = A(x) x - b(x). The Jacobian of F(x) is the more complicated F'(x) = A(x) 
+ A'(x)x + b'(x) 

  Barry


> On Oct 9, 2020, at 6:38 AM, Matthew Knepley <[email protected]> wrote:
> 
> On Fri, Oct 9, 2020 at 4:53 AM baikadi pranay <[email protected] 
> <mailto:[email protected]>> wrote:
> Hello,
> I have a couple of questions regarding how SNESSetFunction,SNESSetJacobian 
> and SNESSolve work together. I am trying to solve a nonlinear system of the 
> form A(x)x=b(x). I am using Fortran90. The way I intend to solve the above 
> equation is as follows:
> Step 1: initialize x with an initial guess
> Step 2: Solve using SNESSolve for (x^i, i is the iteration number, i=1,2,3...)
> Step 3: Calculate the update and check if it is less than tolerance
> Step 4: If yes, end the loop. Else the jacobian matrix and function should be 
> updated using x^(i) and go back to step 2.
> 
> You are describing the Picard iteration:
> 
>   
> https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetPicard.html
>  
> <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetPicard.html>
> 
> You can do this, but it will converge more slowly than Newton. We usually 
> advise using Newton.
>  
> The part which is a little confusing to me is in understanding how to update 
> the jacobian matrix and the function F (= A(x)x-b(x)). 
> 
> 1) Should I explicitly call the subroutines Form Function and FormJacobian by 
> using x^i as the input argument or is this automatically taken care of when I 
> go back to step 2 and call SNESSolve?
> 
> No. SNES calls these automatically.
> 
>   Thanks,
> 
>      Matt
>  
> 2) If the answer to the above question is yes, I do not fully understand the 
> role played by the functions SNESSetFunction and SNESSetJacobian.
> 
> I apologize if I am not clear in my explanation. I would be glad to elaborate 
> on any section of my question. Please let me know if you need any further 
> information from my side.
> 
> Thank you,
> Sincerely,
> Pranay.
> ᐧ
> 
> 
> -- 
> 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