diff -urN freefem++-2.15.orig/Makefile.in freefem++-2.15/Makefile.in --- freefem++-2.15.orig/Makefile.in Tue Mar 27 19:16:45 2007 +++ freefem++-2.15/Makefile.in Mon Apr 2 11:36:29 2007 @@ -20,7 +20,7 @@ # Adaptation to Automake: Antoine Le Hyaric - LJLL Paris 6 - # lehyaric@ann.jussieu.fr - 13/5/04 -# $Id: Makefile.am,v 1.88 2006/10/26 12:09:29 hecht Exp $ +# $Id: Makefile.in,v 1.172 2007/04/02 09:36:29 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/configure.ac freefem++-2.15/configure.ac --- freefem++-2.15.orig/configure.ac Tue Mar 27 19:14:15 2007 +++ freefem++-2.15/configure.ac Mon Apr 2 11:36:29 2007 @@ -2,7 +2,7 @@ # ------------------------------------------------------------ # Antoine Le Hyaric - LJLL Paris 6 - lehyaric@ann.jussieu.fr - 13/5/04 -# $Id: configure.ac,v 1.198 2007/03/25 09:41:54 hecht Exp $ +# $Id: configure.ac,v 1.199 2007/04/02 09:36:29 hecht Exp $ # Version numbering: x.xx-pp where "pp" is the package version (when # the same FreeFem++ version is packaged several times). For diff -urN freefem++-2.15.orig/download/Makefile.in freefem++-2.15/download/Makefile.in --- freefem++-2.15.orig/download/Makefile.in Tue Mar 27 19:16:45 2007 +++ freefem++-2.15/download/Makefile.in Mon Apr 2 11:36:29 2007 @@ -17,7 +17,7 @@ # Downloading and compiling extra libraries # ----------------------------------------- -# $Id: Makefile.am,v 1.3 2004/11/08 14:02:28 lehyaric Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:29 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/download/arpack/Makefile.in freefem++-2.15/download/arpack/Makefile.in --- freefem++-2.15.orig/download/arpack/Makefile.in Tue Mar 27 19:16:46 2007 +++ freefem++-2.15/download/arpack/Makefile.in Mon Apr 2 11:36:29 2007 @@ -17,7 +17,7 @@ # Downloading and compiling extra libraries # ----------------------------------------- -# $Id: Makefile.am,v 1.13 2006/11/10 21:09:19 hecht Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:29 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/download/blas/Makefile.am freefem++-2.15/download/blas/Makefile.am --- freefem++-2.15.orig/download/blas/Makefile.am Tue Mar 27 19:13:32 2007 +++ freefem++-2.15/download/blas/Makefile.am Mon Apr 2 11:36:29 2007 @@ -1,7 +1,7 @@ # Downloading and compiling extra libraries # ----------------------------------------- -# $Id: Makefile.am,v 1.20 2006-05-18 11:51:16 hecht Exp $ +# $Id: Makefile.am,v 1.21 2007/04/02 09:36:29 hecht Exp $ ATLASSRCLIB=ATLAS/lib/ff++/libatlas.a ATLAS/lib/ff++/libcblas.a \ ATLAS/lib/ff++/libf77blas.a diff -urN freefem++-2.15.orig/download/blas/Makefile.in freefem++-2.15/download/blas/Makefile.in --- freefem++-2.15.orig/download/blas/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/download/blas/Makefile.in Mon Apr 2 11:36:29 2007 @@ -17,7 +17,7 @@ # Downloading and compiling extra libraries # ----------------------------------------- -# $Id: Makefile.am,v 1.20 2006-05-18 11:51:16 hecht Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:29 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/download/fltk/Makefile.in freefem++-2.15/download/fltk/Makefile.in --- freefem++-2.15.orig/download/fltk/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/download/fltk/Makefile.in Mon Apr 2 11:36:30 2007 @@ -17,7 +17,7 @@ # Downloading and compiling extra libraries # ----------------------------------------- -# $Id: Makefile.am,v 1.11 2006-09-29 20:30:14 hecht Exp $ +# $Id: Makefile.in,v 1.169 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/download/umfpack/Makefile.in freefem++-2.15/download/umfpack/Makefile.in --- freefem++-2.15.orig/download/umfpack/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/download/umfpack/Makefile.in Mon Apr 2 11:36:30 2007 @@ -17,7 +17,7 @@ # Downloading and compiling extra libraries # ----------------------------------------- -# $Id: Makefile.am,v 1.15 2006/11/06 12:55:02 hecht Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/examples++/Makefile.in freefem++-2.15/examples++/Makefile.in --- freefem++-2.15.orig/examples++/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/examples++/Makefile.in Mon Apr 2 11:36:30 2007 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.14 2004/12/02 11:34:13 lehyaric Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/examples++-bug/Makefile.in freefem++-2.15/examples++-bug/Makefile.in --- freefem++-2.15.orig/examples++-bug/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/examples++-bug/Makefile.in Mon Apr 2 11:36:30 2007 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.3 2004/06/25 08:55:37 lehyaric Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/examples++-chapt3/Makefile.in freefem++-2.15/examples++-chapt3/Makefile.in --- freefem++-2.15.orig/examples++-chapt3/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/examples++-chapt3/Makefile.in Mon Apr 2 11:36:30 2007 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.1 2005/09/09 13:17:10 hecht Exp $ +# $Id: Makefile.in,v 1.112 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/examples++-eigen/Makefile.in freefem++-2.15/examples++-eigen/Makefile.in --- freefem++-2.15.orig/examples++-eigen/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/examples++-eigen/Makefile.in Mon Apr 2 11:36:30 2007 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.10 2004/12/02 11:34:13 lehyaric Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/examples++-load/Makefile.in freefem++-2.15/examples++-load/Makefile.in --- freefem++-2.15.orig/examples++-load/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/examples++-load/Makefile.in Mon Apr 2 11:36:30 2007 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.29 2007/03/07 12:51:32 hecht Exp $ +# $Id: Makefile.in,v 1.168 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/examples++-mpi/Makefile.in freefem++-2.15/examples++-mpi/Makefile.in --- freefem++-2.15.orig/examples++-mpi/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/examples++-mpi/Makefile.in Mon Apr 2 11:36:30 2007 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.6 2004/06/29 16:41:14 lehyaric Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/examples++-other/Makefile.in freefem++-2.15/examples++-other/Makefile.in --- freefem++-2.15.orig/examples++-other/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/examples++-other/Makefile.in Mon Apr 2 11:36:30 2007 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.4 2004/12/02 11:34:13 lehyaric Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/examples++-tutorial/Makefile.in freefem++-2.15/examples++-tutorial/Makefile.in --- freefem++-2.15.orig/examples++-tutorial/Makefile.in Tue Mar 27 19:16:47 2007 +++ freefem++-2.15/examples++-tutorial/Makefile.in Mon Apr 2 11:36:30 2007 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.20 2004/12/02 11:34:13 lehyaric Exp $ +# $Id: Makefile.in,v 1.166 2007/04/02 09:36:30 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/examples++-tutorial/sparse-matrix.edp freefem++-2.15/examples++-tutorial/sparse-matrix.edp --- freefem++-2.15.orig/examples++-tutorial/sparse-matrix.edp Sat Feb 24 21:36:23 2007 +++ freefem++-2.15/examples++-tutorial/sparse-matrix.edp Mon Apr 2 11:44:34 2007 @@ -85,9 +85,18 @@ cout << " a(III^1) = " << c << endl; for (int i=0;i class F_KN_; -#ifndef VersionFreeFempp + +#ifndef ffassert #define ffassert assert #endif diff -urN freefem++-2.15.orig/src/femlib/fem.cpp freefem++-2.15/src/femlib/fem.cpp --- freefem++-2.15.orig/src/femlib/fem.cpp Wed Jan 24 13:51:28 2007 +++ freefem++-2.15/src/femlib/fem.cpp Mon Apr 2 11:28:46 2007 @@ -1354,9 +1354,9 @@ for (int j=0;j<3;j++) { int jt=j,it=Th.TriangleAdj(i,jt); - if(it==i || it <0) neb += split[i]; - else if (!split[it]) neb += split[i]; - else + if(it==i || it <0) neb += split[i]; //on est sur la frontiere + else if (!split[it]) neb += split[i];//le voisin ne doit pas etre decoupe + else //on est dans le domaine et le voisin doit etre decoupe { int ie0,ie1; Th.VerticesNumberOfEdge(Th[i],j,ie0,ie1); @@ -1364,7 +1364,10 @@ if(pbe && &(*pbe)[0] == &Th(ie0)) neb += max(split[i],split[it]); // aretes frontiere (FH juillet 2005) if (!pbe && (ie0 < ie1)) + { nebi += max(split[i],split[it]); // arete interne a force ... (FH jan 2007) + // cout << nebi << " zzzz t" << i << " a=" << j << " taj=" << it << " sa =" << ie0 << " " << ie1 << " + = " << max(split[i],split[it]) << endl; + } } } for (int j=0;j<3;j++) @@ -1462,7 +1465,7 @@ int & nneb = bbe ? neb : nebi; int nnebmax = bbe ? nebmax : nebimax; int offset= bbe ? 0 : nebmax; - if (bbe || ie0 < ie1) // arete interne ou frontiere + if (bbe || (!pbe && (ie0 < ie1) ) ) // arete interne ou frontiere { int kold = it; //Th.BoundaryTriangle(ieb,jj); int n=split[kold]; @@ -1498,6 +1501,9 @@ pv0=pv1; } + //if (bbe) + // cout << nneb+1 << " yyyy t" << it << " a=" << jt << " taj=" << itt << " sa =" << ie0 << " " << ie1 << " + = " << n << endl; + assert(nnebCastTo(args[0]));} - OneUnaryOperator(): - OneOperator(map_type[typeid(R).name()],map_type[typeid(A).name()]) + { return new Op(tA->CastTo(args[0]));} + OneUnaryOperator(aType tt0=map_type[typeid(A).name()]): + OneOperator(map_type[typeid(R).name()],tt0), + tA(map_type[typeid(A).name()]) {} }; @@ -2380,14 +2382,21 @@ template > class OneOperator3_ : public OneOperator { - aType r; // return type + // aType r; // return type + aType tA,tB,tC; // type of template modif FH mars 2007 typedef typename CODE::func func; func f; public: E_F0 * code(const basicAC_F0 & args) const - { return new CODE(f,t[0]->CastTo(args[0]),t[1]->CastTo(args[1]),t[2]->CastTo(args[2]));} - OneOperator3_(func ff): - OneOperator(map_type[typeid(R).name()],map_type[typeid(A).name()],map_type[typeid(B).name()],map_type[typeid(C).name()]), + { return new CODE(f,tA->CastTo(args[0]),tB->CastTo(args[1]),tC->CastTo(args[2]));} + OneOperator3_(func ff, + aType tt0=map_type[typeid(A).name()], + aType tt1=map_type[typeid(B).name()], + aType tt2=map_type[typeid(C).name()]) + : OneOperator(map_type[typeid(R).name()],tt0,tt1,tt2), + tA(map_type[typeid(A).name()]), + tB(map_type[typeid(B).name()]), + tC(map_type[typeid(C).name()]), f(ff){} }; diff -urN freefem++-2.15.orig/src/fflib/Makefile.in freefem++-2.15/src/fflib/Makefile.in --- freefem++-2.15.orig/src/fflib/Makefile.in Tue Mar 27 19:16:48 2007 +++ freefem++-2.15/src/fflib/Makefile.in Mon Apr 2 11:36:31 2007 @@ -16,7 +16,7 @@ # Makefile using Automake + Autoconf # ---------------------------------- -# $Id: Makefile.am,v 1.29 2007/03/07 12:51:33 hecht Exp $ +# $Id: Makefile.in,v 1.170 2007/04/02 09:36:31 hecht Exp $ SHELL = @SHELL@ srcdir = @srcdir@ diff -urN freefem++-2.15.orig/src/fflib/lgmat.cpp freefem++-2.15/src/fflib/lgmat.cpp --- freefem++-2.15.orig/src/fflib/lgmat.cpp Sat Mar 3 18:35:54 2007 +++ freefem++-2.15/src/fflib/lgmat.cpp Mon Apr 2 08:22:22 2007 @@ -92,6 +92,8 @@ { return to(GetAny *>(pp)); } + + template AnyType tM2L3 (Stack , const AnyType & pp) { @@ -165,6 +167,26 @@ }; // FIN ADD 16/02/2007 + + +template +struct Op1_LCMd: public unary_function *,bool> > *, +list *,bool> > * > +{ // - ... + typedef triplet *,bool> P; + typedef list

L; + typedef L * RR; + + static RR f(const RR & l) + { + typedef typename list *,bool> >::iterator lci; + for (lci i= l->begin();i !=l->end();++i) + i->first *= R(-1); + return l; + } + +}; + template struct Op2_ListCMCMadd: public binary_function *,bool> > *, list *,bool> > *, @@ -828,6 +850,26 @@ template +AnyType MatriceCreuse2map(Stack , const AnyType & mat) +{ + + using namespace Fem2D; + + Matrice_Creuse * sparce_mat =GetAny* >(mat); + ffassert(sparce_mat); + int n=sparce_mat->N(),m=sparce_mat->M(); + map,R> *M=new map,R>; + if (n >0 && m>0 && sparce_mat->A) + { + sparce_mat->A->addMatTo(R(1.),*M); + // hack + (*M)[make_pair(n-1,m-1)]+=R(); + } + return M; +} + + +template AnyType DiagMat(Stack stack,Expression emat,Expression edia) { using namespace Fem2D; @@ -1182,7 +1224,7 @@ // cout << " ### n m " << n << " " << m << endl; map< pair, R> *pA= new map< pair, R>; map< pair, R> & A(*pA); - A[make_pair(n-1,m-1)] = R(); // Hack to be sure that the last term existe + A[make_pair(n-1,m-1)] += R(); // Hack to be sure that the last term existe for (long il=0;il +map< pair, R> *Matrixmapp2mapIJ1 (map< pair, R> *const & B,const Inv_KN_long & iii,const Inv_KN_long & jjj) +{ + const KN_ &ii(iii), &jj(jjj); + typedef typename map< pair, R>::const_iterator It; + + map< pair, R> *pA= new map< pair, R>; + map< pair, R> & A(*pA); + int n=0,m=0; + // hack: the last element must exist in the map to set matrix size +/* + It lastb= --B->end(); // le last element + + if( lastb != B->end() ) + { + nb = last->first.first+1; + mb=last->first.second+1; + } */ + int N=ii.N(),M=jj.N(); + // A[make_pair(n-1,m-1)] = R(); // Hack to be sure that the last term existe + + for (It k=B->begin();k!=B->end();++k) + { + int il = k->first.first; + int jl = k->first.second; + if ( !( 0 <= il && il < N && 0 <= jl && jl < M ) ) + { + cerr << " Out of Bound in (Map)(I,J) : " << il << " " << jl << " not in " << "[0,"<second; + if(i >=0 && j>=0) + A[make_pair(i,j)] += aij; + } + A[make_pair(n,m)] += R(); // Hack to be sure that the last term existe + delete B; + + return pA; +} + +template +map< pair, R> *Matrixmapp2mapIJ (map< pair, R> *const & B,const KN_ & ii,const KN_ & jj) +{ + + typedef typename map< pair, R>::const_iterator It; + typedef typename multimap< int,int>::iterator MI; + + map< pair, R> *pA= new map< pair, R>; + map< pair, R> & A(*pA); + multimap< int,int > I,J; + int N=ii.N(),M=jj.N(); + for (int i=0;i=0) + I.insert(make_pair(ii[i],i)); + for (int j=0;j=0) + J.insert(make_pair(jj[j],j)); + int n=0,m=0; + + for (It k=B->begin();k!=B->end();++k) + { + int il = k->first.first; + int jl = k->first.second; + R aij =k->second; + pair PPi=I.equal_range(il); + pair PPj=J.equal_range(jl); + for(MI pi=PPi.first ; pi != PPi.second; ++pi) + { + int i=pi->second; + for(MI pj=PPj.first ; pj != PPj.second; ++pj) + { + int j=pj->second; + n=max(i,n); + m=max(j,m); + if(i >=0 && j>=0) + A[make_pair(i,j)] += aij; + } + } + } + A[make_pair(n,m)] =+ R(); // Hack to be sure that the last term existe + delete B; + + return pA; +} + template map< pair, R> *Matrixoutp2mapIJ (outProduct_KN_ * const & pop,const KN_ & ii,const KN_ & jj) { @@ -1579,8 +1711,42 @@ } +template +class minusMat { public: + list *,bool> > *l; + minusMat(list *,bool> > *ll): + l(new list *,bool> >(*ll) ) + { + typedef typename list *,bool> >::iterator lci; + for (lci i= l->begin();i !=l->end();++i) + i->first*= R(-1); + } +}; - +template +AnyType mM2L3 (Stack , const AnyType & pp) +{ + minusMat mpp(to(GetAny *>(pp))); + return SetAny >(mpp); +} +/* template +AnyType mmM2L3 (Stack , const AnyType & pp) +{ + minusMat & p(GetAny >(pp)); + minusMat mpp(p.l); + delete p.l; + return mpp.l; +} +/* +template +AnyType mmM2L3c (Stack , const AnyType & pp) +{ + list *,bool> > * p(GetAny >(pp)) + minusMat mpp(p.l); + delete p.l; + return mpp.l; +} +*/ template void AddSparceMat() { @@ -1589,7 +1755,15 @@ Dcl_Type >(); Dcl_Type >(); // Add FH oct 2005 Dcl_Type< map< pair, R> * >(); // Add FH mars 2005 - + Dcl_Type< minusMat >(); // Add FJH mars 2007 + + basicForEachType * t_MC=atype< Matrice_Creuse* >(); + basicForEachType * t_MCt=atype< Matrice_Creuse_Transpose >(); + basicForEachType * t_lM=atype< list *,bool> > * >(); + basicForEachType * t_nM=atype< minusMat >(); + + basicForEachType * t_MM=atype, R> * >(); + TheOperators->Add("*", new OneBinaryOperator::plusAx,Matrice_Creuse*,KN_ > >, new OneBinaryOperator::plusAtx,Matrice_Creuse_Transpose,KN_ > >, @@ -1645,10 +1819,14 @@ new OneBinaryOperator >, new OneBinaryOperator >, new OneBinaryOperator >, +// new OneBinaryOperator >(t_MCt,t_lM), +// new OneBinaryOperator >(t_MC,t_lM), new OneBinaryOperator > ); - + TheOperators->Add("-", + new OneUnaryOperator > + ); Add *>("n",".",new OneOperator1 *>(get_mat_n) ); Add *>("m",".",new OneOperator1 *>(get_mat_m) ); Add *>("nbcoef",".",new OneOperator1 *>(get_mat_nbcoef) ); @@ -1676,24 +1854,48 @@ atype * >()->Add("(","",new OneOperator3_ *,long,long >(get_elementp2mc)); atype*>()->Add("(","",new OneOperator3_, R> *,KNM*,Inv_KN_long,Inv_KN_long >(Matrixfull2mapIJ_inv)); - atype*>()->Add("(","",new OneOperator3_, R> *,outProduct_KN_*,Inv_KN_long,Inv_KN_long >(Matrixoutp2mapIJ_inv)); - atype*>()->Add("(","",new OneOperator3_, R> *,KNM*,KN_,KN_ >(Matrixfull2mapIJ)); + + atype*>()->Add("(","",new OneOperator3_, R> *,outProduct_KN_*,Inv_KN_long,Inv_KN_long >(Matrixoutp2mapIJ_inv)); atype*>()->Add("(","",new OneOperator3_, R> *,outProduct_KN_*,KN_,KN_ >(Matrixoutp2mapIJ)); + + + + + t_MM->Add("(","", new OneOperator3_, R> *,map< pair, R> *,Inv_KN_long,Inv_KN_long >(Matrixmapp2mapIJ1)); + t_MM->Add("(","",new OneOperator3_, R> *,map< pair, R> *,KN_,KN_ >(Matrixmapp2mapIJ)); + + t_MC->Add("(","",new OneOperator3_, R> *,map< pair, R> *,Inv_KN_long,Inv_KN_long >(Matrixmapp2mapIJ1,t_MC)); + t_MC->Add("(","",new OneOperator3_, R> *,map< pair, R> *,KN_,KN_ >(Matrixmapp2mapIJ,t_MC)); + + //atype*>()->Add("(","",new OneOperator3_, R> *,map< pair, R> *,Inv_KN_long,Inv_KN_long >(Matrixmapp2mapIJ1),t_lM); + //atype*>()->Add("(","",new OneOperator3_, R> *,map< pair, R> *,KN_,KN_ >(Matrixmapp2mapIJ),t_lM); + + //map< pair, R> * ttt= (0); // ; map_type[typeid(map< pair, R> *).name()]->AddCast( new E_F1_funcT, R> *,KNM* >(Matrixfull2map), - new E_F1_funcT, R> *,outProduct_KN_* >(Matrixoutp2map) + new E_F1_funcT, R> *,outProduct_KN_* >(Matrixoutp2map), + new E_F1_funcT, R> *,Matrice_Creuse* >(MatriceCreuse2map) + ); map_type[typeid(list *,bool> > *).name()]->AddCast( new E_F1_funcT *,bool> > *,Matrice_Creuse* >(M2L3), - new E_F1_funcT *,bool> > *,Matrice_Creuse_Transpose >(tM2L3) - ); - + new E_F1_funcT *,bool> > *,Matrice_Creuse_Transpose >(tM2L3), + new E_F1_funcT *,bool> > *,minusMat >(mM2L3 ) + ); + /* + map_type[typeid(minusMat).name()]->AddCast( + new E_F1_funcT,list *,bool> > * >(mmM2L3 ) + //new E_F1_funcT,Matrice_Creuse* > * >(mmM2L3c ), + //new E_F1_funcT,Matrice_Creuse_Transpose > * >(mmM2L3ct ) + + ); +*/ @@ -1735,14 +1937,16 @@ map_type_of_map[make_pair(atype* >(),atype())]=atype *>(); map_type_of_map[make_pair(atype* >(),atype())]=atype *>(); - AddSparceMat(); - AddSparceMat(); + AddSparceMat(); + AddSparceMat(); Add("<-","(", new MatrixInterpolation); Add("<-","(", new MatrixInterpolation(1)); Global.Add("interpolate","(",new MatrixInterpolation); Global.Add("interpolate","(",new MatrixInterpolation(1)); Global.Add("interplotematrix","(",new OneOperatorCode); + zzzfff->Add("mapmatrix",atype, double> *>()); + zzzfff->Add("Cmapmatrix",atype, Complex> *>()); // a voir // pour compatibiliter diff -urN freefem++-2.15.orig/src/fflib/strversionnumber.cpp freefem++-2.15/src/fflib/strversionnumber.cpp --- freefem++-2.15.orig/src/fflib/strversionnumber.cpp Tue Mar 27 19:23:38 2007 +++ freefem++-2.15/src/fflib/strversionnumber.cpp Mon Apr 2 11:28:50 2007 @@ -18,6 +18,6 @@ // buffer.precision(8); // buffer<