#
# This file is part of Rheolef.
#
# Copyright (C) 2000-2009 Pierre Saramito 
#
# Rheolef is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Rheolef is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Rheolef; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
# -------------------------------------------------------------------------

16 mars 2022
------------
* new transmission_dg.cc example : non-homogeneous diffusion
* new diffusion_transport_tensor_dg.cc example
* scotch-7.0 portage, fix debian bug #1007118
* paraview-5.10 portage : typos in .py and njew vtk-polydata file format
* branch -proj : fixed for vtk output
* fix issue related to a signed/unsigned semantic change with gnu-c++
  impacted: geo_locate.cc band.cc interpolate.cc bamg2geo.cc
* fix some compiler issues when using ginac 
* mkgeo_grid_3d.cc bug fix: thanks to Olivier Ozenda
  mkgeo_grid -T 4 8 2 -a 0 -b 10.883 -c 0 -d 1 -f -0.01 -g 0.01 > squirel3.geo
* doc/web: update for doxygen-1.9.1

11 mars 2022
------------
* dddot by Nathan Shourick

31 janv 2020
------------
* big clean: directory structure re-organised

29 sept 2019
------------
* bug fix: form_assembly_iopt_order_tst.cc

11 june 2019
------------
* hho : superconvergence for the reconstruction operator

5 june 2019
-----------
* mac-osx : make check (seq) sur la machine de jean-luc, portage clang
* hho : dirichlet_hho.cc : premiers tests, pas de cvgce sinusprod

31 mai 2019
-----------
* field_expr : linear and nonlinear cases merged in one expression
  can interpolate linear expr with different spaces, e.g. uh-lambda_h for hdg

31 mai 2019
-----------
* field_expr : linear and nonlinear cases merged in one expression
  can interpolate linear expr with different spaces, e.g. uh-lambda_h for hdg

25 mai 2019
-----------
* bug fix: beta = (k+1)*(k+d)/d; => .../Float(d); for float division : in all *_dg.cc examples

24 mai 2019
-----------
* porting to mac-osx: make check ok in sequential config with clang++

23 mai 2019
-----------
* RTkd post HDG : optimal H(div) error h^{k+1} for the flux
  it was a theoretical problem: flux was not well-characterized
  it requires the "basis_sides" i.e. the H(div)-trace element

19 mai 2019
-----------
* RTkd : optimal H(div) error with L2 projection, 
  when commutation diagram is used as constraint

25 april 2019
-------------
* hdg restarted: check div(RTk) convergence and bug localized
  it was a theoretical problem: interpolate with internal nodes as dof
  is not commuting and has no optimal error in H(div)

4 april 2019
------------
* new basis implementation: code clean
  - fem_on_pointset.(hc] test.[hc] : code reduction

25 march 2019
------------
* new basis implementation: test coverage completed
  - clean space_constitution and space_numbering
  - basis.reset_family_index(k)
  - piola_fem : handle axi and grad_option (sym,surfacic)
  - make check (seq,dis) ok + ngnutef aussi

21 march 2019
------------
* new basis implementation: test coverage in progress
  - make check (seq,dis) ok + ngnutef aussi
  - add field_interpolate_dom_tst.cc test

17 march 2019
------------
* new basis implementation: test coverage in progress
  - field i/o: compat with old file format

11 march 2019
------------
* new basis implementation: test coverage in progress
  - reinterpolate between meshes: vector/tensor & space.xdof
  - solver:
    * mump_seq: no more used in seq mode, eigen is the default
    * eigen: fix ldlt, when sdp instead of symmetric general
  - make check(seq,dis): all ok except test_component, hdg and basis_sides

4 march 2019
------------
* new basis implementation: test coverage in progress
  - raviart_thomas_tst: 3d and distributed also
  - doc/pexamples test suite started:
  - stokes_contraction: fix 2d vorticity sign
  - dirichlet_dg: fix grad_evaluate_on_sides
  - stokes_dg:    add  div_evaluate_on_sides


15 march 2019
------------
* new basis implementation: test coverage in progress
  - hdg: is back with test_component 
  - make check(seq,dis) ok

11 march 2019
------------
* new basis implementation: test coverage in progress
  - reinterpolate between meshes: vector/tensor & space.xdof
  - solver:
    * mump_seq: no more used in seq mode, eigen is the default
    * eigen: fix ldlt, when sdp instead of symmetric general
  - make check(seq,dis): all ok except test_component, hdg and basis_sides

4 march 2019
------------
* new basis implementation: test coverage in progress
  - raviart_thomas_tst: 3d and distributed also
  - doc/pexamples test suite started:
  - stokes_contraction: fix 2d vorticity sign
  - dirichlet_dg: fix grad_evaluate_on_sides
  - stokes_dg:    add  div_evaluate_on_sides

25 february 2019
----------------
* new basis implementation: test coverage in progress
  - on_local_sides
  - numbering: new implementation

25 february 2019
----------------
* new basis implementation: test coverage in progress
  - compose-nary
  - D(u): field_nonlinear_expr_grad_tst
  - characteristic: field_vf_expr_tst
  - band

19 february 2019
----------------
* new basis implementation: test coverage in progress
  - interpolate : all cases (valued, expressions) merged in oone generic functions
  - basis: for vector and tensor on boundary domains : add dimension "d" option and sys_coord
  - numbering: merged in two cases: continuous/discontinuous; bubble as discontinuous
  - surface : map_projector, div_s, grad_s
  - grad(vector) : axi
  - Vh[0], uh[0] : space and field indexation for vector and tensor valued fields
  - DG : jump_dg_tst
 
10 february 2019
----------------
* field_expr_v2_nonlinear_tst: interpolate and integrate basis "vector(Pk)"
  numbering: Pk_numbering.cc also numbers for "vector(Pk)"

7 february 2019
---------------
* piola_on_pointset and fem_on_poinset: simplified calls

5 february 2019
---------------
* basis: table of pre-loaded basis
* memorized_table: generic extension of pre-loaded objects

1 february 2019
---------------
* piola_on_pointset and fem_on_poinset: also tabulated, to simplify the code in
  test.cc and expressions

25 january 2019
---------------
* basis_fem: piola imbeded
* basis_on_poinset: evaluate all the basis for all local nodes in one pass
* test.cc and expresions: propagate these changes started

14 january 2019
---------------
* hdg post: now bar_uh and uh^* are both superconvergent
  with homogeneous boundary conditions (sinusprod.icc test)

12 january 2019
---------------
* hdg post: first results in 2d (mesh=t,q)
  but bar_uh and uh^* are not yet superconvergent

5 january 2019
--------------
* hdg post: continued with dirichlet_hdg_post.cc
  bug fix for div(RTk) in nfem/plib/test.cc

3 january 2019
--------------
* hdg post: restart with dirichlet_hdg_post.cc
  bug fix in nfem/geo_element/reference_element_face_transformation.cc
  for K=P,H and when S=q : hat_node now goes from [-1,1]^2 to [0:1]^2

23 march 2018
---------------
* draft with hdg: dirichlet_hdg.cc and transport_hdg.cc

20 march 2018
---------------
* test[i_comp]: multi-level indexation of test functions in variational exprs
* g++ -Weffc++ -Wall -Werror

14 march 2018
---------------
* all domains transmited in geo_domain, e.g. "square[sides]" has "boundary" domain
  useful for hybridization of DG, see dirichlet_hdg.cc

27 february 2018
---------------
* solver_cholmod re-activated, via eigen interface
  supernodal LLt mode: should be efficient for Poisson pb with high Pk

23 february 2018
---------------
* armadillo replaced by eigen
  eigen also used for quadrature nodes computation (eigenvalues of a tridiag)
  and tensor_basic<T> eig, svd and exp

17 february 2018
---------------
* all user's documentation merged in one volume rheolef.tex
  with discontinuous Galerlin and complex fluids as chapters

30 january 2018
---------------
* rheolef3-cfma.tex : oldroyd-B fluid in abrupt contraction 
  via P1d-P2-P1d incompressible element

22 january 2018
---------------
* new rheolef3-cfma.tex : complex fluids examples and documentation

19 january 2018
---------------
* BUG_ADAPT fixed : in the distributed case for gmsh

13 january 2018
---------------
* new continuation and bifurcation algo & example

10 january 2018
---------------
* BUG_REINTERPOLATE_DIST : fixed, thanks to Noe Bernabeu test-case
  was in interpolate.cc when two different meshes and with mpirun
* unordered_map : used to store all loaded geos
  => do load only one time an active geo

5 january 2018
--------------
* BUG_ADAPT fixed : in the distributed case for bamg
  implement field2bb and bamg2geo in autonomous binary (without mpi.so or librheolef.so)
* BUG_MEM fixed : was when using heap_allocator that do not deallocate
	          for disarray temporaries for mpi messages
		  geo and field permanently stores disarray that heap_allocator 
		  that accumulates temporaries without deallocation
		=> replace it by std::allocator

4 january 2018
--------------
* BUG_DG  fixed : was in basis_on_pointset.cc/restrict_on_side (rewritten)

15 september 2017
-----------------
* nfem/gbasis: Pk Bk Sk complete rewriting of basis

21 march 2016
----------------
* geo_subdivide.cc : build P1-iso-Pk mesh

21 january 2016
----------------
* examples: burgers equations and variant with diffusion

13 december 2015
----------------
* replace myavi2 by paraview for "field -iso" & "field -cut"

10 december 2015
----------------
* quadrature: new "equispaced" family, for Heaviside and irregular functions

2 september 2015
----------------
* mumps+ptscotch : detecte par configure.ac et prefere a mumps

30 september 2015
-----------------
* de-boostage : remove boost::mpl boost::array  boost::function
  that are now part of std::
* finalize the rewritting of field expessions
	- remove all the boost::proto based code
	- tensor4 are fully supported in expressions

25 september 2015
-----------------
* rewrite completely vec<T,M> and field<t,M> expressions
  based on template expressions and Sfinae techniques
* suppression of "field_functor" and "unary_function" from examples

12 september 2015
-----------------
* portage g++-5.2
* debianization : version 6.6
* bug fix: uh[i] = vh[j] trouve par Mahamar

9 september 2015
----------------
* compose(f,u1...uN) in expressions with variadic templates

17 june 2015
----------
* branch constructor with variadic templates

13 fev 2014
----------
* visu paraview: field (scalar,vec,tensor) et geo

3 fev 2014
----------
* inv_piola: cas non-lineaire (quadrangles, etc) avec damped_newton

1 fev 2014
-----------
* Q2-P1 : element incompressible pour Stokes en quadrangles

12 nov 2013
-----------
* determinant of a matrix via solver (when mumps or umfpack)

10 nov 2013
-----------
* open in append mode for gziped odiststream

22 oct 2013
------------
* bug fix: tensor3::operator*(Float) et tensor4 idem

20 oct 2013
------------
* visu paraview: cas scalaire 2d

19 sept 2013
------------
* debian : rheolef-6.5 ok

13 sept 2013
------------
* portage g++-4.8 boost-1.54 automake 1.13
* regresion : oldroyd theta-schema a verifier

1 juin 2013
-----------
* oldroyd theta-schema : ok, We=0.2 cavite
* oldroyd log-conformation : We=1   cavite, ok !

23 mai 2013
-----------
* transport stress : ok
* oldroyd theta-schema : a valider

8 mai 2013
-------------
* version stable 6.4 sortie
* dg navier-stokes newton : cavite Re=10000 par decentrage & cheminement manuel

7 mai 2013
-------------
* dg navier-stokes newton : cavite Re=100,500,1000 et valide' !

4 mai 2013
-------------
* dg navier-stokes : d=2 test & cv !

30 avril 2013
-------------
* dg embankment : d=2,3
* dg stokes     : d=2 semble correcte !

27 avril 2013
-------------
* dg poisson : premiers tests !
* dg poisson : k qque, d=2,3

22 avril 2013
-------------
* suppression des matrices elementaires

19 avril 2013
-------------
* DG : d=1,2,3, Pkd, k=0,1,2 : tourne sur un cas simple de transport
* DG : d=2 Pkd, k=0,1,2 : sur le champs tournant d'Ibrahim

16 avril 2013
-------------
* DG : test P0 d=1,2 et np=1..7 : ok ; reste 3d et Pk

6 avril 2013
------------
* nettoyage du code de generation des expressions nl, vf, vf2 

3 avril 2013
------------
* vectoriel surfacique : test de Ds(uh)

2 avril 2013
------------
* formes bilineaire : expressions pour les cas vectoriels et tensoriels

24 mars 2013
------------
* formes bilineaire : expressions pour les cas scalaires, surfacique et bande

15 mars 2013
------------
* formes lineaire : remplacement de riesz par integrate
* formes bilineaire : specification des expressions

8 mars 2013
-----------
* debut de l'assemblage generique : l(v) = int v dx ok

4 mars 2013
-----------
* DG en 2d: t ou q et P0, P1d, P2d

20 fev 2013
-----------
* DG en 1d: debut, avec u>0

17 fev 2013
-----------
* riesz en axisymetrique : pour test bingham-poiseuille 
* normale() pour Ali (demande forum)

19 oct 2012
-----------
* version 6.3
* porting to syrah: more configure options

14 oct 2012
-----------
* csr_concat: bug fix when managing "0" as generic zero block

11 oct 2012
-----------
* diag : bug fix, tanks to Aymen

9 oct 2012
----------
* csr : entree .mtx & sortie postscript 

2 oct 2012
------------
* compose : supports both fct and class-fct

30 sept 2012
------------
* field_expr: elimination des field_nonlinear_expr en tant que terminal

28 sept 2012
------------
* form_mass_bdr_weighted_tst : pour des CL Robin avec coef non-constant
	utile pour noe pour la thermique : rayonnt et evaporation pluie (chgt etat)

28 juin 2012
-----------
* neighbour: debut, test sur la bande (vers form d_dn)

18 juin 2012
-----------
* form avec poid en field_nonlinear_expr: arrange tres bien le p_laplacien !!!
	=> formulation symmetrique de la jacobienne avec formule de quadrature
* field_nonlinear_expr : fin du recouvrement de l'interface des exprs ; restera a optimiser

12 juin 2012
-----------
* field_nonlinear_expr : en cours

2 juin 2012
-----------
* form avec poid en class-function: n'arrange pas p_laplacien, au contraire !
* p_laplacien: renove', avec eta(z) generique

31 mai 2012
------------
* form mass (vector-valued space): avec poid tensor4, pour newton bingham
* field_expr: correction de field*field quand scalar*vector

29 mai 2012
------------
* correction d'un bug dans form "grad" : detecte' dans mossolov_augmented_lagragian.cc

22 mai 2012
------------
* stokes P1b-P1 reduit + documentation (utilise csr*csr)

21 mai 2012
------------
* csr*csr : premiers tests concluants
* csr : sortie matlab creux

15 mai 2012
------------
* version 6.1
* portge icpc 12.0 & g++ 4.7
* test seq: make check
* backportage old-code: make check

13 mai 2012
------------
* Pk.cc code direct sans ginac, et pour tout k ; refonte de basis.h
* portage icpc : bug fix dans point.h (friend in template class unsupported)

9 mai 2012
------------
* 2Ds_Ds et div_s: tests et extension pour la methode ds fcts niveau sur bande
* portage g++-4.7

7 mai 2012
------------
* banded level set: tests ok sur helmholtz-sphere et laplace-torus

30 avril 2012
------------
* banded level set: assemblage des matrices mass et grad_grad via form_element
* banded level set: tests ok sur helmholtz np=1..3

28 avril 2012
------------
* eqn sur des surfaces: methodes avec maillage explicite

22 avril 2012
------------
* foehn : test avec np=100 procs !
* pbasis : separation, vers k arbitraire dynamiquement

12 avril 2012
------------
* portage intel c++-12.0 sur tetta
* back-portage --with-old-code : make check ok

10 avril 2012
------------
* doc : preface sur les changements
* version 6.0 : paquets debian + page ouebe + annonce mails

30 mars 2012
------------
* navier-stokes ok Re=1000 ; Re=3200 en train de tourner (instationnaire? test arret?)
* preparation de la distrib

29 mars 2012
------------
* adapt avec bamg (d=2) anisotrope
* navier-stokes : valide avec Re=100 & 400

27 mars 2012
------------
* embankment-adapt: d=1,2,3 avec gmsh isotrope !
* navier-stokes : tourne, en cours de test

25 mars 2012
------------
* convect : acceleration par memorisation des pts quad deplaces & leur localisation

22 mars 2012
------------
* convect : en P2 ou d'ordre 2 aussi !
* debut navier-stokes

18 mars 2012
------------
* convect : ok rotating hill en 2d avec mpi !

16 mars 2012
------------
* geo::locate(x), geo::trace_ray_boundary(x,v) & trace_move(x,v)
* field: value=uh(x)
* field: dis_dof_update() appelle' automatiquement
* reinterpolate(space,field) : entre differents maillages
* geo::trace_ray_boundary(x,v) & trace_move(x,v)

6 mars 2012
-----------
* branch: anim gnuplot & paraview

4 mars 2012
-----------
5 mars 2012
-----------
* contraction axi : stress.cc & field -cut (via python-vtk)

4 mars 2012
-----------
* contraction.cc + streamf-contraction.cc : cas axi + fct courant (ouf !!)

29 fev 2012
-----------
* contraction.cc & bubble.cc : cas plan, activite des recirculations

18 janv 2012
------------
* stokes-cavity : iteratif & direct + visu vecteurs sous mayavi

14 janv 2012
------------
* visu embankment : ok avec gnuplot(2d) et mayavi(3d)

2 janv 2012
-----------
* foehn: ok pour openmpi-1.4.1
* grad, inv_m -> p-laplacian-fixzed-point.cc

31 dec 2011
-----------
* openmpi-1.4.4: pb sur foehn avec array_set_tst.cc
* multi-field -> embankment.cc
* Pkd & weighted forms: -> transmission.cc

12 dec 2011
-----------
* vec & csr : avec std::initializer_list -> neumann-laplace.cc

9 dec 2011
-----------
* wrapper "solver" : direct ou iter en remplacement de pastix :
	- test gmres
	- trilinos avec MPI : precond ILU, IC 
	- mumps avec MPI
	- IC0 sans MPI, pour le seq pur

5 dec 2011
-----------
* portage boost-1.46 : modifs vec_expr.h pour boost::proto

2 dec 2011
-----------
* test sur la sphere(T) : P2 ok ; P3 & P4 pas optimaux...
* envoi mail sur la liste gmsh

23 nov 2011
-----------
* P3 & P4 isoparam ok sur le cercle pour t & q ! ouf !

15 nov 2011
-----------
* riesz insere dans les exemples
* pb avec les cercles : gmsh ou rheolef ? tjs pas trouve'...

10 nov 2011
-----------
* test cvge P3-isoparam-disto(t) ok
* pb avec les cercles : vient de gmsh ?

3 nov 2011
-----------
* test cvge P3 maillages mixtes carre

25 oct 2011
------------
* visu mayavi + validation 3d (T,H) sur robin en Pk

22 oct 2011
------------
* geo: nouvelle distrib hierarchique des subgeos: plus lent a initialiser
	mais moins de comms ensuite (space::xdofs, ect)
* interpolation Lagrange Pk : boucle par elements, sans comms

17 oct 2011
------------
* geo_mpi_io : ordre qque >= 1

10 oct 2011
------------
* make install && debut de la doc : pusrman
* geo_io_tst: tout ok, y compris mixtes : cube_TP PH & TPH
* array_of_idxset_scatter2_tst : test scatter & taille de msg=0 avec index_set=nul

30 sept 2011
------------
* geo_element (any order) avec alloc dyn et scratch_array<T> : p10 seq io : ok !

23 sept 2011
------------
* geo p9(T), p9(q), p2(H) msh2geo
* geo_element (any order) avec alloc dyn et scratch_array<T> : en cours

18 sept 2011
------------
* msh2geo jusqu'a l'ordre 10 a priori
	=> orientation majeure vers le haut degre' et distribue'
* geo p2 io : seq et mpi ok
* geo p9(t) io : seq ok, mpi en cours...
* geo p4(T) msh2geo en cours

10 sept 2011
------------
* geo p2 io : seq ok, mpi en cours...

5 sept 2011
-----------
* reprise : isoparam P2 avec msh2geo pour gmsh

5 mai 2011
------------
* P2 : dirichlet, neumann, robin : ok en P2 sur maillages mixtes "tq"
* P2 : dirichlet : ok en P2 sur maillage "P" mais neumann pas encore

26 avril 2011
------------
* P2 : dirichlet_nh, neumann_nh, robin : ok en P2 e,t,q,T,H
	avec cvce optimale L2,Linf,H1 sur des carres, cubes

20 avril 2011
------------
* P2 : dirichlet_nh, neumann, robin : ok en P2 e,t,T
* P2 : field_indirect re-ecrit

14 avril 2011
------------
* P2 : dirichlet ok sur e,t,q,H

11 avril 2011
------------
* P2 : suite avec interpolate_tst.cc pour e,t,q,T & H (pas encore P & mixtes tq, TPH)

8 avril 2011
----------
* P2 : debut avec field_tst.cc pour e,t,q,T

7 avril 2011
----------
* debut P2 : scatter multi-value, pour la connectivite des aretes & faces (ball)

21 mars 2011
----------
* space(P0) : ok
* space(P1) : ok sauf maillages mixtes tq ou TPH
* vec_expr: generation automatique des expression-templates
* pastix: version sequentielle pure : solver<T,sequential>

6 mars 2011
----------
* pastix: solver direct parallele, lu, ldlt, ilu(k)
* geo_io : correction d'un bug qui faisait bloquer quand np > nelt...
* portage g++ 4.5
* doc refman: retouches pour que ca passe

1 mars 2011
----------
* pexamples : tests des examples du chap 1 de la doc
* field_expr: std::math, compoe, dot(.,.), cstors...

24 fev 2011
----------
* field: iterator et indirect u[dom]
* field_expr : sans temporaires
* dirichlet_nh : ok

22 fev 2011
----------
* espace sur un domaine de bord
* interpolate & form sur un bord
* robin et neumann non-homogenes : ok 

7 fev 2011
----------
* dirichlet 3d : ok 
* neumann : ok avec c=a+b 
* polymorphic_scatter : premiers test ok

4 fev 2011
----------
* portage sur foehn : configure, etc : ok, ouf !
	-> boost::io pour lire les .geo.gz : evite le pipe/fork qui plante avec mpi et + efficace
* polymorphic_map : debut ; pour polymorphic_scatter
* dirichlet d=3 plante encore

27 janv 2011 saramito@imag.fr
------------
* dirichlet d=1,2,3 ! condition aux bords homogene
	re-numerotation des inconnues ok en distribue

24 janv 2011 saramito@imag.fr
------------
* domain : i/o distribues

16 janv 2011 saramito@imag.fr
------------
* interpolate pour P1

14 janv 2011 saramito@imag.fr
------------
* grad_grad scalaire ; test pour Neumann

13 janv 2011 saramito@imag.fr
------------
* blas 1 & 2 : pcg sur une matrice de masse... a verifier

12 janv 2011 saramito@imag.fr
------------
* correction d'un bug flottant : ajout d'un mpi:barrier() dans msg2_scatter_end

4 janv 2011 saramito@imag.fr
-----------
* space: numerotation ok pour l'assemblage P1 de "one" = matrice elem valant 1
* form : debut de l'assemblage

1 janv 2011 saramito@imag.fr
-----------
* geo: i/o ok avec polymorphic_array

31 dec 2010 saramito@imag.fr
-----------
* polymorphic_array: generique avec assembly() et partition()
* geo: utilise polymorphic_array

25 dec 2010 saramito@imag.fr
-----------
* heap_allocator : pour les std::map de asr<T> et polymorph_array<T,V>
* polymorphic_array : debut de generalisation a N variantes avec boost::prepro

23 dec 2010 saramito@imag.fr
-----------
* polymorphic_array : version a base de std::map et "x[i] = value"

22 dec 2010 saramito@imag.fr
-----------
* maillage avec un seul type d'element : e/s et partitionnement
* maquette pour plusieurs type : polymorph_array

6 dec 2010 saramito@imag.fr
-----------
* debut de passage en boost::mpi (plus elegant)
* debut de partition avec parskit et scotch

26 nov 2010 saramito@imag.fr
-----------
* reprise : mise a jour du code et integration dans rheolef

===========================================================================
debut de la Version parallele initiale 1999
===========================================================================
27 may 1999 saramito@imag.fr
-----------
* tests de non-regression en seq aussi
@ TODO: complete the blas !

20 may 1999 saramito@imag.fr
-----------
* regroupement en cours
@ TODO: finir le regroupement dans msg_scatter_end
	et faire la classe scatter.

18 may 1999 saramito@imag.fr
-----------
* regroupement en cours

17 may 1999 saramito@imag.fr
-----------
* tests de A*x
* regroupement du code scatter en algos template, en cours

12 may 1999 saramito@imag.fr
-----------
* problem with MPI in csr/scatter initialization:
	restart scatter from petsc-2.0.22 source...
* scatter init ok

29 march 1999 saramito@imag.fr
-------------
* a[234].mtx passe...sauf -np 3 a4.mtx

26 march 1999 saramito@imag.fr
-------------
* A*x: scatter initialises dans malloc_dbg, mais plante avec...
@ do_send: essayer de fusionner avec do_send_list
	en utilisant une classe pseudo-conteneur index(debut,fin,step) pour
	les processeurs. Cette classe servirait aussi a l'appel de 
	msg_compress

24 march 1999 saramito@imag.fr
-------------
* premier tests de l'init des gatter pour A*x:
	csr_io_tst boucle sur jgl009.mtx

23 march 1999 saramito@imag.fr
-------------
* regroupement de code pour assembly_(begin,end) et (array,asr)
	avec des classes-fonctions
* entree du code des gatter/scatter
@ reste: msg_send, msg_receive, puis A*x
@ reste: unifier les notations dans les algos msg_xxx.h
@ aussi: array<T,sequntial>, array<T,distributed>
	=> template-default-arg... a tester sur cray-CC

22 march 1999 saramito@imag.fr
-------------
* csr2asr_seq done
* start the asr2csr_dist conversion; remains i/o
* pb:
	 mpirun -np 2 ./asr_io_tst < ../../../rheolef/parskit/tst/asr_tst.mtx.valid
	 but works with: np -3 ...

	 mpirun -np 2 ./asr_io_tst  < ../../../rheolef/parskit/tst/a2.mtx
	 fails also and with -np 3

	c'est un pb avec les tableaux transferes par mpi qui sont de taille nulle.
	cf. le code de petsc vpscat.c/VecScatterCreate_PtoS
	OK:
	  le probleme etait dans asr::assembly_end
	  mais avait ete corrige dans array::assembly_end
	essayer de rendre la macro PRUDENCE=1 pour mpi plus propre...
	=> regrouper les assembly_end en msg_assembly_end
	   qui gerera PRUDENCE
	=> passer une batterie de matrices cerfacs en tests
	   et des -np = 2, 3

@ reste: les communications pour A*x
@ csr_dist: Aext serait mieux au format COO pour la place memoire
	et peut-etre que ca convient mieux aux produits A*B ?
@ csr seq: remplacer les iterateurs par des indices ?

10 february 1999 saramito@imag.fr
----------------
* debut de csr: asr2csr_seq; reste csr2asr_seq

9 february 1999 saramito@imag.fr
---------------
* le pb receive_nproc=0 est regle'
@ reste a` definir csr et asr2csr, puis: ldlt(a), a*x, a*b...

8 february 1999 saramito@imag.fr
---------------
* vec_exchange2_tst.c:
	- plante quand les tailles des tableaux sont nulles...
	  on les majore d'1 comme petsc
	- ensuite, envoie mais ne recoit pas: receive_nproc=0
	  alors que proc=0 doit recevoir ndata=5 de proc=1

2 february 1999 saramito@imag.fr
---------------
* asr: debut des e/s; probleme d'assemblage simple: asr_set_tst.c
	communicator ne devrait pas avoir besoin d'un compteur de ref...
	le pb vient de la S.D. de base de asr, sans les communications
	on pourrait faire un 
	  begin_sequential_macro
	  end_sequential_macro
	pour le debug...
* l'exemple asr_exchange2_tst localise le pb dans
	msg_do_send (algo-msg.h)

13 janv 1999 saramito@imag.fr
-----------
* asr: entree du code des messages (suite)
@ les e/s asr-hb et asr2csr suivent...

7 janv 1999 saramito@imag.fr
-----------
* array<T,sequential> : x.ownership() n'est pas defini...
  => ca peut poser des pbs de compilation + tard...
     faudrait definir distributor et communicator dans
     le cas parallele

@pb: copie physique via X::X(constX&) 
     durant un transfert, cad 
	apres X::add (idx, val)
	avant X::assembly()s
     que fait-on de la file d'attente ?
        1. la copier aussi
        2. refuser la copie, car ca n'est pas
	   tres logique...

5 janv 1999 saramito@imag.fr
-----------
* reprise et optimistion de l'assemblage des vecteurs
  librairie template
@ introduire array<T,M=distributed>, array<T,sequential>
  puis passer a` asr (e/s) et csr: asr2csr, csr2asr

16 dec 1998 saramito@imag.fr
-----------
* comptage de reference sur distributed_vector et distributor
  - l'echange des donnees ne marche pas...
* reste a` specifier asr et csr distribues
  de preference pour que on derive de 

     // partie interne
     xsr_basic_struct<T,M,C,A> {
     };
     xsr_basic_struct<T,seq,C,A> {
       vector<C<T,A>::iterator,A>   ia;
       C<T,A>                       a;
       + implementation; 
     }
     xsr_basic_rep<T,seq,C,A> 
     : occurrence, xsr_basic_struct<T,seq,C,A>
     
     xsr_basic<T,seq,C,A> {
     : Object<xsr_rep<T,seq,C,A>> {
       + duplication d'interface
     }
     xsr_basic_struct<T,dist,C,A> {
       xsr_basic_data<T,seq,C,A> Ad, Ae;
       distributor row_ow, col_ow;
       communicator exch;
       + implementation; 
     } 
     xsr_basic_rep<T,dist,C,A>
     : occurrence, xsr_basic_struct<T,seq,C,A>

     xsr_basic<T,dist,C,A> {
     : Object<xsr_rep<T,dist,C,A>> {
       + duplication d'interface
     }
     struct pseudo_pair { int first; }
     
     // partie utilisable
     csr<T,M,A> : xsr_basic<pair<int,T>,M,vector,A>
     asr<T,M,A> : xsr_basic<pair<int,T>,M,map,A>
     csr<void,M,A> : xsr_basic<pseudo_pair,M,vector,A>
     asr<void,M,A> : xsr_basic<pseudo_pair,M,map,A>

     => il y a 2 deux implementations : seq et dist
	et 2 duplication d'interface

14 dec 1998 saramito@imag.fr
-----------
* specification de 
  vec<T,M> avec M = sequential, distributed

25 nov 98 saramito@imag.fr
---------
* essai mpi entre sun hp et linux : calcul de PI ok
* algo inner_product ok : a` generaliser en par_reduce(i1,e1,i2,..,iN,f,binop)
* a` faire
   - la classe distributed_asr, les e/s
   - la classe distributed_csr, cstor(d_asr)

25 nov 98 saramito@imag.fr
---------
* reduction en template : essai de la methode avtl en cours
  sur les doubledouble : ok
  mais am_reduce_struct est passe' en MPI_BYTE, et en reseaux heterogenes
  les flottants ne sont pas les memes... faire un essai entre HP sun et Linux...

24 novembre 1998 saramito@imag.fr
----------------
* unsigned int pour les tailles
* integration dans rheolef
* reste 
   - dot(x,y) en long double : recuperer les valeurs
      sur le proc 0 et faire la somme (cf x.put pour recuperer)
      => generalse en par_reduce ou par_scan avec binop et op
         et plusieurs args
   - comptage de reference sur les vecteurs
   - commencer les matrices creuses
   - a*x a.trans_mult(x) necessite des scatters
	a` introduire progressivement
  ensuite :
   - a+b a*b
   - ldlt : avec partition de domaine (parmetis)
   - libmpi.a en dld

23 novembre 1998 saramito@imag.fr
----------------
* il y a une autre implementation de MPI pour les reseaux locaux (LAN) :
	http://www.itl.nist.gov/div895/sasg/parallel/index.html#software
* automap n'est pas domaine public
  par contre on peut scaner le source du rapport inria
  autolink est grato, et utilise automap
* chargement et construction de vecteurs <doubledouble>
* PETSc : 
	n'a pas la facto super_lu parallele
	ni A+B, ni A*B csr parallele
	reste: A*x, A^T*x, A^T a` repiquer...

   scatter : 5000 lignes de code...
	scatter sc( vec<T>, I,  vec<T>, J)
	scatter sc( vec<T>, I, dvec<T>, J)
	scatter sc(dvec<T>, I,  vec<T>, J)
	scatter sc(dvec<T>, I, dvec<T>, J)
    avec I, J = vec<int>, index_set, ...
     4*2*2 = 16 possibilites
    faut-il les pre-compiler ?

20 nov 1998 saramito@imag.fr
-----------
* ok pour les entrees de vecteurs
    + voir pour des types T differents et alloues dyn : MPI_DOUBLE_INT
       et dans petsc avec des complexes non-std
       et http://www.nist.gov/itl/div895/auto/ : pour une def automatique
* probleme avec les unsigned int
* mpi sur sun compile
* classe iparstream pour les types simples

19 nov 1998 saramito@imag.fr
-----------
* alloc dyn ok sur hpux, linux
* utilise vec<T> pour le sequentiel, en classe de base
* test de non regression ok sur linux et hp avec malloc_dbg
* debut de x(cin) lecture sur std d'entree
  - faudrait un x.resize(glob_sz);
  + compiler mpi sur sun et tester aussi

18 nov 1998 saramito@imag.fr
-----------
* version initiale des vecteurs distribues
  reste
  + verifier l'alloc dyn : il y a 1 pb la fin
  + utiliser vec<T> pour le seq
  + mettre des "unsigned int" dans l'interface
  - stash.array : essayer d'en faire 2 tableaux ?
    et de communiquer en 2 fois : T et int
  - se raprocher des specs PSTL

version 1.8, Mon Feb 22 19:10:49 WET 1999  saramito@pleco

    integration des espaces definis sur un domaine de bord de Nicolas
    et des modifs du post-traitement

===========================================================================
debut de la Version equentielle initiale 1999-2005
===========================================================================
12 july 2005
* preparation for debian package
* support for vtk (>= 4.2)
* support for g++-3.4 finalized
* support for automake >= 1.7
* IMPORTANT : SONAME of shared library has changed

15 february 2002
* support for qmg mesh generator (2d, 3d)...pending
* quadruple precision (come back, was broken)

22 january 2002
* support for doxygen documentation
* fix configure default prefix

5 november 2001
* add others axisymetric forms from Jocelyn.Etienne@imag.fr
* merges examples in the example directory

30 may 2001
* define some axisymetric "mass" forms
* move .c into .cc for c++ libtool-1.4a support

27 april 2001
* quadrilaterals: visu and geo/bamg/cemagref conversions
* branch (t,uh(t))

3 mars 2001
* 2d anisotropic mesh auto-adaptation support
* grummp mesh file conversion and multi-regions (2 & 3d)
* bug fixes: forms div-vp2-p1 (3d) and mass-p1d-p1 (d=1,2,3)

12 february 2001
* stokes 3d and vector visualization (plotmtv,vtk)
* bug fix for vector-valued fields; add clean indexed support

30 january 2001
* support for spooles version 2.2
* configuration fixes on linuxes for shared libraries.

9 november 2000
* P2 is ready now for 3D problems

15 october 2000
* portage on solaris2.7 : shared library problem solved
* cleaner automake environment
* robin boundary conditions for P1 and P2 work well now
* support general trace forms on boundary (trace class is obsolete)
* field interpolation on boundary spaces

25 january 2000
* arbitrary precision float class support (configure --with-cln)
* user's manual started

3 june 1999
* cleaner documentation in dvi, postcript and html using texinfo

31 may 1999
* port MPI-based linear algebra (configure --with-mpi) on IBM SP2 

----------------------------------------------------------------

Thu Jan 28 18:10:10 WET 1999  saramito@pleco

    passage avec automake pour portage sur cray C94 et T3E

Fri Jan 29 15:38:17 WET 1999  saramito@pleco

    version initiale - portage cray en cours

Sun Jan 31 18:13:34 WET 1999  saramito@pleco

    mise au point de make status avec prcs 1.2.9

----------------------------------------------------------------

version 1.3, Sun Jan 31 19:22:46 WET 1999  saramito@pleco

    mises au point de prcs

version 1.4, Sun Jan 31 20:31:46 WET 1999  saramito@pleco

    portage reussi sur T3E, exepte pour skit/tst/hb_tst : pores.hb

version 1.5, Sun Jan 31 21:33:30 WET 1999  saramito@pleco

    fusion avec la version T3E: uniquement des fichiers generes automatiquement, qu'on pourrait eviter

version 1.6, Tue Feb  2 18:05:45 WET 1999  saramito@pleco

    reduction de form_xxx_manip pour essayer g++ -O

version 1.7, Tue Feb  9 21:09:21 WET 1999  saramito@pleco

    matvec distribues: e/s des matrices en progres

version 1.9, Wed Mar 10 18:09:52 CET 1999  saramito@tilapia.imag.fr

    portage sous linux

version 1.10, Mon Mar 15 14:14:33 WET 1999  saramito@pleco

    ajout de poiseuille2d 

version 2.0, Tue Mar 16 17:29:12 WET 1999  saramito@pleco

    tests de non-regression skit/tst sans octave pour le cray

version 2.1, Tue Mar 16 16:41:24 CET 1999  roquet@tilapia.imag.fr

    glissement P1 + Robin dans fem

version 2.2, Mon Mar 29 20:36:20 WETDST 1999  saramito@pleco

    produit A*x distribue : construction des communications en cours

version 2.3, Tue Mar 30 19:12:48 WETDST 1999  saramito@pleco

    modifs venant du CRAY T3E

version 2.4, Mon Mar 29 20:46:33 WETDST 1999  saramito@pleco

    produit A*x : deuxieme sauvegarde


version 2.5, Tue Mar 30 19:40:36 WETDST 1999  saramito@pleco

    A*x :[2~distribue : toujours en cours

version 2.6, Tue Mar 30 20:01:16 WETDST 1999  saramito@pleco

    re-sauvegarde des produits matrice-vecteur distribue

version 2.7, Tue Mar 30 20:05:12 WETDST 1999  saramito@pleco

    resauvegarde des produits A*x distribues

version 2.8, Tue Mar 30 21:35:36 WETDST 1999  saramito@pleco

    mise au point de la sauvegarde
    
version 2.9, Tue Mar 30 21:54:56 WETDST 1999  saramito@pleco

    mise au point de la sauvegarde

version 2.10, Tue Mar 30 21:54:56 WETDST 1999  saramito@pleco

    mise au point de la sauvegarde

version 2.11, Thu Apr  1 18:17:04 CEST 1999  saramito@tilapia.imag.fr

    debut de portage sur IBM SP2

version 2.11, Thu Apr 22 17:39:52 CEST 1999  saramito@tilapia.imag.fr

    portage sur IBM SP2

version 2.12, Wed May 12 13:21:44 CEST 1999  saramito@tilapia.imag.fr

    portage des communication lors des initialisations de la classe CSR parallele

version 2.13, Tue Jun  1 19:45:14 CEST 1999  saramito@tilapia.imag.fr

    produit A*x distribue 
    portage sp2 : passage des unsigned int en size_type un peu partout

version 2.14, Tue Jun  1 19:06:29 WETDST 1999  saramito@pleco

    fichier COPYING + fusion 

version 2.15, Thu Jun  3 19:55:10 CEST 1999  saramito@tilapia.imag.fr

    generation de la doc en texinfo + bamg2geo

version 2.16, Thu Jun 24 17:48:31 WETDST 1999  saramito@pleco

    doc automatique en texi (a poursuivre)
    scrip adaptation pour dirichlet
    directory demo pour introduction de la doc

version 2.17, Fri Oct 29 14:00:20 WET 1999  saramito@pleco

    generation de la doc texi et html

version 2.18, Sun Jan 23 04:35:38 CET 2000  pierre@salsa

    portage sur pentium3 linux redhat 6.0
    meilleure generation des docs (txt,dvi,ps,info,html)
    et retour des manuels unix

version 2.19, Tue Jan 25 03:10:58 CET 2000  pierre@salsa

    mise au point de la doc automatique avec les makefiles; portage

version 2.20, Mon Jan 31 11:59:41 CET 2000  pierre@salsa

    bigfloat pour la precision arbitraire
    usrman, refman et todo : les docs sont en 3 parties

version 2.21, Wed Feb  2 10:53:20 CET 2000  pierre@salsa

    mise au point de la doc utilisateur html

version 2.22, Fri Feb  4 13:31:28 MET 2000  saramito@eve

    remplacement de gibbs par RCM dans skit; tests de portage (sun,etc..) en cours...

version 1.0, Fri Feb  4 19:21:34 MET 2000  roquet@eve

    premiere fusion en cours de test...

version 2.3, Fri Feb  4 19:42:52 MET 2000  roquet@eve

    premiere fusion; tests en cours...

version 2.3, Fri Feb  4 19:44:38 MET 2000  roquet@eve

    premiere fusion; tests en cours....

version 2.3, Fri Feb  4 19:48:41 MET 2000  roquet@eve

    premiere fusion; tests en cours....

version 2.3, Fri Feb  4 19:51:47 MET 2000  roquet@eve

    premiere fusion; tests en cours....

version 2.3, Fri Feb  4 20:06:03 MET 2000  roquet@eve

    premiere fusion; tests en cours....

version 2.24, Mon Feb  7 18:08:01 MET 2000  roquet@eve

    ajout des fichiers de validation dans slip_section

version 2.24, Mon Feb  7 20:33:05 MET 2000  saramito@eve

    recherche du bug Robin-P2 en cours...

version 2.26, Wed Feb  9 13:51:36 MET 2000  saramito@eve

    tests de la matrice de masse (form_mass_tst): bug de robin-P2 cours toujous...

version 1.0, Wed Feb  9 17:19:08 MET 2000  saramito@eve

    generation automatique des bases nodales a partir
    des bases polynomiales et des coordonnees des 
    sommets via macsyma pour P2, P1. reste P0, P1d.
    Le bug robin-P2 cours toujours...

