dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #24682
[noreply@xxxxxxxxxxxxx: [Branch ~dolfin-core/dolfin/logg] Rev 6336: Big cleanup of setting/listing linear solver methods and preconditioners:]
I set out to fix this bug:
https://bugs.launchpad.net/dolfin/+bug/868465
but things spread out and I ended up touching all the la files.
I won't push this to trunk until I've done some more testing, but
here's a summary of the changes:
1. Each solver defines a set of available methods and preconditioners
which can be accessed by
FooLUSolver::list_methods()
FooKrylovSolver::list_methods()
FooKrylovSolver::list_preconditioners()
2. New global functions that list available methods and Krylov solvers
for the currently chosen backend:
list_lu_methods()
list_krylov_methods()
list_preconditioners()
list_solver_methods() = list_{lu + krylov}_methods
3. Changes in all factory classes to handle the above
4. Checks added to check whether a certain method is available and
that the preconditioner is set to "none" when using a Krylov method.
The following output is printed when calling the above methods using
the PETSc backend:
LU method | Description
-----------------------------------------------------------------------------
default | default LU solver
umfpack | UMFPACK (Unsymmetric MultiFrontal sparse LU factorization)
mumps | MUMPS (MUltifrontal Massively Parallel Sparse direct Solver)
pastix | PaStiX (Parallel Sparse matriX package)
spooles | SPOOLES (SParse Object Oriented Linear Equations Solver)
superlu | SuperLU
superlu_dist | Parallel SuperLU
petsc | PETSc builtin LU solver
Krylov method | Description
--------------------------------------------------------------
default | default Krylov method
cg | Conjugate gradient method
gmres | Generalized minimal residual method
minres | Minimal residual method
tfqmr | Transpose-free quasi-minimal residual method
richardson | Richardson method
bicgstab | Biconjugate gradient stabilized method
Preconditioner | Description
---------------------------------------------------------------
default | default preconditioner
none | No preconditioner
ilu | Incomplete LU factorization
icc | Incomplete Cholesky factorization
jacobi | Jacobi iteration
bjacobi | Block Jacobi iteration
sor | Successive over-relaxation
additive_schwarz | Additive Schwarz
amg | Algebraic multigrid
hypre_amg | Hypre algebraic multigrid (BoomerAMG)
hypre_euclid | Hypre parallel incomplete LU factorization
hypre_parasails | Hypre parallel sparse approximate inverse
ml_amg | ML algebraic multigrid
--
Anders
--- Begin Message ---
------------------------------------------------------------
revno: 6336
committer: Anders Logg <logg@xxxxxxxxx>
branch nick: work
timestamp: Fri 2011-10-07 14:24:30 +0200
message:
Big cleanup of setting/listing linear solver methods and preconditioners:
- new global function list_lu_methods
- new global function list_krylov_methods
- new global function list_preconditioners
- extension of LinearAlgebraFactor interface above functions
- extension of all solvers and factories with above functions
modified:
ChangeLog
dolfin/la/CholmodCholeskySolver.cpp
dolfin/la/CholmodCholeskySolver.h
dolfin/la/DefaultFactory.cpp
dolfin/la/DefaultFactory.h
dolfin/la/EpetraFactory.cpp
dolfin/la/EpetraFactory.h
dolfin/la/EpetraKrylovSolver.cpp
dolfin/la/EpetraKrylovSolver.h
dolfin/la/EpetraLUSolver.cpp
dolfin/la/EpetraLUSolver.h
dolfin/la/ITLKrylovSolver.cpp
dolfin/la/ITLKrylovSolver.h
dolfin/la/KrylovSolver.cpp
dolfin/la/KrylovSolver.h
dolfin/la/LUSolver.cpp
dolfin/la/LUSolver.h
dolfin/la/LinearAlgebraFactory.h
dolfin/la/LinearSolver.cpp
dolfin/la/LinearSolver.h
dolfin/la/MTL4Factory.h
dolfin/la/PETScFactory.cpp
dolfin/la/PETScFactory.h
dolfin/la/PETScKrylovSolver.cpp
dolfin/la/PETScKrylovSolver.h
dolfin/la/PETScLUSolver.cpp
dolfin/la/PETScLUSolver.h
dolfin/la/PETScPreconditioner.cpp
dolfin/la/PETScPreconditioner.h
dolfin/la/STLFactory.h
dolfin/la/SingularSolver.cpp
dolfin/la/SingularSolver.h
dolfin/la/TrilinosPreconditioner.cpp
dolfin/la/TrilinosPreconditioner.h
dolfin/la/solve.cpp
dolfin/la/solve.h
dolfin/la/uBLASFactory.h
dolfin/la/uBLASKrylovSolver.cpp
dolfin/la/uBLASKrylovSolver.h
The size of the diff (2615 lines) is larger than your specified limit of 500 lines
--
lp:~dolfin-core/dolfin/logg
https://code.launchpad.net/~dolfin-core/dolfin/logg
Your team DOLFIN Core Team is subscribed to branch lp:~dolfin-core/dolfin/logg.
To unsubscribe from this branch go to https://code.launchpad.net/~dolfin-core/dolfin/logg/+edit-subscription
--- End Message ---
Follow ups