solid¶
Module: solid
Category: solver
Type string: "solid"
Parameters¶
| Name | Description | Default | Units |
|---|---|---|---|
symmetric_stiffness |
matrix format | 1 | [] |
equation_scheme |
equation_scheme | 0 | [] |
equation_order |
equation_order | 0 | [] |
optimize_bw |
optimize_bw | false | [] |
lstol |
lstol | 0.9 | [] |
lsmin |
lsmin | 0.01 | [] |
lsiter |
lsiter | 5 | [] |
ls_check_jacobians |
ls_check_jacobians | false | [] |
max_refs |
max_refs | 15 | [] |
check_zero_diagonal |
check_zero_diagonal | false | [] |
zero_diagonal_tol |
zero_diagonal_tol | 0 | [] |
force_partition |
force_partition | 0 | [] |
reform_each_time_step |
reform_each_time_step | true | [] |
reform_augment |
reform_augment | false | [] |
diverge_reform |
diverge_reform | true | [] |
min_residual |
min_residual | 1e-20 | [] |
max_residual |
max_residual | 0 | [] |
dtol |
dtol | 0.001 | [] |
etol |
etol | 0.01 | [] |
rtol |
rtol | 0 | [] |
rhoi |
rhoi | -2 | [] |
alpha |
alpha | 1 | [] |
beta |
beta | 0.25 | [] |
gamma |
gamma | 0.5 | [] |
logSolve |
logSolve | false | [] |
arc_length |
arc_length | 0 | [] |
arc_length_scale |
arc_length_scale | 0 | [] |
qn_method |
[] | ||
linear_solver |
[] |
Description¶
The solid solver is the default solver used by FEBio for solving quasi-static or dynamic solid and structural mechanics problems.
Nonlinear solver¶
The solid solver solves the nonlinear finite element equations using a quasi-Newton method. This is an iterative method that requires the formation of the stiffness matrix and then uses this matrix to solve a linear system of equations. Several parameters control when the stiffness matrix is formed.
-
max_refs: the maximum number of reformations of the stiffness matrix. Once this number is reached, FEBio will stop end the current timestep and either error terminate or try again using a smaller time step size. -
reform_each_time_step: When enabled, the stiffness matrix will always be reformed at the start of each time step. -
reform_augment: This flag determines whether the stiffness matrix is reformed at the start of each augmentation. -
diverge_reform: When enabled, the stiffness matrix will be reformed when the energy norm increases. -
check_zero_diagonal: When set to 1, the diagonal is checked for diagonal values that are close to zero. An error is produced when a zero diagonal is found. -
zero_diagonal_tol: The tolerance for the zero-diagonal check. -
qn_method: This property sets the quasi-newton strategy. For symmetric problems it is recommended to use BFGS. For non-symmetric problems, it is advised to used Broyden instead. -
linear_solver: This is an optional property that allows the user to explicitly specify the linear solver to be used for this model. If not specified, the default linear solver (usually the pardiso).
Several criteria are used to determine convergence of the solution for each timestep.
-
dtol: convergence tolerance on the displacement norm. -
rtol: convergence tolerance on the residual norm. -
etol: convergence tolerance on the energy norm. -
min_residual: the minimum value of the residual norm. If the residual norm drops below this value, the solution is considered converged, regardless of the other norms.
There are also several parameters that control the structure of the stiffness matrix itself.
-
symmetric_stiffness: when enabled, this forces the structure of the stiffness matrix to be symmetric. Linear systems with symmetric stiffness matrices can often be solved more efficiently, however, if the true stiffness matrix is non-symmetric this may lead to worse convergence behavior. -
optimize_bw: Permutes the internal node numbering to produce a stiffness matrix with minimal bandwidth. Minimizing the bandwidth may reduces the memory requirements for and the time to factorize the stiffness matrix. However, most modern linear solvers do this automatically and therefore by default this flag is off. (It is only recommended to use with the skyline) linear solver. -
equation_order: Specifies the order in which the degrees of freedom are iterated over for each node. Set the0for forward (default) order, and1for reverse order. -
equation_scheme: This parameter determines how the degrees of freedom (dofs) are grouped in the stiffness matrix. When set to0(staggered), all the dofs for a node are grouped together. When set to1(block) the dofs are grouped in blocks, one block for each dof.
For example, if each node has two dofs, \(a\) and \(b\), then the grouping for the different schemes looks like:
Line search¶
After the linear system is solved, a line search method will try to find a better solution, i.e. a solution that minimizes the energy, in the search direction. This can often significantly improve the convergence of the solution. The line search uses an iterative method to find this improved solution. The following parameters control the line search.
-
lstol: sets the tolerance for the line search method. Set to zero to skip the line search. -
lsmin: the minimum allowed value for the line search factor. -
lsiter: the maximum number of iterations allowed. -
ls_check_jacobians: During the line search, it can happen that negative jacobians (i.e. inverted elements) are encountered. The standard error behavior is to stop the time step and either error terminate or retry with a smaller timestep size. However, when this flag is enabled, the negative jacobian errors will be handled by the line search. Often a small enough line search factor can be found that allows the solution to continue.
Dynamics¶
For dynamic problems, the solid solver uses the generalized alpha method. This method has three control parameters, alpha, beta, and gamma. Several parameters control the time integration scheme and the value of these three control parameters.
-
rhoi: Specify a value between 0 and 1 to set the spectral radius of the time integration scheme. The control parameters are then derived from this value. The spectral radius controls the amount of damping the algorithm applies, with values from0(most damping) to1(no damping). Whenrhoiis set to -2, the classical Newmark method is used and the user needs to provide the values for alpha, beta and gamma. -
alpha: sets the alpha control parameter for the generalized alpha method. beta: sets the beta control parameter for the generalized alpha method.gamma: sets the gamma control parameter for the generalized alpha method.
Arc-length solver¶
The solid solver can also be used for solving problems with the arc-length method. Some special precautions need to be taken in order to use this arc-length solver. Firstly, there should be no time-dependence in the model. (None of the boundary conditions, loads, etc.) can use load controllers. Only constant loads (i.e. loads that do not depend on the deformation) can be used. Second, the time stepping parameters time_steps and step_size are interpreted as arc-length parameters with time_steps sets the number of arc-length increments, and step_size the arc-length increments.
arc_length: Set this parameter to 1 to enable the arc-length method.arc_length_scale: scale factor for the external force vector.