r6.02.03 Overview of direct linear solvers and the use of MUMPS#
Summary
In the context of thermo-mechanical simulations with Code_Aster, most of the calculation costs often come from the construction and resolution of linear systems. To perform these resolutions more effectively, Code_Astera has chosen to integrate the direct method deployed in package MUMPS (“Multifrontal Massively Parallel sparse direct Solver; P.R.Amestoy, J.Y.L’Excellent et al; CERFACS/CNRS/L’Excellent et al;//L’Excellent et al;//ENS Lyon IRIT/INRIA /University of Bordeaux). This is in addition to its « homemade » multifrontend (C.Rose) and its other solvers: “LDLT”, “GCPC” and “PETSC”.
In distributed parallel mode and in Out-Of-Core, the Aster + MUMPS coupling provides gains in CPU of the order of the dozen on 32 processors. And this, for consumption RAM , a**behavior/functional scope**and a**precision of the results**at least as good as**those of the native multifronter of the code.
On big problems, by activating BLR compressions, you can even gain an additional factor of two or three. This product, via the parallelism it exhibits and its advanced functionalities (pivoting, pre/post-processing, quality of the solution…) greatly facilitates the passage of standard studies. Moreover, it often remains the only viable alternative to exploit certain modellations/analyses (almost incompressible, X- FEM…) or to go from very large studies (as a precise direct solver or as a preconditioner, cf. option “LDLT_SP” of “GCPC”/”PETSC”).
In the first part of the document we summarize the general problem of solving linear systems, then we discuss the main families of sparse direct solvers and their variations in public domain libraries.
Everything you need to have in mind before addressing, in the second part, the MUMPS package through its main characteristics and advanced functionalities. Then we detail the numerical, computer and functional aspects of its integration into Code_Aster. Finally, we conclude with some numerical results.
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].