!SOLVER¶
Control of solver
Mandatory control data
Parameter¶
METHOD = Method (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT: Direct method other than contact analysis (serial processing only) (currently unavailable)
DIRECTmkl: Direct method by Intel MKL
MUMPS : Direct method by MUMPS
When any of direct methods is selected, the data lines will be disregarded.
Thread-parallel computation by OpenMP is available in iterative methods
for 3D problems.
PRECOND = Preconditioner for iterative methods (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Block) SSOR (with multi-color ordering only for 3D problems)
3 : (Block) Diagonal Scaling
5 : AMG by multigrid preconditioner package ML
10 : Block ILU(0)
11 : Block ILU(1)
12 : Block ILU(2)
22 : AMG by SA-AMG (Smoothed Aggregation AMG) built into HEC-MW
10, 11 and 12 are available only in 3D problems.
22 is available only in a LAPACK-enabled build.
In thread-parallel computation, SSOR, Diagonal Scaling, ML or SA-AMG is recommended.
ITERLOG = Whether solver convergence history is output (YES/NO) (Default: NO)
TIMELOG = Whether solver computation time is output (YES/NO/VERBOSE) (Default: NO)
LOGLEVEL = Verbosity of preconditioner diagnostics (integer) (Default: no output)
Specified independently of ITERLOG and TIMELOG.
1 or greater outputs the hierarchy of the AMG preconditioners (PRECOND=5 and 22).
2 or greater outputs further details such as memory usage.
USEJAD = Whether matrix ordering optimized for vector processors are performed
(YES/NO) (Default: NO)
Valid only in 3D problems with iterative solvers.
SCALING = Whether matrix is scaled so that each diagonal element becomes 1 (YES/NO)
(Default: NO)
Valid only in 3D problems with iterative solvers.
DUMPTYPE = Type of matrix dumping (NONE, MM, CSR, BSR) (Mainly for debugging)
NONE : no dumping (Default)
MM : matrix is dumped in Matrix Market format
CSR : matrix is dumped in Compressed Sparse Row (CSR) format
BSR : matrix is dumped in Blocked CSR format
DUMPEXIT = Whether the program terminates right after matrix dumping (YES/NO)
(Default: NO)
MPCMETHOD = Method for multipoint constraints
1: Penalty method (Default for direct methods)
3: Explicit master-slave elimination (Default for iterative methods)
The MPC-CG method, which was value 2, has been removed. Specifying 2 warns and
falls back to the default method.
ESTCOND = Frequency of condition number estimation (experimental)
Estimation is performed at every specified number of iterations and at the last
iteration. No estimation when 0 is specified.
RECOMPUTE_RESIDUAL = Frequency of recomputing the residual vector
Valid only when CG, BiCGSTAB, GPBiCG or PipeCG is specified as METHOD.
These methods update the residual vector by a recurrence formula, which
accumulates rounding errors. At every specified number of iterations, the
residual vector is recomputed as {b}-[A]{x} instead.
When 0 is specified, the default of each method is used
(CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50).
When a negative value is specified, no periodic recomputation is performed.
The recomputation for confirming convergence is always performed regardless of
this parameter.
Too short a period not only adds matrix-vector products but can also degrade
the convergence itself, up to the point where the solve no longer converges.
After changing this parameter from its default, check the convergence history
and the final relative residual.
METHOD2 = Secondary method (BiCGSTAB, GMRES, GPBiCG) (experimental)
Valid only when CG is specified as METHOD.
When specified, the method is switched and solution continues when CG diverged.
All the other parameters and data lines are shared with the CG method.
CONTACT_ELIM = Whether DOF elimination is performed in contact analysis (0, 1)
0: Perform DOF elimination only when using iterative methods (Default)
1: Always perform DOF elimination (even when using direct methods)
** 2nd line or later **
| Parameter Name | Attributions | Contents |
|---|---|---|
| NITER | I | No. of iterations (Default: 100) |
| iterPREmax | I | No. of iteration of preconditioning based on Additive Schwarz (Default: 1) (recommended value : 1 (2 might be efficient in some parallel computation)) |
| NREST | I | No. of Krylov subspaces (Default: 10) (Valid only when GMRES is selected as the solution) |
| NCOLOR_IN | I | No. of Colors for Multi-Color ordering (Default: 10) (Valid only when no. of OpenMP threads >= 2) |
| RECYCLEPRE | I | No. of recycling set-up info for preconditioning (Default: 3) (Valid only in nonlinear analyses) |
| Parameter Name | Attributions | Contents |
|---|---|---|
| RESID | R | Truncation error (Default: 1.0e-8) |
| SIGMA_DIAG | R | Scale factor for diagonal elements when computing preconditioning matrix (Default: 1.0) (When divide-by-zero or divergence occurs with ILU preconditioning, convergence might be obtained by setting number greater than 1.0) |
| SIGMA | R | Not used (Default: 0.0) |
In case of PRECOND=5 (Optional)¶
When a value other than 5 or 22 is specified for PRECOND, the 4th line will be disregarded.
| Parameter Name | Attributions | Contents |
|---|---|---|
| ML_CoarseSolver | I | Coarse solver of ML (1: smoother, 2: KLU (serial direct solver), 3: MUMPS (parallel direct solver)) (Default: 1) (recommended value : 3 or 2 for stiff problems, 1 for other problems) |
| ML_Smoother | I | Smoother of ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (Default: 1) (recommended value : 1) |
| ML_MGCycle | I | Multigrid cycle of ML (1: V-cycle, 2: W-cycle, 3: Full-V-cycle) (Default: 1) (recommended value : 2 for stiff problems, 1 for other problems) |
| ML_MaxLevels | I | Max No. of levels of ML (Default: 10) (recommended value : 2 (or 3 when memory is not sufficient) with direct coarse solver for very stiff problems, 10 for other problems) |
| ML_CoarseningScheme | I | Coarsening scheme of ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (Default: 1) (recommended value : 1 or 5) |
| ML_NumSweep | I | No. of smoother sweeps of ML (polynomial degree for Chebyshev) (Default: 2) (recommended value : 2 for Chebyshev, 1 for SymBlockGaussSeidel) |
In case of PRECOND=22 (Optional)¶
When a value other than 22 is specified for PRECOND, the 5th line will be disregarded. Each of the 4th and 5th lines can be omitted as a whole, and trailing entries of a line can also be omitted. The default value is used for each entry specified as 0.
The 1st to 7th entries of the 4th line have the same layout as the option line of PRECOND=5 (ML), so an ML option line can be reused as it is. The 8th to 10th entries 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)
| Parameter Name | Attributions | Contents |
|---|---|---|
| SA_CoarseSolver | I | Coarse solver (0: automatic, 1: smoother, 2: dense direct solver, 3: MUMPS (parallel direct solver)) (Default: 0) (automatic selects MUMPS in a MUMPS-enabled build, and the dense direct solver otherwise) |
| SA_Smoother | I | Smoother (0, 1: Chebyshev) (Default: 0) (Only Chebyshev is supported. Any other value is ignored with a warning 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 | Max No. of levels (Default: 20) |
| (unused) | I | Corresponds to the coarsening scheme of ML. SA-AMG always uses uncoupled aggregation, so any nonzero value is ignored with a warning. |
| SA_ChebyDegree | I | Polynomial degree of the Chebyshev smoother (Default: 2) |
| SA_CoarseSize | I | Size threshold at which coarsening stops (Default: 50000 when MUMPS is used as the coarse solver, 100 otherwise) |
| SA_MaxAggSize | I | Max size of an aggregate (Default: 96) |
| SA_GalerkinLowMem | I | Computation mode of the coarse matrix (0: normal (speed-oriented), positive: low-memory) (Default: 0) (Specify a positive value when memory is insufficient during setup.) |
| (unused) | I | Reserved for future extension |
The 5th 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
| Parameter Name | Attributions | Contents |
|---|---|---|
| SA_Theta | R | Strength-of-connection threshold (Default: 0.0) (With 0.0, the nonzero structure of the matrix is used as the graph as it is.) |
| SA_ChebyAlpha | R | Ratio that defines the lower end 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 | Coefficient K of the coarsening taper (Default: 100) (Coarsening is relaxed so that at least about K aggregates remain on level 2 and deeper. A negative value disables the taper.) |
| SA_AggOrder | R | Seed-scan ordering of the aggregation (0: default (BFS order), 1: BFS order, 2: hash of node ID (experimental), 3: ascending degree (experimental), 4: descending degree (experimental), negative: node ID order) (Default: 0) |
| SA_MinAggSize | R | Min size of an aggregate (Default: 3) |
| SA_Verify | R | Whether self-checks are performed at setup (0: no, positive: yes) (Default: 0) (Mainly for debugging) |
| SA_DumpVTK | R | Whether the aggregation of the finest level is dumped in VTK format (0: no, positive: yes) (Default: 0) (Mainly for debugging) |
Example of Use¶
Use CG with SSOR preconditioning, and set No. of iteration to 10000 and truncation error to 1.0e-8
Use GMRES with SSOR preconditioning, and set No. of Krylov subspace to 40 and No. of colors for Multi-Color ordering to 100
Use CG with ILU(0) preconditioning, and set scale factor for diagonal elements when computing preconditioning matrix to 1.1
Use CG with AMG preconditioning by ML
Use CG with AMG preconditioning by ML, and set coarse solver to MUMPS (for stiff problems)
Use CG with AMG preconditioning by ML, and set multigrid cycle to W-cycle (for stiff problems)
Use CG with AMG preconditioning by ML, and set coarse solver to MUMPS and max No. of levels to 2 (for very stiff problems)
Use CG with AMG preconditioning by SA-AMG built into HEC-MW
Use CG with AMG preconditioning by SA-AMG, and set coarse solver to MUMPS
Use BiCGSTAB with AMG preconditioning by SA-AMG in a frictional contact analysis, and output the hierarchy of the preconditioner
!SOLVER, METHOD=BiCGSTAB, PRECOND=22, ITERLOG=YES, TIMELOG=YES, LOGLEVEL=1
10000, 1
1.0e-8, 1.0, 0.0