r6.01.02 Overview of the conjugate gradient: GCPC Aster and the use of PETSc#

Summary:

In the context of thermo-mechanical simulations, most of the calculation costs often come from the construction and resolution of linear systems. Choosing the right linear solver is therefore essential, on the one hand for its speed, but also for its robustness and the memory space it requires. Each time, a compromise must be made between these constraints.

For 60 years, two types of solvers have been competing for supremacy in the field, direct and iterative ones. Hence, as a precaution, a diversified offer of mechanical codes in this field. code_aster is no exception to the rule. It offers three direct solvers (Gauss [R6.02.01], native multifrontend [R6.02.02] and the external product MUMPS [R6.02.03]), iterative Krylov-type solvers (GCPC Aster and all those from the PETSc library).

In this document, we detail from a theoretical, algorithmic and code_aster modeling point of view, the fundamentals of GCPC and the other Krylov solvers implemented in PETSc. In particular, their links with other linear code solvers and continuous optimization methods are highlighted. We continue with their implementation difficulties, their settings, their perimeters as well as some tips for use.

For more details and advice on the use of linear solvers, you can consult the specific instructions for use [U4.50.01]/[U2.08.03]. The related problems of improving the performance (RAM/CPU) of a calculation and, of the use of parallelism, are also the subject of detailed instructions: [U1.03.03] and [U2.08.06].