[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='[0;31m' # 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