dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #24684
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