-
Notifications
You must be signed in to change notification settings - Fork 127
Description
Dear developer, the AMGCL is a wonderful choice as the solver of elastic frictional contact problem (the SPAI0-BiCGSTAB in AMGCL outperforms the default BiCGSTAB in Eigen). As the left-handed matrix is square but not symmetric, the BiCGSTAB but not CG is chosen as solver (GMRES is compared and not chosen). It is unexpected that the SPAI0-BiCGSTAB outperforms AMG-BiCGSTAB for large scale problem.
Here, SPAI0-BiCGSTAB means "the solver is BiCGSTAB, the preconditioner is SPAI0"; the AMG-BiCGSTAB means "the solver is BiCGSTAB, the preconditioner is AMG". For AMG-BiCGSTAB, different relaxation schemes are already compared and the more efficient chebyshev relaxation is chosen.
The tested matrix, RHS and code are at: https://github.com/QuanchengP/DEHW/releases/download/v1.0.0/demo.zip (100Mb). The tested results are as follows:
(1) SPAI0-BiCGSTAB
Solver
======
Type: BiCGStab
Unknowns: 135368
Memory footprint: 7.23 M
Preconditioner
==============
Relaxation as preconditioner
Unknowns: 135368
Nonzeros: 11818846
Memory: 182.41 M
Iters: 202
Error: 6.37313e-15
[Frictional contact: 2.407 s] (100.00%)
[ setup: 0.031 s] ( 1.28%)
[ solve: 2.376 s] ( 98.71%)
(2) AMG-BiCGSTAB
Solver
======
Type: BiCGStab
Unknowns: 135368
Memory footprint: 7.23 M
Preconditioner
==============
Number of levels: 2
Operator complexity: 1.02
Grid complexity: 1.02
Memory footprint: 222.20 M
level unknowns nonzeros memory
---------------------------------------------
0 135368 11818846 209.54 M (98.21%)
1 2631 215441 12.65 M ( 1.79%)
Iters: 56
Error: 7.05585e-15
[Frictional contact: 9.376 s] (100.00%)
[ setup: 0.678 s] ( 7.23%)
[ solve: 8.698 s] ( 92.77%)
For smaller problems with unknows less than 10 thousand, AMG-BiCGSTAB slightly outperforms SPAI0-BiCGSTAB. For larger problems with unknowns more than one million, the advantages of SPAI0-BiCGSTAB becomes much more obvious.