← Back to team overview

dolfin team mailing list archive

Cleanup of linear algebra

 

I have made a class diagram for the linear algebra classes, which can
be found either in doc/manual/{dia,eps}/class-diagram-la.{dia,eps} or 
at

    http://home.simula.no/~logg/tmp/class-diagram.eps

>From this diagram, it is clear there are some inconsistencies. Here
are some suggestions:

1. Rename PETScSparseMatrix --> PETScMatrix since there is only one
PETSc matrix.

2. Rename DenseVector --> uBlasVector. DenseVector can be a typedef.

3. Break up LinearSolver in two classes: PETScLinearSolver and
uBlasLinearSolver and make both pure virtual interfaces.

4. Rename PETScLU --> PETScLUSolver to make it consistent.

5. Rename VirtualMatrix --> PETScKrylovMatrix to make it consistent
with uBlasKrylovMatrix.

6. Rename Preconditioner --> PETScPreconditioner to make it consistent
with uBlasPreconditioner.

7. Typedefs for common default types should include the following:

   Matrix
   Vector

   DenseMatrix
   DenseVector    (something that works with DenseMatrix)

   SparseMatrix
   SparseVector   (something that works with SparseVector)

   LinearSolver
   KrylovSolver
   GMRES
   LU

   VirtualMatrix  (something that works with KrylovSolver)
   Preconditioner (something that works with KrylovSolver)

Here's a little list of things I think we should fix before releasing 0.6.2:

 - Fix the above cleanups

 - Make sure the linear algebra works nicely in PyDOLFIN

 - Update the class diagram

 - Complete the linear algebra chapter in the manual

 - Add a linear algebra benchmark in src/bench

 - Add a linear algebra test in src/test

 - Add a linear algebra demo in src/demo

It would be great if we could all help out so everyone agrees on and
knows the design of the linear algebra library. We would then have a
well functioning and stable linear algebra library that would require
little maintenance so we can focus on other things (like porting to
the new mesh library).

/Anders


Follow ups