This file lists TODO items for DOLFIN. As usual, the priority depends
on the current interests of the various DOLFIN developers.

To edit this file, it is convenient to install org-mode in Emacs.
It is available as part of Emacs 22 and can be invoked by M-x org-mode.
This gives convenient expand/collapse of bullets by pressing TAB.
-----------------------------------------------------------------------

* Build system
** Demos are not built when using 'scons install . . . enableDemos=yes'

* Assembly
** Break up function Assembler::assemble_system

* Linear Algebra
** Complete Trilinos implementation
** Parallel issues
** Remove need for calling apply() after changes (solvers may check and call it if necessary)
** Make the following possible:
  
   Vector x(u.vector());

   Not possible today since Vector doesn't have any constructor taking a GenericVector.
   Can be solved using downcasting + fallback using get/set
* Mesh
** Parallel issues
   - Store both global and local indices for cell/vertex, add mesh
     functions for this
   - Adapt BoundaryComputation for parallel mesh, use knowledge about
     which vertices are shared to decide if a facet is a global or
     local boundary
   - Use parallel mesh information in DofMap to simplify
     implementation - should only need map from local to global cell/vertex
** Rewrite Point class with public x, y, z member and use the trick
   described here to allow indexed access: http://www.mr-edd.co.uk/?p=113

* Manual
** Write incomplete sections
** Write appendix on coding style
** Document Python interface

* Function
** Input/output for time-series

* ODE solvers
** Solve dual and compute error estimate
** Automatic computation of stability factors as function of time T

* Parameters
** Figure out where to store parameters: in DefaultParameters.h or create in constructors
** Load default parameters from file
** Add function to display all parameters

* Demos
** Add Python versions of all demos
** Add CPP versions of all demos

* General
** Replace stdio with iostream and fstream
** Fix setprecision() for cout
** Update function names: fooBar --> foo_bar
** Remove as much const_cast as possible
** Replace Array with std::vector