-*- mode: text -*-

PROJECTS: [These are new improvements to be done in a future...]
=========

* Use Bugzilla or GNU/Gnats (http://www.bugzilla.org ) for bug tracking.
* Implement Interface Strip Preconditioner block LU with several
	     layers with direct solver for the diagonal part. 
* A web/text interface to allow changing options
* A DX module for better and smoother FEM visualization. 
* Modify 'elemset.cpp' so that processing of several elemsets 
	   is non blocking, for instance using a self-scheduling 
	   algorithm. 
* Scripting interface with Python (other candidates are Scheme/Guile or Perl) 
* Make Makefile not that verbose. 
* Use a more consistent system for reporting errors and
       aborting. Maybe using more advanced C++ exception handling.
* Adaptive refinement
* Filter functions for getting averages in LES
* Absorbing b.c.'s for NS and in general
* Code a log option for the *GETOPT* functions so that they write a
     log that tells in which hash-table they found the key. 
* overload () operator on FM2 so that we can write expressions as 
      A(j,k).prod(B(j,mu),C(k,mu))
* write a change_sign() function for FM2
* Create an `Hyper-Fast' version of FM2 for linear addressing.. 
* Code not to have to call to FastMat2::branch/leave when there is no
	 'else' block. 
* include inject operations
* code view copies for FastMat2. Also may solve the problem of
        constness. 
* include a 'check of the caches' feature 
* include count operations in kron and others.
* write better doc for FM2
* add a section `conventions' to documentation
* write documentation for arglist class
* symbol section in the documentation
* arg_lists as list of objects of class "arg"
* Code automatic load balancing. 


DONE:
=====

* Implement Interface Strip Preconditioner block LU with several
      layers. DONE: Mon, 08 Dec 2003 23:01:49 -0300. 
      But probably needs to be implemented with some kind of direct
      solver for the interface block diagonal. 
* Interface preconditioning for IISD
* For boundary dependent temporal conditions we should have arguments
    that are a vector and a time.
* In TextHashTable: Print a warning if some option is not used and a
  doc when an option was got the first time. 
* Read data with a 'bison' generated parser 
  NO: use a Perl interface. 
* Allow several subdomains in one processor in IISD
* adapt `advdif' to IISD
* Add doc for IISD
* write the transpose matrix product for IISD so that methods like
    CGS, BiCG, etc... may be used.
* Add a 'mass' to 'advdife' (non conservative?)
* Fix Makefile in ./doc (it repeats many times the rules)
* Access connectivities and properties for elements as methods of the
      elemset. 
* Add a list of required software to README
* Add a `measure_performance' item
* escribir un test para el bug de FastMat2::prod()
* Fix error in test oscplate2b
* FastMat2::deactivate_cache() gives a SIGSEGV if caches are not
    active. 
* thash: There is a SIGSEGV if an option  doesn't have a value. For
      instance `print_linear_system_and_stop '
* Finish with `option documentation' (odoc). 
* Include doc for modules and options and code `optdoc.pl' to 
   auto-include doc for options.
* Write doc for LES.
* Write doc for new features in TextHashTable
* Fix bug when an option is a string and there are trailing spaces
* Include a call to Visual3. [NOT DONE}
* add the "father" and "include" feature for the hashes
* Introduce features in order to process LES
* matrix compiler for element computations? (???) 
  What was done: Written the FastMat2 package
* set_row as node/field lists. (???)
* write BCCONV routine for advective equations.  
* Include tests with dejagnu/expect. Not so easy... Make tests with
      self-made scripts. (a self written `runtest' script...). 
  What was done: with a self-written `myexpext.pl' Perl code.
* debug de idmap::set_elem() function. Create a test for. 
* define an ir() operation that restricts an index to a single value
	 and reduces the dimensions by one
* define the double() operator
* code caches
* code `diag' feature to FM2
* replace 'void *' for a class TimeData (???)
* recover print_some from ".tempo" files
* Add documentation to the temporal problems (class `Amplitude' and friends.)
* Several fat elemsets.
* Erase the A_jac_av .... computations. 
* Local time stepping
* Make CONSISTENT_SUPG_MATRIX and DIAG_MASS_MATRIX, etc.. be global
           options. 
* Automatic computation of critical time step. 
* temporal problems: in progress...
* Introduce load balancing
* Finite difference jacobians using upload_vector(load_mat) en vez de
   (load_mat_col). 
* Finite difference jacobian with the new atg_list philosophy
* get ghost values in a special vector. (Don't do a global scatter). 
* reorganizar directorios
    petscfem(src(lib,appls(ns,shallow,laplace)),doc,run)
* documentar!! con doc++
* poner licencia GPL
* Surface element for convective, flux conditions
* elementos que permiten definir integrales de superficie. 
* cambiar todos los CHKERRA por CHKERRQ
* tetra elements with 1 and 4 Gauss point
* separar aplicaciones de la libreria de llamadas a elementos
* add node and element properties
* process elements by chunks
* allocate "local value vectors" (retval, locst and friends) only for the
        elements in   processor 
* El GC no converge del todo bien. Habra algun error en el armado de
		     la matriz???
* dimensionar correctamente el numero de elementos no nulos,
             etc... por fila
* fix the "elemprops" feature
* hashfunc no esta bien definida (not optimal). OK
* preprocessor directives like include
* Petrov-Galerkin formulation. Mejorar???
* 3D elements
* write functions for getting specific types from the hash table. 
    For instance thash->get_entry_dble("conductivity",kond)
