Skip to content

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.