Prev Subsection 3.3.3: Common Solver Parameters Up Section 3.3: Control Section Subsection 3.3.5: Solver Parameters for a Structural Mechanics Analysis Next
3.3.4 Quasi-Newton Solver Parameters
Most solvers in FEBio use the quasi-Newton method for solving the nonlinear FE equations. Several different QN algorithms are implemented as described below. The specific QN method is selected using the qn_method property of the solver. The following QN methods are supported.
BFGS The Broyden-Fletcher-G-S method. (default if qn_method is not specified). This method assumes the global stiffness matrix is symmetric. It can still be used with non–symmetric matrices, but the convergence might be compromised.
Broyden The Broyden method is similar to BFGS, but works with both symmetric and non-symmetric matrices. Therefore, it is the recommended method for problems that generate a non-symmetric stiffness matrix, such as (some) contact formulations, biphasic, multi-phasic, fluid, fluid FSI.
JFNK This is an implementation of the Jacobian-Free-Newton-Krylov method. When using this option, you must also use an iterative linear solver such as FGMRES.
Both the BFGS and Broyden methods calculate the global stiffness matrix at the beginning of each time step. For each iteration, a matrix update is then done. The maximum number of such updates is set with max_ups. When FEBio reaches this number, or if the solution diverges and diverge_reform is set to 1, it reforms the global stiffness matrix (that is, it recalculates it) and factorizes it, essentially taking a "full Newton" iteration. Then FEBio continues with BFGS/Broyden iterations. The max_refs parameter is used to set the maximum of such reformations FEBio can do, before it fails the timestep. In that case, FEBio will either terminate or, if the auto-time stepper is enabled, retry with a smaller time step size.
The BFGS and Broyden take the following parameters.
Parameter | Description | Default |
max_ups | This is the maximum number of updates between stiffness matrix reformations. | 10 |
Note that when max_ups is set to 0, FEBio effectively will use a Full-Newton method since the stiffness matrix is reformed each iteration. In this case it is recommended to increase the number of max_refs (to e.g. 50), since the default value might cause FEBio to terminate prematurely when convergence is slow.