Solver and Preconditioning¶
FrontISTR linear solvers are configured by choosing either a direct or iterative method; iterative methods are combined with a preconditioner to solve the linear equations. The MPC treatment method and contact-DOF elimination are auxiliary choices that determine how a linear system containing multipoint or contact constraints is handled.
Functional Overview¶
Solver and preconditioning settings consist of the following choices. First select either an iterative or direct method as the linear solver. A preconditioner is combined only with an iterative method.
| Category | Main Options | Role |
|---|---|---|
| Iterative methods | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN |
Solve large sparse matrices with relatively efficient memory use. |
| Preconditioners for iterative methods | SSOR, diagonal scaling, BILU, AMG, SAINV, RIF | Improve convergence of iterative methods. Not used with direct methods. |
| Direct methods | MUMPS, MKL |
Solve linear equations robustly by matrix factorization. |
| MPC treatment methods | Penalty method, MPC-CG method, explicit DOF elimination | Incorporate multipoint constraints into the linear system. |
| Contact-DOF elimination | Automatic, always enabled | Controls the treatment of contact degrees of freedom added by SLAGRANGE contact. |
| Auxiliary functions | Condition-number estimation, matrix dump, logging | Support debugging, convergence assessment, and performance evaluation. |
For parallel execution, MPI parallelism based on domain decomposition can be combined with OpenMP thread parallelism. Iterative methods are the standard choice for large-scale parallel analyses, while direct methods are used when the required libraries are linked and a more robust solution is needed.
Choosing a Solver and Preconditioner¶
First decide whether to use an iterative or direct method. If an iterative method is selected, then choose a preconditioner.
| Decision Factor | Recommended Approach |
|---|---|
| Problem size | Direct methods are stable and easy to use for small to medium problems. Iterative methods are more memory-efficient for large problems. |
| Matrix symmetry | Consider CG for symmetric positive-definite problems. For nonsymmetric problems, consider BiCGSTAB, GMRES, GPBiCG, or similar methods. |
| Parallel environment | Under MPI parallelism, combine an iterative method with domain decomposition. For preconditioning under OpenMP parallelism, consider a multicolor SSOR implementation. |
| Preconditioner (when using an iterative method) | Try the default SSOR first, then consider AMG. SSOR is computationally lightweight when convergence is good; AMG is suitable for complex, large-scale problems. |
| Contact and MPC | In analyses containing contact or multipoint constraints, the choice of MPC treatment method and contact-DOF elimination affects convergence and robustness. |
| External libraries | MUMPS, MKL, and AMG are available in builds linked with the corresponding libraries. |
For standard analyses, the default convergence tolerance, maximum iteration count, and diagonal correction coefficient for the preconditioner are generally sufficient. Only when convergence is slow or the solution diverges should you reconsider, in order, the iterative method, preconditioner, MPC treatment method, and contact-DOF elimination. See the !SOLVER keyword reference for parameter values and syntax.
Iterative Methods¶
Iterative methods solve large sparse systems by repeatedly updating the solution through matrix-vector products and preconditioning. FrontISTR provides the following iterative methods.
| Iterative Method | Typical Application | Notes |
|---|---|---|
CG |
Symmetric positive-definite problems | A standard candidate for structural and heat-conduction analyses. |
BiCGSTAB |
Nonsymmetric problems | A candidate when contact or coupled effects produce strong nonsymmetry. |
GMRES |
Nonsymmetric problems | Used with a specified Krylov subspace size. |
GPBiCG |
Nonsymmetric problems | Used as an improved method in the BiCGSTAB family. |
GMRESR |
Nonsymmetric problems, advanced applications | An option that uses GMRES in a nested form. |
GMRESREN |
Nonsymmetric problems, advanced applications | A recursive variant in the GMRESR family. |
CG assumes that the matrix is symmetric positive definite. If frictional contact, nonsymmetric constraint treatment, coupling effects, or similar factors introduce strong nonsymmetry, consider BiCGSTAB, GMRES, GPBiCG, or another nonsymmetric solver. With GMRES, increasing the Krylov subspace size can improve convergence, but also increases memory usage.
When METHOD2 is specified, FrontISTR can switch to an alternative iterative method if CG diverges or breaks down. This function is a fallback for cases in which CG is the primary solver; the alternative method uses the same remaining settings and data lines as the primary solver.
Preconditioning¶
Preconditioning transforms the coefficient matrix to improve convergence of an iterative method and is applied only when an iterative method is selected. Direct methods do not use preconditioning. Even for the same iterative method, the choice of preconditioner can substantially change the number of iterations and computation time required for convergence.
| Preconditioner | Characteristics | Typical Application |
|---|---|---|
| SSOR | Standard preconditioner; supports multicolor ordering. | First candidate to try; widely used in structural analysis. |
| Diagonal scaling | Lightweight preconditioner using diagonal entries. | When low computational cost is preferred. |
| BILU | Block incomplete LU factorization. | A candidate for problems that are difficult to converge with SSOR. |
| AMG | Algebraic multigrid using Trilinos-ML. | A candidate for large-scale problems or problems dominated by hierarchical error components. |
| SAINV | Sparse Approximate Inverse. | A specialized preconditioning option for contact problems or distributed-memory environments. |
| RIF | Robust Incomplete Factorization. | Another incomplete-factorization option. |
SSOR is the standard choice, and a multicolor-ordering version is used under OpenMP parallelism. Diagonal scaling is lightweight, although its convergence improvement depends on the problem. BILU is implemented as a block incomplete LU factorization and also supports matrices with general numbers of degrees of freedom. For the BILU family, there is a path that automatically increases the diagonal correction coefficient SIGMA_DIAG and retries when an iterative method diverges; see the keyword reference for how to specify the value.
AMG uses Trilinos-ML, so ML must be enabled at build time. Smoothers, multigrid cycles, coarsening methods, and other settings can be specified, but see the keyword reference for detailed values. When SAINV is used in a parallel analysis containing contact or MPC constraints, the overlap depth used for domain decomposition can affect convergence.
Direct Methods¶
Direct methods solve linear equations by factorizing the coefficient matrix. Because they do not depend on an iteration count, they are robust and can be a stable choice for analyses containing contact or constraint conditions. Their memory consumption, however, increases with problem size.
| Direct Method | Parallel Environment | Application |
|---|---|---|
MUMPS |
MPI parallel | Solves sparse matrices by a direct method in distributed-memory environments. |
MKL |
Intel MKL / OpenMP | Direct solver based on Intel MKL. Intel PARDISO is used internally. With multiple MPI processes, the Cluster MKL path is used. DIRECTmkl is an alias of MKL. |
Direct methods can be used for both symmetric and nonsymmetric matrices. MUMPS and MKL require the corresponding libraries to be linked at build time. They cannot be used in environments without those libraries, so see the build guide for required dependencies and CMake options.
FrontISTR also contains a built-in direct-solver path that does not use an external library, but for ordinary analyses requiring a direct method, MUMPS or MKL should normally be considered first.
Preconditioning is not applied to direct methods. Even if a preconditioner is specified in !SOLVER, it is not referenced on the direct-solver path.
MPC Treatment Methods¶
The MPC treatment method determines how degrees of freedom connected by multipoint constraints are incorporated into the linear equations. Even with the same constraint equations in the input data, the treatment method changes the properties and convergence behavior of the coefficient matrix.
| MPC Treatment Method | Positioning | Default Use |
|---|---|---|
| Penalty method | Approximately satisfies the constraints by adding large stiffness terms to the constraint equations. | Default for direct methods. |
| MPC-CG method | Legacy method that handles matrix-vector products containing constraints inside the iterative solver. | Deprecated. |
| Explicit DOF elimination | Eliminates constrained degrees of freedom and solves the reduced linear system. | Default for iterative methods. |
The penalty method is the default for direct methods, while explicit DOF elimination is the default for iterative methods. The MPC-CG method is a legacy compatibility option and is not recommended for new analyses; normally use explicit DOF elimination or the default treatment for the selected direct method.
The MPC treatment method can be specified explicitly with MPCMETHOD in !SOLVER. See the keyword reference for the meaning and syntax of each value.
Contact-DOF Elimination¶
Contact-DOF elimination reduces the additional contact degrees of freedom introduced by SLAGRANGE contact before passing the system to the linear solver. Eliminating these contact degrees of freedom can improve the properties of the linear system handled by an iterative method.
In the default automatic mode, contact-DOF elimination is enabled for iterative methods and disabled for direct methods. For direct methods, a path is provided that solves the enlarged system containing the contact degrees of freedom directly.
When CONTACT_ELIM is specified explicitly, contact-DOF elimination can also be performed when a direct method is used. For choices of contact type, contact pair, and contact algorithm on the input side, see the Contact and Embedding page.
Auxiliary Functions¶
Condition-number estimation, matrix dumps, and logging can be used to investigate solver convergence and performance. These functions are unnecessary for normal analyses and are enabled primarily for debugging or performance evaluation.
| Function | Purpose | Notes |
|---|---|---|
| Condition-number estimation | Outputs an indicator of the condition number for CG and GMRES. |
Available in builds with LAPACK enabled. |
| Matrix dump | Saves the matrix and right-hand side passed to the solver. | Supports Matrix Market, CSR, and BSR formats. |
DUMPEXIT |
Terminates the analysis after dumping the matrix. | Used when only the matrix is required for external verification. |
ITERLOG |
Outputs the convergence history of an iterative method. | Used to inspect residual trends. |
TIMELOG |
Outputs solver computation time. | VERBOSE outputs a more detailed breakdown. |
STEPLOG |
Outputs step information. | Used to inspect the analysis procedure. |
Matrix dumping allows the coefficient matrix assembled by the analysis to be inspected with external tools. When DUMPEXIT is enabled, the analysis terminates after the matrix and right-hand side have been saved. Condition-number estimation is an experimental function available with CG and GMRES, and can be used to diagnose convergence behavior.
Related Topics¶
- Linear Solver (Theory) — Mathematical principles of iterative methods and preconditioning.
- Nonlinear Iteration and Time Integration — Framework for Newton iterations, contact iterations, and time integration that invokes the linear solver.
- Domain Decomposition — MPI parallel analysis and overlap-depth settings.
- Contact and Embedding — Selection of contact types and contact algorithms.
- !SOLVER — Values and syntax of solver and preconditioner parameters.
- Required and Optional Dependency Libraries — Dependencies such as
MUMPS,MKL(Intel PARDISO), Trilinos-ML, and LAPACK.