>>> I want to start small by porting a very simple code using fixed point >>> iterations as follows: A(x)x = b(x) is approximated as A(x0)x = b(x0), >>> then solved by KSP for x, then x0 is updated to x, then repeat until >>> convergence. > > Run the usual "Newton" methods with A(x) in place of the true Jacobian.
When I substitute A(x) into eq. 5.2 I get: A(x) dx = -F(x) (1) A(x) dx = -A(x) x + b(x) (2) A(x) dx + A(x) x = b(x) (3) A(x) (x+dx) = b(x) (4) My questions: * Will the procedure somehow optimally group the two A(x) terms into one, as in 3-4? This requires knowledge, will this be efficiently handled? * I am solving for x+dx, while eq. 5.3 solves for dx. Is this, and how, correctly handled? Should I somehow disable the update myself? Thanks a lot, Dominik > can compute A(x) in the residual > F(x) = A(x) x - b(x) > and cache it in your user context, then pass it back when asked to compute > the Jacobian. > This runs your algorithm (often called Picard) in "defect correction mode", > but once you write your equations this way, you can try Newton iteration > using -snes_mf_operator. > >>> >>> In the documentation chapter 5 I see all sorts of sophisticated Newton >>> type methods, requiring computation of the Jacobian. Is the above >>> defined simple method still accessible somehow in Petsc or such >>> triviality can only be done by hand? Which one from the existing >>> nonlinear solvers would be a closest match both in simplicity and >>> robustness (even if slow performance)? >> >> You want -snes_type nrichardson. All you need is to define the residual. > > Matt, were the 1000 emails we exchanged over this last month not enough to > prevent you from spreading misinformation under a different name?
