Converted document
$\newcommand{\lyxlock}{}$
Subsection 3.3.2: Time Stepper parameters Up Section 3.3: Control Section Subsection 3.3.4: Solver Parameters for a Structural Mechanics Analysis

### 3.3.3 Common Solver Parameters

Many of the solvers define the same parameters. They are listed in the table below. Additional parameters that are only defined for a specific type of analysis are listed in the following sections.
 Parameter Description Default etol Convergence tolerance on energy (1) 0.01 rtol Convergence tolerance on residual (1) 0 (disabled) lstol Convergence tolerance on line search (2) 0.9 lsmin minimum line search step 0.01 lsiter Maximum number of line search iterations 5 max_refs Max number of stiffness reformations (3) 15 qnmethod Quasi-Newton update method (3) 0 (BFGS) max_ups Max number of BFGS/Broyden stiffness updates (3) 10 cmax Set the max condition number for the stiffness matrix (4) 1e5 diverge_reform Flag for reforming stiffness matrix when the solution diverges (3) 1 min_residual Sets minimal value for residual tolerance (6) 1e-20 symmetric_stiffness Use symmetric stiffness matrix flag (7) 1 equation_scheme Set the equation allocation scheme 0 equation_order Set the equation allocation ordering 0 optimize_bw Optimize bandwidth of stiffness matrix (5) 0
1. FEBio determines convergence of a time step based on three convergence criteria: displacement, residual and energy (that is, residual multiplied by displacement). Each of these criteria requires a tolerance value that will determine convergence when the relative change will drop below this value. For example, a displacement tolerance of means that the ratio of the displacement increment (i.e. the solution of the linearized FE equations, norm at the current iteration 1 to the norm of the total displacement ( must be less than : For the residual and energy norms, it is the ratio of the current residual norm (resp. energy norm) to the initial one that needs to be less than the specified convergence tolerance.
To disable a specific convergence criterion, set the corresponding tolerance to zero. For example, by default, the residual tolerance is zero, so that this convergence criterion is not used.
2. The lstol parameter controls the scaling of the vector direction obtained from the line search. A line search method is used to improve the convergence of the nonlinear (quasi-) Newton solution algorithm. After each BFGS or Newton iteration, this algorithm searches in the direction of the displacement increment for a solution that has less energy (that is, residual multiplied with the displacement increment) than the previous iteration. In many problems this will automatically be the case. However, in some problems that are very nonlinear (e.g. contact), the line search can improve convergence significantly. The line search can be disabled by setting the lstol parameter to zero, although this is not recommended.
3. The qnmethod parameter determines the quasi-Newton update method. For the BFGS method set qnmethod to 0 (default); for Broyden's method set qnmethod to 1. The max_ups and max_refs parameters control the BFGS/Broyden method that FEBio uses to solve the nonlinear FE equations. In this method the global stiffness matrix is only calculated 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.
Note that when max_ups is set to 0, FEBio will use the Full-Newton method instead of the BFGS method. In other words, the stiffness matrix is reformed for every 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.
4. When the condition number of the stiffness matrix becomes too large, inversions of the stiffness matrix become inaccurate. This will negatively affect the convergence of the quasi-Newton or Newton solution algorithm. FEBio monitors the condition number of the BFGS stiffness update and when it exceeds cmax it reforms the stiffness matrix.
<cmax>1e5</cmax>

5. The optimize_bw parameter enables bandwidth minimization for the global stiffness matrix. This can drastically decrease the memory requirements and running times when using the skyline solver. It is highly recommended when using the skyline solver.
<optimize_bw>1</optimize_bw>

When using a different linear solver (e.g., pardiso or SuperLU), the bandwidth optimization can still be performed if so desired. However, for these solvers there will be little or no effect since these solvers are not as sensitive to the bandwidth as the skyline solver.
6. If no force is acting on the model, then convergence might be problematic due to numerical noise in the calculations. For example, this can happen in a displacement driven contact problem where one of the contacting bodies is moved before initial contact is made. When this happens, the residual norm will be very small. When it drops below the tolerance set by min_residual, FEBio will assume that there is no force acting on the system and will converge the time step.
7. The symmetric_stiffness flag is used to set the symmetry of the global stiffness matrix. Only specify this flag if you want to override the default symmetry, which depends somewhat on the analysis type. Forcing a symmetric matrix when the problem is non-symmetric may have negative impact on convergence. The values for this parameter are:
- 0 = unsymmetic
- 1 = symmetric
- 2 = structurally symmetric
Subsection 3.3.2: Time Stepper parameters Up Section 3.3: Control Section Subsection 3.3.4: Solver Parameters for a Structural Mechanics Analysis