← Back to team overview

dolfin team mailing list archive

Re: [noreply@xxxxxxxxxxxxx: [Branch ~dolfin-core/dolfin/logg] Rev 6336: Big cleanup of setting/listing linear solver methods and preconditioners:]

 

It would be handy to also have

   bool has_method("foo");

Garth

On 7 October 2011 14:20, Anders Logg <logg@xxxxxxxxx> wrote:
> 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
>
>
> ---------- Forwarded message ----------
> From: noreply@xxxxxxxxxxxxx
> To: Anders Logg <logg@xxxxxxxxx>
> Date: Fri, 07 Oct 2011 12:37:16 -0000
> Subject: [Branch ~dolfin-core/dolfin/logg] Rev 6336: Big cleanup of setting/listing linear solver methods and preconditioners:
> ------------------------------------------------------------
> 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
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dolfin
> Post to     : dolfin@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dolfin
> More help   : https://help.launchpad.net/ListHelp
>
>


Follow ups

References