!SOLVER¶
Solver control
Required control data.
Parameters¶
METHOD = Solution method (CG, BiCGSTAB, GMRES, GPBiCG, CR, PipeCG, GroppCG, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Direct method for analyses other than contact analysis (serial processing only) (currently unavailable)
DIRECTmkl : Direct method using Intel MKL
MUMPS : Direct method using MUMPS
When a direct method is selected, the data lines are ignored.
Iterative methods support OpenMP thread parallelism
PRECOND = Preconditioning method for iterative methods (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Block) SSOR (with multicolor ordering)
3 : (Block) Diagonal Scaling
5 : AMG using the multigrid preconditioning package ML
10 : Block ILU(0)
11 : Block ILU(1)
12 : Block ILU(2)
22 : AMG using HEC-MW's built-in SA-AMG (Smoothed Aggregation AMG)
10, 11, and 12 are available only for 3-DOF problems
22 is available only in builds with LAPACK enabled
For OpenMP thread parallelism, SSOR, Diagonal Scaling, ML, SA-AMG,
or Block ILU (10, 11, 12) for 3-DOF problems is recommended
ITERLOG = Whether to output iterative-solver convergence history (YES/NO)(Default: NO)
TIMELOG = Whether to output solver computation time (YES/NO/VERBOSE)(Default: NO)
LOGLEVEL = Preconditioner diagnostic output level (integer)(Default: no output)
Specified independently of ITERLOG and TIMELOG
A value of 1 or higher outputs hierarchy construction and other information for AMG preconditioners (PRECOND=5,22)
A value of 2 or higher outputs more detailed information (such as memory usage)
USEJAD = Whether to use ordering for vector processors (YES/NO)(Default: NO)
Valid only when an iterative method is used
SCALING = Whether to scale the matrix so that diagonal entries are 1 (YES/NO)(Default: NO)
Valid only when an iterative method is used for a 3-DOF problem
DUMPTYPE = Matrix dump format (NONE, MM, CSR, BSR) (mainly for debugging)
NONE : Do not dump (Default)
MM : Matrix Market format
CSR : Compressed Sparse Row (CSR) format
BSR : Blocked CSR format
DUMPEXIT = Terminate the program immediately after matrix dumping (YES/NO)(Default: NO)
MPCMETHOD = Method for handling multi-point constraints (1, 3)
1: Penalty method (Default when using a direct method)
3: Explicit DOF elimination (Default when using an iterative method)
The MPC-CG method (2) has been removed. Specifying 2 produces a warning and uses the default method.
ESTCOND = Frequency of condition-number estimation (experimental)
Estimate the condition number at each specified iteration interval and at the end of the iterations
No estimation is performed when 0 is specified
RECOMPUTE_RESIDUAL = Frequency of residual-vector recomputation
Valid only when CG, BiCGSTAB, GPBiCG, or PipeCG is specified for METHOD
The recomputation interval for GroppCG is fixed at 50, and this setting is not used
Iterative methods update the residual vector by recurrence, so roundoff error accumulates
At each specified iteration interval, recompute the residual vector from {b}-[A]{x}
If 0 is specified, use the default for each method (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
If a negative value is specified, periodic recomputation is not performed
Recalculation for confirmation when the convergence criterion is satisfied is always performed regardless of this setting
If the interval is too short, matrix-vector products increase and
convergence itself may deteriorate or convergence may fail
If you change the default, check the convergence history and final relative residual
METHOD2 = Second solution method (BiCGSTAB, GMRES, GPBiCG) (experimental)
Valid only when CG, PipeCG, or GroppCG is specified for METHOD
If the method specified by METHOD diverges, automatically switch to the second method and solve the system
The same values are used for the other parameters and data lines
CONTACT_ELIM = Specifies whether DOF elimination is performed in contact analysis (0,1)
0: Perform DOF elimination only when using an iterative method (Default)
1: Always perform DOF elimination (including when using a direct method)
** Second and subsequent lines **
| Variable | Type | Description |
|---|---|---|
| NITER | I | Number of iterations (Default: 100) |
| iterPREmax | I | Number of Additive Schwarz preconditioning iterations (Default: 1) (Recommended value: 1; 2 may be effective in some parallel computations) |
| NREST | I | Krylov subspace size (Default: 10) (Valid only when GMRES is selected as the solution method) |
| NCOLOR_IN | I | Target number of colors for multicolor ordering (Default: 10) (Valid only when the number of OpenMP threads is 2 or greater) |
| RECYCLEPRE | I | Number of times preconditioner setup information is reused (Default: 3) (Valid only in nonlinear analysis) |
| Variable | Type | Description |
|---|---|---|
| RESID | R | Convergence tolerance (Default: 1.0e-8) |
| SIGMA_DIAG | R | Factor applied to diagonal entries when computing the preconditioner matrix (Default: 1.0) (If division by zero or divergence occurs with ILU preconditioning, setting a value greater than 1.0 may allow the problem to be solved) (Valid only for ILU and diagonal-scaling preconditioners. SSOR uses OMEGA.) |
| OMEGA | R | Relaxation parameter for SSOR preconditioning (Default: 1.0) (A value of 1.0 is equivalent to the conventional SSOR preconditioner) (The valid range is greater than 0 and less than 2. Out-of-range values, and values within machine epsilon of 0 or 2, are treated as 1.0.) |
When PRECOND=5 (optional)¶
If PRECOND is set to a value other than 5 or 22, the fourth line is ignored.
| Variable | Type | Description |
|---|---|---|
| ML_CoarseSolver | I | Coarse-grid solver for ML (1: use the smoother, 2: KLU (serial direct method), 3: MUMPS (parallel direct method)) (Default: 1) (Recommended: 3 or 2 for difficult problems, 1 for ordinary problems) |
| ML_Smoother | I | ML smoother (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (Default: 1) (Recommended: 1) |
| ML_MGCycle | I | ML multigrid cycle (1: V-cycle, 2: W-cycle, 3: Full-V-cycle) (Default: 1) (Recommended: 2 for difficult problems, 1 for ordinary problems) |
| ML_MaxLevels | I | Maximum number of ML levels (Default: 10) (For particularly difficult problems, use a direct coarse-grid solver and 2 levels (or 3 if memory is insufficient); for ordinary problems, 10 is recommended) |
| ML_CoarseningScheme | I | ML coarsening scheme (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (Default: 1) (Recommended: 1 or 5) |
| ML_NumSweep | I | Number of ML smoother sweeps (polynomial degree for Chebyshev) (Default: 2) (Recommended: 2 for Chebyshev, 1 for SymBlockGaussSeidel) |
When PRECOND=22 (optional)¶
If PRECOND is set to a value other than 22, the fifth line is ignored. Both the fourth and fifth lines may be omitted in their entirety, and trailing items on either line may also be omitted. The default value is used for any item specified as 0.
Items 1 through 7 on the fourth line are arranged in the same order as the option line for PRECOND=5 (ML), so the ML option line can be reused as-is. Items 8 through 10 are specific to SA-AMG.
(4th line) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (unused), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (unused)
| Variable | Type | Description |
|---|---|---|
| SA_CoarseSolver | I | Coarse-grid solver (0: automatic, 1: use the smoother, 2: dense direct method, 3: MUMPS (parallel direct method)) (Default: 0) (In automatic mode, MUMPS is used in builds with MUMPS enabled; otherwise, the dense direct method is used) |
| SA_Smoother | I | Smoother (0 or 1: Chebyshev) (Default: 0) (Only Chebyshev is supported. If another value is specified, a warning is issued and Chebyshev is used) |
| SA_MGCycle | I | Multigrid cycle (0: default (W-cycle), 1: V-cycle, 2: W-cycle) (Default: 0) (Full-V-cycle is not supported) |
| SA_MaxLevels | I | Maximum number of levels (Default: 20) |
| (unused) | I | Position corresponding to the ML coarsening scheme. Because SA-AMG always uses uncoupled aggregation, a nonzero value produces a warning and is ignored |
| SA_ChebyDegree | I | Polynomial degree of the Chebyshev smoother (Default: 2) |
| SA_CoarseSize | I | Coarse-grid cutoff size (Default: 50000 when MUMPS is used as the coarse-grid solver; otherwise 100) |
| SA_MaxAggSize | I | Maximum aggregate size (Default: 96) |
| SA_GalerkinLowMem | I | Coarse-grid matrix computation method (0: normal (prioritizes speed), positive value: memory-saving) (Default: 0) (Specify a positive value if memory is insufficient during setup) |
| (unused) | I | Reserved for future extensions |
The fifth line is specific to SA-AMG and is not read by ML.
(5th line) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Variable | Type | Description |
|---|---|---|
| SA_Theta | R | Threshold for determining strong connections (Default: 0.0) (At 0.0, the nonzero structure of the matrix is used directly as the graph) |
| SA_ChebyAlpha | R | Ratio that determines the lower bound of the eigenvalue interval targeted by the Chebyshev smoother (Default: 20.0) |
| SA_Safety | R | Safety factor applied to the estimated maximum eigenvalue (Default: 1.1) |
| SA_TaperK | R | Coarsening taper coefficient K (Default: 100) (From level 2 onward, coarsening is made more gradual so that at least approximately K aggregates remain. A negative value disables tapering) |
| SA_AggOrder | R | Aggregation traversal order (0: default (BFS order), 1: BFS order, 2: hash order of node numbers (experimental), 3: ascending order of degree (experimental), 4: descending order of degree (experimental), negative value: node-number order) (Default: 0) |
| SA_MinAggSize | R | Minimum aggregate size (Default: 3) |
| SA_Verify | R | Whether to run a self-check during setup (0: no, positive value: yes) (Default: 0) (mainly for debugging) |
| SA_DumpVTK | R | Whether to output the aggregation at the highest level in VTK format (0: no output, positive value: output) (Default: 0) (mainly for debugging) |
Example¶
Use CG with SSOR preconditioning, and set the maximum iteration count to 10000 and the convergence tolerance to 1.0e-8
Use GMRES with SSOR preconditioning, and set the Krylov subspace size to 40 and the target number of colors for multicolor ordering to 100
Use CG with ILU(0) preconditioning, and set the factor applied to diagonal entries when computing the preconditioner matrix to 1.1
Use ML AMG as the preconditioner for CG
Use ML AMG as the preconditioner for CG and MUMPS as the coarse-grid solver (for difficult problems)
Use ML AMG as the preconditioner for CG and W-cycle as the multigrid cycle (for difficult problems)
Use ML AMG as the preconditioner for CG, use MUMPS as the coarse-grid solver, and set the maximum number of levels to 2 (for very difficult problems)
Use HEC-MW's built-in SA-AMG as the preconditioner for CG
Use SA-AMG as the preconditioner for CG and MUMPS as the coarse-grid solver
For frictional contact analysis, use BiCGSTAB with SA-AMG preconditioning and output the AMG preconditioner hierarchy