Prev Subsection 3.3.2: Time Stepper parameters Up Section 3.3: Control Section Subsection 3.3.4: Solver Parameters for a Structural Mechanics Analysis Next
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) | 1e 5 |
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 |
Comments:
- 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.
- 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.
- 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.
- 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>
- 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. - 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.
- 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