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