← Back to team overview

dolfin team mailing list archive

Re: [HG] Allow PETSc matrix type to be set through the Matrix constructor.

 

Matt told me that the PETSc LU solver is poor, but still I was really
surprised at the speed-up.

Garth

On Wed, 2006-03-22 at 09:39 -0600, Anders Logg wrote:
> Very nice.
> 
> /Anders
> 
> On Wed, Mar 22, 2006 at 04:41:54PM +0100, DOLFIN wrote:
> > One or more new changesets pushed to the primary DOLFIN repository.
> > A short summary of the last three changesets is included below.
> > 
> > changeset:   1794:236275c67493735a92352a3735c6e525313ae723
> > tag:         tip
> > user:        "Garth N. Wells <g.n.wells@xxxxxxxxxx>"
> > date:        Wed Mar 22 16:41:19 2006 +0100
> > files:       src/kernel/la/KrylovSolver.cpp src/kernel/la/Matrix.cpp src/kernel/la/dolfin/Matrix.h src/kernel/nls/NewtonSolver.cpp src/kernel/nls/dolfin/NewtonSolver.h src/kernel/parameter/dolfin/DefaultParameters.h src/kernel/pde/LinearPDE.cpp
> > description:
> > Allow PETSc matrix type to be set through the Matrix constructor.
> > 
> > The type of PETSc matrix determines which LU solver is used when doing a direct solve. Currently implemented  matrix types are:
> >   Matrix::default_solver (PETSc MATSEQAIJS)
> >   Matrix::spooles        (PETSC MATSEQAIJSPOOLES)
> >   Matrix::superlu        (PETSc MATSUPERLU)
> >   Matrix::umfpack        (PETSC MATUMFPACK) 
> > 
> > By default, PDE.solve() will use Matrix::umfpack if Umfpack has been compiled with PETSc, otherwise it will use the default PETSc LU solver.
> > 
> > 
> > Benchmark (for the linear solve only) for the problem in src/demo/pde/elasticity
> >   
> >   default_solver: 48.4s
> >   spooles:        3.45s
> >   superlu:        5.77s
> >   umfpack:        1.68s
> > 
> > 
> > changeset:   1793:6c11a3f3c36279d71838fba51caf128fd4a70c1e
> > user:        "Garth N. Wells <g.n.wells@xxxxxxxxxx>"
> > date:        Fri Mar 17 13:54:30 2006 +0100
> > files:       src/kernel/la/KrylovSolver.cpp
> > description:
> > Temporary fix to avoid PETSc error when using Hypre preconditioner.
> > 
> > The function KrylovSolver::init() is not called when a KrylovSolver is created with the Hypre preconditioner. If a user creates a KrylovSolver with the Hypre preconditioner and then attempts to access the pointer to the PETSc solver before the solver has been used to solve a system, an error will result.
> > 
> > 
> > changeset:   1792:339e1b957d0433c13176174e13b3ed2122db7677
> > user:        "Garth N. Wells <g.n.wells@xxxxxxxxxx>"
> > date:        Thu Mar 16 15:30:52 2006 +0100
> > files:       src/demo/fem/convergence/main.cpp
> > description:
> > Replace removed KrylovSolve::setRtol() function with solver.set("Krylov relative tolerance, ..).
> > 
> > 
> > -------------------------------------------------------
> > For more details, visit http://www.fenics.org/hg/dolfin
> > 
> > _______________________________________________
> > DOLFIN-dev mailing list
> > DOLFIN-dev@xxxxxxxxxx
> > http://www.fenics.org/cgi-bin/mailman/listinfo/dolfin-dev
> > 





Follow ups

References