← Back to team overview

dolfin team mailing list archive

DOLFIN 1.1.0 has been released

 


ChangeLog:

1.1.0 [2013-01-08]
- Add support for solving singular problems with Krylov solvers (PETSc only) - Add new typedef dolfin::la_index for consistent indexing with linear algebra backends.
 - Change default unsigned integer type to std::size_t
 - Add support to attaching operator null space to preconditioner
   (required for smoothed aggregation AMG)
 - Add basic interface to the PETSc AMG preconditioner
- Make SCOTCH default graph partitioner (GNU compatible free license, unlike ParMETIS)
 - Add scalable construction of mesh dual graph for mesh partitioning
 - Improve performance of mesh building in parallel
 - Add mesh output to SVG
 - Add support for Facet and cell markers to mesh converted from Diffpack
- Add support for Facet and cell markers/attributes to mesh converted from Triangle
 - Change interface for auto-adaptive solvers: these now take the goal
   functional as a constructor argument
 - Add memory usage monitor: monitor_memory_usage()
 - Compare mesh hash in interpolate_vertex_values
 - Add hash() for Mesh and MeshTopology
 - Expose GenericVector::operator{+=,-=,+,-}(double) to Python
 - Add function Function::compute_vertex_values not needing a mesh argument
 - Add support for XDMF and HDF5
 - Add new interface LinearOperator for matrix-free linear systems
 - Remove MTL4 linear algebra backend
 - Rename down_cast --> as_type in C++ / as_backend_type in Python
 - Remove KrylovMatrix interface
 - Remove quadrature classes
 - JIT compiled C++ code can now include a dolfin namespace
 - Expression string parsing now understand C++ namespace such as std::cosh
 - Fix bug in Expression so one can pass min, max
- Fix bug in SystemAssembler, where mesh.init(D-1, D) was not called before assemble
 - Fix bug where the reference count of Py_None was not increased
 - Fix bug in reading TimeSeries of size smaller than 3
 - Improve code design for Mesh FooIterators to avoid dubious down cast
 - Bug fix in destruction of PETSc user preconditioners
- Add CellVolume(mesh) convenience wrapper to Python interface for UFL function
 - Fix bug in producing outward pointing normals of BoundaryMesh
 - Fix bug introduced by SWIG 2.0.5, where typemaps of templated typedefs
   are not handled correctly
 - Fix bug introduced by SWIG 2.0.5, which treated uint as Python long
 - Add check that sample points for TimeSeries are monotone
 - Fix handling of parameter "report" in Krylov solvers
- Add new linear algebra backend "PETScCusp" for GPU-accelerated linear algebra - Add sparray method in the Python interface of GenericMatrix, requires scipy.sparse - Make methods that return a view of contiguous c-arrays, via a NumPy array, keep a reference from the object so it wont get out of scope - Add parameter: "use_petsc_signal_handler", which enables/disable PETSc system signals
 - Avoid unnecessary resize of result vector for A*b
 - MPI functionality for distributing values between neighbours
- SystemAssembler now works in parallel with topological/geometric boundary search
 - New symmetric assembler with ability for stand-alone RHS assemble
 - Major speed-up of DirichletBC computation and mesh marking
 - Major speed-up of assembly of functions and expressions
 - Major speed-up of mesh topology computation
 - Add simple 2D and 3D mesh generation (via CGAL)
 - Add creation of mesh from triangulations of points (via CGAL)
 - Split the SWIG interface into six combined modules instead of one
 - Add has_foo to easy check what solver and preconditioners are available
 - Add convenience functions for listing available linear_algebra_backends
 - Change naming convention for cpp unit tests test.cpp -> Foo.cpp
- Added cpp unit test for GenericVector::operator{-,+,*,/}= for all la backends
 - Add functionality for rotating meshes
 - Add mesh generation based on NETGEN constructive solid geometry
 - Generalize SparsityPattern and STLMatrix to support column-wise storage
 - Add interfaces to wrap PaStiX and MUMPS direct solvers
 - Add CoordinateMatrix class
 - Make STLMatrix work in parallel
 - Remove all tr1::tuple and use boost::tuple
 - Fix wrong link in Python quick reference.
1.0.0 [2011-12-07]
 - Change return value of IntervalCell::facet_area() 0.0 --> 1.0.
 - Recompile all forms with FFC 1.0.0
 - Fix for CGAL 3.9 on OS X
 - Improve docstrings for Box and Rectangle
 - Check number of dofs on local patch in extrapolation
1.0-rc2 [2011-11-28]
 - Fix bug in 1D mesh refinement
 - Fix bug in handling of subdirectories for TimeSeries
 - Fix logic behind vector assignment, especially in parallel
1.0-rc1 [2011-11-21]
 - 33 bugs fixed
 - Implement traversal of bounding box trees for all codimensions
 - Edit and improve all error messages
 - Added [un]equality operator to FunctionSpace
- Remove batch compilation of Expression (Expressions) from Python interface
 - Added get_value to MeshValueCollection
 - Added assignment operator to MeshValueCollection
1.0-beta2 [2011-10-26]
 - Change search path of parameter file to ~/.fenics/dolfin_parameters.xml
 - Add functions Parameters::has_parameter, Parameters::has_parameter_set
- Added option to store all connectivities in a mesh for TimeSeries (false by default)
 - Added option for gzip compressed binary files for TimeSeries
 - Propagate global parameters to Krylov and LU solvers
 - Fix OpenMp assemble of scalars
 - Make OpenMP assemble over sub domains work
- DirichletBC.get_boundary_values, FunctionSpace.collapse now return a dict in Python
 - Changed name of has_la_backend to has_linear_algebra_backend
 - Added has_foo functions which can be used instead of the HAS_FOO defines
 - Less trict check on kwargs for compiled Expression
 - Add option to not right-justify tables
 - Rename summary --> list_timings
 - Add function list_linear_solver_methods
 - Add function list_lu_solver_methods
 - Add function list_krylov_solver_methods
 - Add function list_krylov_solver_preconditioners
 - Support subdomains in SystemAssembler (not for interior facet integrals)
 - Add option functionality apply("flush") to PETScMatrix
 - Add option finalize_tensor=true to assemble functions
 - Solver parameters can now be passed to solve
 - Remove deprecated function Variable::disp()
 - Remove deprecated function logging()
 - Add new class MeshValueCollection
 - Add new class MeshDomains replacing old storage of boundary markers
   as part of MeshData. The following names are no longer supported:
   * boundary_facet_cells
   * boundary_facet_numbers
   * boundary_indicators
   * material_indicators
   * cell_domains
   * interior_facet_domains
   * exterior_facet_domains
 - Rename XML tag <meshfunction> --> <mesh_function>
 - Rename SubMesh data "global_vertex_indices" --> "parent_vertex_indices"
 - Get XML input/output of boundary markers working again
 - Get FacetArea working again
1.0-beta [2011-08-11]
 - Print percentage of non-zero entries when computing sparsity patterns
 - Use ufl.Real for Constant in Python interface
 - Add Dirichlet boundary condition argument to Python project function
 - Add remove functionality for parameter sets
 - Added out typemap for vector of shared_ptr objects
 - Fix typemap bug for list of shared_ptr objects
 - Support parallel XML vector io
 - Add support for gzipped XML output
 - Use pugixml for XML output
 - Move XML SAX parser to libxml2 SAX2 interface
 - Simplify XML io
- Change interface for variational problems, class VariationalProblem removed
 - Add solve interface: solve(a == L), solve(F == 0)
 - Add new classes Linear/NonlinearVariationalProblem
 - Add new classes Linear/NonlinearVariationalSolver
 - Ad form class aliases ResidualForm and Jacobian form in wrapper code
 - Default argument to variables in Expression are passed as kwargs in the
   Python interface
 - Add has_openmp as utility function in Python interface
 - Add improved error reporting using dolfin_error
 - Use Boost to compute Legendre polynolials
 - Remove ode code
 - Handle parsing of unrecognized command-line parameters
 - All const std::vector<foo>& now return a read-only NumPy array
 - Make a robust macro for generating a NumPy array from data
 - Exposing low level fem functionality to Python, by adding a
   Cell -> ufc::cell typemap
 - Added ufl_cell as a method to Mesh in Python interface
 - Fix memory leak in Zoltan interface
 - Remove some 'new' for arrays in favour of std::vector
 - Added cell as an optional argument to Constant
 - Prevent the use of non contiguous NumPy arrays for most typemaps
 - Point can now be used to evaluate a Function or Expression in Python
 - Fixed dimension check for Function and Expression eval in Python
 - Fix compressed VTK output for tensors in 2D
0.9.11 [2011-05-16]
 - Change license from LGPL v2.1 to LGPL v3 or later
 - Moved meshconverter to dolfin_utils
 - Add support for conversion of material markers for Gmsh meshes
 - Add support for point sources (class PointSource)
 - Rename logging --> set_log_active
 - Add parameter "clear_on_write" to TimeSeries
 - Add support for input/output of nested parameter sets
 - Check for dimensions in linear solvers
 - Add support for automated error control for variational problems
 - Add support for refinement of MeshFunctions after mesh refinement
 - Change order of test and trial spaces in Form constructors
 - Make SWIG version >= 2.0 a requirement
 - Recognize subdomain data in Assembler from both Form and Mesh
 - Add storage for subdomains (cell_domains etc) in Form class
 - Rename MeshData "boundary facet cells" --> "boundary_facet_cells"
 - Rename MeshData "boundary facet numbers" --> "boundary_facet_numbers"
 - Rename MeshData "boundary indicators" --> "boundary_indicators"
 - Rename MeshData "exterior facet domains" --> "exterior_facet_domains"
 - Updates for UFC 2.0.1
 - Add FiniteElement::evaluate_basis_derivatives_all
 - Add support for VTK output of facet-based MeshFunctions
 - Change default log level from PROGRESS to INFO
 - Add copy functions to FiniteElement and DofMap
 - Simplify DofMap
 - Interpolate vector values when reading from time series
0.9.10 [2011-02-23]
 - Updates for UFC 2.0.0
 - Handle TimeSeries stored backward in time (automatic reversal)
 - Automatic storage of hierarchy during refinement
 - Remove directory/library 'main', merged into 'common'
 - dolfin_init --> init, dolfin_set_precision --> set_precision
 - Remove need for mesh argument to functional assembly when possible
 - Add function set_output_stream
 - Add operator () for evaluation at points for Function/Expression in C++
 - Add abs() to GenericVector interface
 - Fix bug for local refinement of manifolds
 - Interface change: VariationalProblem now takes: a, L or F, (dF)
 - Map linear algebra objects to processes consistently with mesh parition
 - Lots of improvemenst to parallel assembly, dof maps and linear algebra
- Add lists supported_elements and supported_elements_for_plotting in Python - Add script dolfin-plot for plotting meshes and elements from the command-line
 - Add support for plotting elements from Python
 - Add experimental OpenMP assembler
 - Thread-safe fixed in Function class
 - Make GenericFunction::eval thread-safe (Data class removed)
 - Optimize and speedup topology computation (mesh.init())
 - Add function Mesh::clean() for cleaning out auxilliary topology data
 - Improve speed and accuracy of timers
 - Fix bug in 3D uniform mesh refinement
 - Add built-in meshes UnitTriangle and UnitTetrahedron
 - Only create output directories when they don't exist
- Make it impossible to set the linear algebra backend to something illegal
 - Overload value_shape instead of dim for userdefined Python Expressions
 - Permit unset parameters
 - Search only for BLAS library (not cblas.h)
0.9.9 [2010-09-01]
 - Change build system to CMake
- Add named MeshFunctions: VertexFunction, EdgeFunction, FaceFunction, FacetFunction, CellFunction - Allow setting constant boundary conditions directly without using Constant
 - Allow setting boundary conditions based on string ("x[0] == 0.0")
 - Create missing directories if specified as part of file names
 - Allow re-use of preconditioners for most backends
 - Fixes for UMFPACK solver on some 32 bit machines
 - Provide access to more Hypre preconditioners via PETSc
 - Updates for SLEPc 3.1
 - Improve and implement re-use of LU factorizations for all backends
 - Fix bug in refinement of MeshFunctions
0.9.8 [2010-07-01]
 - Optimize and improve StabilityAnalysis.
- Use own implementation of binary search in ODESolution (takes advantage of
   previous values as initial guess)
 - Improve reading ODESolution spanning multiple files
 - Dramatic speedup of progress bar (and algorithms using it)
 - Fix bug in writing meshes embedded higher dimensions to M-files
- Zero vector in uBLASVector::resize() to fix spurious bug in Krylov solver
 - Handle named fields (u.rename()) in VTK output
 - Bug fix in computation of FacetArea for tetrahedrons
- Add support for direct plotting of Dirichlet boundary conditions: plot(bc)
 - Updates for PETSc 3.1
 - Add relaxation parameter to NewtonSolver
 - Implement collapse of renumbered dof maps (serial and parallel)
 - Simplification of DofMapBuilder for parallel dof maps
 - Improve and simplify DofMap
 - Add Armadillo dependency for dense linear algebra
 - Remove LAPACKFoo wrappers
 - Add abstract base class GenericDofMap
 - Zero small values in VTK output to avoid VTK crashes
 - Handle MeshFunction/markers in homogenize bc
 - Make preconditioner selectable in VariationalProblem (new parameter)
 - Read/write meshes in binary format
 - Add parameter "use_ident" in DirichletBC
- Issue error by default when solvers don't converge (parameter "error_on_convergence")
 - Add option to print matrix/vector for a VariationalProblem
 - Trilinos backend now works in parallel
- Remove Mesh refine members functions. Use free refine(...) functions instead
 - Remove AdapativeObjects
 - Add Stokes demo using the MINI element
 - Interface change: operator+ now used to denote enriched function spaces
 - Interface change: operator+ --> operator* for mixed elements
- Add option 'allow_extrapolation' useful when interpolating to refined meshes
 - Add SpatialCoordinates demo
- Add functionality for accessing time series sample times: vector_times(), mesh_times() - Add functionality for snapping mesh to curved boundaries during refinement
 - Add functionality for smoothing the boundary of a mesh
 - Speedup assembly over exterior facets by not using BoundaryMesh
- Mesh refinement improvements, remove unecessary copying in Python interface
 - Clean PETSc and Epetra Krylov solvers
 - Add separate preconditioner classes for PETSc and Epetra solvers
 - Add function ident_zeros for inserting one on diagonal for zero rows
 - Add LU support for Trilinos interface
0.9.7 [2010-02-17]
- Add support for specifying facet orientation in assembly over interior facets
 - Allow user to choose which LU package PETScLUSolver uses
 - Add computation of intersection between arbitrary mesh entities
 - Random access to MeshEntitiyIterators
 - Modify SWIG flags to prevent leak when using SWIG director feature
 - Fix memory leak in std::vector<Foo*> typemaps
 - Add interface for SCOTCH for parallel mesh partitioning
- Bug fix in SubDomain::mark, fixes bug in DirichletBC based on SubDomain::inside
 - Improvements in time series class, recognizing old stored values
 - Add FacetCell class useful in algorithms iterating over boundary facets
 - Rename reconstruct --> extrapolate
 - Remove GTS dependency
0.9.6 [2010-02-03]
- Simplify access to form compiler parameters, now integrated with global parameters
 - Add DofMap member function to return set of dofs
 - Fix memory leak in the LA interface
 - Do not import cos, sin, exp from NumPy to avoid clash with UFL functions
 - Fix bug in MTL4Vector assignment
 - Remove sandbox (moved to separate repository)
 - Remove matrix factory (dolfin/mf)
 - Update .ufl files for changes in UFL
 - Added swig/import/foo.i for easy type importing from dolfin modules
 - Allow optional argument cell when creating Expression
 - Change name of Expression argument cpparg --> cppcode
 - Add simple constructor (dim0, dim1) for C++ matrix Expressions
 - Add example demonstrating the use of cpparg (C++ code in Python)
 - Add least squares solver for dense systems (wrapper for DGELS)
 - New linear algebra wrappers for LAPACK matrices and vectors
 - Experimental support for reconstruction of higher order functions
 - Modified interface for eval() and inside() in C++ using Array
 - Introduce new Array class for simplified wrapping of arrays in SWIG
 - Improved functionality for intersection detection
 - Reimplementation of intersection detection using CGAL
0.9.5 [2009-12-03]
 - Set appropriate parameters for symmetric eigenvalue problems with SLEPc
 - Fix for performance regression in recent uBLAS releases
 - Simplify Expression interface: f = Expression("sin(x[0])")
 - Simplify Constant interface: c = Constant(1.0)
 - Fix bug in periodic boundary conditions
- Add simple script dolfin-tetgen for generating DOLFIN XML meshes from STL - Make XML parser append/overwrite parameter set when reading parameters from file - Refinement of function spaces and automatic interpolation of member functions
 - Allow setting global parameters for Krylov solver
- Fix handling of Constants in Python interface to avoid repeated JIT compilation - Allow simple specification of subdomains in Python without needing to subclass SubDomain - Add function homogenize() for simple creation of homogeneous BCs from given BCs
 - Add copy constructor and possibility to change value for DirichletBC
- Add simple wrapper for ufl.cell.n. FacetNormal(mesh) now works again in Python.
 - Support apply(A), apply(b) and apply(b, x) in PeriodicBC
 - Enable setting spectral transformation for SLEPc eigenvalue solver
0.9.4 [2009-10-12]
 - Remove set, get and operator() methods from MeshFunction
 - Added const and none const T &operator[uint/MeshEntity] to MeshFunction
 - More clean up in SWIG interface files, remove global renames and ignores
- Update Python interface to Expression, with extended tests for value ranks
 - Removed DiscreteFunction class
 - Require value_shape and geometric_dimension in Expression
 - Introduce new class Expression replacing user-defined Functions
 - interpolate_vertex_values --> compute_vertex_values
- std::map<std::string, Coefficient> replaces generated CoefficientSet code
 - Cleanup logic in Function class as a result of new Expression class
 - Introduce new Coefficient base class for form coefficients
 - Replace CellSize::min,max by Mesh::hmin,hmax
- Use MUMPS instead of UMFPACK as default direct solver in both serial and parallel
 - Fix bug in SystemAssembler
 - Remove support for PETSc 2.3 and support PETSc 3.0.0 only
 - Remove FacetNormal Function. Use UFL facet normal instead.
- Add update() function to FunctionSpace and DofMap for use in adaptive mesh refinement - Require mesh in constructor of functionals (C++) or argument to assemble (Python)
0.9.3 [2009-09-25]
- Add global parameter "ffc_representation" for form representation in FFC JIT compiler
 - Make norm() function handle both vectors and functions in Python
- Speedup periodic boundary conditions and make work for mixed (vector-valued) elements - Add possibilities to use any number numpy array when assigning matrices and vectors - Add possibilities to use any integer numpy array for indices in matrices and vectors
 - Fix for int typemaps in PyDOLFIN
 - Split mult into mult and transpmult
 - Filter out PETSc argument when parsing command-line parameters
 - Extend comments to SWIG interface files
 - Add copyright statements to SWIG interface files (not finished yet)
 - Add typemaps for misc std::vector<types> in PyDOLFIN
 - Remove dependencies on std_vector.i reducing SWIG wrapper code size
 - Use relative %includes in dolfin.i
 - Changed names on SWIG interface files dolfin_foo.i -> foo.i
 - Add function interpolate() in Python interface
 - Fix typmaps for uint in python 2.6
 - Use TypeError instead of ValueError in typechecks in typmaps.i
 - Add in/out shared_ptr<Epetra_FEFoo> typemaps for PyDOLFIN
 - Fix JIT compiling in parallel
 - Add a compile_extension_module function in PyDOLFIN
 - Fix bug in Python vector assignment
 - Add support for compressed base64 encoded VTK files (using zlib)
 - Add support for base64 encoded VTK files
 - Experimental support for parallel assembly and solve
 - Bug fix in project() function, update to UFL syntax
 - Remove disp() functions and replace by info(foo, true)
 - Add fem unit test (Python)
 - Clean up SystemAssembler
 - Enable assemble_system through PyDOLFIN
 - Add 'norm' to GenericMatrix
 - Efficiency improvements in NewtonSolver
 - Rename NewtonSolver::get_iteration() to NewtonSolver::iteration()
 - Improvements to EpetraKrylovSolver::solve
 - Add constructor Vector::Vector(const GenericVector& x)
 - Remove SCons deprecation warnings
 - Memory leak fix in PETScKrylovSolver
 - Rename dolfin_assert -> assert and use C++ version
 - Fix debug/optimise flags
 - Remove AvgMeshSize, InvMeshSize, InvFacetArea from SpecialFunctions
 - Rename MeshSize -> CellSize
 - Rewrite parameter system with improved support for command-line parsing,
   localization of parameters (per class) and usability from Python
 - Remove OutflowFacet from SpecialFunctions
 - Rename interpolate(double*) --> interpolate_vertex_values(double*)
 - Add Python version of Cahn-Hilliard demo
 - Fix bug in assemble.py
 - Permit interpolation of functions between non-matching meshes
 - Remove Function::Function(std::string filename)
 - Transition to new XML io
 - Remove GenericSparsityPattern::sort
 - Require sorted/unsorted parameter in SparsityPattern constructor
 - Improve performance of SparsityPattern::insert
 - Replace enums with strings for linear algebra and built-in meshes
 - Allow direct access to Constant value
- Initialize entities in MeshEntity constructor automatically and check range
 - Add unit tests to the memorycheck
 - Add call to clean up libxml2 parser at exit
 - Remove unecessary arguments in DofMap member functions
- Remove reference constructors from DofMap, FiniteElement and FunctionSpace
 - Use a shared_ptr to store the mesh in DofMap objects
- Interface change for wrapper code: PoissonBilinearForm --> Poisson::BilinearForm
 - Add function info_underline() for writing underlined messages
- Rename message() --> info() for "compatibility" with Python logging module
 - Add elementwise multiplication in GeneriVector interface
 - GenericVector interface in PyDOLFIN now support the sequence protocol
 - Rename of camelCaps functions names: fooBar --> foo_bar
Note: mesh.numVertices() --> mesh.num_vertices(), mesh.numCells() --> mesh.num_cells() - Add slicing capabilities for GenericMatrix interface in PyDOLFIN (only getitem)
 - Add slicing capabilities for GenericVector interface in PyDOLFIN
 - Add sum to GenericVector interface
0.9.2 [2009-04-07]
 - Enable setting parameters for Newton solver in VariationalProblem
- Simplified and improved implementation of C++ plotting, calling Viper on command-line
 - Remove precompiled elements and projections
 - Automatically interpolate user-defined functions on assignment
 - Add new built-in function MeshCoordinates, useful in ALE simulations
 - Add new constructor to Function class, Function(V, "vector.xml")
 - Remove class Array (using std::vector instead)
 - Add vector_mapping data to MeshData
 - Use std::vector instead of Array in MeshData
 - Add assignment operator and copy constructor for MeshFunction
- Add function mesh.move(other_mesh) for moving mesh according to matching mesh (for FSI) - Add function mesh.move(u) for moving mesh according to displacement function (for FSI)
 - Add macro dolfin_not_implemented()
- Add new interpolate() function for interpolation of user-defined function to discrete
 - Make _function_space protected in Function
 - Added access to crs data from python for uBLAS and MTL4 backendg
0.9.1 [2009-02-17]
 - Check Rectangle and Box for non-zero dimensions
 - ODE solvers now solve the dual problem
- New class SubMesh for simple extraction of matching meshes for sub domains
 - Improvements of multiprecision ODE solver
 - Fix Function class copy constructor
 - Bug fixes for errornorm(), updates for new interface
- Interface update for MeshData: createMeshFunction --> create_mesh_function etc
 - Interface update for Rectangle and Box
 - Add elastodynamics demo
 - Fix memory leak in IntersectionDetector/GTSInterface
 - Add check for swig version, in jit and compile functions
 - Bug fix in dolfin-order script for gzipped files
 - Make shared_ptr work across C++/Python interface
 - Replace std::tr1::shared_ptr with boost::shared_ptr
 - Bug fix in transfinite mean-value interpolation
 - Less annoying progress bar (silent when progress is fast)
 - Fix assignment operator for MeshData
- Improved adaptive mesh refinement (recursive Rivara) producing better quality meshes
0.9.0 [2009-01-05]
 - Cross-platform fixes
 - PETScMatrix::copy fix
 - Some Trilinos fixes
 - Improvements in MeshData class
 - Do not use initial guess in Newton solver
 - Change OutflowFacet to IsOutflowFacet and change syntax
 - Used shared_ptr for underling linear algebra objects
 - Cache subspaces in FunctionSpace
 - Improved plotting, now support plot(grad(u)), plot(div(u)) etc
 - Simple handling of JIT-compiled functions
 - Sign change (bug fix) in increment for Newton solver
 - New class VariationalProblem replacing LinearPDE and NonlinearPDE
 - Parallel parsing and partitioning of meshes (experimental)
 - Add script dolfin-order for ordering mesh files
 - Add new class SubSpace (replacing SubSystem)
 - Add new class FunctionSpace
- Complete redesign of Function class hierarchy, now a single Function class
 - Increased use of shared_ptr in Function, FunctionSpace, etc
 - New interface for boundary conditions, form not necessary
- Allow simple setting of coefficient functions based on names (not their index)
 - Don't order mesh automatically, meshes must now be ordered explicitly
- Simpler definition of user-defined functions (constructors not necessary)
 - Make mesh iterators const to allow for const-correct Mesh code
0.8.1 [2008-10-20]
 - Add option to use ML multigrid preconditioner through PETSc
 - Interface change for ODE solvers: uBLASVector --> double*
 - Remove homotopy solver
 - Remove typedef real, now using plain double instead
 - Add various operators -=, += to GenericMatrix
 - Don't use -Werror when compiling SWIG generated code
- Remove init(n) and init(m, n) from GenericVector/Matrix. Use resize and zero instead - Add new function is_combatible() for checking compatibility of boundary conditions
 - Use x as initial guess in Krylov solvers (PETSc, uBLAS, ITL)
 - Add new function errornorm()
 - Add harmonic ALE mesh smoothing
 - Refinements of Graph class
 - Add CholmodCholeskySlover (direct solver for symmetric matrices)
- Implement application of Dirichlet boundary conditions within assembly loop
 - Improve efficiency of SparsityPattern
 - Allow a variable number of smoothings
 - Add class Table for pretty-printing of tables
 - Add experimental MTL4 linear algebra backend
 - Add OutflowFacet to SpecialFunctions for DG transport problems
 - Remove unmaintained OpenDX file format
 - Fix problem with mesh smoothing near nonconvex corners
 - Simple projection of functions in Python
 - Add file format: XYZ for use with Xd3d
 - Add built-in meshes: UnitCircle, Box, Rectangle, UnitSphere
0.8.0 [2008-06-23]
 - Fix input of matrix data from XML
 - Add function normalize()
 - Integration with VMTK for reading DOLFIN XML meshes produced by VMTK
 - Extend mesh XML format to handle boundary indicators
 - Add support for attaching arbitrarily named data to meshes
 - Add support for dynamically choosing the linear algebra backend
 - Add Epetra/Trilinos linear solvers
 - Add setrow() to matrix interface
 - Add new solver SingularSolver for solving singular (pressure) systems
- Add MeshSize::min(), max() for easy computation of smallest/largest mesh size
 - LinearSolver now handles all backends and linear solvers
 - Add access to normal in Function, useful for inflow boundary conditions
 - Remove GMRES and LU classes, use solve() instead
- Improve solve() function, now handles both LU and Krylov + preconditioners - Add ALE mesh interpolation (moving mesh according to new boundary coordinates)
0.7.3 [2008-04-30]
 - Add support for Epetra/Trilinos
- Bug fix for order of values in interpolate_vertex_values, now according to UFC - Boundary meshes are now always oriented with respect to outward facet normals
 - Improved linear algebra, both in C++ and Python
 - Make periodic boundary conditions work in Python
 - Fix saving of user-defined functions
 - Improve plotting
 - Simple computation of various norms of functions from Python
 - Evaluation of Functions at arbitrary points in a mesh
 - Fix bug in assembling over exterior facets (subdomains were ignored)
 - Make progress bar less annoying
 - New scons-based build system replaces autotools
 - Fix bug when choosing iterative solver from Python
0.7.2 [2008-02-18]
 - Improve sparsity pattern generator efficiency
 - Dimension-independent sparsity pattern generator
 - Add support for setting strong boundary values for DG elements
 - Add option setting boundary conditions based on geometrical search
 - Check UMFPACK return argument for warnings/errors
 - Simplify setting simple Dirichlet boundary conditions
 - Much improved integration with FFC in PyDOLFIN
 - Caching of forms by JIT compiler now works
 - Updates for UFC 1.1
 - Catch exceptions in PyDOLFIN
 - Work on linear algebra interfaces GenericTensor/Matrix/Vector
 - Add linear algebra factory (backend) interface
 - Add support for 1D meshes
 - Make Assembler independent of linear algebra backend
 - Add manager for handling sub systems (PETSc and MPI)
 - Add parallel broadcast of Mesh and MeshFunction
 - Add experimental support for parallel assembly
 - Use PETSc MPI matrices when running in parallel
 - Add predefined functions FacetNormal and AvgMeshSize
 - Add left/right/crisscross options for UnitSquare
 - Add more Python demos
 - Add support for Exodus II format in dolfin-convert
 - Autogenerate docstrings for PyDOLFIN
 - Various small bug fixes and improvements
0.7.1 [2007-08-31]
 - Integrate FFC form language into PyDOLFIN
 - Just-in-time (JIT) compilation of variational forms
 - Conversion from from Diffpack grid format to DOLFIN XML
 - Name change: BoundaryCondition --> DirichletBC
 - Add support for periodic boundary conditions: class PeriodicBC
- Redesign default linear algebra interface (Matrix, Vector, KrylovSolver, etc)
 - Add function to return Vector associated with a DiscreteFunction
0.7.0-1 [2007-06-22]
 - Recompile all forms with latest FFC release
 - Remove typedefs SparseMatrix and SparseVector
 - Fix includes in LinearPDE
 - Rename DofMaps -> DofMapSet
0.7.0 [2007-06-20]
 - Move to UFC interface for code generation
 - Major rewrite, restructure, cleanup
 - Add support for Brezzi-Douglas-Marini (BDM) elements
 - Add support for Raviart-Thomas (RT) elements
 - Add support for Discontinuous Galerkin (DG) methods
 - Add support for mesh partitioning (through SCOTCH)
 - Handle both UMFPACK and UFSPARSE
 - Local mesh refinement
 - Mesh smoothing
 - Built-in plotting (through Viper)
 - Cleanup log system
 - Numerous fixes for mesh, in particular MeshFunction
 - Much improved Python bindings for mesh
 - Fix Python interface for vertex and cell maps in boundary computation
0.6.4 [2006-12-01]
 - Switch from Python Numeric to Python NumPy
 - Improved mesh Python bindings
 - Add input/output support for MeshFunction
 - Change Mesh::vertices() --> Mesh::coordinates()
 - Fix bug in output of mesh to MATLAB format
 - Add plasticty module (experimental)
 - Fix configure test for Python dev (patch from Åsmund Ødegård)
 - Add mesh benchmark
 - Fix memory leak in mesh (data not deleted correctly in MeshTopology)
 - Fix detection of curses libraries
 - Remove Tecplot output format
0.6.3 [2006-10-27]
 - Move to new mesh library
 - Remove dolfin-config and move to pkg-config
 - Remove unused classes PArray, PList, Table, Tensor
- Visualization of 2D solutions in OpenDX is now supported (3D supported before)
 - Add support for evaluation of functionals
 - Fix bug in Vector::sum() for uBLAS vectors
0.6.2-1 [2006-09-06]
- Fix compilation error when using --enable-petsc (dolfin::uBLASVector::PETScVector undefined)
0.6.2 [2006-09-05]
 - Finish chapter in manual on linear algebra
 - Enable PyDOLFIN by default, use --disable-pydolfin to disable
 - Disable PETSc by default, use --enable-petsc to enable
 - Modify ODE solver interface for u0() and f()
 - Add class ConvectionMatrix
 - Readd classes LoadVector, MassMatrix, StiffnessMatrix
- Add matrix factory for simple creation of standard finite element matrices
 - Collect static solvers in LU and GMRES
 - Bug fixes for Python interface PyDOLFIN
 - Enable use of direct solver for ODE solver (experimental)
 - Remove demo bistable
 - Restructure and cleanup linear algebra
 - Use UMFPACK for LU solver with uBLAS matrix types
 - Add templated wrapper class for different uBLAS matrix types
 - Add ILU preconditioning for uBLAS matrices
 - Add Krylov solver for uBLAS sparse matrices (GMRES and BICGSTAB)
 - Add first version of new mesh library (NewMesh, experimental)
 - Add Parametrized::readParameters() to trigger reading of values on set()
 - Remove output of zeros in Octave matrix file format
 - Use uBLAS-based vector for Vector if PETSc disabled
 - Add wrappers for uBLAS compressed_matrix class
 - Compute eigenvalues using SLEPc (an extension of PETSc)
 - Clean up assembly and linear algebra
 - Add function to solve Ax = b for dense matrices and dense vectors
 - Make it possible to compile without PETSc (--disable-petsc)
 - Much improved ODE solvers
 - Complete multi-adaptive benchmarks reaction and wave
 - Assemble boundary integrals
 - FEM class cleaned up.
 - Fix multi-adaptive benchmark problem reaction
 - Small fixes for Intel C++ compiler version 9.1
 - Test for Intel C++ compiler and configure appropriately
 - Add new classes DenseMatrix and DenseVector (wrappers for ublas)
 - Fix bug in conversion from Gmsh format
0.6.1 [2006-03-28]
 - Regenerate build system in makedist script
 - Update for new FFC syntax: BasisFunction --> TestFunction, TrialFunction
 - Fixes for conversion script dolfin-convert
 - Initial cleanups and fixes for ODE solvers
 - Numerous small fixes to improve portability
 - Remove dolfin:: qualifier on output << in Parameter.h
 - Don't use anonymous classes in demos, gives errors with some compilers
 - Remove KrylovSolver::solver()
- Fix bug in convection-diffusion demo (boundary condition for pressure), use direct solver - LinearPDE and NewonSolver use umfpack LU solver by default (if available) when doing direct solve
 - Set PETSc matrix type through Matrix constructor
 - Allow linear solver and preconditioner type to be passed to NewtonSolver
 - Fix bug in Stokes demos (wrong boundary conditions)
 - Cleanup Krylov solver
 - Remove KrylovSolver::setPreconditioner() etc. and move to constructors
 - Remove KrylovSolver::setRtol() etc. and replace with parameters
 - Fix remaining name changes: noFoo() --> numFoo()
 - Add Cahn-Hilliard equation demo
 - NewtonSolver option to use residual or incremental convergence criterion
- Add separate function to nls to test for convergence of Newton iterations
 - Fix bug in dolfin-config (wrong version number)
0.6.0 [2006-03-01]
 - Fix bug in XML output format (writing multiple objects)
 - Fix bug in XML matrix output format (handle zero rows)
 - Add new nonlinear PDE demo
 - Restructure PDE class to use envelope-letter design
 - Add precompiled finite elements for q <= 5
 - Add FiniteElementSpec and factor function for FiniteElement
 - Add input/output of Function to DOLFIN XML
 - Name change: dof --> node
 - Name change: noFoo() --> numFoo()
 - Add conversion from gmsh format in dolfin-convert script
 - Updates for PETSc 2.3.1
 - Add new type of Function (constant)
 - Simplify use of Function class
 - Add new demo Stokes + convection-diffusion
 - Add new demo Stokes (equal-order stabilized)
 - Add new demo Stokes (Taylor-Hood)
 - Add new parameter for KrylovSolvers: "monitor convergence"
 - Add conversion script dolfin-convert for various mesh formats
 - Add new demo elasticity
 - Move poisson demo to src/demo/pde/poisson
 - Move to Mercurial (hg) from CVS
 - Use libtool to build libraries (including shared)
0.5.12 [2006-01-12]
 - Make Stokes solver dimension independent (2D/3D)
 - Make Poisson solver dimension independent (2D/3D)
 - Fix sparse matrix output format for MATLAB
 - Modify demo problem for Stokes, add exact solution and compute error
 - Change interface for boundary conditions: operator() --> eval()
 - Add two benchmark problems for the Navier-Stokes solver
 - Add support for 2D/3D selection in Navier-Stokes solver
 - Move tic()/toc() to timing.h
 - Navier-Stokes solver back online
 - Make Solver a subclass of Parametrized
 - Add support for localization of parameters
 - Redesign of parameter system
0.5.11 [2005-12-15]
 - Add script monitor for monitoring memory usage
 - Remove meminfo.h (not portable)
 - Remove dependence on parameter system in log system
 - Don't use drand48() (not portable)
 - Don't use strcasecmp() (not portable)
 - Remove sysinfo.h and class System (not portable)
 - Don't include <sys/utsname.h> (not portable)
 - Change ::show() --> ::disp() everywhere
 - Clean out old quadrature classes on triangles and tetrahedra
 - Clean out old sparse matrix code
 - Update chapter on Functions in manual
 - Use std::map to store parameters
 - Implement class KrylovSolver
 - Name change: Node --> Vertex
 - Add nonlinear solver demos
 - Add support for picking sub functions and components of functions
 - Update interface for FiniteElement for latest FFC version
 - Improve and restructure implementation of the Function class
 - Dynamically adjust safety factor during integration
 - Improve output Matrix::disp()
 - Check residual at end of time step, reject step if too large
 - Implement Vector::sum()
 - Implement nonlinear solver
 - New option for ODE solver: "save final solution" --> solution.data
 - New ODE test problem: reaction
 - Fixes for automake 1.9 (nobase_include_HEADERS)
 - Reorganize build system, remove fake install and require make install
 - Add checks for non-standard PETSc component HYPRE in NSE solver
 - Make GMRES solver return the number of iterations
 - Add installation script for Python interface
 - Add Matrix Market format (Haiko Etzel)
 - Automatically reinitialize GMRES solver when system size changes
 - Implement cout << for class Vector
0.5.10 [2005-10-11]
 - Modify ODE solver interface: add T to constructor
 - Fix compilation on AMD 64 bit systems (add -fPIC)
 - Add new BLAS mode for form evaluation
 - Change enum types in File to lowercase
 - Change default file type for .m to Octave
 - Add experimental Python interface PyDOLFIN
 - Fix compilation for gcc 4.0
0.5.9 [2005-09-23]
 - Add Stokes module
 - Support for arbitrary mixed elements through FFC
 - VTK output interface now handles time-dependent functions automatically
 - Fix cout for empty matrix
 - Change dolfin_start() --> dolfin_end()
- Add chapters to manual: about, log system, parameters, reference elements,
   installation, contributing, license
 - Use new template fenicsmanual.cls for manual
 - Add compiler flag -U__STRICT_ANSI__ when compiling under Cygwin
 - Add class EigenvalueSolver
0.5.8 [2005-07-05]
 - Add new output format Paraview/VTK (Garth N. Wells)
 - Update Tecplot interface
 - Move to PETSc 2.3.0
- Complete support for general order Lagrange elements in triangles and tetrahedra - Add test problem in src/demo/fem/convergence/ for general Lagrange elements
 - Make FEM::assemble() estimate the number of nonzeros in each row
 - Implement Matrix::init(M, N, nzmax)
 - Add Matrix::nz(), Matrix::nzsum() and Matrix::nzmax()
 - Improve Mesh::disp()
 - Add FiniteElement::disp() and FEM::disp() (useful for debugging)
 - Remove old class SparseMatrix
 - Change FEM::setBC() --> FEM::applyBC()
 - Change Mesh::tetrahedrons --> Mesh::tetrahedra
 - Implement Dirichlet boundary conditions for tetrahedra
 - Implement Face::contains(const Point& p)
 - Add test for shape dimension of mesh and form in FEM::assemble()
 - Move src/demo/fem/ demo to src/demo/fem/simple/
 - Add README file in src/demo/poisson/ (simple manual)
 - Add simple demo program src/demo/poisson/
 - Update computation of alignment of faces to match FFC/FIAT
0.5.7 [2005-06-23]
 - Clean up ODE test problems
 - Implement automatic detection of sparsity pattern from given matrix
 - Clean up homotopy solver
 - Implement automatic computation of Jacobian
 - Add support for assembly of non-square systems (Andy Terrel)
 - Make ODE solver report average number of iterations
 - Make progress bar write first update at 0%
 - Initialize all values of u before solution in multi-adaptive solver,
   not only components given by dependencies
 - Allow user to modify and verify a converging homotopy path
 - Make homotopy solver save a list of the solutions
 - Add Matrix::norm()
 - Add new test problem for CES economy
 - Remove cast from Parameter to const char* (use std::string)
 - Make solution data filename optional for homotopy solver
 - Append homotopy solution data to file during solution
 - Add dolfin::seed(int) for optionally seeding random number generator
 - Remove dolfin::max,min (use std::max,min)
 - Add polynomial-integer (true polynomial) form of general CES system
 - Compute multi-adaptive efficiency index
 - Updates for gcc 4.0 (patches by Garth N. Wells)
- Add Matrix::mult(const real x[], uint row) (temporary fix, assumes uniprocessor case) - Add Matrix::mult(const Vector& x, uint row) (temporary fix, assumes uniprocessor case)
 - Update shortcuts MassMatrix and StiffnessMatrix to new system
 - Add missing friend to Face.h (reported by Garth N. Wells)
0.5.6 [2005-05-17]
- Implementation of boundary conditions for general order Lagrange (experimental)
 - Use interpolation function automatically generated by FFC
 - Put computation of map into class AffineMap
 - Clean up assembly
 - Use dof maps automatically generated by FFC (experimental)
 - Modify interface FiniteElement for new version of FFC
 - Update ODE homotopy test problems
 - Add cross product to class Point
 - Sort mesh entities locally according to ordering used by FIAT and FFC
 - Add new format for dof maps (preparation for higher-order elements)
 - Code cleanups: NewFoo --> Foo complete
 - Updates for new version of FFC (0.1.7)
 - Bypass log system when finalizing PETSc (may be out of scope)
0.5.5 [2005-04-26]
 - Fix broken log system, curses works again
 - Much improved multi-adaptive time-stepping
 - Move elasticity module to new system based on FFC
 - Add boundary conditions for systems
 - Improve regulation of time steps
 - Clean out old assembly classes
 - Clean out old form classes
 - Remove kernel module map
 - Remove kernel module element
 - Move convection-diffusion module to new system based on FFC
 - Add iterators for cell neighbors of edges and faces
 - Implement polynomial for of CES economy
 - Rename all new linear algebra classes: NewFoo --> Foo
 - Clean out old linear algebra
 - Speedup setting of boundary conditions (add MAT_KEEP_ZEROED_ROWS)
 - Fix bug for option --disable-curses
0.5.4 [2005-03-29]
 - Remove option to compile with PETSc 2.2.0 (2.2.1 required)
 - Make make install work again (fix missing includes)
 - Add support for mixing multiple finite elements (through FFC)
 - Improve functionality of homotopy solver
- Simple creation of piecewise linear functions (without having an element)
 - Simple creation of piecewise linear elements
- Add support of automatic creation of simple meshes (unit cube, unit square)
0.5.3 [2005-02-26]
 - Change to PETSc version 2.2.1
 - Add flag --with-petsc=<path> to configure script
 - Move Poisson's equation to system based on FFC
 - Add support for automatic creation of homotopies
 - Make all ODE solvers automatically handle complex ODEs: (M) z' = f(z,t)
- Implement version of mono-adaptive solver for implicit ODEs: M u' = f(u,t)
 - Implement Newton's method for multi- and mono-adaptive ODE solvers
 - Update PETSc wrappers NewVector, NewMatrix, and NewGMRES
 - Fix initialization of PETSc
 - Add mono-adaptive cG(q) and dG(q) solvers (experimental)
 - Implementation of new assebly: NewFEM, using output from FFC
 - Add access to mesh for nodes, cells, faces and edges
 - Add Tecplot I/O interface; contributed by Garth N. Wells
0.5.2 [2005-01-26]
 - Benchmarks for DOLFIN vs PETSc (src/demo/form and src/demo/test)
 - Complete rewrite of the multi-adaptive ODE solver (experimental)
 - Add wrapper for PETSc GMRES solver
 - Update class Point with new operators
 - Complete rewrite of the multi-adaptive solver to improve performance
 - Add PETSc wrappers NewMatrix and NewVector
 - Add DOLFIN/PETSc benchmarks
0.5.1 [2004-11-10]
 - Experimental support for automatic generation of forms using FFC
 - Allow user to supply Jacobian to ODE solver
 - Add optional test to check if a dependency already exists (Sparsity)
 - Modify sparse matrix output (Matrix::show())
 - Add FGMRES solver in new format (patch from eriksv)
 - Add non-const version of quick-access of sparse matrices
 - Add linear mappings for simple computation of derivatives
 - Add check of matrix dimensions for ODE sparsity pattern
 - Include missing cmath in Function.cpp
0.5.0 [2004-08-18]
 - First prototype of new form evaluation system
 - New classes Jacobi, SOR, Richardson (preconditioners and linear solvers)
 - Add integrals on the boundary (ds), partly working
 - Add maps from boundary of reference cell
 - Add evaluation of map from reference cell
 - New Matrix functions: max, min, norm, and sum of rows and columns (erik)
- Derivatives/gradients of ElementFunction (coefficients f.ex.) implemented
 - Enable assignment to all elements of a NewArray
 - Add functions Boundary::noNodes(), noFaces(), noEdges()
 - New class GaussSeidel (preconditioner and linear solver)
 - New classes Preconditioner and LinearSolver
 - Bug fix for tetrahedral mesh refinement (ingelstrom)
 - Add iterators for Edge and Face on Boundary
 - Add functionality to Map: bdet() and cell()
 - Add connectivity face-cell and edge-cell
 - New interface for assembly: Galerkin --> FEM
 - Bug fix for PDE systems of size > 3
0.4.11 [2004-04-23]
 - Add multigrid solver (experimental)
 - Update manual
0.4.10
 - Automatic model reduction (experimental)
 - Fix bug in ParticleSystem (divide by mass)
 - Improve control of integration (add function ODE::update())
 - Load/save parameters in XML-format
 - Add assembly test
 - Add simple StiffnessMatrix, MassMatrix, and LoadVector
 - Change dK --> dx
 - Change dx() --> ddx()
 - Add support for GiD file format
 - Add performance tests for multi-adaptivity (both stiff and non-stiff)
 - First version of Newton for the multi-adaptive solver
 - Test for Newton for the multi-adaptive solver
0.4.9
 - Add multi-adaptive solver for the bistable equation
 - Add BiCGSTAB solver (thsv)
 - Fix bug in SOR (thsv)
 - Improved visual program for OpenDX
 - Fix OpenDX file format for scalar functions
 - Allow access to samples of multi-adaptive solution
 - New patch from thsv for gcc 3.4.0 and 3.5.0
 - Make progress step a parameter
 - New function ODE::sparse(const Matrix& A)
 - Access nodes, cells, edges, faces by id
 - New function Matrix::lump()
0.4.8
 - Add support for systems (jansson and bengzon)
 - Add new module wave
 - Add new module wave-vector
 - Add new module elasticity
 - Add new module elasticity-stationary
 - Multi-adaptive updates
 - Fix compilation error in LogStream
 - Fix local Newton iteration for higher order elements
 - Init matrix to given type
 - Add output of cG(q) and dG(q) weights in matrix format
 - Fix numbering of frames from plotslab script
 - Add png output for plotslab script
 - Add script for running stiff test problems, plot solutions
 - Fix bug in MeshInit (node neighbors of node)
 - Modify output of sysinfo()
 - Compile with -Wall -Werror -pedantic -ansi -std=c++98 (thsv)
0.4.7
 - Make all stiff test problems work
 - Display status report also when using step()
 - Improve adaptive damping for stiff problems (remove spikes)
 - Modify Octave/Matlab format for solution data (speed improvement)
 - Adaptive sampling of solution (optional)
 - Restructure stiff test problems
 - Check if value of right-hand side is valid
 - Modify divergence test in AdaptiveIterationLevel1
0.4.6
 - Save vectors and matrices from Matlab/Octave (foufas)
 - Rename writexml.m to xmlmesh.m
 - Inlining of important functions
 - Optimize evaluation of elements
 - Optimize Lagrange polynomials
 - Optimize sparsity: use stl containers
 - Optimize choice of discrete residual for multi-adaptive solver
 - Don't save solution in benchmark proble
 - Improve computation of divergence factor for underdamped systems
 - Don't check residual on first slab for fixed time step
 - Decrease largest (default) time step to 0.1
 - Add missing <cmath> in TimeStepper
 - Move real into dolfin namespace
0.4.5
 - Rename function.h to enable compilation under Cygwin
 - Add new benchmark problem for multi-adaptive solver
 - Bug fix for ParticleSystem
 - Initialization of first time step
 - Improve time step regulation (threshold)
 - Improve stabilization
 - Improve TimeStepper interface (Ko Project)
 - Use iterators instead of recursively calling TimeSlab::update()
 - Clean up ODESolver
 - Add iterators for elements in time slabs and element groups
 - Add -f to creation of symbolic links
0.4.4
 - Add support for 3D graphics in Octave using Open Inventor (jj)
0.4.3
 - Stabilization of multi-adaptive solver (experimental)
 - Improved non-support for curses (--disable-curses)
 - New class MechanicalSystem for simulating mechanical systems
 - Save debug info from primal and dual (plotslab.m)
 - Fix bug in progress bar
 - Add missing include file in Components.h (kakr)
 - New function dolfin_end(const char* msg, ...)
 - Move numerical differentiation to RHS
 - New class Event for limited display of messages
 - Fix bug in LogStream (large numbers in floating point format)
 - Specify individual time steps for different components
 - Compile without warnings
 - Add -Werror to option enable-debug
 - Specify individual methods for different components
 - Fix bug in dGqMethods
 - Fix bug (delete old block) in ElementData
 - Add parameters for method and order
 - New test problem reaction
 - New class FixedPointIteration
 - Fix bug in grid refinement
0.4.2
 - Fix bug in computation of residual (divide by k)
 - Add automatic generation and solution of the dual problem
 - Automatic selection of file names for primal and dual
 - Fix bug in progress bar (TerminalLogger)
 - Many updates of multi-adaptive solver
 - Add class ODEFunction
 - Update function class hierarchies
 - Move functions to a separate directory
 - Store multi-adaptive solution binary on disk with cache
0.4.1
 - First version of multi-adaptive solver working
 - Clean up file formats
 - Start changing from int to unsigned int where necessary
 - Fix bool->int when using stdard in Parameter
 - Add NewArray and NewList (will replace Array and List)
0.4.0
 - Initiation of the FEniCS project
 - Change syntax of mesh files: grid -> mesh
 - Create symbolic links instead of copying files
 - Tanganyika -> ODE
 - Add Heat module
 - Grid -> Mesh
 - Move forms and mappings to separate libraries
 - Fix missing include of DirectSolver.h
0.3.12
 - Adaptive grid refinement (!)
 - Add User Manual
 - Add function dolfin_log() to turn logging on/off
 - Change from pointers to references for Node, Cell, Edge, Face
 - Update writexml.m
 - Add new grid files and rename old grid files
0.3.11
 - Add configure option --disable-curses
 - Grid refinement updates
 - Make OpenDX file format work for grids (output)
 - Add volume() and diameter() in cell
 - New classes TriGridRefinement and TetGridRefinement
 - Add iterators for faces and edges on a boundary
 - New class GridHierarchy
0.3.10
 - Use new boundary structure in Galerkin
 - Make dolfin_start() and dolfin_end() work
 - Make dolfin_assert() raise segmentation fault for plain text mode
 - Add configure option --enable-debug
 - Use autoreconf instead of scripts/preconfigure
 - Rename configure.in -> configure.ac
 - New class FaceIterator
 - New class Face
 - Move computation of boundary from GridInit to BoundaryInit
 - New class BoundaryData
 - New class BoundaryInit
 - New class Boundary
 - Make InitGrid compute edges
 - Add test program for generic matrix in src/demo/la
 - Clean up Grid classes
 - Add new class GridRefinementData
 - Move data from Cell to GenericCell
 - Make GMRES work with user defined matrix, only mult() needed
 - GMRES now uses only one function to compute residual()
 - Change Matrix structure (a modified envelope/letter)
 - Update script checkerror.m for Poisson
 - Add function dolfin_info_aptr()
 - Add cast to element pointer for iterators
 - Clean up and improve the Tensor class
 - New class: List
 - Name change: List -> Table
 - Name change: ShortList -> Array
 - Make functions in GridRefinement static
 - Make functions in GridInit static
 - Fix bug in GridInit (eriksv)
 - Add output to OpenDX format for 3D grids
 - Clean up ShortList class
 - Clean up List class
 - New class ODE, Equation replaced by PDE
 - Add Lorenz test problem
 - Add new problem type for ODEs
 - Add new module ode
 - Work on multi-adaptive ODE solver (lots of new stuff)
 - Work on grid refinement
 - Write all macros in LoggerMacros in one line
 - Add transpose functions to Matrix (Erik)
0.3.9
 - Update Krylov solver (Erik, Johan)
 - Add new LU factorization and LU solve (Niklas)
 - Add benchmark test in src/demo/bench
 - Add silent logger
0.3.8
 - Make sure dolfin-config is regenerated every time
 - Add demo program for cG(q) and dG(q)
 - Add dG(q) precalc of nodal points and weights
 - Add cG(q) precalc of nodal points and weights
 - Fix a bug in configure.in (AC_INIT with README)
 - Add Lagrange polynomials
 - Add multiplication with transpose
 - Add scalar products with rows and columns
 - Add A[i][j] index operator for quick access to dense matrix
0.3.7
 - Add new Matlab-like syntax like A(i,all) = x or A(3,all) = A(4,all)
 - Add dolfin_assert() macro enabled if debug is defined
- Redesign of Matrix/DenseMatrix/SparseMatrix to use Matrix as common interface
 - Include missing cmath in Legendre.cpp and GaussianQuadrature.cpp
0.3.6
 - Add output functionality in DenseMatrix
 - Add high precision solver to DirectSolver
 - Clean up error messages in Matrix
 - Make solvers directly accessible through Matrix and DenseMatrix
 - Add quadrature (Gauss, Radau, and Lobatto) from Tanganyika
 - Start merge with Tanganyika
 - Add support for automatic documentation using doxygen
 - Update configure scripts
 - Add greeting at end of compilation
0.3.5
 - Define version number only in the file configure.in
 - Fix compilation problem (missing depcomp)
0.3.4
 - Fix bugs in some of the ElementFunction operators
 - Make convection-diffusion solver work again
 - Fix bug in integration, move multiplication with the determinant
 - Fix memory leaks in ElementFunction
 - Add parameter to choose output format
 - Make OctaveFile and MatlabFile subclasses of MFile
 - Add classes ScalarExpressionFunction and VectorExpressionFunction
 - Make progress bars work cleaner
 - Get ctrl-c in curses logger
 - Remove <Problem>Settings-classes and use dolfin_parameter()
 - Redesign settings to match the structure of the log system
 - Add vector functions: Function::Vector
 - Add vector element functions: ElementFunction::Vector
0.3.3
 - Increased functionality of curses-based interface
 - Add progress bars to log system
0.3.2
 - More work on grid refinement
 - Add new curses based log system
0.3.1
 - Makefile updates: make install should now work properly
 - KrylovSolver updates
 - Preparation for grid refinement
 - Matrix and Vector updates
0.3.0
 - Make poisson work again, other modules still not working
 - Add output format for octave
 - Fix code to compile with g++-3.2 -Wall -Werror
 - New operators for Matrix
 - New and faster GMRES solver (speedup factor 4)
 - Changed name from SparseMatrix to Matrix
 - Remove old unused code
 - Add subdirectory math containing mathematical functions
 - Better access for A(i,j) += to improve speed in assembling
 - Add benchmark for linear algebra
 - New definition of finite element
 - Add algebra for function spaces
 - Convert grids in data/grids to xml.gz
 - Add iterators for Nodes and Cells
 - Change from .hh to .h
 - Add operators to Vector class (foufas)
 - Add dependence on libxml2
 - Change from .C to .cpp to make Jim happy.
 - Change input/output functionality to streams
 - Change to new data structure for Grid
 - Change to object-oriented API at top level
 - Add use of C++ namespaces
 - Complete and major restructuring of the code
 - Fix compilation error in src/config
 - Fix name of keyword for convection-diffusion
0.2.11-1
 - Fix compilation error (`source`) on Solaris
0.2.11
 - Automate build process to simplify addition of new modules
 - Fix bug in matlab_write_field() (walter)
 - Fix bug in SparseMatrix::GetCopy() (foufas)
0.2.10-1
 - Fix compilation errors on RedHat (thsv)
0.2.10
 - Fix compilation of problems to use correct compiler
 - Change default test problems to the ones in the report
 - Improve memory management using mpatrol for tracking allocations
 - Change bool to int for va_arg, seems to be a problem with gcc > 3.0
 - Improve input / output support: GiD, Matlab, OpenDX
0.2.8
 - Navier-Stokes starting to work again
 - Add Navier-Stokes 2d
 - Bug fixes
0.2.7
 - Add support for 2D problems
 - Add module convection-diffusion
 - Add local/global fields in equation/problem
 - Bug fixes
 - Navier-Stokes updates (still broken)
0.2.6 [2002-02-19]
 - Navier-Stokes updates (still broken)
 - Output to matlab format
0.2.5
 - Add variational formulation with overloaded operators for systems
 - ShapeFunction/LocalField/FiniteElement according to Scott & Brenner
0.2.4
 - Add boundary conditions
 - Poisson seems to work ok
0.2.3
 - Add GMRES solver
 - Add CG solver
 - Add direct solver
 - Add Poisson solver
 - Big changes to the organisation of the source tree
 - Add kwdist.sh script
 - Bug fixes
0.2.2:
 - Remove curses temporarily
0.2.1:
 - Remove all PETSc stuff. Finally!
 - Gauss-Seidel cannot handle the pressure equation
0.2.0:
 - First GPL release
 - Remove all of Klas Samuelssons proprietary grid code
 - Adaptivity and refinement broken, include in next release