Limited-Memory Quasi-Newton methods for the solution of nonlinear systems. 

Options Database

-snes_qn_m <m>

- Number of past states saved for the L-Broyden methods. 
+ -snes_qn_restart_type <powell,periodic,none> - set the restart type

-snes_qn_powell_gamma

- Angle condition for restart. 

-snes_qn_powell_descent

- Descent condition for restart. 

-snes_qn_type <lbfgs,broyden,badbroyden>

- QN type

-snes_qn_scale_type <shanno,none,linesearch,jacobian>

- scaling performed on inner Jacobian

-snes_linesearch_type <cp, l2, basic>

- Type of line search. 

-snes_qn_monitor

- Monitors the quasi-newton Jacobian. 

Notes: This implements the L-BFGS, Broyden, and "Bad" Broyden algorithms for the solution of F(x) = b using
previous change in F(x) and x to form the approximate inverse Jacobian using a series of multiplicative rank-one
updates. 

When using a nonlinear preconditioner, one has two options as to how the preconditioner is applied.  The first of
these options, sequential, uses the preconditioner to generate a new solution and function and uses those at this
iteration as the current iteration's values when constructing the approximate Jacobian.  The second, composed,
perturbs the problem the Jacobian represents to be P(x, b) - x = 0, where P(x, b) is the preconditioner.