# -*- org -*-
# This file is better edited using Emacs

#+TITLE: Life News
#+AUTHOR: Christophe Prud'homme
#+DATE: <2009-09-18 Fri>
#+EMAIL: christophe.prudhomme@ujf-grenoble.fr
#+OPTIONS: toc:t
#+LATEX_class: cparticle

* New in 0.9.24
** Programming Environment
 - gcc >= 4.4 is now required in conjonction with -std=c++0x and the use of the
   new keyword auto available only in 4.4 and later
 - provide cmake option LIFE_MINIMAL_CONFIGURATION (default: OFF) to enable a
   minimal configuration for the configuration of Life
 - added fixes for PETSc 3.1 in FindPETSc.cmake

** Libraries

*** All
 - change the way we are retrieving the mpi communicator: we don't use the
   Application::processId() and Application::nProcess() anymore but rather the
   mpi::communicator from boost::mpi directly. This allows a less tight
   dependency between Application class and other classes for one thing.

*** lifecore
 - new class Environment initializes MPI, PETSc and SLEPc if not done already
   and finalizes them if the initialization was done by the same class. This
   avoid using/including the Application class/header unnecessarily.
 - minor bug fix in debug.cpp
 - Debug: disable now Debug() when compiling with -DNDEBUG which is the case in
   the cmake Release mode. This may slightly improve performances. Note that
   Log() is however still writing in the logfile.

*** lifemesh
 - fixed edge connectivity in 2D for high order geometrical elements
 - fixed edge and face connectivity in 3D for high order geometrical elements
 - provide various computation on geometric elements which are computed
   automatically when Mesh::updateForUse() is called
   - h, hFace
   - barycenter and barycenter of faces
   - normal at barycenters
   - measure and measure at faces

*** lifepoly
 - helper functions for GeoMap and PreCompute classes are now provided to ease
   their instantiation and usage

*** lifefilters
 - Exporter defines  --export=[0|1] in the command line which sets
   Exporter::doExport() to true or false. Then it is up to the developer to use
   it and save some time if he doesn't want to export the results at runtime.

*** lifealg
 - GraphCSR uses std::set instead of std::vector (see
   BilinearForm::computeGraph). This allows for faster graph computation.
 - SolverLinearPetsc: setting tolerances(absolute, relative and divergence) is
   easier through the Backend::solve function using Boost::parameter.
 - Fixes in PETSc matrix interface due to changes in Petsc 3.1 interface (namely
   MAT_KEEP_NONZERO_PATTERN)

*** lifevf
 - BilinearForm::computeGraph (in conjunction with GraphCSR) is now noticeably
   faster (this was taking much time). Other optimisation based on hints
   (DO_PATTERN_COUPLED and DOF_PATTERN_NEIGHBOR). You can choose between
   coupling all components (DOF_PATTERN_COUPLED) or decoupling them
   (DOF_PATTERN_DEFAULT and depending on trial and test space basis).

** Benchmarks
*** Convergence
 - Stokes: added some timings; now use properly DOF_PATTERN_NEIGHBOR, removed
   all _Q<>


* New in 0.9.23
** Libraries

*** lifediscr
 - mesh*: fix the mesh test cases that were failing the last few weeks

*** lifealg
 - MatrixPETSC::addMatrix() allows now DIFFERENT_NONZERO_PATTERN, remove some
   std::cout outputs that went in the release 0.9.22

*** lifefitters
 - Exporter::New(std::string,std::string): it now takes care of the the timeset
   allocation and returns a fully functional exporter

** Documentation

*** Tutorial
 - fixed the tutorial : make sure that the language reference and the license
   are present in the manual


* New in 0.9.22
** Documentation
 - added a Random Notes chapter to the manual

** Libraries

*** lifecore and lifealg
 - remove support for long double
 - Application accepts now constructor with only a AboutData class as argument,
   this is useful to integrate life in environment such as Python or Sofa.

*** lifepoly
 - start support for non transformation equivalent finite elements (eg. Hermite,
   RTk, Nk,...)
 - start support for Hermite finite elements

*** lifevf
 - the integration order is optional in the integrate(.), the order is computed
   automatically from the expression

** Applications

*** polyvis

 - start support for Hermite polynomials visualisation


* New in 0.9.21
** Programming environment
 - fixes for armel and s90 port
 - update FindOpenTURNS.cmake script

** Libraries
*** lifealg
 - fixed compilation if PETSc or Trilinos are not installed
 - added a matrix-vector multiplication interface to the class MatrixSparse
   which used the interface already available in the Vector class.


* New in 0.9.20
 - minor change


* New in 0.9.19
** Programming Environment

   - added support cmake support for OpenTURNS
     http://www.openturns.org

** Libraries
*** life/lifecore
   - allow Application class without (argc,argv). This permits to wrap
     Application classes in Python scripts. At the moment this is being used to
     write wrappers for OpenTURNS.
   - use boost::integer to compute the exact int#_type and #ifdef int64 support
     if it is not available on the platform.


* New in 0.9.18
** Programming Environment

  - improved Trilinos and PETSc cmake support
  - minor changes in manual (version...)

** Library

  - improvements to the kdtree structure


* New in 0.9.17
  - minor changes for Debian ports


* New in 0.9.16
** Programming environment
  - make trilinos optional. That should ease the porting on platforms where
    trilinos does not compile (yet)

** Libraries

 - improvements in the kdtree data structure


* New in 0.9.15
** Programming environment

 - port Life on non x86 platforms. The non x86 Debian platforms should now be
   able to compile Life.

** Benchmarks

 - decrease the number of failures in the benchmarks at
   http://my.cdash.org/index.php?project=Life


* New in 0.9.14
** Programming environment

 - add support for Metis (using either metis or the scotch interface), some
   applications can now be run in parallel using mpirun
   (e.g. doc/tutorial/life_doc_myintegrals)

** Benchmarks

 - stokes: added support for P_k/P_{k-1}, P_k/P_{k-2} and P_k/P_k (with CIP
   stabilisation), this is a 2D Kovasznay flow.
 - install the convergence benchmarks



* New in 0.9.13
** Programming environment

 - fixed installation of Life, was missing life/lifepoly headers

** Libraries

*** life/lifecore

 - /Factory/: added info about missing component in Factory when throwing
   exception

*** life/lifefilters

 - /Gmsh/: added simplex(3,1) domain in gmsh generator and accessible fromn
   Gmsh::Factory (from GmshSimplexDomain class).

** Application

 - polyvis: added cmake support to polyvis
 - polyvis: added ctests using polyvis
 - polysetvis: added new application polysetvis to plot pointsets for simplices
   and hypercubes in pdf


* New in 0.9.12
** Programming environment
   - tests in testsuite are prefixed by test_
   - benchmarks are prefixed by life_bench
   - convergence benchmarks are run with string and weak Dirichlet treatment if
     applicable

** Bugs
   - Bug in on() for 1D problem (Fixes #32)


* New in 0.9.11

** Programming environment

*** Directory layout and cmake

    - Now Life splits the entire framework into various modules and uses cmake as
      build system. REferences to the autotools and scons have been removed

    - A CDash dashboard is available at
      http://my.cdash.org/index.php?project=Life Tests are running every night
      and reported on the dashboard.

*** Shared libraries

   Now the libraries follow this versioning scheme

   So, shared library versions are described by three integers:
   - current: The most recent interface number that this library implements.
   - revision: The implementation number of the current interface.
   - age: The difference between the newest and oldest interfaces that this
     library implements.

   In other words, the library implements all the interface numbers in the range
   from number 'current - age' to current.

   Here are a set of rules that are used to update the library version information:
   1. Start with version information of ‘0:0:0’ for each  library.
   2. Update the version information only immediately before a public release of
      your software. More frequent updates are unnecessary, and only guarantee
      that the current interface number gets larger faster.
   3. If the library source code has changed at all since the last update, then
      increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
   4. If any interfaces have been added, removed, or changed since the last
      update, increment current, and set revision to 0.
   5. If any interfaces have been added since the last public release, then
      increment age.
   6. If any interfaces have been removed since the last public release, then
      set age to 0.

   See http://www.gnu.org/software/libtool/manual/libtool.html#Versioning for
   more details


** Libraries


*** lifepoly

    - now Lagrange polynomials can be instantiated using only
      =Lagrange<Order,Scalar|Vectorial>=

*** lifediscr

    - Simplified =FunctionSpace<>=

    - Bdf: allow to set time step and final time, added =setSteady()= to set
      time step and final time to a very big value for the computation of the
      steady state

    - support for high order nodal basis function in case of periodic
      conditions in 1D and 2D is complete see #20

*** lifealg

    - Improve robustness of linear algebra backends see #21

    - Improve =SolverEigen= interface allowing for =boost::shared_ptr<>= and
      initializing from =po::variables_map=

    - Provide a standalone function =eigs()= using Boost.Parameter, the interface
      is quite simple and typically looks like
      =eigs( _matrixA=A, _matrixB=B, _spectrum=LARGEST_MAGNITUDE );=
      to solve for A x = \lambda B x

    - Fixed bug on 64 bits architecture for the construction of the FE CRS
      graph for trilinos

*** lifefilters

    - Simplify =Exporter= interface, old interface still supported, but might be
      obsoleted in a future release. The simplification is that the TimeSet
      data structure should not be used directly but through the Exporter class
      interface.

*** lifevf

    - reflect simplifications made in lifepoly and lifediscr

    - =mat()=,=vec()=: supports for trial and test functions added, now you can
      write =vec(0.,idt(v))=.

** Applications

*** Polyvis

    - resurrected a tool to visualize polynomial set called polyvis. It
      generates Ensight case files (to be visualized with Paraview) for Lagrange
      and Dubiner polynomials in 1D, 2D and 3D and Crouzeix-Raviart polynomials
      of order 1 in 2D in the triangle.

** Examples

   - reflect (simplification) changes made in =Exporter= class in all examples.

*** Generic

   - =sound=: use new eigs interface and simplify the code

** Benchmarks

*** Convergence

    - new benchmark system: added a Python framework to check for the
      convergence (e.g. L_2 or H_1 norms) for a few problems

    - added new benchmarks to =benchmark/convergence=: stokes and ale

* New in 0.9.10

** Libraries

*** lifediscr

    - started support for high order nodal basis function in case of periodic
      conditions

*** lifefilters

    - Gmsh : throw an exception if gmsh is execute when not available

** Documentation

*** Tutorial

    - updated the building section

    - updated the Backend<> section

    - started new examples (nonlinear pde)

** Build System

*** Configure

    - better feedback to users

    - a summary text file provides what is available and what is not

*** Gmsh

    - configure: better support




* New in 0.9.9
  - If Petsc is supported then use Petsc as default backend.

  - Slepc(Petsc) support has been updated to latest version.

  - Added periodic boundary conditions support in FunctionSpace<>.

  - New Build system framework still using the Autotools: the Life
  Developement Plateform (LDP).
   - split the directories into submodules which can hold extra (external
     to life) modules: examples, benchmarks, doc, applications, research
   - allow for easy creation of new projets which can build on top of the
     LDP.

   - [Experimental] System<FunctionSpaceType> framework implementation.

   - [Experimental] Shell matrices (only support matrix/vector
  multiplication) support.

