doc:user:integration:general:solvers
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
doc:user:integration:general:solvers [2013/07/12 15:05] – external edit 127.0.0.1 | doc:user:integration:general:solvers [2016/03/30 15:23] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
===== Introduction ===== | ===== Introduction ===== | ||
- | Depuis le 20-Jui-2005, Metafor | + | Since 20/07/2005, Metafor |
- | Chaque solveur possède des avantages et des inconvénients. | + | By default, as the stiffness matrix is non symmetric the solver used is non symmetric (with symmetric structure). It is however possible to force the stiffness matrix to be symmetric (computing the mean value between upper and lower terms of the matrix) and to use a symmetric solver. |
- | ===== Solveur Skyline ===== | + | use : |
+ | <code python> | ||
+ | metafor | ||
+ | solvermanager | ||
+ | solvermanager.setSymmetric(True) # False by default | ||
+ | </ | ||
+ | ===== Skyline solver ===== | ||
- | C'est le solveur par défaut. Il ne nécessite aucune | + | Default solver. It does not require any specific |
- | ===== Solveur Pardiso (DSS) ===== | ||
- | Le solveur | + | ===== Pardiso (DSS) Solver===== |
- | Utilisation: | + | Pardiso solver is a sparse direct solver using CSR format for storing the matrix. Several CPU can be used (SMP parallelism, |
+ | |||
+ | Use: | ||
<code python> | <code python> | ||
Line 27: | Line 34: | ||
</ | </ | ||
- | On règle le nombre de CPUs à utiliser via | + | The number of CPUs is set using |
Blas.setNumThreads(n) | Blas.setNumThreads(n) | ||
- | où '' | + | where '' |
- | ===== Solveur ISS (Iterative Sparse Solver) ===== | + | |
- | Le solveur | + | ===== ISS (Iterative Sparse Solver) ===== |
- | Utilisation | + | ISS solver is an iterative solver |
+ | |||
+ | Use (see for example | ||
<code python> | <code python> | ||
solver = ISSolver() | solver = ISSolver() | ||
- | solver.setRestart(5) | + | solver.setRestart(5) |
- | solver.setItMax(10) | + | solver.setItMax(10) |
- | solver.setTol(1e-1) | + | solver.setTol(1e-1) |
solvermanager = metafor.getSolverManager() | solvermanager = metafor.getSolverManager() | ||
Line 48: | Line 56: | ||
</ | </ | ||
- | Le paramètre de restart | + | By default, the solver uses a ILU0 preconditioner. It is an incomplete factorization (A~=LU) for which the structure of L and U is the same as A. |
- | Par défaut, le solveur utilise un préconditionneur de type ILU0. Il s'agit d'une factorisation incomplète (A~=LU) pour laquelle la structure de L et U est identique à celle de la matrice A. | + | A more elaborated preconditioner is also available (ILUT). It is also an incomplete factorization, |
- | Un préconditionneur un peu plus sophistiqué est également disponible | + | <code python> |
+ | solver.useILUT(20) # nFill=20 (only 20 elements are kept on the lines of L and U) | ||
+ | </ | ||
+ | |||
+ | ===== MUMPS (MUltifrontal Massively Parallel sparse direct Solver) ===== | ||
+ | |||
+ | MUMPS is a sparse direct solver for the solution of large linear algebric systems on distributed memory parallel computers. It implements the multifrontal method, which is a version of Gaussian elimination for large sparse systems of equations, especially those arising from the finite element method. It is written in Fortran 90 with parallelism by MPI and it uses BLAS and ScaLAPACK kernels for dense matrix computations. | ||
+ | |||
+ | The input matrix can be supplied to MUMPS in assembled format in coordinate COO (distributed or centralized) or in elemental format. | ||
+ | |||
+ | |||
+ | Use: | ||
<code python> | <code python> | ||
- | solver.useILUT(20) # nFill=20 (on ne garde que 20 éléments sur les lignes de L et U | + | metafor = domain.getMetafor() |
+ | solvermanager | ||
+ | try: | ||
+ | solvermanager.setSolver(MUMPSolver()); | ||
+ | except NameError: | ||
+ | pass | ||
</ | </ | ||
+ | |||
+ | MUMPS can be used with multiple threads (CPU cores) by using | ||
+ | |||
+ | Blas.setBlasNumThreads(n) | ||
+ | |||
+ | where '' |
doc/user/integration/general/solvers.1373634334.txt.gz · Last modified: 2016/03/30 15:22 (external edit)