[freefempp] 02/03: Imported Upstream version 3.32.1

Dimitrios Eftaxiopoulos eftaxiop-guest at moszumanska.debian.org
Sun Dec 28 22:30:36 UTC 2014


This is an automated email from the git hooks/post-receive script.

eftaxiop-guest pushed a commit to branch master
in repository freefempp.

commit 19a7cf2b5ac4cb63c1e04793b58514382d34603e
Author: Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr>
Date:   Mon Dec 29 00:14:38 2014 +0200

    Imported Upstream version 3.32.1
---
 DOC/._freefem++doc.pdf                             | Bin 0 -> 177 bytes
 DOC/Makefile.in                                    |  60 +++-
 DOC/freefem++doc.pdf                               | Bin 9573635 -> 9576121 bytes
 HISTORY                                            | 210 ++++++++++++-
 INNOVATION                                         |  15 +-
 Makefile.in                                        |  86 ++++--
 aclocal.m4                                         | 318 +++++++++++++------
 config.h.in                                        |   3 -
 configure                                          | 337 ++++++++++++---------
 configure.ac                                       |  10 +-
 download/Makefile.in                               |  73 +++--
 download/arpack/Makefile.am                        |   5 +-
 download/arpack/Makefile.in                        |  65 ++--
 download/arpack/veclib_zdotc.f                     |  36 +++
 download/blas/Makefile.am                          |   3 +
 download/blas/Makefile.in                          |  69 +++--
 download/fftw/Makefile.in                          |  60 +++-
 download/getall                                    |  13 +-
 download/gmm/cxxflags                              |   6 +-
 download/metis/Makefile                            |   2 +-
 download/umfpack/Makefile.am                       |   2 +-
 download/umfpack/Makefile.in                       |  62 ++--
 examples++-3d/Lac.edp                              |   2 +-
 examples++-3d/Makefile.in                          |  62 ++--
 examples++-3d/TruncLac.edp                         |   2 +-
 examples++-bug/Makefile.in                         |  60 +++-
 .../._NSprojection-Opt.edp                         | Bin
 examples++-chapt3/Makefile.in                      |  62 ++--
 examples++-chapt3/NSprojection-Opt.edp             | 148 +++++++++
 examples++-chapt3/NSprojection.edp                 | 109 +++----
 .../._LapEigenValue.edp                            | Bin
 examples++-eigen/LapEigenValue.edp                 |   2 +-
 examples++-eigen/LapnosymEigenValue.edp            |   2 +-
 examples++-eigen/Makefile.am                       |   2 +-
 examples++-eigen/Makefile.in                       |  71 +++--
 examples++-eigen/Stokes-eigen.edp                  |   2 +-
 examples++-eigen/all.edp                           |  16 +
 examples++-eigen/testeigen.edp                     |  25 --
 .../._Element_PkEdge.cpp                           | Bin
 .../._ffrandom.edp                                 | Bin
 .../._AFunction.hpp => examples++-load/._iovtk.cpp | Bin
 .../._testFE-PkEdge.edp                            | Bin
 examples++-load/Element_PkEdge.cpp                 |  38 ++-
 examples++-load/MUMPS.cpp                          | 314 +++++++++++++++++++
 examples++-load/Makefile.am                        |  11 +-
 examples++-load/Makefile.in                        |  72 +++--
 examples++-load/PARDISO.cpp                        |  13 +-
 examples++-load/ff-Ipopt.cpp                       |   6 +
 examples++-load/ffrandom.edp                       |   8 +-
 examples++-load/gmsh.cpp                           |  55 ++--
 examples++-load/iovtk.cpp                          |  86 ++++--
 examples++-load/load.link.in                       |  16 +
 examples++-load/msh3.cpp                           |   9 +-
 examples++-load/testFE-PkEdge.edp                  |  23 +-
 .../._lgfem.hpp => examples++-mpi/._MUMPS.cpp      | Bin
 examples++-mpi/MUMPS.cpp                           |   1 +
 examples++-mpi/Makefile.am                         |   4 +-
 examples++-mpi/Makefile.in                         |  66 ++--
 examples++-mpi/parms_FreeFem.cpp                   |   2 +-
 examples++-other/Makefile.in                       |  62 ++--
 .../._NSUzawaCahouetChabart.edp                    | Bin
 .../._cavityNewtow.edp                             | Bin
 .../._schwarz-no-overlap.edp                       | Bin
 examples++-tutorial/Makefile.in                    |  63 ++--
 examples++-tutorial/NSUzawaCahouetChabart.edp      |   8 +-
 examples++-tutorial/array.edp                      |   7 +-
 examples++-tutorial/calculus.edp                   |   2 +
 examples++-tutorial/cavityNewtow.edp               |   8 +-
 examples++/Makefile.in                             |  62 ++--
 src/Algo/Makefile.in                               |  60 +++-
 src/Graphics/Makefile.in                           |  60 +++-
 src/Graphics/ffglut.cpp                            |   2 +-
 src/Makefile.in                                    |  73 +++--
 src/bamg/Makefile.in                               |  62 +++-
 src/bamglib/Makefile.in                            |  60 +++-
 src/bin-win32/Makefile.in                          |  60 +++-
 src/bin-win32/launchff++.cpp                       |  15 +-
 .../._AFunction.hpp => femlib/._Drawing.cpp}       | Bin
 src/{fflib/._environment.cpp => femlib/._RNM.hpp}  | Bin
 src/{fflib/._array_tlp.hpp => femlib/._RNM_op.hpp} | Bin
 src/femlib/CheckPtr.cpp                            |   4 +-
 src/femlib/Drawing.cpp                             |   2 +-
 src/femlib/Makefile.in                             |  60 +++-
 src/femlib/RNM.hpp                                 |  55 +++-
 src/femlib/RNM_op.hpp                              |  11 +-
 src/fflib/._lex.cpp                                | Bin 170 -> 0 bytes
 src/fflib/._lgfem.cpp                              | Bin 170 -> 0 bytes
 src/fflib/AFunction.hpp                            |   3 +-
 src/fflib/Makefile.in                              |  65 ++--
 src/fflib/Operator.hpp                             |   8 +-
 src/fflib/array_tlp.hpp                            |  21 +-
 src/fflib/environment.cpp                          |  11 +-
 src/fflib/ffapi.cpp                                |  19 +-
 src/fflib/lgfem.cpp                                |  38 ++-
 src/fflib/lgfem.hpp                                |  10 +-
 src/fflib/load.cpp                                 |   6 +
 src/fflib/problem.hpp                              |  12 +-
 src/fflib/strversionnumber.cpp                     |   4 +-
 src/lglib/Makefile.in                              |  61 +++-
 src/lglib/lg.tab.cpp                               |   5 +-
 src/libMesh/Makefile.in                            |  65 ++--
 src/medit/Makefile.in                              |  65 ++--
 src/mpi/Makefile.in                                |  61 +++-
 src/nw/Makefile.in                                 |  63 +++-
 test-driver                                        |  20 +-
 105 files changed, 2972 insertions(+), 1025 deletions(-)

diff --git a/DOC/._freefem++doc.pdf b/DOC/._freefem++doc.pdf
new file mode 100644
index 0000000..8911007
Binary files /dev/null and b/DOC/._freefem++doc.pdf differ
diff --git a/DOC/Makefile.in b/DOC/Makefile.in
index 50710a4..b6e208d 100644
--- a/DOC/Makefile.in
+++ b/DOC/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -37,23 +37,51 @@
 # headeralh default=0 freefem make multipleauthors start=13/05/04 upmc
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
diff --git a/DOC/freefem++doc.pdf b/DOC/freefem++doc.pdf
index eee15c7..54b592b 100644
Binary files a/DOC/freefem++doc.pdf and b/DOC/freefem++doc.pdf differ
diff --git a/HISTORY b/HISTORY
index 28d83fa..40ef2b1 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,6 +1,209 @@
-@  changeset:   3051:d267356f183c
+@  changeset:   3091:0a4c31444a80
 |  tag:         tip
 |  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Nov 04 10:58:24 2014 +0100
+|  summary:     correct    md5 code of OpenBlas.tar.gz
+|
+o  changeset:   3090:5da39542e29b
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Nov 03 21:46:43 2014 +0100
+|  summary:     Added tag 3.28 for changeset af4fbbef4ecd
+|
+o  changeset:   3089:02abe57a6937
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Nov 03 21:46:28 2014 +0100
+|  summary:     Added tag 3.27 for changeset 4c7506b5ac6c
+|
+o  changeset:   3088:641a8e0bee7c
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Nov 03 21:44:16 2014 +0100
+|  summary:     Added tag 3.29 for changeset d7efc421b561
+|
+o  changeset:   3087:acd6c3b0c193
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Nov 03 21:42:37 2014 +0100
+|  summary:     Added tag 3.32 for changeset d324bac28890
+|
+o  changeset:   3086:edda4017be2b
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Nov 03 21:40:19 2014 +0100
+|  summary:     Added tag 3.31-2 for changeset a7eb0c2116df
+|
+o  changeset:   3085:94b8a1970489
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Nov 03 21:39:58 2014 +0100
+|  summary:     Added tag 3.31-3 for changeset 4e164226411d
+|
+o  changeset:   3084:248ae9751459
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Thu Oct 30 08:43:56 2014 +0100
+|  summary:     thanck to V. Huber  to take care of the verbosity level.
+|
+o  changeset:   3083:4ad6b556e1cb
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Wed Oct 29 19:10:00 2014 +0100
+|  summary:     passversion  to 3.32-1
+|
+o  changeset:   3082:2047e74a7fd2
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Wed Oct 29 19:05:50 2014 +0100
+|  summary:     a compuation of dx,dy in Element_PkEdge
+|
+o  changeset:   3081:39d9338aa60a
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Wed Oct 29 17:10:40 2014 +0100
+|  summary:     coorect plugin
+|
+o  changeset:   3080:ab0bad526b7a
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Wed Oct 22 11:47:55 2014 +0200
+|  summary:     rebuild AutoGeneratedFile.tar.gz
+|
+o  changeset:   3079:adf7ec4e0148
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Wed Oct 22 11:47:16 2014 +0200
+|  summary:     add correction of P. Jolivet.
+|
+o  changeset:   3078:d29757759e08
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Oct 20 21:30:08 2014 +0200
+|  summary:     add correct launchff++ add ++d parameter for debuggin
+|
+o  changeset:   3077:df774c8536bf
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Fri Oct 17 10:54:18 2014 +0200
+|  summary:     update INNOVATION
+|
+o  changeset:   3076:9ad9343d75d5
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Fri Oct 17 10:53:01 2014 +0200
+|  summary:     correct big big in memory manageemnt of sparse matrix Matrice_Creuse
+|
+o  changeset:   3075:7e28b3a59725
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Thu Oct 16 22:42:59 2014 +0200
+|  summary:     correct pb of factorisation
+|
+o  changeset:   3074:a216bad8d511
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Thu Oct 16 22:39:31 2014 +0200
+|  summary:     correct type add remove file
+|
+o  changeset:   3073:89d2902eadca
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Thu Oct 16 22:36:24 2014 +0200
+|  summary:     correct typo and remove test ..
+|
+o  changeset:   3072:d4af5fcecb25
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Thu Oct 16 18:30:25 2014 +0200
+|  summary:     add check \ escape on string  "\z" -> z "\\" -> \ "\"" -> "
+|
+o  changeset:   3071:d324bac28890
+|  tag:         3.32
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Thu Oct 16 16:33:01 2014 +0200
+|  summary:     coorect size on arrow  in plot ..
+|
+o  changeset:   3070:50157156eec4
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Wed Oct 01 16:14:50 2014 +0200
+|  summary:     correct PARDISO / omp interface un uv100
+|
+o  changeset:   3069:828f65161d32
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 17:23:35 2014 +0200
+|  summary:     coorect type in parms interface
+|
+o  changeset:   3068:8d8432eea0df
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 17:01:19 2014 +0200
+|  summary:     rebuild  AutoGeneratedFile.tar.gz
+|
+o  changeset:   3067:0bffd0452ab7
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 16:58:05 2014 +0200
+|  summary:     add MUMPS plugin as MUMPS_seq plug without mpi
+|
+o  changeset:   3066:defe4e954307
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 16:50:45 2014 +0200
+|  summary:     update getall for davis web site change
+|
+o  changeset:   3065:15f28ab62c85
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 16:00:57 2014 +0200
+|  summary:     update getall ofr change SuiteSparse change web site.
+|
+o  changeset:   3064:ec7869984007
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 15:16:41 2014 +0200
+|  summary:     rebuild AutoGeneratedFile.tar.gz
+|
+o  changeset:   3063:3086bae92306
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 15:15:30 2014 +0200
+|  summary:     correct environment.cpp and Makefile.am to find and put plugin for mpi
+|
+o  changeset:   3062:1dfbc3cec7ed
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 13:57:17 2014 +0200
+|  summary:     clean return value of /clean_all_installed_ffpp.sh for mac installer
+|
+o  changeset:   3061:5f22bdd00e0e
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 13:51:01 2014 +0200
+|  summary:     add missing chaneg
+|
+o  changeset:   3060:3e57363e9da8
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 13:49:36 2014 +0200
+|  summary:     next step  for mpi plugin
+|
+o  changeset:   3059:8a87f28ed7f5
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Sep 16 11:22:47 2014 +0200
+|  summary:     correct MUMPS plugin  complex version
+|
+o  changeset:   3058:2d9d48374ec8
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Sep 01 14:48:27 2014 +0200
+|  summary:     add vectoral operator line v/a (resp.  a/v-  == v_i/a (resp. a/v_i)
+|
+o  changeset:   3057:e471d8a2ae32
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Aug 26 11:45:47 2014 +0200
+|  summary:     missing file in distribution.
+|
+o  changeset:   3056:d9e53bbab3af
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Aug 25 17:23:15 2014 +0200
+|  summary:     crrect pb in chech un window
+|
+o  changeset:   3055:f302c03c8ae7
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Mon Aug 25 16:36:06 2014 +0200
+|  summary:     coorect a bug in buildlayer in case of 0  edge on border...
+|
+o  changeset:   3054:d23ac6140622
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Sat Aug 23 08:08:30 2014 +0200
+|  summary:     pass to ersion 3.31-3
+|
+o  changeset:   3053:4e164226411d
+|  tag:         3.31-3
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Tue Aug 12 23:19:52 2014 +0200
+|  summary:     coorect of array size in plot
+|
+o  changeset:   3052:a7eb0c2116df
+|  tag:         3.31-2
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
+|  date:        Fri Jul 11 21:17:26 2014 +0200
+|  summary:     correct iter in stop function in CG
+|
+o  changeset:   3051:d267356f183c
+|  user:        Frederic Hecht <frederic.hecht at upmc.fr>
 |  date:        Fri Jul 11 14:57:05 2014 +0200
 |  summary:     add script for installation
 |
@@ -390,6 +593,7 @@ o  changeset:   2974:9b8b469c4f18
 |  summary:     update INNIVATION
 |
 o  changeset:   2973:d7efc421b561
+|  tag:         3.29
 |  user:        Frederic Hecht <frederic.hecht at upmc.fr>
 |  date:        Thu Mar 06 17:01:11 2014 +0100
 |  summary:     rebuild AutoGeneratedFile.tar.gz
@@ -535,6 +739,7 @@ o  changeset:   2945:6f9c41b5a9b1
 |  summary:     coorecct readme
 |
 o  changeset:   2944:af4fbbef4ecd
+|  tag:         3.28
 |  parent:      2937:4c7506b5ac6c
 |  user:        Frederic Hecht <frederic.hecht at upmc.fr>
 |  date:        Thu Feb 06 22:30:35 2014 +0100
@@ -578,7 +783,8 @@ o  changeset:   2944:af4fbbef4ecd
 | |  summary:     partial commit on DebianTesting64 (odyssee)
 | |
 o |    changeset:   2937:4c7506b5ac6c
-|\ \   parent:      2936:37691b670f5a
+|\ \   tag:         3.27
+| | |  parent:      2936:37691b670f5a
 | | |  parent:      2885:d58dea64f3a0
 | | |  user:        Antoine Le Hyaric
 | | |  date:        Thu Feb 06 14:41:59 2014 +0100
diff --git a/INNOVATION b/INNOVATION
index f75d9c2..3c1e784 100644
--- a/INNOVATION
+++ b/INNOVATION
@@ -1,8 +1,19 @@
+ - correct big bug in memory gestion of sparse matrix
+ version 3.32 
+ - correct of problem of plugin and mpi,
+    build all dynamics lib with and without mpi, 
+    the mpi version is install  dir lib/mpi 
+ - correct of plugin MUMPS.cpp for complex value. 
+ - add vectorial operator a/v  and v/a where a est scalar and v vector like real[int], ...   
+ version 3.31-3 (rev 3053:4e164226411d 12 Aug 2014) 
+ - correct the problem of size of arrow in 2d plot 
+  version  3.31-2 (rev 3052, 11 july 2014) 
+ - correct stop test function in LinearGC (for zuqi.tang at inria.fr)
   build tar.gz distribution (rev 3050) 
   build version MacOs 3.31-1
-- correct bug put in DG formulation (rev 3044)
+ - correct bug put in DG formulation (rev 3044)
    jump, mean , was wrong from Sun Jun 29 22:39:20 2014 +0200 rev 3028
-version  3.31-1 (rev 3042, 10 juky 2014) 
+  version  3.31-1 (rev 3042, 10 july 2014) 
  - function to put your stop test in LinearGC and NLGC
    the prototype is 
     func  bool stop(int iter,real[int] u,real[int] g)	;
diff --git a/Makefile.in b/Makefile.in
index 9dd9b1a..630e39c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -22,23 +22,51 @@
 
 # $Id$
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -503,8 +531,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-	@if test ! -f $@; then rm -f stamp-h1; else :; fi
-	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
@@ -524,13 +552,12 @@ distclean-hdr:
 #     (which will cause the Makefiles to be regenerated when you run 'make');
 # (2) otherwise, pass the desired values on the 'make' command line.
 $(am__recursive_targets):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
@@ -705,10 +732,16 @@ dist-xz: distdir
 	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__post_remove_distdir)
 
 dist-shar: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
 	$(am__post_remove_distdir)
 dist-zip: distdir
@@ -749,9 +782,10 @@ distcheck: dist
 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	  && ../configure \
 	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=.. --prefix="$$dc_install_base" \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
 	  && $(MAKE) $(AM_MAKEFLAGS) check \
diff --git a/aclocal.m4 b/aclocal.m4
index 251ba62..bf97380 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.13.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.13'
+[am__api_version='1.14'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.13.1], [],
+m4_if([$1], [1.14.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.1])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -373,7 +373,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
@@ -418,6 +418,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -526,7 +532,48 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
@@ -534,7 +581,6 @@ dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -700,38 +746,6 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
-          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
-
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
@@ -802,6 +816,70 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
@@ -1011,76 +1089,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # Substitute a variable $(am__untar) that extract such
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
+#
 AC_DEFUN([_AM_PROG_TAR],
 [# Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
-     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of '-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
 
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
 
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
   rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
 
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
 AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
diff --git a/config.h.in b/config.h.in
index 6620b2f..d3a3160 100644
--- a/config.h.in
+++ b/config.h.in
@@ -161,9 +161,6 @@
 /* Define to 1 if you have the <vecLib/cblas.h> header file. */
 #undef HAVE_VECLIB_CBLAS_H
 
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
 /* Name of package */
 #undef PACKAGE
 
diff --git a/configure b/configure
index dacd128..c58084b 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for FreeFem++ 3.31-2.
+# Generated by GNU Autoconf 2.69 for FreeFem++ 3.32-1.
 #
 # Report bugs to <hecht at ann.jussieu.fr>.
 #
@@ -580,8 +580,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='FreeFem++'
 PACKAGE_TARNAME='freefem++'
-PACKAGE_VERSION='3.31-2'
-PACKAGE_STRING='FreeFem++ 3.31-2'
+PACKAGE_VERSION='3.32-1'
+PACKAGE_STRING='FreeFem++ 3.32-1'
 PACKAGE_BUGREPORT='hecht at ann.jussieu.fr'
 PACKAGE_URL=''
 
@@ -1551,7 +1551,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures FreeFem++ 3.31-2 to adapt to many kinds of systems.
+\`configure' configures FreeFem++ 3.32-1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1621,7 +1621,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of FreeFem++ 3.31-2:";;
+     short | recursive ) echo "Configuration of FreeFem++ 3.32-1:";;
    esac
   cat <<\_ACEOF
 
@@ -1884,7 +1884,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-FreeFem++ configure 3.31-2
+FreeFem++ configure 3.32-1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2738,7 +2738,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by FreeFem++ $as_me 3.31-2, which was
+It was created by FreeFem++ $as_me 3.32-1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3087,6 +3087,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+# progg test  expact under windows
+ff_TEST_FFPP="../src/nw/FreeFem++"
 
 
 # Automake 1.11 is too old for check ...
@@ -3094,7 +3096,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # ALH - 10/9/13 - FFCS needs to skip this automake version requirement when compiling on older platforms (eg cygwin or
 # last Ubuntu LTS). So we fix a low hardcoded requirement and test for higher versions when not in FFCS.
 
-am__api_version='1.13'
+am__api_version='1.14'
 
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -3609,7 +3611,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='freefem++'
- VERSION='3.31-2'
+ VERSION='3.32-1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3649,6 +3651,10 @@ mkdir_p='$(MKDIR_P)'
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
 
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
@@ -3656,6 +3662,48 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
 if test "$enable_ffcs" != yes
 then
     if test `echo $am__api_version|awk '{if($1>1.13)print "ok";}'` != ok
@@ -4614,6 +4662,65 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
@@ -5389,7 +5496,6 @@ fi
 ff_AR="ar"
 ff_ARFLAGS="rv"
 ff_RANLIB="ranlib"
-
 # Check whether --enable-fortran was given.
 if test "${enable_fortran+set}" = set; then :
   enableval=$enable_fortran;
@@ -7396,6 +7502,73 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef F77_DUMMY_MAIN
+
+#  ifdef __cplusplus
+     extern "C"
+#  endif
+   int F77_DUMMY_MAIN() { return 1; }
+
+#endif
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
 depcc="$CC"   am_compiler_list=
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
@@ -7524,139 +7697,6 @@ else
 fi
 
 
-    if test "x$CC" != xcc; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
-$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
-$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
-fi
-set dummy $CC; ac_cc=`$as_echo "$2" |
-		      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef F77_DUMMY_MAIN
-
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int F77_DUMMY_MAIN() { return 1; }
-
-#endif
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-# Make sure it works both with $CC and with simple cc.
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-rm -f conftest2.*
-if { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } &&
-   test -f conftest2.$ac_objext && { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; };
-then
-  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
-  if test "x$CC" != xcc; then
-    # Test first that cc exists at all.
-    if { ac_try='cc -c conftest.$ac_ext >&5'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-      rm -f conftest2.*
-      if { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } &&
-	 test -f conftest2.$ac_objext && { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; };
-      then
-	# cc works too.
-	:
-      else
-	# cc exists but doesn't like -o.
-	eval ac_cv_prog_cc_${ac_cc}_c_o=no
-      fi
-    fi
-  fi
-else
-  eval ac_cv_prog_cc_${ac_cc}_c_o=no
-fi
-rm -f core conftest*
-
-fi
-if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
-
-fi
-
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-
 
 else
 
@@ -8211,6 +8251,7 @@ fi
 
                 WIN32DLLTARGET=win32-dll-target
 
+		ff_TEST_FFPP="../src/bin-win32/FreeFem++.exe"
 
 $as_echo "#define PURE_WIN32 1" >>confdefs.h
 
@@ -16937,7 +16978,7 @@ fi
     else
         TOOL_COMPILE_mumps_seq=mumps-seq
 
-        TOOL_DYLIB_mumps_seq=MUMPS_seq.$DYLIB_SUFFIX
+        TOOL_DYLIB_mumps_seq="MUMPS_seq.$DYLIB_SUFFIX MUMPS.$DYLIB_SUFFIX"
 
 	enable_mumps_seq_download=yes
     fi
@@ -17681,7 +17722,7 @@ STDPROG=$ff_stdprog
 
 ff_progs="FreeFem++-nw $ff_bamgprog  $ff_mpiprog $ff_meditprog $ff_ffglutprog"
 
-TEST_FFPP="../src/nw/FreeFem++"
+TEST_FFPP=$ff_TEST_FFPP
 
 TEST_FFPPMPI="../src/mpi/ff-mpirun"
 
@@ -18386,7 +18427,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by FreeFem++ $as_me 3.31-2, which was
+This file was extended by FreeFem++ $as_me 3.32-1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18452,7 +18493,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-FreeFem++ config.status 3.31-2
+FreeFem++ config.status 3.32-1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -19259,7 +19300,7 @@ $as_echo X"$mf" |
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
diff --git a/configure.ac b/configure.ac
index 2ccc2b2..362e78b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,12 +10,14 @@
 # number in debian/changelog.
 
 
-AC_INIT(FreeFem++,3.31-2,hecht at ann.jussieu.fr,freefem++)
+AC_INIT(FreeFem++,3.32-1,hecht at ann.jussieu.fr,freefem++)
 dnl : ${CFLAGS=""}
 dnl : ${CXXFLAGS=""}
 dnl : ${FCFLAGS=""}
 dnl : ${FFLAGS=""}
 
+# progg test  expact under windows 
+ff_TEST_FFPP="../src/nw/FreeFem++"
 
 AC_PREREQ(2.50) dnl for AC_LANG_CASE
 dnl AC_CONFIG_SRCDIR(src/FreeFem++-CoCoa)
@@ -135,7 +137,6 @@ AM_CONDITIONAL([ENABLE_FFCS],[test $enable_ffcs = yes])
 ff_AR="ar"
 ff_ARFLAGS="rv"
 ff_RANLIB="ranlib"
-
 AC_ARG_ENABLE(fortran,AC_HELP_STRING([--disable-fortran],[No Fortran compiler available ( ARPACK need it)]))
 
 ff_g2c_lib="";
@@ -460,6 +461,7 @@ CYGWIN*|MINGW*)
 	        AC_SUBST(WINDRESOBJ,windres.o)
 	        AC_SUBST(LIBSNOCONSOLE,$LIBSNOCONSOLE)
                 AC_SUBST(WIN32DLLTARGET,win32-dll-target)
+		ff_TEST_FFPP="../src/bin-win32/FreeFem++.exe"
                 AC_DEFINE(PURE_WIN32,1,A pure windows applications no cygwin dll)
 		ff_dynload=yes
 	fi
@@ -1680,7 +1682,7 @@ TOOL_DISABLE(metis,metis.$DYLIB_SUFFIX)
 TOOL_DISABLE(mmg3d,mmg3d-v4.0.$DYLIB_SUFFIX)
 TOOL_DISABLE(mshmet,mshmet.$DYLIB_SUFFIX)
 TOOL_DISABLE(mumps,"MUMPS_FreeFem.$DYLIB_SUFFIX MUMPS.$DYLIB_SUFFIX")
-TOOL_DISABLE(mumps_seq,MUMPS_seq.$DYLIB_SUFFIX,mumps-seq)
+TOOL_DISABLE(mumps_seq,"MUMPS_seq.$DYLIB_SUFFIX MUMPS.$DYLIB_SUFFIX",mumps-seq)
 TOOL_DISABLE(nlopt,ff-NLopt.$DYLIB_SUFFIX)
 TOOL_DISABLE(parmetis)
 TOOL_DISABLE(parms,parms_FreeFem.$DYLIB_SUFFIX)
@@ -1757,7 +1759,7 @@ AC_SUBST(BAMGPROG,$ff_bamgprog)
 AC_SUBST(STDPROG,$ff_stdprog)
 ff_progs="FreeFem++-nw $ff_bamgprog  $ff_mpiprog $ff_meditprog $ff_ffglutprog"
 
-AC_SUBST(TEST_FFPP,"../src/nw/FreeFem++")
+AC_SUBST(TEST_FFPP,$ff_TEST_FFPP)
 AC_SUBST(TEST_FFPPMPI,"../src/mpi/ff-mpirun")
 
 ff_with_mpi=-openmpi;
diff --git a/download/Makefile.in b/download/Makefile.in
index ef52370..3d8db6f 100644
--- a/download/Makefile.in
+++ b/download/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -19,23 +19,51 @@
 
 # $Id: Makefile.am,v 1.16 2010/05/06 21:20:38 hecht Exp $
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -537,13 +565,12 @@ $(am__aclocal_m4_deps):
 #     (which will cause the Makefiles to be regenerated when you run 'make');
 # (2) otherwise, pass the desired values on the 'make' command line.
 $(am__recursive_targets):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
diff --git a/download/arpack/Makefile.am b/download/arpack/Makefile.am
index 9559f49..2d043e4 100644
--- a/download/arpack/Makefile.am
+++ b/download/arpack/Makefile.am
@@ -21,7 +21,7 @@
 # headeralh default=0 freefem make multipleauthors start=04/06/04 upmc brief="Makefile for downloaded ARPACK"
 
 all-local:$(DOWNLOAD_ARPACK)
-EXTRA_DIST=ARmake.m4 arpack-patch-lapack.tar.gz 
+EXTRA_DIST=ARmake.m4 arpack-patch-lapack.tar.gz  veclib_zdotc.f
 
 PKGCOMMON_PACKTITLE=ARPACK
 include ../common.mak
@@ -46,6 +46,7 @@ PKGCOMMON_PACKAGES=$(ARPACK96_TAR_GZ) $(PATCH_TAR_GZ)
 compilepkg::$(ARPACKLIB)
 $(ARPACKLIB): ARPACK/fait
 	case '$(BLASLIBS)' in *vecLib*|*Accelerate*) $(F77) -c $(FFLAGS) veclib_zdotc.f -o ARPACK/SRC/veclib_zdotc.o ;; esac; 
+	mkdir -p ../include ../lib
 	if [ -n '@FF_LAPACKdir@' ] ; then \
 	$(F77) -c `echo $(FFLAGS)\ |sed -e s/-O.\*\ // ` ARPACK/LAPACK/dlamch.f -o ARPACK/LAPACK/dlamch.o; \
 	fi; \
@@ -65,7 +66,7 @@ ARPACK/fait: $(ARPACK96_TAR_GZ) $(PATCH_TAR_GZ) ARmake.m4 Makefile
 	case '$(BLASLIBS)' in *vecLib*|*Accelerate*) \
          for i in  ARPACK/LAPACK/zlatrs.f ARPACK/LAPACK/ztrsyl.f ARPACK/SRC/zgetv0.f ARPACK/SRC/znaitr.f ARPACK/SRC/znaup2.f ARPACK/SRC/zneupd.f;\
 	   do  mv  $$i $$i.cpy; sed -e 's/ZDOTC/ZZDOTC/' -e 's/zdotc/zzdotc/' <$$i.cpy >$$i;rm $$i.cpy; \
-  	 done;; \ 
+	    done;; \
 	 esac 
 
 	for i in ARPACK/SRC/*.f ; do \
diff --git a/download/arpack/Makefile.in b/download/arpack/Makefile.in
index 44a38a5..be872a5 100644
--- a/download/arpack/Makefile.in
+++ b/download/arpack/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -66,23 +66,51 @@
 
 # <<download>>
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -387,7 +415,7 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-EXTRA_DIST = ARmake.m4 arpack-patch-lapack.tar.gz 
+EXTRA_DIST = ARmake.m4 arpack-patch-lapack.tar.gz  veclib_zdotc.f
 PKGCOMMON_PACKTITLE = ARPACK
 
 # Downloading and compiling ARPACK
@@ -621,6 +649,7 @@ reinstall::install
 compilepkg::$(ARPACKLIB)
 $(ARPACKLIB): ARPACK/fait
 	case '$(BLASLIBS)' in *vecLib*|*Accelerate*) $(F77) -c $(FFLAGS) veclib_zdotc.f -o ARPACK/SRC/veclib_zdotc.o ;; esac; 
+	mkdir -p ../include ../lib
 	if [ -n '@FF_LAPACKdir@' ] ; then \
 	$(F77) -c `echo $(FFLAGS)\ |sed -e s/-O.\*\ // ` ARPACK/LAPACK/dlamch.f -o ARPACK/LAPACK/dlamch.o; \
 	fi; \
@@ -640,7 +669,7 @@ ARPACK/fait: $(ARPACK96_TAR_GZ) $(PATCH_TAR_GZ) ARmake.m4 Makefile
 	case '$(BLASLIBS)' in *vecLib*|*Accelerate*) \
          for i in  ARPACK/LAPACK/zlatrs.f ARPACK/LAPACK/ztrsyl.f ARPACK/SRC/zgetv0.f ARPACK/SRC/znaitr.f ARPACK/SRC/znaup2.f ARPACK/SRC/zneupd.f;\
 	   do  mv  $$i $$i.cpy; sed -e 's/ZDOTC/ZZDOTC/' -e 's/zdotc/zzdotc/' <$$i.cpy >$$i;rm $$i.cpy; \
-  	 done;; \
+	    done;; \
 	 esac 
 
 	for i in ARPACK/SRC/*.f ; do \
diff --git a/download/arpack/veclib_zdotc.f b/download/arpack/veclib_zdotc.f
new file mode 100644
index 0000000..eb6662b
--- /dev/null
+++ b/download/arpack/veclib_zdotc.f
@@ -0,0 +1,36 @@
+      double complex function zzdotc(n,zx,incx,zy,incy)
+c
+c     forms the dot product of a vector.
+c     jack dongarra, 3/11/78.
+c     modified 12/3/93, array(1) declarations changed to array(*)
+c
+      double complex zx(*),zy(*),ztemp
+      integer i,incx,incy,ix,iy,n
+      ztemp = (0.0d0,0.0d0)
+      zzdotc = (0.0d0,0.0d0)
+      if(n.le.0)return
+      if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c        code for unequal increments or equal increments
+c          not equal to 1
+c
+      ix = 1
+      iy = 1
+      if(incx.lt.0)ix = (-n+1)*incx + 1
+      if(incy.lt.0)iy = (-n+1)*incy + 1
+      do 10 i = 1,n
+        ztemp = ztemp + dconjg(zx(ix))*zy(iy)
+        ix = ix + incx
+        iy = iy + incy
+   10 continue
+      zzdotc = ztemp
+      return
+c
+c        code for both increments equal to 1
+c
+   20 do 30 i = 1,n
+        ztemp = ztemp + dconjg(zx(i))*zy(i)
+   30 continue
+      zzdotc = ztemp
+      return
+      end
diff --git a/download/blas/Makefile.am b/download/blas/Makefile.am
index 78471ba..dff37b9 100644
--- a/download/blas/Makefile.am
+++ b/download/blas/Makefile.am
@@ -108,6 +108,7 @@ libcblas_a_CFLAGS=-DADD_ -ICBLAS/include
 BLAS:BLAS/fait
 
 BLAS/fait:$(BLAS_TGZ)
+	mkdir -p ../include ../lib
 	-if tar xvzf $(BLAS_TGZ) BLAS/xerbla.f 2>&1 1>/dev/null ; then \
 	tar xvzf $(BLAS_TGZ) ; \
 	else \
@@ -152,6 +153,8 @@ openblas.done:openpatches.done
 #
 # DYNAMIC_ARCH=1 allows the Openblas to run fast on all the processor architectures that the FFCS users may have
 #
+
+	test  -d ../lib ||  mkdir  ../lib 
 	cd OpenBLAS && make BINARY=@SIZEOF_PTRINBIT@ CC=${CC} FC=${FC} DYNAMIC_ARCH=1 libs netlib
 	touch $@
 
diff --git a/download/blas/Makefile.in b/download/blas/Makefile.in
index be038a4..68c6833 100644
--- a/download/blas/Makefile.in
+++ b/download/blas/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -68,23 +68,51 @@
 # <<download>>
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -758,10 +786,12 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
 libcblas.a: $(libcblas_a_OBJECTS) $(libcblas_a_DEPENDENCIES) $(EXTRA_libcblas_a_DEPENDENCIES) 
 	$(AM_V_at)-rm -f libcblas.a
 	$(AM_V_AR)$(libcblas_a_AR) libcblas.a $(libcblas_a_OBJECTS) $(libcblas_a_LIBADD)
 	$(AM_V_at)$(RANLIB) libcblas.a
+
 libf77blas.a: $(libf77blas_a_OBJECTS) $(libf77blas_a_DEPENDENCIES) $(EXTRA_libf77blas_a_DEPENDENCIES) 
 	$(AM_V_at)-rm -f libf77blas.a
 	$(AM_V_AR)$(libf77blas_a_AR) libf77blas.a $(libf77blas_a_OBJECTS) $(libf77blas_a_LIBADD)
@@ -924,14 +954,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 libcblas_a-cblas_caxpy.o: CBLAS/src/cblas_caxpy.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcblas_a_CFLAGS) $(CFLAGS) -MT libcblas_a-cblas_caxpy.o -MD -MP -MF $(DEPDIR)/libcblas_a-cblas_caxpy.Tpo -c -o libcblas_a-cblas_caxpy.o `test -f 'CBLAS/src/cblas_caxpy.c' || echo '$(srcdir)/'`CBLAS/src/cblas_caxpy.c
@@ -4212,6 +4242,7 @@ pkgcompile::@DOWNLOADED_BLAS@
 BLAS:BLAS/fait
 
 BLAS/fait:$(BLAS_TGZ)
+	mkdir -p ../include ../lib
 	-if tar xvzf $(BLAS_TGZ) BLAS/xerbla.f 2>&1 1>/dev/null ; then \
 	tar xvzf $(BLAS_TGZ) ; \
 	else \
@@ -4253,6 +4284,8 @@ openblas.done:openpatches.done
 #
 # DYNAMIC_ARCH=1 allows the Openblas to run fast on all the processor architectures that the FFCS users may have
 #
+
+	test  -d ../lib ||  mkdir  ../lib 
 	cd OpenBLAS && make BINARY=@SIZEOF_PTRINBIT@ CC=${CC} FC=${FC} DYNAMIC_ARCH=1 libs netlib
 	touch $@
 
diff --git a/download/fftw/Makefile.in b/download/fftw/Makefile.in
index eb61d0f..07ddf5d 100644
--- a/download/fftw/Makefile.in
+++ b/download/fftw/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,23 +17,51 @@
 # Downloading and compiling extra libraries
 # -----------------------------------------
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
diff --git a/download/getall b/download/getall
index 748fd9d..dcf70f1 100755
--- a/download/getall
+++ b/download/getall
@@ -84,8 +84,8 @@ download('BLAS','http://www.netlib.org/blas/blas.tgz','http://www.netlib.org/bla
 download('BLAS','http://www.netlib.org/blas/blast-forum/cblas.tgz','http://www.netlib.org/blas','cblas.tgz',
 	 '1e8830f622d2112239a4a8a83b84209a');
 
-download('OpenBLAS','http://github.com/xianyi/OpenBLAS/tarball/v0.2.8','http://www.openblas.net/','OpenBLAS.tar.gz',
-	 'b58ad6312e9c9a284fd72de7b6a0a076',
+download('OpenBLAS','http://github.com/xianyi/OpenBLAS/tarball/v0.2.12','http://www.openblas.net/','OpenBLAS.tar.gz',
+	 'dfc868e0c134855639f036d2723bf4be',
 	 'BAD_CERT');
 
 download('FFTW','http://www.fftw.org/fftw-3.3.2.tar.gz','http://www.fftw.org','fftw-3.3.2.tar.gz',
@@ -139,9 +139,9 @@ download('Scotch','https://gforge.inria.fr/frs/download.php/23391/scotch_5.1.6_e
 	 'https://gforge.inria.fr/projects/scotch/','scotch_5.1.6_esmumps.tar.gz','961d0ab22914fc6455a62699cf7b5a47',
 	 'BAD_CERT');
 
-download('SuiteSparse','http://www.cise.ufl.edu/research/sparse/SuiteSparse/SuiteSparse-4.0.2.tar.gz',
-	 'http://www.cise.ufl.edu/research/sparse/SuiteSparse/','SuiteSparse-4.0.2.tar.gz',
-	 'efe53b7ef2b529d54727815231a5a6a9');
+download('SuiteSparse','http://www.cise.ufl.edu/research/sparse/SuiteSparse/SuiteSparse-4.3.1.tar.gz',
+	 'http://www.cise.ufl.edu/research/sparse/SuiteSparse/','SuiteSparse-4.3.1.tar.gz',
+	 'f8f26a3b1c7f82444c0db0b375215287');
 
 download('SuperLU','http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_4.3.tar.gz',
 	 'http://crd-legacy.lbl.gov/~xiaoye/SuperLU/','superlu_4.3.tar.gz','b72c6309f25e9660133007b82621ba7c');
@@ -151,6 +151,9 @@ download('SuperLU_DIST','http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_
 download('TetGen','http://wias-berlin.de/software/tetgen/files/tetgen1.4.3.tar.gz',
 	 'http://wias-berlin.de/software/tetgen/','tetgen1.4.3.tar.gz','d6a4bcdde2ac804f7ec66c29dcb63c18');
 
+download('PETSc','http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.5.2.tar.gz',
+	 'http://ftp.mcs.anl.gov/pub/petsc/release-snapshots','petsc-lite-3.5.2.tar.gz','d707336a98d7cb31d843804d020edc94');
+
 # run all downloads concurrently
 
 if($can_use_threads){
diff --git a/download/gmm/cxxflags b/download/gmm/cxxflags
index b379501..eca0d8f 100644
--- a/download/gmm/cxxflags
+++ b/download/gmm/cxxflags
@@ -1,10 +1,10 @@
-CXX = clang++ -std=c++11 -isysroot /Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
+CXX = clang++ -std=c++11 -isysroot /Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
 MPICXX = 
 ac_ct_CXX = 
-CC = clang -isysroot /Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
+CC = clang -isysroot /Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
 MPICC = 
 YACC = bison -y
-ac_ct_CC = clang -isysroot /Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
+ac_ct_CC = clang -isysroot /Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
 CXXFLAGS = -m64 -fPIC -g  -DBAMG_LONG_LONG -DCHECK_KN -fno-inline  -fexceptions -fPIC
 CFLAGS = -g  -m64 -fPIC -g -fPIC
 FCFLAGS = -g -O2 -fPIC
diff --git a/download/metis/Makefile b/download/metis/Makefile
index da5402c..edae386 100644
--- a/download/metis/Makefile
+++ b/download/metis/Makefile
@@ -27,7 +27,7 @@ $(SRCDIR)/FAIT:
 	touch $(SRCDIR)/FAIT
 
 install:$(SRCDIR)/tag-compile
-	cd $(SRCDIR)/Programs ;$(MAKE) 
+#	cd $(SRCDIR)/Programs ;$(MAKE) 
 	-mkdir -p ../include/metis
 	cp $(SRCDIR)/Lib/*.h ../include/metis
 
diff --git a/download/umfpack/Makefile.am b/download/umfpack/Makefile.am
index 9c92031..fa459a7 100644
--- a/download/umfpack/Makefile.am
+++ b/download/umfpack/Makefile.am
@@ -29,7 +29,7 @@ EXTRA_DIST= SuiteSparse_config.mk.in
 # ---------------------------------
 
 DIRPKG=../pkg
-SUITESPARSE_TGZ=$(DIRPKG)/SuiteSparse-4.0.2.tar.gz
+SUITESPARSE_TGZ=$(DIRPKG)/SuiteSparse-4.3.1.tar.gz
 
 UMFPACKLIB=../lib/libumfpack.a 
 AMDLIB=../lib/libamd.a
diff --git a/download/umfpack/Makefile.in b/download/umfpack/Makefile.in
index 85fdca3..97ff3af 100644
--- a/download/umfpack/Makefile.in
+++ b/download/umfpack/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -37,23 +37,51 @@
 # ======================================================================
 # headeralh brief="Downloading and compiling extra libraries for Umfpack" default=0 freefem make multipleauthors start=04/06/04 upmc
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -363,7 +391,7 @@ EXTRA_DIST = SuiteSparse_config.mk.in
 # Downloading and compiling UMFPACK
 # ---------------------------------
 DIRPKG = ../pkg
-SUITESPARSE_TGZ = $(DIRPKG)/SuiteSparse-4.0.2.tar.gz
+SUITESPARSE_TGZ = $(DIRPKG)/SuiteSparse-4.3.1.tar.gz
 UMFPACKLIB = ../lib/libumfpack.a 
 AMDLIB = ../lib/libamd.a
 CAMDLIB = ../lib/libcamd.a
diff --git a/examples++-3d/Lac.edp b/examples++-3d/Lac.edp
index d74cab5..aa9e046 100644
--- a/examples++-3d/Lac.edp
+++ b/examples++-3d/Lac.edp
@@ -10,7 +10,7 @@ func zmin= 2-sqrt(4-(x*x+y*y));
 func zmax= 2-sqrt(3.);
 
 mesh3 Th=buildlayers(Th2,nn,
-  coef= max( (zmax-zmin)/zmax, 1./(nn*2) ),
+  coef=  (zmax-zmin)/zmax ,
   zbound=[zmin,zmax],
   labelmid=rmid, 
   reffaceup = rup,
diff --git a/examples++-3d/Makefile.in b/examples++-3d/Makefile.in
index d09f59c..6ef45ad 100644
--- a/examples++-3d/Makefile.in
+++ b/examples++-3d/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,23 +16,51 @@
 
 # $Id$
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -598,7 +626,7 @@ cscope cscopelist:
 	$(MAKE) $(AM_MAKEFLAGS) $<
 
 # Leading 'am--fnord' is there to ensure the list of targets does not
-# exand to empty, as could happen e.g. with make check TESTS=''.
+# expand to empty, as could happen e.g. with make check TESTS=''.
 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
 am--force-recheck:
 	@:
diff --git a/examples++-3d/TruncLac.edp b/examples++-3d/TruncLac.edp
index bb19ecc..a61118f 100644
--- a/examples++-3d/TruncLac.edp
+++ b/examples++-3d/TruncLac.edp
@@ -11,7 +11,7 @@ func zmin= 2-sqrt(4-(x*x+y*y));
 func zmax= 2-sqrt(3.);
 
 mesh3 Th=buildlayers(Th2,nn,
-  coef= max( (zmax-zmin)/zmax, 1./(nn*2) ),
+  coef=  (zmax-zmin)/zmax,
   zbound=[zmin,zmax],
   labelmid=rmid, 
   reffaceup = rup,
diff --git a/examples++-bug/Makefile.in b/examples++-bug/Makefile.in
index 3c0782c..f228cfb 100644
--- a/examples++-bug/Makefile.in
+++ b/examples++-bug/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,23 +16,51 @@
 
 # $Id$
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
diff --git a/download/blas/._Makefile.am b/examples++-chapt3/._NSprojection-Opt.edp
old mode 100644
new mode 100755
similarity index 100%
copy from download/blas/._Makefile.am
copy to examples++-chapt3/._NSprojection-Opt.edp
diff --git a/examples++-chapt3/Makefile.in b/examples++-chapt3/Makefile.in
index 91d34b9..003428d 100644
--- a/examples++-chapt3/Makefile.in
+++ b/examples++-chapt3/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,23 +16,51 @@
 
 # $Id$
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -596,7 +624,7 @@ cscope cscopelist:
 	$(MAKE) $(AM_MAKEFLAGS) $<
 
 # Leading 'am--fnord' is there to ensure the list of targets does not
-# exand to empty, as could happen e.g. with make check TESTS=''.
+# expand to empty, as could happen e.g. with make check TESTS=''.
 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
 am--force-recheck:
 	@:
diff --git a/examples++-chapt3/NSprojection-Opt.edp b/examples++-chapt3/NSprojection-Opt.edp
new file mode 100755
index 0000000..d9de1bb
--- /dev/null
+++ b/examples++-chapt3/NSprojection-Opt.edp
@@ -0,0 +1,148 @@
+// file NSprojection.edp
+// Version july 2014, 
+// FH. Change B.C on u on outpout , more simple .. 
+// ............
+verbosity=0;
+border a0(t=1,0){ x=-2;      y=t;      label=1;}// inlet ..
+border a1(t=-2,0){ x=t;    y=0;        label=2;}
+border a2(t=0,-0.5){ x=0;      y=t;       label=2;}
+border a3(t=0,1){ x=18*t^1.2;  y=-0.5;       label=2;}
+border a4(t=-0.5,1){ x=18;     y=t;   label=3;}// outlet 
+border a5(t=1,0){ x=-2+20*t; y=1;        label=4;}
+int n=1;
+mesh Th= buildmesh(a0(3*n)+a1(20*n)+a2(10*n)+a3(150*n)+a4(5*n)+a5(100*n));
+
+plot(Th);
+fespace Vh(Th,P1);
+fespace Wh(Th,[P1,P1]);
+real nu = 0.0025, dt = 0.2; // Reynolds=200
+
+Vh w,u = 0, v =0, p = 0, q=0;
+Vh uold,vold,pold; 
+ // def of Matrix dtMx and dtMy
+ matrix M1,Mdx,Mdy,AAu,AAv,AAp;
+ real[int] rhsu(Vh.ndof), rhsv(Vh.ndof), rhsp(Vh.ndof);
+ real[int] rhsu0(Vh.ndof), rhsv0(Vh.ndof), rhsp0(Vh.ndof);
+macro  BuildMat()
+ { /* for memory managenemt */
+   w=w;
+   u=u;
+   v=v;
+   p=p;
+   q=q; 
+   uold=0;
+   vold=0;
+   pold=0;
+   
+   varf vM(unused,v) = int2d(Th)(v) ;
+   varf vdx(u,v) = int2d(Th)(v*dx(u)) ;
+   varf vdy(u,v) = int2d(Th)(v*dy(u)) ;
+   varf pb4u(u,w)
+        =int2d(Th)(u*w/dt +nu*(dx(u)*dx(w)+dy(u)*dy(w)))
+          + on(1,u = 4*y*(1-y)) + on(2,4,u = 0) 
+        ;
+   varf pb4v(v,w)
+        = int2d(Th)(v*w/dt +nu*(dx(v)*dx(w)+dy(v)*dy(w)))
+        +on(1,2,3,4,v = 0);
+   varf pb4p(q,w) = int2d(Th)(dx(q)*dx(w)+dy(q)*dy(w))
+     + on(3,q=0);
+   AAu = pb4u(Vh,Vh,solver=sparsesolver);
+   AAv = pb4v(Vh,Vh,solver=sparsesolver);
+   AAp = pb4p(Vh,Vh,solver=sparsesolver);
+  
+   rhsu.resize(Vh.ndof);
+   rhsv.resize(Vh.ndof);
+   rhsp.resize(Vh.ndof);
+   rhsu0.resize(Vh.ndof);
+   rhsv0.resize(Vh.ndof);
+   rhsp0.resize(Vh.ndof);
+  
+   
+   rhsu0 = pb4u(0,Vh);
+   rhsv0 = pb4v(0,Vh);
+   rhsp0 = pb4p(0,Vh);
+   real[int] Mlump = vM(0,Vh); 
+   real[int] one(Vh.ndof); one = 1;  
+   real[int] aM1 =  one ./ Mlump; 
+   M1 = aM1;
+   Mdx = vdx(Vh,Vh);
+   Mdy = vdy(Vh,Vh);
+ }
+ // 
+ 
+BuildMat
+
+real err=1, outflux=1;
+for(int n=0;n<300;n++)
+ {	
+  varf  cpb4u(u,w) = int2d(Th)((convect([uold,vold],-dt,uold)/dt)*w); 
+  varf  cpb4v(u,w) = int2d(Th)((convect([uold,vold],-dt,vold)/dt)*w); 
+  uold[] = u[];
+  vold[] = v[];
+  pold[]=p[];
+  p[]=-p[]; 
+  rhsu = rhsu0;
+  rhsv = rhsv0; 
+  rhsp = 0;
+  rhsu += Mdx*p[];
+  rhsv += Mdy*p[];
+  rhsu += cpb4u(0,Vh);
+  rhsv += cpb4v(0,Vh);
+  u[]= AAu^-1*rhsu;
+  v[]= AAv^-1*rhsv;
+  rhsp += Mdx*u[];
+  rhsp += Mdy*v[];
+  rhsp /= dt;
+  rhsp += rhsp0;
+  q[]= AAp^-1*rhsp;
+  p[] = pold[] -q[];  
+  
+  rhsu = Mdx*q[];
+  rhsv = Mdy*q[];
+  rhsu *= dt; 
+  rhsv *= dt; 
+  u[] += rhsu;
+  v[] += rhsv;
+  plot(u);
+  
+  
+/*  
+  solve pb4u(u,w,init=n,solver=CG,eps=epsu)
+        =int2d(Th)(u*w/dt +nu*(dx(u)*dx(w)+dy(u)*dy(w)))
+        -int2d(Th)((convect([uold,vold],-dt,uold)/dt-dx(p))*w)
+        + on(1,u = 4*y*(1-y)) + on(2,4,u = 0) 
+        ;
+  plot(u);
+
+  solve pb4v(v,w,init=n,solver=CG,eps=epsv)
+        = int2d(Th)(v*w/dt +nu*(dx(v)*dx(w)+dy(v)*dy(w)))
+        -int2d(Th)((convect([uold,vold],-dt,vold)/dt-dy(p))*w)
+        +on(1,2,3,4,v = 0);
+
+ solve pb4p(q,w,solver=CG,init=n,eps=epsp) = int2d(Th)(dx(q)*dx(w)+dy(q)*dy(w))
+    - int2d(Th)((dx(u)+ dy(v))*w/dt)+ on(3,q=0);
+
+ // to have absolute epsilon in CG algorithm. 
+  epsv = -abs(epsv);
+  epsu = -abs(epsu);
+  epsp = -abs(epsp);
+
+  p = pold-q;
+  u[] += dtM1x*q[];
+  v[] += dtM1y*q[];
+ */
+  
+  if(n%50==49){
+    Th = adaptmesh(Th,[u,v],q,err=0.04,nbvx=100000);
+    plot(Th, wait=true);
+    BuildMat // rebuild mat.   
+ }
+ 
+  err = sqrt(int2d(Th)(square(u-uold)+square(v-vold))/Th.area) ;
+  outflux = int1d(Th)( [u,v]'*[N.x,N.y]) ;
+  cout << " iter " << n << " Err L2 = " << err << " "<< " flux sortant = "<< outflux << endl; 
+  if(err < 1e-3) break;
+}
+assert(abs(outflux)< 2e-3); // verifaction ... 
+plot(p,wait=1,ps="NSprojP.eps");
+plot(u,wait=1,ps="NSprojU.eps");
diff --git a/examples++-chapt3/NSprojection.edp b/examples++-chapt3/NSprojection.edp
index bebb404..1256af8 100755
--- a/examples++-chapt3/NSprojection.edp
+++ b/examples++-chapt3/NSprojection.edp
@@ -1,31 +1,30 @@
 // file NSprojection.edp
-
-border a0(t=1,0){ x=0;      y=t;      label=1;}
-border a1(t=0,1){ x=2*t;    y=0;        label=2;}
-border a2(t=0,1){ x=2;      y=-t/2;       label=2;}
-border a3(t=0,1){ x=2+18*t^1.2;  y=-0.5;       label=2;}
-border a4(t=0,1){ x=20;     y=-0.5+1.5*t;   label=3;}
-border a5(t=1,0){ x=20*t; y=1;        label=4;}
+// Version july 2014, 
+// FH. Change B.C on u on outpout , more simple .. 
+// ............
+verbosity=0;
+border a0(t=1,0){ x=-2;      y=t;      label=1;}// inlet ..
+border a1(t=-2,0){ x=t;    y=0;        label=2;}
+border a2(t=0,-0.5){ x=0;      y=t;       label=2;}
+border a3(t=0,1){ x=18*t^1.2;  y=-0.5;       label=2;}
+border a4(t=-0.5,1){ x=18;     y=t;   label=3;}// outlet 
+border a5(t=1,0){ x=-2+20*t; y=1;        label=4;}
 int n=1;
 mesh Th= buildmesh(a0(3*n)+a1(20*n)+a2(10*n)+a3(150*n)+a4(5*n)+a5(100*n));
+
 plot(Th);
 fespace Vh(Th,P1);
+
 real nu = 0.0025, dt = 0.2; // Reynolds=200
-func uBCin =  4*y*(1-y)*(y>0)*(x<2) ; 
-func uBCout =  4./1.5*(y+0.5)*(1-y) *(x>19);
-Vh w,u = uBCin, v =0, p = 0, q=0;
-real area= int2d(Th)(1.);
-Vh ubc  = uBCin + uBCout; 
-real influx0  = int1d(Th,1) (ubc*N.x),
-     outflux0 = int1d(Th,3) (ubc*N.x);
- if(verbosity>2) cout <<  " flux in " << influx0 << " out : " << outflux0 << endl;
- verbosity=1;
- real epsv = 1e-6;
- real epsu = 1e-6;
- real epsp = 1e-6;
+
+Vh w,u = 0, v =0, p = 0, q=0;
+
+ real epsv = 1e-6, epsu = 1e-6, epsp = 1e-6;// Eps CG ..
  // def of Matrix dtMx and dtMy
- matrix dtM1x,dtM1y; 
- { // for memory managenemt ...
+ matrix dtM1x,dtM1y;
+ 
+macro  BuildMat()
+ { /* for memory managenemt */
    varf vM(unused,v) = int2d(Th)(v) ;
    varf vdx(u,v) = int2d(Th)(v*dx(u)*dt) ;
    varf vdy(u,v) = int2d(Th)(v*dy(u)*dt) ;
@@ -38,24 +37,20 @@ real influx0  = int1d(Th,1) (ubc*N.x),
    matrix Mdy = vdy(Vh,Vh);
    dtM1x = dM1*Mdx;
    dtM1y = dM1*Mdy; 
- }
-for(int n=0;n<300;n++){
-	
-  Vh uold = u,  vold = v, pold=p;
-  Vh f=convect([uold,vold],-dt,uold); //  not used ,  g=convect([u,v],-dt,vold);
-  real outflux = int1d(Th,3) (f*N.x);
-  if(verbosity>2)  cout <<  " flux  =  "<< influx0+outflux << "  -- " ;
+ }// 
+ 
+BuildMat
 
-  f = f - (influx0+outflux)/outflux0 * uBCout; 
-  outflux = int1d(Th,3) (f*N.x);
-   if(verbosity>2) cout << "  out flux " << influx0+outflux << endl;
-  assert( abs(influx0+outflux) < 1e-10);
-  // WARNING the the output flux must be 0 ..
+real err=1, outflux=1;
+for(int n=0;n<300;n++)
+ {	
+  Vh uold = u,  vold = v, pold=p;
   
   solve pb4u(u,w,init=n,solver=CG,eps=epsu)
         =int2d(Th)(u*w/dt +nu*(dx(u)*dx(w)+dy(u)*dy(w)))
         -int2d(Th)((convect([uold,vold],-dt,uold)/dt-dx(p))*w)
-        + on(1,u = 4*y*(1-y)) + on(2,4,u = 0) + on(3,u=f);
+        + on(1,u = 4*y*(1-y)) + on(2,4,u = 0) 
+        ;
   plot(u);
 
   solve pb4v(v,w,init=n,solver=CG,eps=epsv)
@@ -63,52 +58,30 @@ for(int n=0;n<300;n++){
         -int2d(Th)((convect([uold,vold],-dt,vold)/dt-dy(p))*w)
         +on(1,2,3,4,v = 0);
 
- real meandiv = int2d(Th)(dx(u)+dy(v))/area;
-
  solve pb4p(q,w,solver=CG,init=n,eps=epsp) = int2d(Th)(dx(q)*dx(w)+dy(q)*dy(w))
-    - int2d(Th)((dx(u)+ dy(v)-meandiv)*w/dt)+ on(3,q=0);
-
- real meanpq = int2d(Th)(pold - q)/area;
+    - int2d(Th)((dx(u)+ dy(v))*w/dt)+ on(3,q=0);
 
  // to have absolute epsilon in CG algorithm. 
- cout << epsv << endl; 
   epsv = -abs(epsv);
   epsu = -abs(epsu);
   epsp = -abs(epsp);
 
- p = pold-q-meanpq;
- pold[] = dtM1x*q[];
- u[] += pold[];
- pold[] = dtM1y*q[];
- v[] += pold[];
- /*
- u = u + dx(q)*dt;
- v = v + dy(q)*dt;
- */
+  p = pold-q;
+  u[] += dtM1x*q[];
+  v[] += dtM1y*q[];
+ 
+  
   if(n%50==49){
     Th = adaptmesh(Th,[u,v],q,err=0.04,nbvx=100000);
     plot(Th, wait=true);
-    ubc = uBCin + uBCout; // reinterpolate B.C. 
-    influx0 = int1d(Th,1) (ubc*N.x);
-    outflux0 = int1d(Th,3) (ubc*N.x);
-   varf vM(unused,v) = int2d(Th)(v) ;
-   varf vdx(u,v) = int2d(Th)(v*dx(u)*dt) ;
-   varf vdy(u,v) = int2d(Th)(v*dy(u)*dt) ;
-
-   real[int] Mlump = vM(0,Vh); 
-   real[int] one(Vh.ndof); one = 1;  
-   real[int] M1 =  one ./ Mlump; 
-   matrix dM1 = M1;
-   matrix Mdx = vdx(Vh,Vh);
-   matrix Mdy = vdy(Vh,Vh);
-   dtM1x = dM1*Mdx;
-   dtM1y = dM1*Mdy; 
-   pold = pold;
+    BuildMat // rebuild mat.   
  }
  
- real err = sqrt(int2d(Th)(square(u-uold)+square(v-vold))/Th.area) ;
- cout << " iter " << n << " Err L2 = " << err << endl;
- if(err < 1e-3) break;
+  err = sqrt(int2d(Th)(square(u-uold)+square(v-vold))/Th.area) ;
+  outflux = int1d(Th)( [u,v]'*[N.x,N.y]) ;
+  cout << " iter " << n << " Err L2 = " << err << " "<< " flux sortant = "<< outflux << endl; 
+  if(err < 1e-3) break;
 }
+assert(abs(outflux)< 2e-3); // verifaction ... 
 plot(p,wait=1,ps="NSprojP.eps");
 plot(u,wait=1,ps="NSprojU.eps");
diff --git a/examples++-chapt3/._NSprojection.edp b/examples++-eigen/._LapEigenValue.edp
old mode 100755
new mode 100644
similarity index 100%
rename from examples++-chapt3/._NSprojection.edp
rename to examples++-eigen/._LapEigenValue.edp
diff --git a/examples++-eigen/LapEigenValue.edp b/examples++-eigen/LapEigenValue.edp
index 17393e3..1a42ee9 100644
--- a/examples++-eigen/LapEigenValue.edp
+++ b/examples++-eigen/LapEigenValue.edp
@@ -19,7 +19,7 @@ varf  a(u1,u2)= int2d(Th)(  dx(u1)*dx(u2) + dy(u1)*dy(u2) - sigma* u1*u2 )
                    
 varf b([u1],[u2]) = int2d(Th)(  u1*u2 ) ; // no  Boundary condition
 
-matrix A= a(Vh,Vh,solver=Crout,factorize=1); 
+matrix A= a(Vh,Vh,solver=sparsesolver); 
 matrix B= b(Vh,Vh,solver=CG,eps=1e-20); 
 
 // important remark:
diff --git a/examples++-eigen/LapnosymEigenValue.edp b/examples++-eigen/LapnosymEigenValue.edp
index a15797c..7f94072 100644
--- a/examples++-eigen/LapnosymEigenValue.edp
+++ b/examples++-eigen/LapnosymEigenValue.edp
@@ -20,7 +20,7 @@ varf  a(u1,u2)= int2d(Th)(  nu*(dx(u1)*dx(u2) + dy(u1)*dy(u2)) + (dx(u1)+dy(u1))
 varf b([u1],[u2]) = int2d(Th)(  u1*u2 ) ;//+  on(1,2,3,4,u1=0);
 
 
-matrix OP= op(Vh,Vh,solver=LU,factorize=1); 
+matrix OP= op(Vh,Vh,solver=UMFPACK,factorize=0); 
 matrix A= a(Vh,Vh,solver=GMRES); 
 matrix B= b(Vh,Vh,solver=CG,eps=1e-20); 
 int nev=10;
diff --git a/examples++-eigen/Makefile.am b/examples++-eigen/Makefile.am
index 7fb68fd..7935374 100644
--- a/examples++-eigen/Makefile.am
+++ b/examples++-eigen/Makefile.am
@@ -5,7 +5,7 @@ all-local: all.edp freefem++.pref
 LOG_DRIVER=$(SHELL) $(top_srcdir)/test-driver-ff
 TESTS_ENVIRONMENT=TEST_FFPP=$(TEST_FFPP) FLAGS_FFPP=-nw SKIP=$(SKIP_TESTS_EIGEN)
 
-TESTS=BeamEigenValue.edp BeamEigenValueperio.edp Lap3dEigenValue.edp  LapEigenValue.edp LapnosymEigenValue.edp Stokes-eigen.edp VP-Steklov-Poincare.edp neuman.edp testeigen.edp WGM-sphere.edp free-cyl-axi.edp LapEigenValueFunc.edp
+TESTS=BeamEigenValue.edp BeamEigenValueperio.edp Lap3dEigenValue.edp  LapEigenValue.edp LapnosymEigenValue.edp Stokes-eigen.edp VP-Steklov-Poincare.edp neuman.edp  WGM-sphere.edp free-cyl-axi.edp LapEigenValueFunc.edp
 #  LapComplexEigenValue.edp  (buggus) 
 EXTRA_DIST=*.edp all.edp
 
diff --git a/examples++-eigen/Makefile.in b/examples++-eigen/Makefile.in
index 989631b..d8e3ba6 100644
--- a/examples++-eigen/Makefile.in
+++ b/examples++-eigen/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,23 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -540,7 +568,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-ff
 TESTS_ENVIRONMENT = TEST_FFPP=$(TEST_FFPP) FLAGS_FFPP=-nw SKIP=$(SKIP_TESTS_EIGEN)
-TESTS = BeamEigenValue.edp BeamEigenValueperio.edp Lap3dEigenValue.edp  LapEigenValue.edp LapnosymEigenValue.edp Stokes-eigen.edp VP-Steklov-Poincare.edp neuman.edp testeigen.edp WGM-sphere.edp free-cyl-axi.edp LapEigenValueFunc.edp
+TESTS = BeamEigenValue.edp BeamEigenValueperio.edp Lap3dEigenValue.edp  LapEigenValue.edp LapnosymEigenValue.edp Stokes-eigen.edp VP-Steklov-Poincare.edp neuman.edp  WGM-sphere.edp free-cyl-axi.edp LapEigenValueFunc.edp
 #  LapComplexEigenValue.edp  (buggus) 
 EXTRA_DIST = *.edp all.edp
 all: all-am
@@ -593,7 +621,7 @@ cscope cscopelist:
 	$(MAKE) $(AM_MAKEFLAGS) $<
 
 # Leading 'am--fnord' is there to ensure the list of targets does not
-# exand to empty, as could happen e.g. with make check TESTS=''.
+# expand to empty, as could happen e.g. with make check TESTS=''.
 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
 am--force-recheck:
 	@:
@@ -781,13 +809,6 @@ neuman.edp.log: neuman.edp
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-testeigen.edp.log: testeigen.edp
-	@p='testeigen.edp'; \
-	b='testeigen.edp'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
 WGM-sphere.edp.log: WGM-sphere.edp
 	@p='WGM-sphere.edp'; \
 	b='WGM-sphere.edp'; \
diff --git a/examples++-eigen/Stokes-eigen.edp b/examples++-eigen/Stokes-eigen.edp
index 62a0f4b..b478225 100644
--- a/examples++-eigen/Stokes-eigen.edp
+++ b/examples++-eigen/Stokes-eigen.edp
@@ -25,7 +25,7 @@ varf vfStokes ([u1,u2,p],[v1,v2,q]) =
 ;
 varf b([u1,u2,p],[v1,v2,q]) = int2d(Th)(  u1*v1+u2*v2+p*q*0.) ; // no  Boundary condition
 
-matrix A= vfStokes(XhxXhxMh,XhxXhxMh,solver=Crout,factorize=1); 
+matrix A= vfStokes(XhxXhxMh,XhxXhxMh,solver=UMFPACK,factorize=0); 
 matrix B= b(XhxXhxMh,XhxXhxMh,solver=CG,eps=1e-20); 
 
 real sigma=0;
diff --git a/examples++-eigen/all.edp b/examples++-eigen/all.edp
index f04dfcd..2b9db97 100644
--- a/examples++-eigen/all.edp
+++ b/examples++-eigen/all.edp
@@ -19,6 +19,10 @@ verbosity=verbosityy;
 verbosity=verbosityy;
 { include "LapEigenValue.edp";};
  cout << "------------------------------------------------------------------------------ " << endl;
+ cout << "--------- file : LapEigenValueFunc.edp --------------------------------------------------------" << endl;
+verbosity=verbosityy;
+{ include "LapEigenValueFunc.edp";};
+ cout << "------------------------------------------------------------------------------ " << endl;
  cout << "--------- file : LapnosymEigenValue.edp --------------------------------------------------------" << endl;
 verbosity=verbosityy;
 { include "LapnosymEigenValue.edp";};
@@ -27,6 +31,18 @@ verbosity=verbosityy;
 verbosity=verbosityy;
 { include "Stokes-eigen.edp";};
  cout << "------------------------------------------------------------------------------ " << endl;
+ cout << "--------- file : VP-Steklov-Poincare.edp --------------------------------------------------------" << endl;
+verbosity=verbosityy;
+{ include "VP-Steklov-Poincare.edp";};
+ cout << "------------------------------------------------------------------------------ " << endl;
+ cout << "--------- file : WGM-sphere.edp --------------------------------------------------------" << endl;
+verbosity=verbosityy;
+{ include "WGM-sphere.edp";};
+ cout << "------------------------------------------------------------------------------ " << endl;
+ cout << "--------- file : free-cyl-axi.edp --------------------------------------------------------" << endl;
+verbosity=verbosityy;
+{ include "free-cyl-axi.edp";};
+ cout << "------------------------------------------------------------------------------ " << endl;
  cout << "--------- file : neuman.edp --------------------------------------------------------" << endl;
 verbosity=verbosityy;
 { include "neuman.edp";};
diff --git a/examples++-eigen/testeigen.edp b/examples++-eigen/testeigen.edp
deleted file mode 100644
index 948bdbd..0000000
--- a/examples++-eigen/testeigen.edp
+++ /dev/null
@@ -1,25 +0,0 @@
-NoUseOfWait=true;int verbosityy=verbosity;
- cout << "--------- file : BeamEigenValue.edp --------------------------------------------------------" << endl;
-verbosity=verbosityy;
-{ include "BeamEigenValue.edp";};
- cout << "------------------------------------------------------------------------------ " << endl;
- cout << "--------- file : BeamEigenValueperio.edp --------------------------------------------------------" << endl;
-verbosity=verbosityy;
-{ include "BeamEigenValueperio.edp";};
- cout << "------------------------------------------------------------------------------ " << endl;
- cout << "--------- file : LapEigenValue.edp --------------------------------------------------------" << endl;
-verbosity=verbosityy;
-{ include "LapEigenValue.edp";};
- cout << "------------------------------------------------------------------------------ " << endl;
- cout << "--------- file : LapnosymEigenValue.edp --------------------------------------------------------" << endl;
-verbosity=verbosityy;
-// { include "LapnosymEigenValue.edp";};
- cout << "------------------------------------------------------------------------------ " << endl;
- cout << "--------- file : Stokes-eigen.edp --------------------------------------------------------" << endl;
-verbosity=verbosityy;
-{ include "Stokes-eigen.edp";};
- cout << "------------------------------------------------------------------------------ " << endl;
- cout << "--------- file : neuman.edp --------------------------------------------------------" << endl;
-verbosity=verbosityy;
-{ include "neuman.edp";};
- cout << "------------------------------------------------------------------------------ " << endl;
diff --git a/src/fflib/._array_tlp.hpp b/examples++-load/._Element_PkEdge.cpp
similarity index 100%
copy from src/fflib/._array_tlp.hpp
copy to examples++-load/._Element_PkEdge.cpp
diff --git a/download/blas/._Makefile.am b/examples++-load/._ffrandom.edp
similarity index 100%
copy from download/blas/._Makefile.am
copy to examples++-load/._ffrandom.edp
diff --git a/src/fflib/._AFunction.hpp b/examples++-load/._iovtk.cpp
similarity index 100%
copy from src/fflib/._AFunction.hpp
copy to examples++-load/._iovtk.cpp
diff --git a/download/blas/._Makefile.am b/examples++-load/._testFE-PkEdge.edp
similarity index 100%
copy from download/blas/._Makefile.am
copy to examples++-load/._testFE-PkEdge.edp
diff --git a/examples++-load/Element_PkEdge.cpp b/examples++-load/Element_PkEdge.cpp
index da78cee..0d4370a 100644
--- a/examples++-load/Element_PkEdge.cpp
+++ b/examples++-load/Element_PkEdge.cpp
@@ -110,9 +110,10 @@ namespace  Fem2D {
       else ee=2;
       int e3=ee*npe;
       double s=1.-L[ee];
-      R xe = L[VerticesOfTriangularEdge[ee][0]]/s;//  go from 0 to 1 on edge 
+      R xe = L[VerticesOfTriangularEdge[ee][0]]/s;//  go from 0 to 1 on edge
+      R dxe = -1;
       if(K.EdgeOrientation(ee) <0.) 
-	xe = 1-xe;
+          xe = 1-xe, dxe=-1;
       //cout << P << " ee = " << ee << " xe " << xe << " " << L[ee]<< " s=" <<s  << " orient: " << K.EdgeOrientation(ee) <<endl;
       assert(s);
       val=0; 
@@ -121,12 +122,12 @@ namespace  Fem2D {
 	  RN_ f0(val('.',0,op_id)); 
 	  for (int l=0;l<npe;l++)
 	    {
-	      int df= e3+l;
+	      int dof= e3+l;
 	      R f=1.;
 	      for (int i=0;i<npe;++i)
 		if(i != l) 
 		  f *= (xe-X[i])/(X[l]-X[i]);
-	      f0[df] = f;
+	      f0[dof] = f;
 	    }
 	  //cout << " f0 = " << f0 << " X= "<< X << endl;
 	}
@@ -134,9 +135,32 @@ namespace  Fem2D {
       
       if(  whatd[op_dx] || whatd[op_dy] || whatd[op_dxx] || whatd[op_dyy] ||  whatd[op_dxy])
 	{
-	  cerr << " TO DO ???  FH " << endl;
-	  ffassert(0);
-	}
+            R2 E =K.Edge(ee);
+            R lE2=(E,E);
+            dxe /=lE2;
+            //cout << " xe = "<< xe << " " << dxe << " " << lE2 << endl;
+            for (int l=0;l<npe;l++)
+            {
+                int dof= e3+l;
+                R f=1. ,df = 0., ddf = 0.;
+                for (int i=0;i<npe;++i)
+                    if(i != l)
+                    {   R xx=(xe-X[i])/(X[l]-X[i]);
+                        R dxx= dxe/(X[l]-X[i]);
+                        ddf = ddf* xx + 2*df*dxx;
+                        df = df* xx + f*dxx;
+                        f *= xx;
+                    }
+               // cout << "   dof: " << dof << " " << f << " " << df << " " << 1./lE2/(X[1]- X[0]) << " " << E << endl;
+                if( whatd[op_id])val(dof,0,op_id)= f;
+                if( whatd[op_dx]) val(dof,0,op_dx)= df*E.x;
+                if( whatd[op_dy]) val(dof,0,op_dy)= df*E.y;
+                if( whatd[op_dxx]) val(dof,0,op_dxx)= ddf*E.x*E.x;
+                if( whatd[op_dyy]) val(dof,0,op_dyy)= ddf*E.y*E.y;
+                if( whatd[op_dxy]) val(dof,0,op_dxy)= ddf*E.x*E.y;
+               
+            }
+    	}
     }
 
   
diff --git a/examples++-load/MUMPS.cpp b/examples++-load/MUMPS.cpp
new file mode 100644
index 0000000..230f565
--- /dev/null
+++ b/examples++-load/MUMPS.cpp
@@ -0,0 +1,314 @@
+// SUMMARY  :   add interface with partionning library scotch 
+// USAGE    : LGPL      
+// ORG      : LJLL Universite Pierre et Marie Curie, Paris,  FRANCE 
+// AUTHOR   : F. Hecht
+// E-MAIL   : F. Hecht <hecht at ljll.math.upmc.fr>
+//
+
+/* 
+ This file is part of Freefem++
+ 
+ Freefem++ is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+ 
+ Freefem++  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 Lesser General Public License for more details.
+ 
+ You should have received a copy of the GNU Lesser General Public License
+ along with Freefem++; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+ */
+
+//   for automatic  compilation with ff-c++
+//ff-c++-LIBRARY-dep:  mumps-seq blas  libseq  fc  pthread
+//ff-c++-cpp-dep: 
+//
+// F. Hecht  december 2011
+// ----------------------------
+//  file to add MUMPS sequentiel interface for sparce linear solver with dynamic load.
+
+#include  <iostream>
+using namespace std;
+
+
+#include "ff++.hpp"
+
+#include "mpi.h"
+#include "dmumps_c.h"
+#include "zmumps_c.h"
+
+const int  JOB_INIT = -1;
+const int  JOB_END =-2;
+const int JOB_ANA_FAC = 4;
+const int JOB_SOLVE = 3;
+const int USE_COMM_WORLD = -987654; 
+
+template<typename RR> struct MUMPS_STRUC_TRAIT {typedef void MUMPS;  typedef void R; };
+template<> struct MUMPS_STRUC_TRAIT<double>  {typedef DMUMPS_STRUC_C MUMPS; typedef double R;};
+template<> struct MUMPS_STRUC_TRAIT<Complex>  {typedef ZMUMPS_STRUC_C MUMPS; typedef ZMUMPS_COMPLEX R;};
+void mumps_c(DMUMPS_STRUC_C *id) { dmumps_c(id);}  
+void mumps_c(ZMUMPS_STRUC_C *id) { zmumps_c(id);}  
+
+
+template<typename  R>
+class SolveMUMPS_seq :   public MatriceMorse<R>::VirtualSolver 
+{
+public:
+  // typedef double R;
+  double eps;
+  mutable double  epsr;
+  double tgv;
+  typedef typename  MUMPS_STRUC_TRAIT<R>::R MR; 
+  mutable typename MUMPS_STRUC_TRAIT<R>::MUMPS id; 
+
+  int & ICNTL(int i) const  { return id.icntl[i-1];}
+  R & CNTL(int i) const  { return id.cntl[i-1];}
+  int & INFO(int i) const { return id.info[i-1];}
+  R & RINFO(int i) const { return id.rinfo[i-1];}
+  int & INFOG(int i) const { return id.infog[i-1];}
+  R & RINFOG(int i) const { return id.rinfog[i-1];}
+  void SetVerb(int i=verbosity) const {
+    if( verbosity < 5) 
+      { 
+	ICNTL(1)=6;
+	ICNTL(3)=0;
+	ICNTL(4)=0;
+      }
+    else 
+      {
+	ICNTL(1)=6;
+	ICNTL(2)=0;
+	ICNTL(3)=6;
+	ICNTL(4)=0;
+	if(verbosity < 10) ICNTL(4)=1;
+	else if(verbosity < 15) ICNTL(4)=1;
+	else if(verbosity < 20) ICNTL(4)=2;
+	else if(verbosity < 25) ICNTL(4)=3;
+	else ICNTL(4)=4;
+      }
+    //cout << ICNTL(1) << " " << ICNTL(2) << " "<< ICNTL(3) << " "<< ICNTL(4) << endl; 
+  }
+  void Check(const char * msg="mumps-seq") const 
+  {
+    if( INFO(1) !=0) 
+      {
+	cout << " Erreur Mumps number " << INFO(1) << endl;
+	cout << " Fatal Erreur  " << msg << endl;
+	Clean();
+	id.job=JOB_END;
+	mumps_c(&id); /* Terminate instance */
+	int ierr = MPI_Finalize();
+	ErrorExec(msg,INFO(1) ); 
+      }
+  }
+  SolveMUMPS_seq(const MatriceMorse<R> &A,int strategy,double ttgv, double epsilon=1e-6,
+	       double pivot=-1.,double pivot_sym=-1.  ) : 
+    eps(epsilon),epsr(0),
+    tgv(ttgv)
+  { 
+    int myid=0;
+    int ierr=0;
+    int argc=0;
+    char ** argv = 0;;
+    ierr = MPI_Init(&argc, &argv);
+    ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);
+
+    id.job=JOB_INIT;
+    id.par=1;
+    id.sym=A.sym() ;
+    id.comm_fortran=USE_COMM_WORLD;
+    mumps_c(&id);
+    SetVerb();
+
+    ICNTL(5)=0; // input matrix type 
+    ICNTL(7)=7; // NUMBERING ...
+
+    ICNTL(9)=1; // 1: A x = b, !1 : tA x = b 
+    ICNTL(18) = 0; 
+    id.nrhs=0; // 
+    int  n = A.n;
+    int nz = A.nbcoef;
+    ffassert( A.n == A.m) ;
+
+    int * irn = new int[nz];
+    int * jcn = new int[nz];
+    R  * a= new  R [nz];
+    for(int i = 0;i<n;++i)
+      for(int k = A.lg[i]; k<A.lg[i+1];++k)
+      {
+	irn[k]=i+1;
+	jcn[k]=A.cl[k]+1;
+	a[k]= A.a[k];
+      }
+   
+    id.n = n; 
+    id.nz =nz; 
+    id.irn=irn; 
+    id.jcn=jcn;
+    id.a = (MR *) (void  *)a; 
+    id.rhs = 0;
+
+
+
+    id.job=JOB_ANA_FAC; // performs the analysis. and performs the factorization. 
+    mumps_c(&id);
+    Check("MUMPS-seq analayse and Factorize");
+    if(verbosity>3)
+      cout << "  -- MUMPS LU   n=  " << n << ", peak Mem: " << INFOG(22) << " Mb" << " sym: " << id.sym <<  endl;
+
+  }
+  void Solver(const MatriceMorse<R> &A,KN_<R> &x,const KN_<R> &b) const  {
+     ffassert ( &x[0] != &b[0]);
+    epsr = (eps < 0) ? (epsr >0 ? -epsr : -eps ) : eps ;
+    ffassert(A.ChecknbLine( id.n) && id.n == x.N() && A.ChecknbColumn(id.n) );
+    //  convert   array in long ...
+    if(verbosity>2)
+      cout << " -- MUMPS solve,  peak Mem : "<< INFOG(22) << " Mb,   n = " 
+	   << id.n << " sym =" << id.sym <<  endl; 
+    id.nrhs = 1;
+    x = b;
+    id.rhs= (MR *) (void  *) (R*) x;
+    SetVerb();
+    id.job=JOB_SOLVE; // performs the analysis. and performs the factorization. 
+    mumps_c(&id);
+    Check("MUMPS-seq Solve");
+    
+    if(verbosity>3)
+      cout << "   b min max " << b.min() << " " <<b.max() << endl;
+    if(verbosity>1) cout << "   x min max " << x.min() << " " <<x.max() << endl;
+  }
+  void Clean() const 
+  {
+    if(verbosity>10)
+      cout << "~SolveMUMPS_seq:" << this << endl;
+    delete [] id.irn;
+    delete [] id.jcn;
+    delete [] id.a;
+    SetVerb();
+  }
+
+  ~SolveMUMPS_seq() 
+  { 
+    Clean();
+    id.job=JOB_END;
+    mumps_c(&id); /* Terminate instance */
+    int ierr = MPI_Finalize();  
+  }
+
+  void addMatMul(const KN_<R> & x, KN_<R> & Ax) const 
+  {  
+    ffassert(x.N()==Ax.N());
+    Ax +=  (const MatriceMorse<R> &) (*this) * x; 
+  }
+     
+}; 
+
+/*
+template<>
+class SolveMUMPS_seq<Complex> :   public MatriceMorse<Complex>::VirtualSolver  {
+  double eps;
+  mutable double  epsr;
+  double tgv;
+
+
+
+  
+public:
+  SolveMUMPS_seq(const MatriceMorse<Complex> &A,int strategy,double ttgv, double epsilon=1e-6,
+     double pivot=-1.,double pivot_sym=-1.
+) : 
+    eps(epsilon),epsr(0),tgv(ttgv),
+    ar(0),ai(0),
+
+   { 
+    int status;
+    throwassert( !A.sym());
+
+  }
+  void Solver(const MatriceMorse<Complex> &A,KN_<Complex> &x,const KN_<Complex> &b) const  {
+        ffassert ( &x[0] != &b[0]);
+    epsr = (eps < 0) ? (epsr >0 ? -epsr : -eps ) : eps ;
+    if(verbosity>1)
+    {
+      cout << "  -- MUMPS _solve,  peak Mem : " <<  -1 << "Mbytes " << endl;
+      cout << "   b min max " << b.min() << " " <<b.max() << endl;
+      cout << "   x min max " << x.min() << " " <<x.max() << endl;
+    }
+  }
+
+  ~SolveMUMPS_seq() { 
+    if(verbosity>5)
+    cout << "~SolveMUMPS_seq " << endl;
+  }
+  void addMatMul(const KN_<Complex> & x, KN_<Complex> & Ax) const 
+  {  
+    ffassert(x.N()==Ax.N());
+    Ax +=  (const MatriceMorse<Complex> &) (*this) * x; 
+  }
+     
+
+}; 
+*/
+
+inline MatriceMorse<double>::VirtualSolver *
+BuildSolverIMUMPSseq(DCL_ARG_SPARSE_SOLVER(double,A))
+{
+  if(verbosity>3)
+    cout << " BuildSolverMUMPSseq<double>" << endl;
+    return new SolveMUMPS_seq<double>(*A,ds.strategy,ds.tgv,ds.epsilon,ds.tol_pivot,ds.tol_pivot_sym);
+}
+
+inline MatriceMorse<Complex>::VirtualSolver *
+BuildSolverIMUMPSseq(DCL_ARG_SPARSE_SOLVER(Complex,A))
+{
+  if(verbosity>3)
+    cout << " BuildSolverMUMPSseq<Complex>" << endl;
+    return new SolveMUMPS_seq<Complex>(*A,ds.strategy,ds.tgv,ds.epsilon,ds.tol_pivot,ds.tol_pivot_sym);
+}
+
+
+//  the 2 default sparse solver double and complex
+DefSparseSolver<double>::SparseMatSolver SparseMatSolver_R ; ;
+DefSparseSolver<Complex>::SparseMatSolver SparseMatSolver_C;
+DefSparseSolverSym<double>::SparseMatSolver SparseMatSolverSym_R ; ;
+DefSparseSolverSym<Complex>::SparseMatSolver SparseMatSolverSym_C;
+// the default probleme solver 
+TypeSolveMat::TSolveMat  TypeSolveMatdefaultvalue=TypeSolveMat::defaultvalue;
+
+bool SetMUMPS_seq()
+{
+    if(verbosity>1)
+	cout << " SetDefault sparse solver to MUMPSseq" << endl;
+    DefSparseSolver<double>::solver  =BuildSolverIMUMPSseq;
+    DefSparseSolver<Complex>::solver =BuildSolverIMUMPSseq;    
+    DefSparseSolverSym<double>::solver  =BuildSolverIMUMPSseq;
+    DefSparseSolverSym<Complex>::solver =BuildSolverIMUMPSseq;    
+    TypeSolveMat::defaultvalue =TypeSolveMatdefaultvalue;
+    return  true;
+}
+
+
+void init22()
+{    
+  SparseMatSolver_R= DefSparseSolver<double>::solver;
+  SparseMatSolver_C= DefSparseSolver<Complex>::solver;
+  SparseMatSolverSym_R= DefSparseSolverSym<double>::solver;
+  SparseMatSolverSym_C= DefSparseSolverSym<Complex>::solver;
+
+  if(verbosity>1)
+    cout << "\n Add: MUMPS_seq:  defaultsolver defaultsolverMUMPS_seq" << endl;
+  TypeSolveMat::defaultvalue=TypeSolveMat::SparseSolver; 
+  DefSparseSolver<double>::solver =BuildSolverIMUMPSseq;
+  DefSparseSolver<Complex>::solver =BuildSolverIMUMPSseq;
+
+  if(! Global.Find("defaulttoMUMPSseq").NotNull() )
+    Global.Add("defaulttoMUMPSseq","(",new OneOperator0<bool>(SetMUMPS_seq));  
+}
+
+
+LOADFUNC(init22);
diff --git a/examples++-load/Makefile.am b/examples++-load/Makefile.am
index cb598e8..4d0b657 100644
--- a/examples++-load/Makefile.am
+++ b/examples++-load/Makefile.am
@@ -42,6 +42,7 @@ ff-get-dep.in ff-pkg-download.in load.link.in  include.tar.gz \
  RZ.h SortedList.h ExampleMetrics.h  \
  cube.msh  \
  MUMPS_seq.cpp \
+ MUMPS.cpp \
  ff-Ipopt.cpp \
  scotch.cpp    shell.cpp \
  pipe.cpp pstream.h  \
@@ -197,6 +198,7 @@ freefem++.pref:
 	echo loadpath = \"./\" >freefem++.pref
 install-exec-local:: load_compile WHERE_LIBRARY
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/lib
+	test -n "$(MPIPROG)" && $(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/lib/mpi
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/include
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/etc
 	$(INSTALL_DATA)  clapack.h ppmimg.h  bmo.hpp msh3.hpp pcm.hpp  include/*   $(DESTDIR)$(ff_prefix_dir)/include
@@ -214,7 +216,14 @@ install-exec-local:: load_compile WHERE_LIBRARY
 ##	$(DESTDIR)${bindir}/ff-pkg-download $(DESTDIR) >$(DESTDIR)$(ff_prefix_dir)/lib/WHERE_LIBRARY-download
 	-for i in $(LIST_COMPILE_PKG); do \
 	 if [ -f $$i ] ; then 	$(INSTALL)  -m 555 $$i $(DESTDIR)$(ff_prefix_dir)/lib; fi; done
-
+	- if [ -n "$(MPIPROG)" ] ; then \
+		for i in $(LIST_COMPILE_PKG) $(LIST_COMPILE); do \
+		 if [ -f ../examples++-mpi/$$i ] ; then \
+	    	    $(INSTALL)  -m 555 ../examples++-mpi/$$i $(DESTDIR)$(ff_prefix_dir)/lib/mpi; \
+	        else echo missing install mpi version ???  ../examples++-mpi/$$i ;\
+	         fi;  \
+	        done ; \
+	fi
 
 clean-local::
 	-rm *.fg *.eps *~ *.ps  *.mesh *.mesh.gmsh ListOfAllocPtr-8.bin ffglut*.ppm Th.o.meshb	Th3.d.meshb	dep.sol.meshbgh \
diff --git a/examples++-load/Makefile.in b/examples++-load/Makefile.in
index 1399ed7..5d37772 100644
--- a/examples++-load/Makefile.in
+++ b/examples++-load/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,23 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -605,6 +633,7 @@ ff-get-dep.in ff-pkg-download.in load.link.in  include.tar.gz \
  RZ.h SortedList.h ExampleMetrics.h  \
  cube.msh  \
  MUMPS_seq.cpp \
+ MUMPS.cpp \
  ff-Ipopt.cpp \
  scotch.cpp    shell.cpp \
  pipe.cpp pstream.h  \
@@ -761,7 +790,7 @@ cscope cscopelist:
 	$(MAKE) $(AM_MAKEFLAGS) $<
 
 # Leading 'am--fnord' is there to ensure the list of targets does not
-# exand to empty, as could happen e.g. with make check TESTS=''.
+# expand to empty, as could happen e.g. with make check TESTS=''.
 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
 am--force-recheck:
 	@:
@@ -1729,6 +1758,7 @@ freefem++.pref:
 	echo loadpath = \"./\" >freefem++.pref
 install-exec-local:: load_compile WHERE_LIBRARY
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/lib
+	test -n "$(MPIPROG)" && $(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/lib/mpi
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/include
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/etc
 	$(INSTALL_DATA)  clapack.h ppmimg.h  bmo.hpp msh3.hpp pcm.hpp  include/*   $(DESTDIR)$(ff_prefix_dir)/include
@@ -1745,6 +1775,14 @@ install-exec-local:: load_compile WHERE_LIBRARY
 	$(INSTALL_SCRIPT) ff-get-dep  $(DESTDIR)${bindir}
 	-for i in $(LIST_COMPILE_PKG); do \
 	 if [ -f $$i ] ; then 	$(INSTALL)  -m 555 $$i $(DESTDIR)$(ff_prefix_dir)/lib; fi; done
+	- if [ -n "$(MPIPROG)" ] ; then \
+		for i in $(LIST_COMPILE_PKG) $(LIST_COMPILE); do \
+		 if [ -f ../examples++-mpi/$$i ] ; then \
+	    	    $(INSTALL)  -m 555 ../examples++-mpi/$$i $(DESTDIR)$(ff_prefix_dir)/lib/mpi; \
+	        else echo missing install mpi version ???  ../examples++-mpi/$$i ;\
+	         fi;  \
+	        done ; \
+	fi
 
 clean-local::
 	-rm *.fg *.eps *~ *.ps  *.mesh *.mesh.gmsh ListOfAllocPtr-8.bin ffglut*.ppm Th.o.meshb	Th3.d.meshb	dep.sol.meshbgh \
diff --git a/examples++-load/PARDISO.cpp b/examples++-load/PARDISO.cpp
index 62f0235..0511d54 100755
--- a/examples++-load/PARDISO.cpp
+++ b/examples++-load/PARDISO.cpp
@@ -28,8 +28,16 @@
 #include <mkl_pardiso.h>
 #include <mkl_spblas.h>
 #include <mkl_types.h>
-//#include <omp.h>
+#if 0
+#include <omp.h>
+#else
 
+extern "C" {
+extern int    omp_get_max_threads  (void);
+extern int     omp_get_num_threads  (void);
+extern void    omp_set_num_threads (int);
+}
+#endif
 #include "rgraph.hpp"
 #include "AFunction.hpp"
 
@@ -194,9 +202,6 @@ Init::Init() {
 }
 */
 
-extern int    omp_get_max_threads  (void);
-extern int     omp_get_num_threads  (void);
-extern void    omp_set_num_threads (int);
 
 static long ffompgetnumthreads(){return omp_get_num_threads();}
 static long ffompgetmaxthreads(){return omp_get_max_threads();}
diff --git a/examples++-load/ff-Ipopt.cpp b/examples++-load/ff-Ipopt.cpp
index c89578d..870ea75 100644
--- a/examples++-load/ff-Ipopt.cpp
+++ b/examples++-load/ff-Ipopt.cpp
@@ -376,6 +376,11 @@ SparseMatStructure& SparseMatStructure::AddMatrix(Matrice_Creuse<R> const * cons
     n = n > _M->N() ? n : _M->N();
     m = m > _M->M() ? m : _M->M();
     MatriceMorse<R> const * const M = dynamic_cast<MatriceMorse<R> const * const> (&(*_M->A));
+    if( !M ) {
+        cerr << " Err= "<< " Matrix is not morse or CSR "<< &(*_M->A) << endl;
+        ffassert(M);
+    }
+     {
     if(!sym || (sym && M->symetrique))
     {
         for(int i=0;i < M->N;++i)
@@ -390,6 +395,7 @@ SparseMatStructure& SparseMatStructure::AddMatrix(Matrice_Creuse<R> const * cons
             for(int k=M->lg[i]; k < M->lg[i+1]; ++k) if(i >= M->cl[k]) structure.insert(Z2(i,M->cl[k]));
         }
     }
+    }
     return *this;
 }
 template<class INT> SparseMatStructure& SparseMatStructure::AddArrays(const KN<INT> &I,const KN<INT> &J)
diff --git a/examples++-load/ffrandom.edp b/examples++-load/ffrandom.edp
index aef7e45..18247ea 100644
--- a/examples++-load/ffrandom.edp
+++ b/examples++-load/ffrandom.edp
@@ -1,5 +1,9 @@
 load "ffrandom"
-srandomdev();
+srandomdev();  
+//  warning under window this
+// change the seed by  randinit(random()) ) so all
+// freefem++ random function are change..
+
 cout << random() << endl;
 cout << random() << endl;
 cout << random() << endl;
@@ -7,3 +11,5 @@ srandom(10);
 cout << random() << endl;
 cout << random() << endl;
 cout << random() << endl;
+
+
diff --git a/examples++-load/gmsh.cpp b/examples++-load/gmsh.cpp
index 35ddce9..8d95525 100644
--- a/examples++-load/gmsh.cpp
+++ b/examples++-load/gmsh.cpp
@@ -37,6 +37,9 @@
 //       Th3_t->BuildjElementConteningVertex();
 //   is now in the constructor of Mesh3 to be consistante. 
 //   
+//  Vincent HUBER - vincent.huber at cemosis.fr   October 2014
+//  manage verbosity levels
+//
 #include "ff++.hpp"
 
 using namespace Fem2D;
@@ -77,7 +80,7 @@ public:
   GMSH_LoadMesh_Op(const basicAC_F0 &  args,Expression ffname) 
     : filename(ffname)
   {
-    if(verbosity) cout << "Load mesh given by GMSH " << endl;
+    if(verbosity>1) cout << "Load mesh given by GMSH " << endl;
     args.SetNameParam(n_name_param,name_param,nargs);
   } 
   
@@ -123,20 +126,20 @@ Mesh * GMSH_Load(const string & filename)
 	  if(!fgets(str, sizeof(str), fp)) exit(1);
 	  int format, size;
 	  if(sscanf(str, "%lf %d %d", &version, &format, &size) != 3) exit(1);
-	  cout << "Mesh Format is " <<  format << endl;
+	  if(verbosity>1) cout << "Mesh Format is " <<  format << endl;
 	  if(format){
 	    binary = true;
-	    cout << "Mesh is in binary format" << endl;
+	    if(verbosity>2) cout << "Mesh is in binary format" << endl;
 	    int one;
 	    if(fread(&one, sizeof(int), 1, fp) != 1) exit(1);
 	    if(one != 1){
 	      swap = true;
-	      cout << "Swapping bytes from binary file" << endl;
+	      if(verbosity>2) cout << "Swapping bytes from binary file" << endl;
 	    }
 	  }
 	}
 	else if(!strncmp(&str[1], "PhysicalNames", 13)) {	  
-	  cout << " PhysicalNames is not considered in freefem++ " << endl;
+	  if(verbosity>0) cout << " PhysicalNames is not considered in freefem++ " << endl;
 	}
 	
 	else if(!strncmp(&str[1], "NO", 2) || !strncmp(&str[1], "Nodes", 5) ||
@@ -185,7 +188,7 @@ Mesh * GMSH_Load(const string & filename)
 	  int numElements;
 	  sscanf(str, "%d", &numElements);
 	   
-	  if(verbosity) cout << "Loading elements\n" << endl; 
+	  if(verbosity>2) cout << "Loading elements\n" << endl; 
 	  if(!binary){
 	    for(int i = 0; i < numElements; i++) {
 	      int num, type, physical = 0, elementary = 0, partition = 0, numVertices;
@@ -213,8 +216,8 @@ Mesh * GMSH_Load(const string & filename)
 	      if( type == 1 ) nbe++;
 	      if( type == 2 ) nt++;
 	      if( type == 4 ){
-		cout << "We are loading a two dimensionnal mesh " << endl;
-		exit(1);
+					cout << "We are loading a two dimensionnal mesh " << endl;
+					exit(1);
 	      }
 	      
 	      int indices[60];
@@ -323,7 +326,7 @@ Mesh * GMSH_Load(const string & filename)
 		int iv0,iv1;
 		iv0 = mapnumv[ indices[0] ];	
 		iv1 = mapnumv[ indices[1] ];
-		cout << "Elem " << ie+1 << " " << iv0+1 << " " << iv1+1 << endl;
+		if(verbosity>2) cout << "Elem " << ie+1 << " " << iv0+1 << " " << iv1+1 << endl;
 		(bbff++)->set(vff, iv0, iv1, physical);
 		ie++;
 	      }
@@ -332,12 +335,12 @@ Mesh * GMSH_Load(const string & filename)
 		iv0 = mapnumv[ indices[0] ];	
 		iv1 = mapnumv[ indices[1] ];
 		iv2 = mapnumv[ indices[2] ];	
-		cout << "Triangles " << it+1 << " " << iv0+1 << " " << iv1+1 << " " << iv2+1 << endl;
+		if(verbosity>2) cout << "Triangles " << it+1 << " " << iv0+1 << " " << iv1+1 << " " << iv2+1 << endl;
 		
 		(ttff++)->set(vff, iv0, iv1, iv2, physical);
-		cout << "mes=" << tff[it].area << endl;
+		if(verbosity>2) cout << "mes=" << tff[it].area << endl;
 		if( tff[it].area < 1e-8 ){
-		  cout << "bug" << endl;
+		  cout << "bug : mes < 1e-8 !" << endl;
 		  exit(1);
 		}
 		it++;
@@ -405,12 +408,12 @@ Mesh * GMSH_Load(const string & filename)
 	  }
 	}
         else if(!strncmp(&str[1], "NodeData", 8)) {
-	  cout << " NodeData is not considered in freefem++ " << endl;
+	  if(verbosity>1) cout << " NodeData is not considered in freefem++ " << endl;
 	}
 	else if(!strncmp(&str[1], "ElementData", 11) ||
 		!strncmp(&str[1], "ElementNodeData", 15)){
 
-	  cout << " ElementData/ElementNodeData is not considered in freefem++ " << endl;
+	  if(verbosity>1) cout << " ElementData/ElementNodeData is not considered in freefem++ " << endl;
 	}
       }
     }
@@ -456,7 +459,7 @@ public:
   GMSH_LoadMesh3_Op(const basicAC_F0 &  args,Expression ffname) 
     : filename(ffname)
   {
-    if(verbosity) cout << "Load mesh given by GMSH " << endl;
+    if(verbosity>1) cout << "Load mesh given by GMSH " << endl;
     args.SetNameParam(n_name_param,name_param,nargs);
   } 
   
@@ -504,17 +507,17 @@ Mesh3 * GMSH_Load3(const string & filename)
 	  if(sscanf(str, "%lf %d %d", &version, &format, &size) != 3) exit(1);
 	  if(format){
 	    binary = true;
-	    cout << "Mesh is in binary format" << endl;
+	    if(verbosity>1) cout << "Mesh is in binary format" << endl;
 	    int one;
 	    if(fread(&one, sizeof(int), 1, fp) != 1) exit(1);
 	    if(one != 1){
 	      swap = true;
-	      cout << "Swapping bytes from binary file" << endl;
+	      if(verbosity>1) cout << "Swapping bytes from binary file" << endl;
 	    }
 	  }
 	}
 	else if(!strncmp(&str[1], "PhysicalNames", 13)) {
-	  cout << " PhysicalNames is not considered in freefem++ " << endl;
+	  if(verbosity>1) cout << " PhysicalNames is not considered in freefem++ " << endl;
 	}
 	
 	else if(!strncmp(&str[1], "NO", 2) || !strncmp(&str[1], "Nodes", 5) ||
@@ -592,7 +595,7 @@ Mesh3 * GMSH_Load3(const string & filename)
 		
 		if( type == 1 ){
 		  if(i==0)
-		    cout << "edges in 3D mesh are not considered yet in freefem++, skeep data" << endl;	
+		   if(verbosity>0)  cout << "edges in 3D mesh are not considered yet in freefem++, skeep data" << endl;	
 		}
 		if( type == 2 ) nbe++;
 		if( type == 4 ) nt++;
@@ -617,7 +620,7 @@ Mesh3 * GMSH_Load3(const string & filename)
 		if( (numVertices = nvElemGmsh[type-1]) == 0){
 		  cout << "Element of type " << type  << " is not considered in Freefem++" << endl;
 		  exit(1);
-	      }
+	  }
 		unsigned int n = 1 + numTags + numVertices;
 		int *data = new int[n];
 		
@@ -631,7 +634,7 @@ Mesh3 * GMSH_Load3(const string & filename)
 		  int *indices = &data[numTags + 1];
 		  
 		  if( type == 1 && i==0 ){
-		    cout << "edges in 3D mesh are not used in freefem++,skeep data" << endl;
+		   cout << "edges in 3D mesh are not used in freefem++,skeep data" << endl;
 		    //exit(1);
 		  }
 		  if( type == 2 ) nbe++;
@@ -648,7 +651,7 @@ Mesh3 * GMSH_Load3(const string & filename)
     }
     fclose(fp);
     
-    cout << "closing file " << nt << " " << nbe << endl;
+   if(verbosity>1)  cout << "closing file " << nt << " " << nbe << endl;
 
     Tet *tff  = new Tet[nt];
     Tet *ttff = tff;
@@ -780,12 +783,12 @@ Mesh3 * GMSH_Load3(const string & filename)
 	  }
 	}
         else if(!strncmp(&str[1], "NodeData", 8)) {
-	  cout << " NodeData is not considered in freefem++ " << endl;
+	  if(verbosity) cout << " NodeData is not considered in freefem++ " << endl;
 	}
 	else if(!strncmp(&str[1], "ElementData", 11) ||
 		!strncmp(&str[1], "ElementNodeData", 15)){
 
-	  cout << " ElementData/ElementNodeData is not considered in freefem++ " << endl;
+	 if(verbosity)  cout << " ElementData/ElementNodeData is not considered in freefem++ " << endl;
 	}
       }
     }
@@ -830,8 +833,8 @@ LOADINIT(Init1)  //  une variable globale qui serat construite  au chargement dy
 Init1::Init1(){  // le constructeur qui ajoute la fonction "splitmesh3"  a freefem++ 
   
   //if (verbosity)
-  if(verbosity) cout << " load: gmsh " << endl;
+  if(verbosity>1) cout << " load: gmsh " << endl;
   Global.Add("gmshload3","(",new GMSH_LoadMesh3);
   Global.Add("gmshload","(",new GMSH_LoadMesh);
-  if(verbosity) cout << " load: gmsh  " << endl;
+  if(verbosity>1) cout << " load: gmsh  " << endl;
 }
diff --git a/examples++-load/iovtk.cpp b/examples++-load/iovtk.cpp
index 1bbc806..72af3c1 100644
--- a/examples++-load/iovtk.cpp
+++ b/examples++-load/iovtk.cpp
@@ -1013,6 +1013,8 @@ Mesh * VTK_Load(const string & filename, bool bigEndian)
 {
   // variable freefem++
   int nv, nt=0, nbe=0;
+  int nerr=0;
+
   Mesh::Vertex   *vff;
   map<int,int> mapnumv;
 
@@ -1181,7 +1183,8 @@ Mesh * VTK_Load(const string & filename, bool bigEndian)
     TypeCells[i] = type;
     switch(type){
     case 1:  // Vertex
-      cout << "this type of cell is not taking account in Freefem++ " << endl;
+      if(nerr++<10 && verbosity )
+           cout << "this type of cell (vertex) is not taking account in Freefem++ " << type <<  endl;
       break;
     case 3:  // Edge/line
       nbe++; // 2D	
@@ -1194,7 +1197,7 @@ Mesh * VTK_Load(const string & filename, bool bigEndian)
       ExecError("error in reading vtk file");
       break;  
     default: 
-      cout << "Error :: This type of cell is not considered in Freefem++"<< endl;
+      cout << "Error :: This type of cell is not considered in Freefem++ "<< type << endl;
       ExecError("error in reading vtk file");
       break;
       }
@@ -1210,14 +1213,14 @@ Mesh * VTK_Load(const string & filename, bool bigEndian)
     Mesh::BorderElement *bff;
     if(nbe>0) bff= new Mesh::BorderElement[nbe];
     Mesh::BorderElement *bbff = bff;
-
     for(unsigned int i = 0; i < numElements; i++){
       int type=TypeCells[i];
       int iv[3];
       int label=1;
       switch(type){
       case 1:  // Vertex
-	cout << "this type of cell is not taking account in Freefem++ " << endl;
+              
+	if(nerr++<10 && verbosity ) cout << "this type of cell (vertex) is not taking account in Freefem++ " <<  type << " " << endl;
 	break;
       case 3:  // Edge/line
 	assert( (firstCell[i+1]-firstCell[i]) == 2 );
@@ -2266,7 +2269,7 @@ AnyType VTK_WriteMesh_Op::operator()(Stack stack)  const
   int lll = strlen(pch);
   if      (!strcmp(pch+ lll - (ls=4),".vtk"))  VTK_FILE = 1;
   else if (!strcmp(pch + lll - (ls=4),".vtu")) VTK_FILE = 2;
-  cout << pffname << " VTK_FILE "<< VTK_FILE << endl;
+  if(verbosity) cout << " " << pffname << " VTK_FILE "<< VTK_FILE << endl;
   if( VTK_FILE == 1 ){  
     // CAS VTK
     VTK_WRITE_MESH( *pffname, fp, Th, binary, datasize, surface, swap);    		
@@ -2441,9 +2444,10 @@ AnyType VTK_WriteMesh_Op::operator()(Stack stack)  const
     fprintf(fp,"</UnstructuredGrid>\n");
     fprintf(fp,"</VTKFile>\n");
   }
-  else{
-    cout << "extension file is not correct " << endl;
-    exit(1);
+  else
+  {
+    cout << " iovtk extension file is not correct (" << VTK_FILE << " != 1 or 2 ) " <<  endl;
+    ExecError(" iovtk : extension file");
   }
   
   // close file fp
@@ -2509,7 +2513,7 @@ Mesh3 * VTK_Load3(const string & filename, bool bigEndian)
 {
   // variable freefem++
   int nv, nt=0, nbe=0;
- 
+    int nerr=0;
   // Reading Mesh in vtk formats 
   FILE *fp = fopen(filename.c_str(), "rb");
   if(!fp){
@@ -2526,14 +2530,18 @@ Mesh3 * VTK_Load3(const string & filename, bool bigEndian)
   bool binary = false;
   if( !strcmp(buffer, "BINARY") ) binary = true;
     
-  if(fscanf(fp, "%s %s", buffer, buffer2) != 2){ cout << "error in reading vtk files" << endl; ExecError("error in reading vtk file"); }
+  if(fscanf(fp, "%s %s", buffer, buffer2) != 2){
+      cout << "error in reading vtk files" << endl;
+      ExecError("error in reading vtk file"); }
   if(strcmp(buffer, "DATASET") || strcmp(buffer2, "UNSTRUCTURED_GRID")){
     cout << "VTK reader can only read unstructured datasets" << endl;
     ExecError("error in reading vtk file");
   }
     
   // read mesh vertices
-  if(fscanf(fp, "%s %d %s\n", buffer, &nv, buffer2) != 3){ cout << "error in reading vtk files" << endl; ExecError("error in reading vtk file"); } 
+  if(fscanf(fp, "%s %d %s\n", buffer, &nv, buffer2) != 3){
+      cout << "error in reading vtk files" << endl;
+      ExecError("error in reading vtk file"); }
   if(strcmp(buffer, "POINTS") || !nv){
     cerr << "No points in dataset" << endl;
     ExecError("error in reading vtk file");
@@ -2547,51 +2555,65 @@ Mesh3 * VTK_Load3(const string & filename, bool bigEndian)
     cout << "VTK reader only accepts float or double datasets" << endl;
     ExecError("error in reading vtk file");
   }
-    
-  cout << "Reading %d points" << nv << " buffer2" <<  buffer2 << "binary" << binary << " " << datasize << " "<< sizeof(float) << endl;
+  if(verbosity>3)
+   cout << "Reading %d points" << nv << " buffer2" <<  buffer2 << "binary"
+        << binary << " " << datasize << " "<< sizeof(float) << endl;
   Vertex3   *vff = new Vertex3[nv];
     
   for(int i = 0 ; i < nv; i++){
-    cout << " i=" << i << endl;
+     if(verbosity>9)
+      cout << " i=" << i << endl;
     double xyz[3];
     if(binary){
       if(datasize == sizeof(float)){
 	float f[3];
-	if(fread(f, sizeof(float), 3, fp) != 3){ cout << "error in reading vtk files" << endl; ExecError("error in reading vtk file"); }
+	if(fread(f, sizeof(float), 3, fp) != 3){
+                cout << "error in reading vtk files" << endl;
+                ExecError("error in reading vtk file"); }
 	if(!bigEndian) SwapBytes((char*)f, sizeof(float), 3);
 	for(int j = 0; j < 3; j++) xyz[j] = f[j];
       }
       else{
-	if(fread(xyz, sizeof(double), 3, fp) != 3){ cout << "error in reading vtk files" << endl; ExecError("error in reading vtk file"); }
+	if(fread(xyz, sizeof(double), 3, fp) != 3){
+               cout << "error in reading vtk files" << endl;
+               ExecError("error in reading vtk file"); }
 	if(!bigEndian) SwapBytes((char*)xyz, sizeof(double), 3);
       }
     }
     else{
       cout << datasize << " "<< sizeof(float) << endl;
       if(datasize == sizeof(float)){ 
-	if(fscanf(fp, "%lf %lf %lf", &xyz[0], &xyz[1], &xyz[2]) != 3){ cout << "error in reading vtk files (float)" << endl; ExecError("error in reading vtk file"); }
+	if(fscanf(fp, "%lf %lf %lf", &xyz[0], &xyz[1], &xyz[2]) != 3){
+               cout << "error in reading vtk files (float)" << endl;
+              ExecError("error in reading vtk file"); }
       }
       else{
-	if(fscanf(fp, "%lf %lf %lf", &xyz[0], &xyz[1], &xyz[2]) != 3){ cout << "error in reading vtk files (double)" << endl; ExecError("error in reading vtk file"); } 
+	if(fscanf(fp, "%lf %lf %lf", &xyz[0], &xyz[1], &xyz[2]) != 3){
+               cout << "error in reading vtk files (double)" << endl;
+               ExecError("error in reading vtk file"); }
       }
     }
     vff[i].x = xyz[0];
     vff[i].y = xyz[1];
     vff[i].z = xyz[2];
     vff[i].lab = 1;
-    
-    printf( "xyz = %f %f %f\n", xyz[0],xyz[1], xyz[2]);
+    if(verbosity>9)
+      printf( "xyz = %f %f %f\n", xyz[0],xyz[1], xyz[2]);
   }    
 
   // read mesh elements
   int numElements, numElements2, totalNumInt;
-  if(fscanf(fp, "%s %d %d\n", buffer, &numElements, &totalNumInt) != 3){ cout << "error in reading vtk files" << endl; ExecError("error in reading vtk file"); }
-  printf("reading parameter %s %d %d\n", buffer, numElements, totalNumInt);
-  if(strncmp(buffer, "CELLS",5) || !numElements){
-    cout << "No cells in dataset" << endl;
-    ExecError("error in reading vtk file");
-  }
-  cout << "Reading cells" << numElements << endl;
+  if(fscanf(fp, "%s %d %d\n", buffer, &numElements, &totalNumInt) != 3){
+      cout << "error in reading vtk files" << endl;
+      ExecError("error in reading vtk file"); }
+   if(verbosity>3)
+    printf("reading parameter %s %d %d\n", buffer, numElements, totalNumInt);
+   if(strncmp(buffer, "CELLS",5) || !numElements){
+     cout << "No cells in dataset" << endl;
+     ExecError("error in reading vtk file");
+  }
+   if(verbosity>3)
+    cout << "Reading cells" << numElements << endl;
   
   int *IntCells   = new int[totalNumInt-numElements];
   int *firstCell  = new int[numElements+1];
@@ -2600,6 +2622,7 @@ Mesh3 * VTK_Load3(const string & filename, bool bigEndian)
   
   for(unsigned int i = 0; i < numElements; i++){
     int numVerts, n[100];
+     if(verbosity>9)
     cout << "i=" << i << " " << numElements << endl;
     for(int ii = 0; ii < 100; ii++) n[ii]=-1;
     if(binary){
@@ -2625,7 +2648,8 @@ Mesh3 * VTK_Load3(const string & filename, bool bigEndian)
 	  cout << "error in reading VTK files " << endl;
 	  ExecError("error in reading vtk file");
 	}
-	cout << "n[j]" << n[j] << endl;
+        if(verbosity>9)
+	cout << "  n[j]" << n[j] << endl;
       }
     }
     firstCell[i] = numIntCells;
@@ -2650,7 +2674,7 @@ Mesh3 * VTK_Load3(const string & filename, bool bigEndian)
     cout <<"No or invalid number of cells types" << endl;
     ExecError("error in reading vtk file");
   }
-  
+   if(verbosity>3)
   printf( "reading parameter %s %d\n", buffer, numElements2);
   
   // 3D 
@@ -2673,7 +2697,7 @@ Mesh3 * VTK_Load3(const string & filename, bool bigEndian)
     TypeCells[i] = type;
       switch(type){
       case 1:  // Vertex
-	cout << "this type of cell is not taking account in Freefem++ " << endl;
+	 if(nerr++< 3 && verbosity)  cout << "this type of cell (vertex) is not taking account in Freefem++ " << endl;
 	break;
       case 3:  // Edge/line
 	cout << "this type of cell is not taking account in Freefem++ for a two dimensional mesh" << endl; // 3D
@@ -2710,7 +2734,7 @@ Mesh3 * VTK_Load3(const string & filename, bool bigEndian)
       int label=1;
       switch(type){
       case 1:  // Vertex
-	cout << "this type of cell is not taking account in Freefem++ " << endl;
+	 if(nerr++<3 && verbosity) cout << "this type of cell is not taking account in Freefem++ " << endl;
 	break;
       case 3:  // Edge/line
 	break;
diff --git a/examples++-load/load.link.in b/examples++-load/load.link.in
index 6e9e30f..b3ce53b 100755
--- a/examples++-load/load.link.in
+++ b/examples++-load/load.link.in
@@ -181,12 +181,21 @@ fi
 if [ -z "$out" ] ; then  out=$o  ; fi;
 if [ -f  "$out.$SUF" ] ; then rm $out.$SUF ; fi 
 
+
 # Default compiler
 if [ -z "$CXX"  ];then  CXX=g++ ; fi
 if [ -n "$withmpi" ]; then  CXX=$MPICXX;fi
 
 test "$withmpi" = "yes" && WMPI_LIB="$MPI_LIB"
 
+# build a mpi version of the plugin if the plugin do exist un mpi dir
+# and if the mpi version exist and if 
+OWMPI=""
+test  -d ../examples++-mpi -a -n "$MPI_LIB" -a "$withmpi" != "yes" -a ! -f  "../examples++-mpi/$out.cpp"  &&  OWMPI="../examples++-mpi/$out.$SUF"
+test -f "$OWMPI" -a -n "$OWMPI" && rm "$OWMPI"
+
+
+
 INC="$INCFF $INC"  
 SHARED="-shared"
 case "$WIN32$uu" in
@@ -271,6 +280,13 @@ if [ -n "$ffiles$files$fileso" ] ; then
 	if [ -n "$DLL" ] ; then
 	    echo cp $DLL $bin
 	    test $do = yes &&   cp $DLL "$bin"
+	fi 
+	if [ -n "$OWMPI" ] ; then
+	    echo $CXX $SHARED $FLAGS $CXXFLAGS $FFCXXFLAGS $fileso -o $OWMPI $LIBS $DLL $OTHER $MPI_LIB
+	    if [  $do = yes ] ; then 
+		eval $CXX $SHARED $FLAGS $CXXFLAGS $FFCXXFLAGS $fileso -o $OWMPI $LIBS $DLL $OTHER $MPI_LIB
+		ret=$?; if [ $ret -ne 0 ] ; then exit $ret ;fi
+	    fi
 	fi
     fi
 fi
diff --git a/examples++-load/msh3.cpp b/examples++-load/msh3.cpp
index e77a4ce..823f22c 100644
--- a/examples++-load/msh3.cpp
+++ b/examples++-load/msh3.cpp
@@ -4295,6 +4295,7 @@ AnyType BuildLayeMesh_Op::operator()(Stack stack)  const
   clayer=-1;
   zmin=0.;
   zmax=1.;
+    double maxdz = 0;   
   for (int it=0;it<nbt;++it){
     for(int iv=0;iv<3;++iv)      
     {
@@ -4305,12 +4306,13 @@ AnyType BuildLayeMesh_Op::operator()(Stack stack)  const
 	  //cout << "mp: fait " << endl;
 	  if(ezmin){ zmin[i]=GetAny<double>((*ezmin)(stack));}
 	  if(ezmax){ zmax[i]=GetAny<double>((*ezmax)(stack));}
-
+	  maxdz = max(maxdz, abs(zmin[i]-zmax[i]));
 	  clayer[i]=Max( 0. , Min( 1. , arg(2,stack,1.) ) ); 
 	
 	}	     
     }
   }
+  
   ffassert(clayer.min() >=0);
 
   if(verbosity >1) cout << "lecture valeur des references " << endl;
@@ -4372,11 +4374,14 @@ AnyType BuildLayeMesh_Op::operator()(Stack stack)  const
     
   int nebn =0;
   KN<int> ni(nbv);
+    double epsz = maxdz *1e-6;
+ if(verbosity>9999)    cout << "BuildLayeMesh_Op:: epsz " << epsz <<endl; 
   for(int i=0;i<nbv;i++)
     {
       ni[i]=Max(0,Min(nlayer,(int) lrint(nlayer*clayer[i])));
+      if(abs(zmin[i]-zmax[i]) < epsz) ni[i]=0; // Corr FH aug. 2014...
     }
- 
+  if(verbosity>9999)    cout << " BuildLayeMesh_Op: ni = " << ni << endl; 
   // triangle 
   for (int it=0;it<nbt;++it){
     const Mesh::Element &K(Th.t(it));
diff --git a/examples++-load/testFE-PkEdge.edp b/examples++-load/testFE-PkEdge.edp
index 09d5e4f..69543b2 100644
--- a/examples++-load/testFE-PkEdge.edp
+++ b/examples++-load/testFE-PkEdge.edp
@@ -1,10 +1,12 @@
 load "Element_PkEdge"
 // a macro the compute numerical derivative
 macro DD(f,hx,hy) ( (f(x1+hx,y1+hy)-f(x1-hx,y1-hy))/(2*(hx+hy))) //
-mesh Th=square(1,1,[10*(x+y/3),10*(y-x/3)]);
-// Th=square(1,1);
+mesh Th=square(1,1,flags=0,[10*(x+y/3),10*(y-x/3)]);
+Th=square(1,1,flags=0   );
+plot(Th,wait=1);
 //savemesh(Th,"Th.msh");
-real x1=0.7,y1=0.9, h=1e-7;
+real x1=0.4,y1=0.4;//10*(x+y/3),y1=10*(y-x/3), 
+real h=1e-5 ;
 int it1=Th(x1,y1).nuTriangle; 
 
 // FFCS: store reference value
@@ -43,13 +45,14 @@ real regtest;
       /*  check the derivative and numerical derivative */
       /* no derivative in this element.  */
       
-      /*
-	cout << " dx(a1)(x1,y1) = " << dx(a1)(x1,y1) << " == " << DD(a1,h,0) << endl; 
-	assert( abs(dx(a1)(x1,y1)-DD(a1,h,0) ) < 1e-5);
-	assert( abs(dx(a2)(x1,y1)-DD(a2,h,0) ) < 1e-5);
-	assert( abs(dy(a1)(x1,y1)-DD(a1,0,h) ) < 1e-5);
-	assert( abs(dy(a2)(x1,y1)-DD(a2,0,h) ) < 1e-5);
-      */
+      
+	cout << " dx(a1)(x1,y1) =  " << dx(a1)(x1,y1) << "  == " 
+	   << DD(a1,h,0) << " DD " << " /  " 
+	   << (a1(0.001,0.001) -  a1(0.999,0.999))/2 <<endl; 
+	assert( abs(dx(a1)(x1,y1)-DD(a1,h,0) ) < 1e-4);
+	assert( abs(dy(a1)(x1,y1)-DD(a1,0,h) ) < 1e-4);
+	/*sassert( abs(dy(a2)(x1,y1)-DD(a2,0,h) ) < 1e-5);*/
+     
       
     } 
   regtest=a1'*a1;
diff --git a/src/fflib/._lgfem.hpp b/examples++-mpi/._MUMPS.cpp
old mode 100644
new mode 100755
similarity index 100%
rename from src/fflib/._lgfem.hpp
rename to examples++-mpi/._MUMPS.cpp
diff --git a/examples++-mpi/MUMPS.cpp b/examples++-mpi/MUMPS.cpp
index 4101853..1db1efb 100755
--- a/examples++-mpi/MUMPS.cpp
+++ b/examples++-mpi/MUMPS.cpp
@@ -60,6 +60,7 @@ template<> struct MPI_TYPE<long>      {static const MPI_Datatype  TYPE(){return
 template<> struct MPI_TYPE<int>      {static const MPI_Datatype TYPE(){return MPI_INT;}};
 template<> struct MPI_TYPE<double>    {static const MPI_Datatype TYPE(){return MPI_DOUBLE;}};
 template<> struct MPI_TYPE<char>    {static const MPI_Datatype TYPE(){return MPI_BYTE;}};
+template<> struct MPI_TYPE<Complex>    {static const MPI_Datatype TYPE(){return MPI_DOUBLE_COMPLEX;}};
 
 
 static std::string analysis[] = {"AMD", "", "AMF", "SCOTCH", "PORD", "METIS", "QAMD", "automatic sequential", "automatic parallel", "PT-SCOTCH", "ParMetis"};
diff --git a/examples++-mpi/Makefile.am b/examples++-mpi/Makefile.am
index bf4de00..13d2c21 100644
--- a/examples++-mpi/Makefile.am
+++ b/examples++-mpi/Makefile.am
@@ -84,11 +84,11 @@ endif
 	../examples++-load/ff-c++ -auto -mpi $<
 
 install-exec-local:: 
-	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/lib
+	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/lib/mpi
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/include
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/etc
 	-for i in $(LIST_COMPILE); do \
-	 if [ -f $$i ] ; then 	$(INSTALL)  -m 555 $$i $(DESTDIR)$(ff_prefix_dir)/lib; fi; done
+	 if [ -f $$i ] ; then 	$(INSTALL)  -m 555 $$i $(DESTDIR)$(ff_prefix_dir)/lib/mpi; fi; done
 	$(INSTALL)  -m 555  $(LIST_IDP)  $(DESTDIR)$(ff_prefix_dir)/idp
 
 
diff --git a/examples++-mpi/Makefile.in b/examples++-mpi/Makefile.in
index d3d296b..3d5b74c 100644
--- a/examples++-mpi/Makefile.in
+++ b/examples++-mpi/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -37,23 +37,51 @@
 # ======================================================================
 # headeralh default=0 freefem make multipleauthors start=19/03/10 upmc
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -650,7 +678,7 @@ cscope cscopelist:
 	$(MAKE) $(AM_MAKEFLAGS) $<
 
 # Leading 'am--fnord' is there to ensure the list of targets does not
-# exand to empty, as could happen e.g. with make check TESTS=''.
+# expand to empty, as could happen e.g. with make check TESTS=''.
 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
 am--force-recheck:
 	@:
@@ -1160,11 +1188,11 @@ uninstall-am:
 	../examples++-load/ff-c++ -auto -mpi $<
 
 install-exec-local:: 
-	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/lib
+	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/lib/mpi
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/include
 	$(mkinstalldirs) -m 755 $(DESTDIR)$(ff_prefix_dir)/etc
 	-for i in $(LIST_COMPILE); do \
-	 if [ -f $$i ] ; then 	$(INSTALL)  -m 555 $$i $(DESTDIR)$(ff_prefix_dir)/lib; fi; done
+	 if [ -f $$i ] ; then 	$(INSTALL)  -m 555 $$i $(DESTDIR)$(ff_prefix_dir)/lib/mpi; fi; done
 	$(INSTALL)  -m 555  $(LIST_IDP)  $(DESTDIR)$(ff_prefix_dir)/idp
 
 freefem++.pref:Makefile
diff --git a/examples++-mpi/parms_FreeFem.cpp b/examples++-mpi/parms_FreeFem.cpp
index a0ce3c3..f27434a 100644
--- a/examples++-mpi/parms_FreeFem.cpp
+++ b/examples++-mpi/parms_FreeFem.cpp
@@ -215,7 +215,7 @@ public:
 		if(param_int.N()>12){if(param_int[12]>0) prepar->lfil[4]=param_int[12]; else prepar->lfil[4]=20;}
 		else prepar->lfil[4]=20; /* lfil for Schur complement const.   */
 
-		if(param_int.N()>13){if(param_int[13]>0) prepar->lfil[5]=param_int[13]; else prepar->lfil[13]=20;}
+		if(param_int.N()>13){if(param_int[13]>0) prepar->lfil[5]=param_int[13]; else prepar->lfil[5]=20;}
 		else prepar->lfil[5]=20; /* lfil for Schur complement const.   */		
 
 		if(param_int.N()>14){if(param_int[14]>0) prepar->mc=param_int[14]; else prepar->mc=1; }
diff --git a/examples++-other/Makefile.in b/examples++-other/Makefile.in
index 229b1e2..6ea2c7e 100644
--- a/examples++-other/Makefile.in
+++ b/examples++-other/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,23 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -594,7 +622,7 @@ cscope cscopelist:
 	$(MAKE) $(AM_MAKEFLAGS) $<
 
 # Leading 'am--fnord' is there to ensure the list of targets does not
-# exand to empty, as could happen e.g. with make check TESTS=''.
+# expand to empty, as could happen e.g. with make check TESTS=''.
 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
 am--force-recheck:
 	@:
diff --git a/download/blas/._Makefile.am b/examples++-tutorial/._NSUzawaCahouetChabart.edp
similarity index 100%
copy from download/blas/._Makefile.am
copy to examples++-tutorial/._NSUzawaCahouetChabart.edp
diff --git a/download/blas/._Makefile.am b/examples++-tutorial/._cavityNewtow.edp
similarity index 100%
copy from download/blas/._Makefile.am
copy to examples++-tutorial/._cavityNewtow.edp
diff --git a/download/blas/._Makefile.am b/examples++-tutorial/._schwarz-no-overlap.edp
similarity index 100%
rename from download/blas/._Makefile.am
rename to examples++-tutorial/._schwarz-no-overlap.edp
diff --git a/examples++-tutorial/Makefile.in b/examples++-tutorial/Makefile.in
index f6bf267..a091b64 100644
--- a/examples++-tutorial/Makefile.in
+++ b/examples++-tutorial/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,23 +16,51 @@
 
 # $Id$
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -620,6 +648,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+
 Laplace$(EXEEXT): $(Laplace_OBJECTS) $(Laplace_DEPENDENCIES) $(EXTRA_Laplace_DEPENDENCIES) 
 	@rm -f Laplace$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(Laplace_OBJECTS) $(Laplace_LDADD) $(LIBS)
@@ -707,7 +736,7 @@ distclean-tags:
 	$(MAKE) $(AM_MAKEFLAGS) $<
 
 # Leading 'am--fnord' is there to ensure the list of targets does not
-# exand to empty, as could happen e.g. with make check TESTS=''.
+# expand to empty, as could happen e.g. with make check TESTS=''.
 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
 am--force-recheck:
 	@:
diff --git a/examples++-tutorial/NSUzawaCahouetChabart.edp b/examples++-tutorial/NSUzawaCahouetChabart.edp
index f382dd6..c4d637e 100644
--- a/examples++-tutorial/NSUzawaCahouetChabart.edp
+++ b/examples++-tutorial/NSUzawaCahouetChabart.edp
@@ -32,8 +32,8 @@ macro div(u1,u2) (dx(u1)+dy(u2)) //
  
  varf von1([u1,u2,p],[v1,v2,q]) =  on(3,u1=0,u2=0) + on(1,u1=U1,u2=U2);
 
-//remark : the value 100 in next line is manualy fitted, because free outlet. 
- varf vA(p,q) =int2d(Th)((grad( p ) '*grad(q)) ) + int1d(Th,2)(100*p*q) ;
+//remark : the value 1000 in next line is manualy fitted, because free outlet. 
+ varf vA(p,q) =int2d(Th)((grad( p ) '*grad(q)) ) + int1d(Th,2)(1000*p*q) ;
  varf vM(p,q) =int2d(Th,qft=qf2pT)(  p*q );
 
  varf vu([u1],[v1]) = int2d(Th)(alpha*(u1*v1)+nu*(grad(u1)'*grad(v1) )) 
@@ -87,7 +87,7 @@ func  real[int]   Precon(real[int] & p)
    
  Wh w; // to store voticity ..
   
- real eps=1e-4;
+ real eps=1e-6;
  int ndt = T/dt;
  for(int i=0;i<ndt;++i)
  {
@@ -97,7 +97,7 @@ func  real[int]   Precon(real[int] & p)
      assert(res==1) ; 
      eps = -abs(eps); 
      w = -dy(u1)+dx(u2);
-     plot(w,fill=1,wait=0, nbiso=40,WindowIndex=1);
+     plot(w,fill=1,wait=0, nbiso=40,WindowIndex=0);
     
      dt = min(dt,T-t);
      t += dt; 
diff --git a/examples++-tutorial/array.edp b/examples++-tutorial/array.edp
index d5b9bac..ae9810b 100644
--- a/examples++-tutorial/array.edp
+++ b/examples++-tutorial/array.edp
@@ -99,7 +99,10 @@ d = (a ? b : -1);
 cout << " (a ? b : -1 ) "<< d << endl;
 d = (a ? -2 : c);
 cout << " (a ? -2 : c) " <<  d << endl;
-
+d =   1./d; 
+cout << " 1/ d == (a ? -2 : c) " <<  d << endl;
+d =   a/3.; 
+cout << "a/3 ==  " <<  d << endl;
 
 // Liste all array operator and method 
 // ok in version 2.0-3 
@@ -159,7 +162,9 @@ cout << " ||a||_2     = " <<  a.l2     << endl;
 cout << " ||a||_infty = " <<  a.linfty << endl;
 cout << " sum a_i     = " <<  a.sum    << endl;
 cout << " max a_i     = " <<  a.max  << " a[  " << a.imax << " ] = " << a[a.imax]     << endl;
+cout << " imax a_i     = " <<  a.imax  << " a[  " << a.imax << " ] = " << a[a.imax]     << endl;
 cout << " min a_i     = " <<  a.min  << " a[  " << a.imin << " ] = " << a[a.imin]    << endl;
+cout << " imin a_i     = " <<  a.imin  << " a[  " << a.imin << " ] = " << a[a.imin]    << endl;
 cout << " a'*a        = " <<  (a'*a)   << endl;
 cout << " a quantile 0.2 =  " <<  a.quantile(0.2) << endl;
 
diff --git a/examples++-tutorial/calculus.edp b/examples++-tutorial/calculus.edp
index 6a1a490..f2609d3 100644
--- a/examples++-tutorial/calculus.edp
+++ b/examples++-tutorial/calculus.edp
@@ -51,4 +51,6 @@ cout << " i   = " << i << "\n";
  real a =  x == 0 ? x : -1;
  real b =  x != 0 ? x : -1;
  cout << " a = " << a << " b = " << b << endl; 
+ string ss="\z\a\b\f\\--\\";
+ cout << "\""<< ss << "\"" <<  endl; 
  }
diff --git a/examples++-tutorial/cavityNewtow.edp b/examples++-tutorial/cavityNewtow.edp
index 0f57c08..6afbceb 100644
--- a/examples++-tutorial/cavityNewtow.edp
+++ b/examples++-tutorial/cavityNewtow.edp
@@ -93,13 +93,13 @@ varf   vNS ([u1,u2,p],[v1,v2,q]) =
 for(real re=100;re<=reymax;re *=2)
   { 
     
-    real lerr=0.04;
+    real lerr=0.1;
     
-    if(re>8000) lerr=0.01;
-    if(re>10000) lerr=0.005; 
+    if(re>8000) lerr=0.05;
+    if(re>10000) lerr=0.01; 
     for(int step=0;step<2;step++)
       {
-	Th=adaptmesh(Th,[u1,u2],p,err=lerr,nbvx=100000);
+	Th=adaptmesh(Th,[u1,u2],p,err=lerr,nbvx=100000,abserror=0, cutoff=0.01);
 	//plot(Th,wait=0);
 	[u1,u2,p]=[u1,u2,p];
 	[up1,up2,pp]=[up1,up2,pp];
diff --git a/examples++/Makefile.in b/examples++/Makefile.in
index 76a0710..3c8037f 100644
--- a/examples++/Makefile.in
+++ b/examples++/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,23 +16,51 @@
 
 # $Id$
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -594,7 +622,7 @@ cscope cscopelist:
 	$(MAKE) $(AM_MAKEFLAGS) $<
 
 # Leading 'am--fnord' is there to ensure the list of targets does not
-# exand to empty, as could happen e.g. with make check TESTS=''.
+# expand to empty, as could happen e.g. with make check TESTS=''.
 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
 am--force-recheck:
 	@:
diff --git a/src/Algo/Makefile.in b/src/Algo/Makefile.in
index 0e20a52..523ad44 100644
--- a/src/Algo/Makefile.in
+++ b/src/Algo/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -21,23 +21,51 @@
 # This is not compiled as a separate library because its
 # interconnections with other libraries have not been solved.
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
diff --git a/src/Graphics/Makefile.in b/src/Graphics/Makefile.in
index bbddf79..dc2255a 100644
--- a/src/Graphics/Makefile.in
+++ b/src/Graphics/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,23 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
diff --git a/src/Graphics/ffglut.cpp b/src/Graphics/ffglut.cpp
index 6c2382c..8f098e6 100644
--- a/src/Graphics/ffglut.cpp
+++ b/src/Graphics/ffglut.cpp
@@ -863,7 +863,7 @@ void OnePlotFE<Mesh>::Draw(OneWindow *win)
 		plot.color(2+col);
 		uv = coef*uv;
 		l *= coef;
-		R2 dd = uv*(-0.01/l);
+		R2 dd = uv*(-kk/l);
 		R2 dn = dd.perp()*0.5;
 		if (l*10000.< kk) continue;
 		if (l < kk) 
diff --git a/src/Makefile.in b/src/Makefile.in
index 120e332..33233c5 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -18,23 +18,51 @@
 # ----------------------------------
 # $Id$
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -462,13 +490,12 @@ $(am__aclocal_m4_deps):
 #     (which will cause the Makefiles to be regenerated when you run 'make');
 # (2) otherwise, pass the desired values on the 'make' command line.
 $(am__recursive_targets):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
 	case "$@" in \
diff --git a/src/bamg/Makefile.in b/src/bamg/Makefile.in
index 714d837..8d818f4 100644
--- a/src/bamg/Makefile.in
+++ b/src/bamg/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,23 +15,51 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -472,9 +500,11 @@ uninstall-binPROGRAMS:
 
 clean-binPROGRAMS:
 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
 bamg$(EXEEXT): $(bamg_OBJECTS) $(bamg_DEPENDENCIES) $(EXTRA_bamg_DEPENDENCIES) 
 	@rm -f bamg$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(bamg_OBJECTS) $(bamg_LDADD) $(LIBS)
+
 cvmsh2$(EXEEXT): $(cvmsh2_OBJECTS) $(cvmsh2_DEPENDENCIES) $(EXTRA_cvmsh2_DEPENDENCIES) 
 	@rm -f cvmsh2$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(cvmsh2_OBJECTS) $(cvmsh2_LDADD) $(LIBS)
diff --git a/src/bamglib/Makefile.in b/src/bamglib/Makefile.in
index 6f83d33..2e86165 100644
--- a/src/bamglib/Makefile.in
+++ b/src/bamglib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -21,23 +21,51 @@
 # This is not compiled as a separate library because its
 # interconnections with other libraries have not been solved.
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
diff --git a/src/bin-win32/Makefile.in b/src/bin-win32/Makefile.in
index e1fdde2..1112e6a 100644
--- a/src/bin-win32/Makefile.in
+++ b/src/bin-win32/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -14,23 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
diff --git a/src/bin-win32/launchff++.cpp b/src/bin-win32/launchff++.cpp
index 3027209..79ef300 100755
--- a/src/bin-win32/launchff++.cpp
+++ b/src/bin-win32/launchff++.cpp
@@ -11,6 +11,7 @@ const char C='"';
 
 int main(int argc,const char **argv)
 {
+  int debug=0; 
   char *dir=0;
   const char *pp=0; 
   string cmd="freefem++.exe ";
@@ -20,8 +21,12 @@ int main(int argc,const char **argv)
       cerr << " Drag and Drop the file icon on the application  icon or double clip on script file" << endl;
       exit(1);
   }
+  
   for(int i=1;i<argc;++i)
     {	
+	if(strcmp("++d",argv[i])==0) 
+	  debug=1;
+	else {
     cmd += C;
     cmd += argv[i];
     if(!pp &&strlen(argv[i])>2) 
@@ -29,9 +34,11 @@ int main(int argc,const char **argv)
           pp= argv[i];
     cmd += C;
     cmd += " ";
-    }
+	if( debug) cout << "  ffl: arg " << i << argv[i] << endl;
+    }}
   if(pp)
    {
+   	if( debug ) cout << "  ffl: file:" << pp << endl;  
     int i=0;
     int l= strlen(pp);
      for(i=l-1;i>=0;i--)
@@ -39,12 +46,14 @@ int main(int argc,const char **argv)
      dir= new char [l+1];
      strcpy(dir,pp);
      dir[i]=0;
-     //cout << " chdir to " << dir << endl;
+	 if(debug) 
+     cout << "  ffl:  chdir to " << dir << endl;
      _chdir(dir);
      delete [] dir;
    }
    cmd += " -wait -log";
-   //cout << "exec " << cmd << endl;
+   if(debug) 
+   cout << "exec " << cmd << endl;
    int ret= system(cmd.c_str());
    return ret;
 }
diff --git a/src/fflib/._AFunction.hpp b/src/femlib/._Drawing.cpp
similarity index 100%
rename from src/fflib/._AFunction.hpp
rename to src/femlib/._Drawing.cpp
diff --git a/src/fflib/._environment.cpp b/src/femlib/._RNM.hpp
similarity index 100%
rename from src/fflib/._environment.cpp
rename to src/femlib/._RNM.hpp
diff --git a/src/fflib/._array_tlp.hpp b/src/femlib/._RNM_op.hpp
similarity index 100%
rename from src/fflib/._array_tlp.hpp
rename to src/femlib/._RNM_op.hpp
diff --git a/src/femlib/CheckPtr.cpp b/src/femlib/CheckPtr.cpp
index 3605631..d82fc36 100644
--- a/src/femlib/CheckPtr.cpp
+++ b/src/femlib/CheckPtr.cpp
@@ -6,6 +6,8 @@
 #include <malloc.h>
 #endif
 
+static long verbosity;
+
 static long StorageUsed()
 {
 #if MALLOC_ZONE_SPECIFIC_FLAGS
@@ -493,7 +495,7 @@ int ShowAlloc(const char *s,size_t & lg)
 {
     size_t m =StorageUsed();
     long diff = m-CheckPtr___memoryusage;
-    if(CheckPtr___memoryusage!=0 && m != CheckPtr___memoryusage)
+    if(verbosity > 0 && CheckPtr___memoryusage!=0 && m != CheckPtr___memoryusage)
         printf("CheckPtr:  Warning memory leak with malloc = %ld \n ",diff);
     CheckPtr___memoryusage=m;
     lg = 0; return CheckPtr___nbptr;}
diff --git a/src/femlib/Drawing.cpp b/src/femlib/Drawing.cpp
index e1122f7..508ca85 100644
--- a/src/femlib/Drawing.cpp
+++ b/src/femlib/Drawing.cpp
@@ -408,7 +408,7 @@ void FElement::Draw(const RN_& U,const RN_& V,const RN_ & Viso,R coef,int i0,int
           couleur(2+dichotomie(Viso,l));
           uv = coef*uv;
           l *= coef;
-          R2 dd = uv*(-0.005/l);
+          R2 dd = uv*(-kk/l);// modif F.H size of arraow 08/14 FH.l
           R2 dn = dd.perp()*0.5;
           if (l*10000.< kk) continue;
           if (l < kk) 
diff --git a/src/femlib/Makefile.in b/src/femlib/Makefile.in
index ff43b11..8038505 100644
--- a/src/femlib/Makefile.in
+++ b/src/femlib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -21,23 +21,51 @@
 # This is not compiled as a separate library because its
 # interconnections with other libraries have not been solved.
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
diff --git a/src/femlib/RNM.hpp b/src/femlib/RNM.hpp
index f3c85e2..b07433a 100644
--- a/src/femlib/RNM.hpp
+++ b/src/femlib/RNM.hpp
@@ -148,6 +148,7 @@ inline void Check_Kn(const char * str,const char * file,int line)
 //  re-correct += sep 2007
 //  add size of the matrix in VirtualMatrix class.
 //   mars 2010 add  unset KNM case ...
+//  sept 2014  add 1/v operator  ... 
 // ----------------
 
 namespace RNM {
@@ -199,7 +200,8 @@ template<class R> class KN ;
 template<class R> class conj_KN_ ;
 template<class R> class Add_KN_;
 template<class R> class Sub_KN_;
-template<class R> class Mulc_KN_;
+template<class R> class Mulc_KN_; // vector b*a_i
+template<class R> class Divc_KN_;// vector b/a_i
 template<class R> class Add_Mulc_KN_;
 template<class R> class Mul_KNM_KN_; 
 template<class R> class DotStar_KN_;
@@ -505,7 +507,13 @@ public:
    KN_& operator-=(const Mulc_KN_<R> & u) ;
    KN_& operator*=(const Mulc_KN_<R> & u) ;
    KN_& operator/=(const Mulc_KN_<R> & u) ;
-  
+ 
+    KN_& operator =(const Divc_KN_<R> & u) ;
+    KN_& operator+=(const Divc_KN_<R> & u) ;
+    KN_& operator-=(const Divc_KN_<R> & u) ;
+    KN_& operator*=(const Divc_KN_<R> & u) ;
+    KN_& operator/=(const Divc_KN_<R> & u) ;
+    
    KN_& operator =(const Add_Mulc_KN_<R> & u) ;
    KN_& operator+=(const Add_Mulc_KN_<R> & u) ;
    KN_& operator-=(const Add_Mulc_KN_<R> & u) ;
@@ -994,7 +1002,9 @@ class KN :public KN_<R> { public:
         { if(this->unset()) this->set(new R[u.a.N()],u.a.N());KN_<R>::operator=(u);return *this;}
    KN& operator =(const Mulc_KN_<R> & u)  
         { if(this->unset()) this->set(new R[u.a.N()],u.a.N());KN_<R>::operator=(u);return *this;}
-   KN& operator =(const Add_Mulc_KN_<R> & u)  
+   KN& operator =(const Divc_KN_<R> & u)
+    { if(this->unset()) this->set(new R[u.a.N()],u.a.N());KN_<R>::operator=(u);return *this;}
+   KN& operator =(const Add_Mulc_KN_<R> & u)
         { if(this->unset()) this->set(new R[u.a.N()],u.a.N());KN_<R>::operator=(u);return *this;}
    KN& operator =(const if_arth_KN_<R> & u)  
         { if(this->unset()) this->set(new R[u.a.N()],u.a.N());KN_<R>::operator=(u);return *this;}
@@ -1049,7 +1059,9 @@ class KN :public KN_<R> { public:
         { KN_<R>::operator-=(u);return *this;}
    KN& operator -=(const Mulc_KN_<R> & u)  
         { KN_<R>::operator-=(u);return *this;}
-   KN& operator -=(const Add_Mulc_KN_<R> & u)  
+   KN& operator -=(const Divc_KN_<R> & u)
+    { KN_<R>::operator-=(u);return *this;}
+   KN& operator -=(const Add_Mulc_KN_<R> & u)
         { KN_<R>::operator-=(u);return *this;}
    KN& operator -=(const if_arth_KN_<R> & u)  
         { KN_<R>::operator-=(u);return *this;}
@@ -1070,7 +1082,9 @@ class KN :public KN_<R> { public:
         { KN_<R>::operator+=(u);return *this;}
    KN& operator +=(const Mulc_KN_<R> & u)  
         { KN_<R>::operator+=(u);return *this;}
-   KN& operator +=(const Add_Mulc_KN_<R> & u)  
+   KN& operator +=(const Divc_KN_<R> & u)
+    { KN_<R>::operator+=(u);return *this;}
+   KN& operator +=(const Add_Mulc_KN_<R> & u)
         { KN_<R>::operator+=(u);return *this;}
    KN& operator +=(const if_arth_KN_<R> & u)  
         { KN_<R>::operator+=(u);return *this;}
@@ -1088,6 +1102,9 @@ class KN :public KN_<R> { public:
         { KN_<R>::operator/=(u);return *this;}
    KN& operator /=(const Mulc_KN_<R> & u)  
         { KN_<R>::operator/=(u);return *this;}
+   KN& operator /=(const Divc_KN_<R> & u)
+    { KN_<R>::operator/=(u);return *this;}
+    
    KN& operator /=(const Add_Mulc_KN_<R> & u)  
         { KN_<R>::operator/=(u);return *this;}
    KN& operator /=(const if_arth_KN_<R> & u)  
@@ -1106,7 +1123,9 @@ class KN :public KN_<R> { public:
         { KN_<R>::operator*=(u);return *this;}
    KN& operator *=(const Mulc_KN_<R> & u)  
         { KN_<R>::operator*=(u);return *this;}
-   KN& operator *=(const Add_Mulc_KN_<R> & u)  
+   KN& operator *=(const Divc_KN_<R> & u)
+    { KN_<R>::operator*=(u);return *this;}
+   KN& operator *=(const Add_Mulc_KN_<R> & u)
         { KN_<R>::operator*=(u);return *this;}
    KN& operator *=(const if_arth_KN_<R> & u)  
         { KN_<R>::operator*=(u);return *this;}
@@ -1373,6 +1392,15 @@ class Mulc_KN_ { public:
 {  return outProduct_KN_<R>(a,bb,b);} 
 
  };  
+template<class R>
+class Divc_KN_ {
+    // // vector b/a_i ..
+public:
+    const KN_<const_R>  a;  const_R  b;
+    Divc_KN_(const_R  bb,const KN_<const_R> & aa) : a(aa),b(bb) {}
+  //  Divc_KN_(const Divc_KN_<R> & aa,const_R  bb) : a(aa.a),b(aa.b*bb) {}
+    Divc_KN_ operator-() const {return Divc_KN_(a,-b);}
+};  
 
 template<class R> 
 class Add_Mulc_KN_ { public:
@@ -1424,11 +1452,13 @@ template<class R> inline Sub_KN_<R> operator-(const KN_<const_R> &a,const KN_<co
 template<class R> inline Mulc_KN_<R> operator*(const KN_<const_R> &a,const R &b) 
     { return Mulc_KN_<R>(a,b);}
 template<class R> inline Mulc_KN_<R> operator/(const KN_<const_R> &a,const R &b) 
-    { return Mulc_KN_<R>(a,1/b);}
+    { return Mulc_KN_<R>(a,R(1)/b);}
 template<class R> inline Mulc_KN_<R> operator*(const R &b,const KN_<const_R> &a) 
     { return Mulc_KN_<R>(a,b);}
-template<class R> inline Mulc_KN_<R> operator-(const KN_<const_R> &a) 
-    { return Mulc_KN_<R>(a,-1);}
+template<class R> inline Divc_KN_<R> operator/(const R &b,const KN_<const_R> &a)
+{ return Divc_KN_<R>(b,a);}
+template<class R> inline Mulc_KN_<R> operator-(const KN_<const_R> &a)
+    { return Mulc_KN_<R>(a,R(-1));}
 
 
 
@@ -1462,8 +1492,11 @@ template<class R> inline bool  SameShape(const ShapeOfArray & a,const Add_KN_<R>
 template<class R> inline bool  SameShape(const ShapeOfArray & a,const Sub_KN_<R> & b) 
            { return SameShape(a,b.a) ;} 
 template<class R> inline bool  SameShape(const ShapeOfArray & a,const Mulc_KN_<R> & b) 
-           { return SameShape(a,b.a) ;} 
-template<class R> inline bool  SameShape(const ShapeOfArray & a,const DotStar_KN_<R> & b) 
+           { return SameShape(a,b.a) ;}
+template<class R> inline bool  SameShape(const ShapeOfArray & a,const Divc_KN_<R> & b)
+{ return SameShape(a,b.a) ;}
+
+template<class R> inline bool  SameShape(const ShapeOfArray & a,const DotStar_KN_<R> & b)
            { return SameShape(a,b.a) ;} 
 template<class R> inline bool  SameShape(const ShapeOfArray & a,const DotSlash_KN_<R> & b) 
            { return SameShape(a,b.a) ;} 
diff --git a/src/femlib/RNM_op.hpp b/src/femlib/RNM_op.hpp
index 5f5e853..fcfbedc 100644
--- a/src/femlib/RNM_op.hpp
+++ b/src/femlib/RNM_op.hpp
@@ -140,7 +140,16 @@ template<class R>
       *l oper *aa * bb;
     return *this;
   }
-  
+template<class R>
+KN_<R>&  KN_<R>::operator oper (const Divc_KN_<R> & u) {
+    K_throwassert(u.a.N() == N()  );
+    long stepa(u.a.step);
+    R * l(v); const_R  *aa(u.a),bb(u.b)  ;
+    for (long i=0;i<n;i++,l += step, aa +=stepa)
+        *l oper bb / *aa ;
+    return *this;
+}
+
 template<class R>
  KN_<R>&  KN_<R>::operator oper (const Add_Mulc_KN_<R> & u) {
     K_throwassert(u.a.N() == N()  );
diff --git a/src/fflib/._lex.cpp b/src/fflib/._lex.cpp
deleted file mode 100644
index e9604e8..0000000
Binary files a/src/fflib/._lex.cpp and /dev/null differ
diff --git a/src/fflib/._lgfem.cpp b/src/fflib/._lgfem.cpp
deleted file mode 100644
index e9604e8..0000000
Binary files a/src/fflib/._lgfem.cpp and /dev/null differ
diff --git a/src/fflib/AFunction.hpp b/src/fflib/AFunction.hpp
index d8d7621..5470c9d 100644
--- a/src/fflib/AFunction.hpp
+++ b/src/fflib/AFunction.hpp
@@ -669,6 +669,7 @@ public:
   bool EvaluableWithOutStack() const { return f && f->EvaluableWithOutStack();}
   bool Zero() const { return !f || f->Zero();}
   Expression Destroy() {  return r->Destroy(*this);}
+    
   operator const Polymorphic * () const {return  dynamic_cast<const Polymorphic *>(f);}
   bool operator==(const C_F0 & a) const {return f==a.f && r == a.r;}
   bool operator!=(const C_F0 & a) const {return f!=a.f || r != a.r;}
@@ -1967,7 +1968,7 @@ inline	  C_F0::C_F0(const C_F0 & e,const char *op,const C_F0 & a,const C_F0 & b)
 {
     C_F0 tab[2]={a,b};
     basicAC_F0  p;
-    p=make_pair<int,C_F0*>(2,tab);
+    p=make_pair(2,tab);
     *this= C_F0(e,op,p);
 }
 	   
diff --git a/src/fflib/Makefile.in b/src/fflib/Makefile.in
index b4d1421..f456aed 100644
--- a/src/fflib/Makefile.in
+++ b/src/fflib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -19,23 +19,51 @@
 # $Id$
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -514,6 +542,7 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
 libff.a: $(libff_a_OBJECTS) $(libff_a_DEPENDENCIES) $(EXTRA_libff_a_DEPENDENCIES) 
 	$(AM_V_at)-rm -f libff.a
 	$(AM_V_AR)$(libff_a_AR) libff.a $(libff_a_OBJECTS) $(libff_a_LIBADD)
@@ -588,14 +617,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 libmesh5.o: ../femlib/libmesh5.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmesh5.o -MD -MP -MF $(DEPDIR)/libmesh5.Tpo -c -o libmesh5.o `test -f '../femlib/libmesh5.c' || echo '$(srcdir)/'`../femlib/libmesh5.c
diff --git a/src/fflib/Operator.hpp b/src/fflib/Operator.hpp
index c4e4e62..a9d9c1d 100644
--- a/src/fflib/Operator.hpp
+++ b/src/fflib/Operator.hpp
@@ -569,8 +569,12 @@ struct Op2_mulcp: public binary_function<A,B,R> {
 
 template<class R,class A=R,class B=A> 
 struct Op2_mulc: public binary_function<A,B,R> { 
-  static R f(const A & a,const B & b)  { return (a * b);} }; 
-  
+  static R f(const A & a,const B & b)  { return (a * b);} };
+
+template<class R,class A=R,class B=A>
+struct Op2_divc: public binary_function<A,B,R> {
+    static R f(const A & a,const B & b)  { return (a / b);} };
+
 template<class R,class A=R,class B=A> 
 struct Op2_mulpc: public binary_function<A,B,R> { 
   static R f(const A & a,const B & b)  { return (b * *a);} }; 
diff --git a/src/fflib/array_tlp.hpp b/src/fflib/array_tlp.hpp
index 050bb9e..af99489 100644
--- a/src/fflib/array_tlp.hpp
+++ b/src/fflib/array_tlp.hpp
@@ -272,7 +272,12 @@ RR get_element_si(const A &  a,const B & b,const C & c){
 template<class RR,class A,class B,class C>  
 RR get_element_lineorcol(const A &  a,const B & b,const C & c){ 
  //  cout << b << " .... " << ((*a)(SubArray(1,b),c)) << endl;;
-    return  ((*a)(b,c));}
+    if(c == ':' && (b<0 || a->N() <= b))
+            ExecError("Out of bound");
+    if(b == ':' && (c<0 || a->M() <= c))
+            ExecError("Out of bound");
+    return  ((*a)(b,c));
+    }
 
 template<class RR,class A,class B,class C>  
 RR get_element_is_(const A &  a,const B & b,const C & c){ 
@@ -671,6 +676,7 @@ void ArrayDCL()
     Dcl_Type<DotSlash_KN_<K> >();
     Dcl_Type<Sub_KN_<K> >();
     Dcl_Type<Mulc_KN_<K> >();
+    Dcl_Type<Divc_KN_<K> >();
     Dcl_Type<Mul_KNM_KN_<K> >();
     Dcl_Type<Add_Mulc_KN_<K> *>();
     Dcl_Type<if_arth_KN_<K> *>();
@@ -1080,6 +1086,7 @@ void ArrayOperator()
         new OneBinaryOperator<set_eqarray<KN<K> ,DotSlash_KN_<K> > > ,
         new OneBinaryOperator<set_eqarray<KN<K> ,Sub_KN_<K> > > ,
         new OneBinaryOperator<set_eqarray<KN<K> ,Mulc_KN_<K> > > ,
+        new OneBinaryOperator<set_eqarray<KN<K> ,Divc_KN_<K> > > ,
         new OneBinaryOperator<set_eqarray<KN<K> ,Mul_KNM_KN_<K> > > ,
         new OneBinaryOperator<set_eqarray<KN<K> ,KN_<K> > > , // Add FH juin 2005         
         new OneBinaryOperator<set_eqarraypd<KN<K> ,Add_Mulc_KN_<K>* > > , // Add FH aug 2005     
@@ -1095,6 +1102,7 @@ void ArrayOperator()
 		       new OneBinaryOperator<init_eqarray<KN<K> ,DotSlash_KN_<K> > > ,
 		       new OneBinaryOperator<init_eqarray<KN<K> ,Sub_KN_<K> > > ,
 		       new OneBinaryOperator<init_eqarray<KN<K> ,Mulc_KN_<K> > > ,
+		       new OneBinaryOperator<init_eqarray<KN<K> ,Divc_KN_<K> > > ,
 		       new OneBinaryOperator<init_eqarray<KN<K> ,Mul_KNM_KN_<K> > > ,
 		       new OneBinaryOperator<init_eqarray<KN<K> ,KN_<K> > > , // Add FH juin 2005         
 		       new OneBinaryOperator<init_eqarraypd<KN<K> ,Add_Mulc_KN_<K>* > > , // Add FH aug 2005     
@@ -1116,6 +1124,7 @@ void ArrayOperator()
         new OneBinaryOperator<set_eq_array<KN_<K> ,DotSlash_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array<KN_<K> ,Sub_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array<KN_<K> ,Mulc_KN_<K> > > ,
+        new OneBinaryOperator<set_eq_array<KN_<K> ,Divc_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array<KN_<K> ,Mul_KNM_KN_<K> > > ,
 	new OneBinaryOperator<set_eq_arraypd<KN_<K> ,if_arth_KN_<K>* > > ,
         new OneBinaryOperator<set_eq_arraypd<KN_<K> ,Add_Mulc_KN_<K>* > >  , // Add FH aug 2005    
@@ -1161,6 +1170,7 @@ void ArrayOperator()
         new OneBinaryOperator<set_eq_array_add<KN_<K> ,DotSlash_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_add<KN_<K> ,Sub_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_add<KN_<K> ,Mulc_KN_<K> > > ,
+        new OneBinaryOperator<set_eq_array_add<KN_<K> ,Divc_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_add<KN_<K> ,Mul_KNM_KN_<K> > > ,
         new OneBinaryOperator<set_eq_arraypd_add<KN_<K> ,Add_Mulc_KN_<K>* > > ,
         new OneBinaryOperator<set_eq_arraypd_add<KN_<K> ,if_arth_KN_<K>* > > ,
@@ -1190,6 +1200,7 @@ void ArrayOperator()
         new OneBinaryOperator<set_eq_array_sub<KN_<K> ,DotSlash_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_sub<KN_<K> ,Sub_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_sub<KN_<K> ,Mulc_KN_<K> > > ,
+        new OneBinaryOperator<set_eq_array_sub<KN_<K> ,Divc_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_sub<KN_<K> ,Mul_KNM_KN_<K> > > ,
         new OneBinaryOperator<set_eq_arraypd_sub<KN_<K> ,Add_Mulc_KN_<K>* > > ,
         new OneBinaryOperator<set_eq_arraypd_sub<KN_<K> ,if_arth_KN_<K>* > > ,
@@ -1214,6 +1225,7 @@ void ArrayOperator()
         new OneBinaryOperator<set_eq_array_mul<KN_<K> ,Add_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_mul<KN_<K> ,Sub_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_mul<KN_<K> ,Mulc_KN_<K> > > ,
+        new OneBinaryOperator<set_eq_array_mul<KN_<K> ,Divc_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_mul<KN_<K> ,Mul_KNM_KN_<K> > > ,
         new OneBinaryOperator<set_eq_arraypd_mul<KN_<K> ,Add_Mulc_KN_<K>* > > ,
        //- new OneBinaryOperator<set_eq_arrayp_mul<KN_<K> ,KN<K>* > >       
@@ -1237,6 +1249,7 @@ void ArrayOperator()
         new OneBinaryOperator<set_eq_array_div<KN_<K> ,Add_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_div<KN_<K> ,Sub_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_div<KN_<K> ,Mulc_KN_<K> > > ,
+        new OneBinaryOperator<set_eq_array_div<KN_<K> ,Divc_KN_<K> > > ,
         new OneBinaryOperator<set_eq_array_div<KN_<K> ,Mul_KNM_KN_<K> > > ,
         new OneBinaryOperator<set_eq_arraypd_div<KN_<K> ,Add_Mulc_KN_<K>* > > ,
         new OneBinaryOperator<set_eq_array_div<KN_<K> ,KN_<K> > >        
@@ -1258,6 +1271,7 @@ void ArrayOperator()
        new OneBinaryOperator<Op2_sub__n<Add_Mulc_KN_<K>,KN_<K>,Mulc_KN_<K> > >,
        new OneBinaryOperator<Op2_sub__n<Add_Mulc_KN_<K>,Mulc_KN_<K> ,KN_<K> > >
        );
+    
      TheOperators->Add("*",
      //-  new OneBinaryOperator<Op2_mulpc<Mulc_KN_<K>,KN<K>*,K> >,
      //-  new OneBinaryOperator<Op2_mulcp<Mulc_KN_<K>,K,KN<K>*> >,
@@ -1273,6 +1287,11 @@ void ArrayOperator()
              
        );
 
+    TheOperators->Add("/",
+                      new OneBinaryOperator<Op2_divc<Divc_KN_<K>,K,KN_<K> > >,
+                      new OneBinaryOperator<Op2_divc<Mulc_KN_<K>,KN_<K>,K > >
+                      
+                      );
 
 //  nouvel operateur       
      TheOperators->Add("+=",
diff --git a/src/fflib/environment.cpp b/src/fflib/environment.cpp
index b4158f7..4bc04f3 100644
--- a/src/fflib/environment.cpp
+++ b/src/fflib/environment.cpp
@@ -35,6 +35,7 @@
 
 // set in getprog-unix.hpp in Graphic dir..
 const char *  prognamearg=0;
+extern  void (*initparallele)(int &, char **&); // to know if mpiversion ... 
 
 #ifdef PURE_WIN32
 #include <windows.h>
@@ -116,6 +117,14 @@ bool EnvironmentInsert(string key,string item,string before)
 {
    bool ret=true;
    OneEnvironmentData  & l = ffenvironment[key];
+   char  sufmpi[] = {'m','p','i',dirsep,'\0'};
+   string suf= ((key== "loadpath") && initparallele ) ? sufmpi  : ""; 
+   if( ! suf.empty() )
+     if((item.find("mpi") == string::npos ) && (item.find("MPI") == string::npos ) && item != "."  && item != "./" && item !="") 
+       {
+	 if(verbosity>=100)  cout << " EnvironmentInsert: Add suf " << suf << " to " << item << " in GetEnvironment "<< key << endl; 
+	 item  += suf;
+       }
    
    OneEnvironmentData::iterator i=find(l.begin(),l.end(),item);
    
@@ -132,7 +141,7 @@ bool EnvironmentInsert(string key,string item,string before)
 
 int GetEnvironment(const string & key, string items)
 {
-  if(verbosity>=100)  cout << key << " -> " << items << endl;
+  if(verbosity>=100)  cout << key << " -> " << items <<  endl;
   bool path=key.find("path")!= string::npos;
   int d=0, k=0;
   if(path)
diff --git a/src/fflib/ffapi.cpp b/src/fflib/ffapi.cpp
index 299bc7c..01eff49 100755
--- a/src/fflib/ffapi.cpp
+++ b/src/fflib/ffapi.cpp
@@ -1,3 +1,7 @@
+#ifdef WITH_PETSC
+#include <petsc.h>
+#endif
+
 /// \file
 /// ======================================================================
 /// Written by Antoine Le Hyaric
@@ -233,7 +237,17 @@ namespace ffapi{
 #ifndef FFLANG
 #ifdef PARALLELE
     // need #include "mpi.h"
-    MPI_Init(&argc,&argv);
+    int provided;
+    MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided);
+    if(provided < MPI_THREAD_SERIALIZED) {
+        MPI_Comm_rank(MPI_COMM_WORLD, &provided);
+        if(provided == 0)
+            std::cout << "MPI_THREAD_SERIALIZED not supported !" << std::endl;
+    }
+#ifdef WITH_PETSC
+    PetscInitialize(&argc, &argv, 0, "");
+#endif
+
 #endif
 #endif
   }
@@ -241,6 +255,9 @@ namespace ffapi{
   void mpi_finalize(){
 #ifndef FFLANG
 #ifdef PARALLELE
+#ifdef WITH_PETSC
+    PetscFinalize();
+#endif
     MPI_Finalize();
 #endif
 #endif
diff --git a/src/fflib/lgfem.cpp b/src/fflib/lgfem.cpp
index 610c6e0..5f26788 100644
--- a/src/fflib/lgfem.cpp
+++ b/src/fflib/lgfem.cpp
@@ -4489,6 +4489,14 @@ long get_size(pfecbasearray *const & a)
 {
     return (**a).N;
 }
+long get_size(pf3rarray const & a)
+{
+  return a.first->N;
+}
+long get_size(pf3rbasearray *const & a)
+{
+    return (**a).N;
+}
 long resize(pferbasearray *const & a, long const & n)
 {
     (**a).resize(n);
@@ -4674,12 +4682,26 @@ template<class T> T *resizeandclean2(const Resize<T> & t,const long &n)
   return  t.v;
  }
 
+template<class PMat>
+AnyType ClearReturn(Stack stack, const AnyType & a)
+{
+    // a ne faire que pour les variables local au return...
+    //  pour l'instant on copie pour fqire mqrche
+    // a repense  FH  mqi 20014....
+    PMat * m = GetAny<PMat * >(a);
+    //   KN<K> *cm=new KN<K>(true, *m); bug quant KN est une variable global
+    // KN<K> *cm=new KN<K>( *m); // on duplique le tableau comme en C++  (dur dur ?????? FH)
+    m->increment();
+    Add2StackOfPtr2FreeRC(stack,m);
+    return m;
+}
+
 
 template <class R>
 void DclTypeMatrix()
 {
  
-  Dcl_Type<Matrice_Creuse<R>* >(InitP<Matrice_Creuse<R> >,Destroy<Matrice_Creuse<R> >);
+  Dcl_Type<Matrice_Creuse<R>* >(InitP<Matrice_Creuse<R> >,Destroy<Matrice_Creuse<R> >, ClearReturn<Matrice_Creuse<R> >);
   Dcl_Type<Matrice_Creuse_Transpose<R> >();      // matrice^t   (A')                             
   Dcl_Type<Matrice_Creuse_inv<R> >();      // matrice^-1   A^{-1}                          
   Dcl_Type<typename VirtualMatrice<R>::plusAx >();       // A*x (A'*x)
@@ -5472,17 +5494,31 @@ TheOperators->Add("^", new OneBinaryOperatorA_inv<R>());
     Add<Resize1<pfecbasearray* > >("(","",new OneOperator2_<pfecbasearray*,Resize1<pfecbasearray* > , long  >(fepresize));
     Add<Resize1<pferarray > >("(","",new OneOperator2_<pferarray,Resize1<pferarray > , long  >(feresize));
     Add<Resize1<pfecarray > >("(","",new OneOperator2_<pfecarray,Resize1<pfecarray > , long  >(feresize));
+
+    Dcl_Type< Resize1<pf3rbasearray* > > ();
+    Dcl_Type< Resize1<pf3rarray > > ();
+    Add<pf3rbasearray*>("resize",".",new OneOperator1<Resize1<pf3rbasearray* >,pf3rbasearray*>(to_Resize1));  //   FH fev. 2013
+    Add<pf3rarray>("resize",".",new OneOperator1<Resize1<pf3rarray >,pf3rarray>(to_Resize1));  //  FH fev 2013
+    new OneOperator2_<pf3rbasearray*,Resize1<pf3rbasearray* > , long  >(fepresize<pf3rbasearray*>);
+    Add<Resize1<pf3rbasearray* > >("(","",new  OneOperator2_<pf3rbasearray*,Resize1<pf3rbasearray* > , long  >(fepresize));
+    Add<Resize1<pf3rarray > >("(","",new OneOperator2_<pf3rarray,Resize1<pf3rarray > , long  >(feresize));
+
 // end of resize ...
    
   Add<pfecbasearray*>("n",".",new OneOperator1_<long,pfecbasearray*>(get_size));  //  FH fev 2013
   Add<pferbasearray*>("n",".",new OneOperator1_<long,pferbasearray*>(get_size));  //   FH fev. 2013
   Add<pferarray>("n",".",new OneOperator1_<long,pferarray>(get_size));  //  FH fev 2013
   Add<pfecarray>("n",".",new OneOperator1_<long,pfecarray>(get_size));  //   FH fev. 2013
+
+  Add<pf3rbasearray*>("n",".",new OneOperator1_<long,pf3rbasearray*>(get_size));  //   FH fev. 2013
+  Add<pf3rarray>("n",".",new OneOperator1_<long,pf3rarray>(get_size));  //  FH fev 2013
     
     
   Add<pferarray>("[","",new OneOperator2_FE_get_elmnt<double,v_fes>());// new version FH sep 2009
   Add<pfecarray>("[","",new OneOperator2_FE_get_elmnt<Complex,v_fes>());
    
+  Add<pf3rarray>("[","",new OneOperator2_FE_get_elmnt<double,v_fes>());// new version FH sep 2009
+
 //    Add<pferarray>("[","",new OneOperator2_<pfer,pferarray,long>(get_element));
 //    Add<pfecarray>("[","",new OneOperator2_<pfec,pfecarray,long>(get_element));
   
diff --git a/src/fflib/lgfem.hpp b/src/fflib/lgfem.hpp
index 1a63db0..2f57df6 100644
--- a/src/fflib/lgfem.hpp
+++ b/src/fflib/lgfem.hpp
@@ -411,14 +411,14 @@ public:
   
  // int N;
   FEbase<K,v_fes>  **xx;
-  FEbaseArray(const pfes  *ppVh,int NN) :FEbaseArrayKn<K>(NN),xx(new FEbase<K,v_fes> * [NN])
+  FEbaseArray(const pfes  *ppVh,int NN) :FEbaseArrayKn<K>(NN),xx(new FEbase<K,v_fes> * [std::max(NN, 1)])
   {
-    for (int i=0;i<this->N;i++)
+    for (int i=0;i<std::max(this->N, 1);i++)
       xx[i]=new FEbase<K,v_fes>(ppVh);
   }
   ~FEbaseArray() { 
     //  cout << " ~FEbaseArray " << endl;
-    for (int i=0;i<this->N;i++)
+    for (int i=0;i<std::max(this->N, 1);i++)
       xx[i]->destroy();
     delete [] xx;} 
   void destroy() { //cout << " destroy ~FEbaseArray " << endl; 
@@ -432,9 +432,9 @@ public:
         if(xx != 0 && i > 0 && i != this->N) {
             FEbase<K,v_fes>** yy = new FEbase<K,v_fes>*[i];
             if(i > this->N) {
-                for(unsigned int j = 0; j < this->N; ++j)
+                for(unsigned int j = 0; j < std::max(this->N, 1); ++j)
                     yy[j] = xx[j];
-                for(unsigned int j = this->N; j < i; ++j)
+                for(unsigned int j = std::max(this->N, 1); j < i; ++j)
                     yy[j] = new FEbase<K,v_fes>(xx[0]->pVh);
             }
             else {
diff --git a/src/fflib/load.cpp b/src/fflib/load.cpp
index 9478f59..a8aedea 100644
--- a/src/fflib/load.cpp
+++ b/src/fflib/load.cpp
@@ -145,6 +145,12 @@ bool load(string ss)
 	if(mpirank ==0)
 	  {
 	    cerr  <<   "\nload error : " << ss << "\n \t fail : "  << endl;
+        char *error;
+#ifndef WIN32
+        if ((error = dlerror()) != NULL) {
+            fprintf(stderr, "%s\n", error);
+        }
+#endif
 	    cerr << "list  prefix: " ;
 	    for (list<string>::const_iterator i= prefix.begin();i !=prefix.end();++i)
 	      cerr <<"'"<<*i<<"' ";
diff --git a/src/fflib/problem.hpp b/src/fflib/problem.hpp
index 7ea7e9e..ba7e137 100644
--- a/src/fflib/problem.hpp
+++ b/src/fflib/problem.hpp
@@ -875,7 +875,7 @@ public:
 
 
 
-template<class K> class Matrice_Creuse  { 
+template<class K> class Matrice_Creuse  {
   //  CountPointer<FESpace> Uh,Vh;
   //pfes  *pUh,*pVh; // pointeur sur la variable stockant FESpace;  
 public:
@@ -883,12 +883,16 @@ public:
   //  const void * pUh,pVh; //  pointeur pour la reconstruction 
   CountPointer<MatriceCreuse<K> > A;  
   TypeSolveMat typemat;
+    size_t count;
   void init() {
+      count=0;
     A.init();Uh.init();Vh.init();
     typemat=TypeSolveMat(TypeSolveMat::NONESQUARE);}
   Matrice_Creuse() { init();}
-  void destroy() {
-    A.destroy();
+  void destroy() {// Correct Oct 2015 FH (avant test a 'envert) !!!!
+    if(count--==0)
+      A.destroy();
+//else count--;
     //    Uh.destroy();
     //Vh.destroy();
   }   
@@ -899,7 +903,7 @@ public:
   long N() const {return  A ? A->n : 0;}
   long M() const { return A ? A->m : 0;}
   void resize(int n,int m) { if(A) A->resize(n,m);}
-  
+  void increment(){ count++;}
 };
 
 template<class K> class Matrice_Creuse_Transpose;
diff --git a/src/fflib/strversionnumber.cpp b/src/fflib/strversionnumber.cpp
index eef3698..60f5168 100644
--- a/src/fflib/strversionnumber.cpp
+++ b/src/fflib/strversionnumber.cpp
@@ -18,6 +18,6 @@ string StrVersionNumber(){
 //  buffer.precision(8);
 //  buffer<<VersionNumber();
   static char buffer[100];
-  sprintf(buffer," %9f (date Ven 11 jul 2014 21:27:24 CEST)",VersionNumber());
-  return buffer; //.str()+" (date Ven 11 jul 2014 21:27:24 CEST)" ;
+  sprintf(buffer," %9f (date Ven  7 nov 2014 14:28:55 CET)",VersionNumber());
+  return buffer; //.str()+" (date Ven  7 nov 2014 14:28:55 CET)" ;
 }
diff --git a/src/lglib/Makefile.in b/src/lglib/Makefile.in
index 4a6f83d..26d2377 100644
--- a/src/lglib/Makefile.in
+++ b/src/lglib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -18,23 +18,51 @@
 # ----------------------------------
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -438,6 +466,7 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
 liblg.a: $(liblg_a_OBJECTS) $(liblg_a_DEPENDENCIES) $(EXTRA_liblg_a_DEPENDENCIES) 
 	$(AM_V_at)-rm -f liblg.a
 	$(AM_V_AR)$(liblg_a_AR) liblg.a $(liblg_a_OBJECTS) $(liblg_a_LIBADD)
diff --git a/src/lglib/lg.tab.cpp b/src/lglib/lg.tab.cpp
index f207439..0426022 100644
--- a/src/lglib/lg.tab.cpp
+++ b/src/lglib/lg.tab.cpp
@@ -2106,10 +2106,9 @@ yyreduce:
                         NbPtr = ShowAlloc("end execution -- ",lg1) - NbPtr;
                         long stu1 =storageused()-stu0    ;
                         
-                        
-			    if (NbPtr || (stu1>100000) ) { cout << " ######## We forget of deleting   " << NbPtr
+			    if (NbPtr && verbosity) { cout << " ######## We forget of deleting   " << NbPtr 
 			                      << " Nb pointer,   " <<  lg1-lg0 << "Bytes " << " ,  mpirank " << mpirank << ", memory leak ="<< stu1 <<  endl;}
-  return 0;;}
+  return 0;}
     break;
 
   case 4:
diff --git a/src/libMesh/Makefile.in b/src/libMesh/Makefile.in
index 3313494..586fc85 100644
--- a/src/libMesh/Makefile.in
+++ b/src/libMesh/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -22,23 +22,51 @@
 # interconnections with other libraries have not been solved.
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -429,6 +457,7 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
 libMesh.a: $(libMesh_a_OBJECTS) $(libMesh_a_DEPENDENCIES) $(EXTRA_libMesh_a_DEPENDENCIES) 
 	$(AM_V_at)-rm -f libMesh.a
 	$(AM_V_AR)$(libMesh_a_AR) libMesh.a $(libMesh_a_OBJECTS) $(libMesh_a_LIBADD)
@@ -451,14 +480,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 ID: $(am__tagged_files)
 	$(am__define_uniq_tagged_files); mkid -fID $$unique
diff --git a/src/medit/Makefile.in b/src/medit/Makefile.in
index c78fbc6..59d4d7a 100644
--- a/src/medit/Makefile.in
+++ b/src/medit/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -18,23 +18,51 @@
 # ----------------------------------
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -490,6 +518,7 @@ uninstall-binPROGRAMS:
 
 clean-binPROGRAMS:
 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
 ffmedit$(EXEEXT): $(ffmedit_OBJECTS) $(ffmedit_DEPENDENCIES) $(EXTRA_ffmedit_DEPENDENCIES) 
 	@rm -f ffmedit$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ffmedit_OBJECTS) $(ffmedit_LDADD) $(LIBS)
@@ -555,14 +584,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 ID: $(am__tagged_files)
 	$(am__define_uniq_tagged_files); mkid -fID $$unique
diff --git a/src/mpi/Makefile.in b/src/mpi/Makefile.in
index 741d3fb..af806bf 100644
--- a/src/mpi/Makefile.in
+++ b/src/mpi/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -23,23 +23,51 @@
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -511,6 +539,7 @@ uninstall-binPROGRAMS:
 
 clean-binPROGRAMS:
 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
 FreeFem++-mpi$(EXEEXT): $(FreeFem___mpi_OBJECTS) $(FreeFem___mpi_DEPENDENCIES) $(EXTRA_FreeFem___mpi_DEPENDENCIES) 
 	@rm -f FreeFem++-mpi$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(FreeFem___mpi_OBJECTS) $(FreeFem___mpi_LDADD) $(LIBS)
diff --git a/src/nw/Makefile.in b/src/nw/Makefile.in
index 5ef6e32..7a5e397 100644
--- a/src/nw/Makefile.in
+++ b/src/nw/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -19,23 +19,51 @@
 # $Id$
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \	]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -504,12 +532,15 @@ uninstall-binPROGRAMS:
 
 clean-binPROGRAMS:
 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
 FreeFem++$(EXEEXT): $(FreeFem___OBJECTS) $(FreeFem___DEPENDENCIES) $(EXTRA_FreeFem___DEPENDENCIES) 
 	@rm -f FreeFem++$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(FreeFem___OBJECTS) $(FreeFem___LDADD) $(LIBS)
+
 FreeFem++-nw$(EXEEXT): $(FreeFem___nw_OBJECTS) $(FreeFem___nw_DEPENDENCIES) $(EXTRA_FreeFem___nw_DEPENDENCIES) 
 	@rm -f FreeFem++-nw$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(FreeFem___nw_OBJECTS) $(FreeFem___nw_LDADD) $(LIBS)
+
 ffglut$(EXEEXT): $(ffglut_OBJECTS) $(ffglut_DEPENDENCIES) $(EXTRA_ffglut_DEPENDENCIES) 
 	@rm -f ffglut$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(ffglut_OBJECTS) $(ffglut_LDADD) $(LIBS)
diff --git a/test-driver b/test-driver
index 32bf39e..d306056 100755
--- a/test-driver
+++ b/test-driver
@@ -1,7 +1,7 @@
 #! /bin/sh
 # test-driver - basic testsuite driver script.
 
-scriptversion=2012-06-27.10; # UTC
+scriptversion=2013-07-13.22; # UTC
 
 # Copyright (C) 2011-2013 Free Software Foundation, Inc.
 #
@@ -44,13 +44,12 @@ print_usage ()
 Usage:
   test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
               [--expect-failure={yes|no}] [--color-tests={yes|no}]
-              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
 The '--test-name', '--log-file' and '--trs-file' options are mandatory.
 END
 }
 
-# TODO: better error handling in option parsing (in particular, ensure
-# TODO: $log_file, $trs_file and $test_name are defined).
 test_name= # Used for reporting.
 log_file=  # Where to save the output of the test script.
 trs_file=  # Where to save the metadata of the test run.
@@ -69,10 +68,23 @@ while test $# -gt 0; do
   --enable-hard-errors) enable_hard_errors=$2; shift;;
   --) shift; break;;
   -*) usage_error "invalid option: '$1'";;
+   *) break;;
   esac
   shift
 done
 
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
 if test $color_tests = yes; then
   # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
   red='' # Red.

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/freefempp.git



More information about the debian-science-commits mailing list