Index: branches/branche-mb/src/cost.dat
===================================================================
--- branches/branche-mb/src/cost.dat	(revision 63)
+++ branches/branche-mb/src/cost.dat	(revision 67)
@@ -2,33 +2,2 @@
  0.0000000000000000e+00
  0.0000000000000000e+00
- 2.1474823164582097e+02
- 1.2958901480355472e+01
- 2.4208867493170015e+01
- 9.5310667871496211e+00
- 6.1790369949928481e+00
- 4.0542139095518230e+00
- 2.3555976045385250e+00
- 1.8747388242251850e+00
- 1.6582963346427140e+00
- 1.4291909107170053e+00
- 1.2994902018124086e+00
- 1.3334911336228903e+00
- 1.2859361879963762e+00
- 1.5496856239892498e+00
- 1.2418585591044098e+00
- 2.0442371997362545e+00
- 1.2971715810562954e+00
- 1.2975780013916505e+00
- 1.2986727516755405e+00
- 1.3057984268538101e+00
- 1.2852046369970458e+00
- 1.2266854183064928e+00
- 1.2247496446634496e+00
- 1.2151832426274585e+00
- 1.2154570853596762e+00
- 1.2858728960761006e+00
- 1.2152605999261445e+00
- 1.2152356639508144e+00
- 1.2858909584114377e+00
- 1.2859036070737340e+00
- 1.2859124488276841e+00
Index: branches/branche-mb/src/dta_lfexp.h
===================================================================
--- branches/branche-mb/src/dta_lfexp.h	(revision 67)
+++ branches/branche-mb/src/dta_lfexp.h	(revision 67)
@@ -0,0 +1,151 @@
+
+/***************************************************************************
+                 module classe dta_lfexp.h  -  description
+***************************************************************************/
+// Mohamed Berrada
+// locean-ipsl.upmc, Paris, August 9, 2011
+//===========================================================================
+//                          methode forward
+forward (YREAL x1,YREAL x2,YREAL x3,YREAL x4,YREAL x5,YREAL x6)
+{ /*	1	from	nu      		1  i 	j    k
+	2	from	dta_lfexp		1  i 	j    k     t-1 
+	3	from	dta_lfexp		1  i-1 	j    k     t-1 
+ 	4	from	dta_lfexp		1  i+1 	j    k     t-1
+	5	from	dta_lfexp		1  i 	j-1  k     t-1 
+	6	from	dta_lfexp		1  i 	j+1  k     t-1 */
+  //  if (Yi==5 && Yj==5)
+  //printf("dta_lfil : %d\n",Yt);
+
+  double zbtr = zbtr2(Yi,Yj);
+  if(Yt==1){
+    double wm12=sqrt(zbtr);//1./(106000.); //1/sqrt(ds1*ds2)
+    YS1=wm12*x1;
+  }
+  else{
+    if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 || Yk==NZ-1){
+      YS1=0.;
+    }
+    else{
+      double bi   = fsaht_fil * pdth_fil * umask(Yi,Yj,Yk) * ze1ur(Yi,Yj);
+      double bim1 = fsaht_fil * pdth_fil * umask(Yi-1,Yj,Yk) * ze1ur(Yi-1,Yj);
+      double bj   = fsaht_fil * pdth_fil * vmask(Yi,Yj,Yk) * ze2vr(Yi,Yj);
+      double bjm1 = fsaht_fil * pdth_fil * vmask(Yi,Yj-1,Yk) * ze2vr(Yi,Yj-1);
+
+      double tip1,tim1,tjp1,tjm1, tij;
+      //cdt au bord i
+      if (Yi==1){
+	tim1= 0.;
+#ifdef K_NEU
+	tim1= - bim1 * x2;
+#endif
+      }
+      else{
+	tim1= -bim1 * x3;
+      }
+      if (Yi==NX-2){
+	tip1= 0.;
+#ifdef K_NEU
+	tip1= - bi * x2;
+#endif
+      }
+      else{
+	tip1= -bi * x4;
+      }
+      //cdt au bord j
+      if (Yj==1){
+	tjm1= 0.;
+#ifdef K_NEU
+	tjm1= - bjm1 * x2;
+#endif
+      }
+      else{
+	tjm1= -bjm1 * x5;
+      }
+      if (Yj==NY-2){
+	tjp1= 0.;
+#ifdef K_NEU
+	tjp1= - bj * x2;
+#endif
+      }
+      else{
+	tjp1= -bj * x6;
+      }
+
+      tij= (1./zbtr+bi+bim1+bj+bjm1) * x2;
+      YS1 = zbtr*(tip1 + tim1 + tjp1 + tjm1 + tij);
+    }
+  }
+}
+
+//===========================================================================
+//                         methode  backward
+
+backward (YREAL x1,YREAL x2,YREAL x3,YREAL x4,YREAL x5,YREAL x6)
+{
+  YJ1I1=0.;     YJ1I2=0.;    YJ1I3=0.;    YJ1I4=0.;    YJ1I5=0.;    YJ1I6=0.;
+  double zbtr = zbtr2(Yi,Yj);
+  if(Yt==1){
+    double wm12=sqrt(zbtr);//1./(106000.); //1/sqrt(ds1*ds2)
+    YJ1I1=wm12;
+  }
+  else{
+    if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 || Yk==NZ-1){
+      YJ1I1=0.;     YJ1I2=0.;    YJ1I3=0.;    YJ1I4=0.;    YJ1I5=0.;    YJ1I6=0.;
+    }
+    else{
+      double bi   = fsaht_fil * pdth_fil * umask(Yi,Yj,Yk) * ze1ur(Yi,Yj);
+      double bim1 = fsaht_fil * pdth_fil * umask(Yi-1,Yj,Yk) * ze1ur(Yi-1,Yj);
+      double bj   = fsaht_fil * pdth_fil * vmask(Yi,Yj,Yk) * ze2vr(Yi,Yj);
+      double bjm1 = fsaht_fil * pdth_fil * vmask(Yi,Yj-1,Yk) * ze2vr(Yi,Yj-1);
+
+      double dtip1_x4=0.,dtim1_x3=0.,dtjp1_x6=0.,dtjm1_x5=0.;
+      double dtip1_x2=0.,dtim1_x2=0.,dtjp1_x2=0.,dtjm1_x2=0., dtij_x2=0.;
+      //cdt au bord i
+      if (Yi==1){
+	dtim1_x2= 0.;
+#ifdef K_NEU
+	dtim1_x2= - bim1;
+#endif
+      }
+      else{
+	dtim1_x3= -bim1;
+      }
+      if (Yi==NX-2){
+	dtip1_x2= 0.;
+#ifdef K_NEU
+	dtip1_x2= - bi;
+#endif
+      }
+      else{
+	dtip1_x4= -bi;
+      }
+      //cdt au bord j
+      if (Yj==1){
+	dtjm1_x2= 0.;
+#ifdef K_NEU
+	dtjm1_x2= - bjm1;
+#endif
+      }
+      else{
+	dtjm1_x5= -bjm1;
+      }
+      if (Yj==NY-2){
+	dtjp1_x2= 0.;
+#ifdef K_NEU
+	dtjp1_x2= - bj;
+#endif
+      }
+      else{
+	dtjp1_x6= -bj;
+      }
+      dtij_x2= (1./zbtr+bi+bim1+bj+bjm1);
+
+      YJ1I1 = 0.;
+      YJ1I2 = zbtr*(dtip1_x2 + dtim1_x2 + dtjp1_x2 + dtjm1_x2 + dtij_x2);
+      YJ1I3 = zbtr*(dtim1_x3);
+      YJ1I4 = zbtr*(dtip1_x4);
+      YJ1I5 = zbtr*(dtjm1_x5);
+      YJ1I6 = zbtr*(dtjp1_x6);
+    }
+  }
+}
Index: branches/branche-mb/src/dta_lfil.h
===================================================================
--- branches/branche-mb/src/dta_lfil.h	(revision 63)
+++ branches/branche-mb/src/dta_lfil.h	(revision 67)
@@ -18,10 +18,6 @@
 
   if(Yt==1){
-    double zdep;
-    if (Yk==0) 
-      zdep=fsdept( Yi , Yj , 1 ) - fsdept( Yi , Yj , 0 );
-    else    
-      zdep=fsdept( Yi , Yj , Yk ) - fsdept( Yi , Yj , Yk-1 );
-    double wm12=1./(106000*sqrt(zdep)); //1/sqrt(ds1*ds2*ds3)
+    double zbtr = zbtr2(Yi,Yj);
+    double wm12=sqrt(zbtr);//1./(106000.); //1/sqrt(ds1*ds2)
     YS1=wm12*x1;
   }
@@ -36,8 +32,8 @@
   }
   //
-    if(Yt==1 && Yk==0 && Yi<26 && Yi>22 && Yj<17 && Yj>13) 
+  /*    if(Yt==1 && Yk==0 && Yi<26 && Yi>22 && Yj<17 && Yj>13) 
       printf("nul1(%d,%d) = %24.16e \n",Yi+1,Yj+1,YS1);
     if(Yt==40 && Yk==0 && Yi<26 && Yi>22 && Yj<17 && Yj>13) 
-      printf("nul40(%d,%d) = %24.16e \n",Yi+1,Yj+1,YS1);
+    printf("nul40(%d,%d) = %24.16e \n",Yi+1,Yj+1,YS1);*/
 }
 
@@ -51,10 +47,7 @@
 
   if(Yt==1){
-    double zdep;
-    if (Yk==0) 
-      zdep=fsdept( Yi , Yj , 1 ) - fsdept( Yi , Yj , 0 );
-    else    
-      zdep=fsdept( Yi , Yj , Yk ) - fsdept( Yi , Yj , Yk-1 );
-    double wm12=1./(106000*sqrt(zdep)); //1/sqrt(ds1*ds2*ds3)
+    double zbtr = zbtr2(Yi,Yj);
+    double wm12=sqrt(zbtr);//(106000.); //1/sqrt(ds1*ds2)
+    //    double wm12=1./(106000.); //1/sqrt(ds1*ds2)
     YJ1I1=wm12;
   }
@@ -70,7 +63,7 @@
   }
   //
-  if(Ycurward==BACKWARD){
+  /*  if(Ycurward==BACKWARD){
     if(Yt==10 && Yk==0 && Yi<26 && Yi>22 && Yj<17 && Yj>13) 
       printf("YG_1L(%d,%d) = %24.16e \n",Yi+1,Yj+1,YG1);
-  }
+  }*/
 }
Index: branches/branche-mb/src/sinobad.d
===================================================================
--- branches/branche-mb/src/sinobad.d	(revision 63)
+++ branches/branche-mb/src/sinobad.d	(revision 67)
@@ -1,6 +1,7 @@
 defval K_NEU
+#define FZIMP
 #define FILTER
-#define FILZNOL
-//#define FILNOZL
+//#define FILZNOL
+#define FILLNOZ
 //#define SOLSORYAO
 //#define OPTIMORDER
@@ -21,7 +22,7 @@
 defval TU       2 | start time step
 #ifdef FILTER
-defval OFTL      0
-defval OFTZ      25
-defval OFT       25
+defval OFTL      10
+defval OFTZ      0
+defval OFT       10
 #endif
 #ifndef FILTER
@@ -29,4 +30,7 @@
 #endif
 //#exec disp_valdef
+#ifdef FZIMP
+defval K_FZIMP
+#endif
 #ifdef FILTER
 defval K_FILTER
@@ -35,6 +39,6 @@
 defval K_FILZNOL
 #endif
-#ifdef FILNOZL
-defval K_FILNOZL
+#ifdef FILLNOZ
+defval K_FILLNOZ
 #endif
 #ifdef SOLSORYAO
@@ -62,8 +66,8 @@
 #ifdef FILTER
 traj  Tcstf      M   0  1
-#ifndef FILNOZL
 #ifndef FILZNOL
 traj  Tlfil      M   1  0    1  OFTL
 #endif
+#ifndef FILLNOZ
 traj  Tzfil      M   1  OFTL 1  OFTZ
 #endif
@@ -75,8 +79,8 @@
 #ifdef FILTER
 space  S3df 	 M    NX NY NZ    Tcstf
-#ifndef FILNOZL
 #ifndef FILZNOL
 space  S3dtlf    M    NX NY NZ    Tlfil
 #endif
+#ifndef FILLNOZ
 space  S3dtzf    M    NX NY NZ    Tzfil
 #endif
@@ -112,13 +116,19 @@
 #ifdef FILTER
 modul	 nu			space	S3df			noward		  output 1	target
-#ifndef FILNOZL
 #ifndef FILZNOL
-modul	 dta_lfil		space	S3dtlf			input 6		  output 1	tempo
-modul	 ztuv_lfil		space	S3dtlf			input 3		  output 2	tempo
-#endif
-modul	 dta_zfilt		space	S3dtzf			input 4		  output 1	tempo
-//modul	 dta_zfil		space	S3dtzf			input 4		  output 1	tempo
-//modul	 zwy_zfil		space	S3dtzf			input 2		  output 1	tempo
-#endif
+modul	 dta_lfexp		space	S3dtlf			input 6		  output 1	tempo
+#endif
+
+#ifndef FILLNOZ
+#ifdef FZIMP
+modul	 dta_zfimp_t		space	S3dtzf			input 2		  output 1	tempo
+modul	 dta_zfimp		space	S3dtzf			input 3		  output 1	tempo
+#endif
+#ifndef FZIMP
+modul	 dta_zfexp		space	S3dtzf			input 4		  output 1	tempo
+#endif
+
+#endif
+
 modul	 ta_c			space	S3d			input 1		  output 1	
 #endif
@@ -306,51 +316,67 @@
 
 #ifdef FILTER
-#ifndef FILNOZL
+
 #ifndef FILZNOL
-//#---------->dta_lfil
-ctin	 dta_lfil	1	from	nu      		1  i 	j    k	
-ctin	 dta_lfil	2	from	dta_lfil      		1  i 	j    k-1 t-1
-ctin	 dta_lfil	3	from	ztuv_lfil		1  i-1 	j    k	t 
-ctin	 dta_lfil 	4	from	ztuv_lfil		1  i 	j    k	t
-ctin	 dta_lfil	5	from	ztuv_lfil		2  i 	j-1  k	t 
-ctin	 dta_lfil	6	from	ztuv_lfil		2  i 	j    k	t 
-
-//#---------->ztuv_lfil
-ctin	 ztuv_lfil	1	from	dta_lfil		1  i+1 	j    k     t-1
-ctin	 ztuv_lfil	2	from	dta_lfil		1  i 	j    k     t-1 
-ctin	 ztuv_lfil	3	from	dta_lfil		1  i 	j+1  k     t-1 
+//#---------->dta_lfexp
+ctin	 dta_lfexp	1	from	nu      		1  i 	j    k
+ctin	 dta_lfexp	2	from	dta_lfexp		1  i 	j    k     t-1 
+ctin	 dta_lfexp	3	from	dta_lfexp		1  i-1 	j    k     t-1 
+ctin	 dta_lfexp 	4	from	dta_lfexp		1  i+1 	j    k     t-1
+ctin	 dta_lfexp	5	from	dta_lfexp		1  i 	j-1  k     t-1 
+ctin	 dta_lfexp	6	from	dta_lfexp		1  i 	j+1  k     t-1 
 #endif
 
 //#---------->dta_zfil
+#ifndef FILLNOZ
+#ifndef FILZNOL
+#ifndef FZIMP
+ctin	 dta_zfexp	1	from	dta_lfexp      		1  i 	j    k     t
+#endif
+#ifdef FZIMP
+ctin	 dta_zfimp	1	from	dta_lfexp      		1  i 	j    k     t 
+#endif
+#endif
+
 #ifdef FILZNOL
-ctin	 dta_zfilt	1	from	nu      		1  i 	j    k	
-//ctin	 dta_zfil	1	from	nu      		1  i 	j    k	
-#endif
-#ifndef FILZNOL
-ctin	 dta_zfil	1	from	dta_lfil      		1  i 	j    k     t
-#endif
-ctin	 dta_zfilt	2	from	dta_zfilt		1  i 	j    k-1     t-1 
-ctin	 dta_zfilt	3	from	dta_zfilt		1  i 	j    k   t-1 
-ctin	 dta_zfilt 	4	from	dta_zfilt		1  i 	j    k+1     t-1
-//ctin	 dta_zfil	2	from	dta_zfil		1  i 	j    k     t-1 
-//ctin	 dta_zfil	3	from	zwy_zfil		1  i 	j    k+1   t 
-//ctin	 dta_zfil 	4	from	zwy_zfil		1  i 	j    k     t
-
-//#---------->zwy_zfil
-//ctin	 zwy_zfil	1	from	dta_zfil      		1  i 	j    k-1   t-1
-//ctin	 zwy_zfil	2	from	dta_zfil		1  i 	j    k     t-1 
+#ifndef FZIMP
+ctin	 dta_zfexp	1	from	nu      		1  i 	j    k	
+#endif
+#ifdef FZIMP
+ctin	 dta_zfimp	1	from	nu      		1  i 	j    k 
+#endif
+#endif
+
+#ifdef FZIMP
+ctin	 dta_zfimp	2	from	dta_zfimp		1  i 	j    k+1   t 
+ctin	 dta_zfimp 	3	from	dta_zfimp_t		1  i 	j    k     t
+
+ctin	 dta_zfimp_t	1	from	dta_zfimp_t    		1  i 	j    k-1 t
+ctin	 dta_zfimp_t	2	from	dta_zfimp      		1  i 	j    k	t-1
+#endif
+#ifndef FZIMP
+ctin	 dta_zfexp	2	from	dta_zfexp		1  i 	j    k-1     t-1 
+ctin	 dta_zfexp	3	from	dta_zfexp		1  i 	j    k   t-1 
+ctin	 dta_zfexp 	4	from	dta_zfexp		1  i 	j    k+1     t-1
+#endif
 
 //#---------->ta_c
-ctin	 ta_c   	1	from	dta_zfilt      		1  i 	j    k   t
-//ctin	 ta_c   	1	from	dta_zfil      		1  i 	j    k   t
-#endif
-#ifdef FILNOZL
-ctin	 ta_c   	1	from	nu      		1  i 	j    k   
-#endif
-#endif
+#ifdef FZIMP
+ctin	 ta_c   	1	from	dta_zfimp      		1  i 	j    k   t
+#endif
+#ifndef FZIMP
+ctin	 ta_c   	1	from	dta_zfexp      		1  i 	j    k   t
+#endif
+#endif
+#ifdef FILLNOZ
+ctin	 ta_c   	1	from	dta_lfexp      		1  i 	j    k   t
+#endif
+
+
+#endif
+
 //#ctin	 ta_c			1..NPCA	from	pca_ta			1..NPCA  1
 
 //#exec disp_ct_in
-exec disp_modul
+//exec disp_modul
 
 
@@ -916,27 +942,31 @@
 #ifdef FILTER
 // calcul du filtre
-#ifndef FILNOZL
 #ifndef FILZNOL
 order modinspace S3dtlf
-      order YA3  
-      	    order YA2 YA1
-      	    	  ztuv_lfil
-      	    forder
-      	    order YA2 YA1
-      	    	  dta_lfil
-      	    forder
-      forder
-forder
-#endif
+    order YA3 YA2 YA1
+       	  dta_lfexp
+    forder
+forder
+#endif
+#ifndef FILLNOZ
 order modinspace S3dtzf
-//    order YA3 YA2 YA1
-//    	  zwy_zfil
-//    forder
+#ifdef FZIMP
+    order YA2 YA1
+      order YA3
+    	  dta_zfimp_t
+      forder
+      order YB3
+    	  dta_zfimp
+      forder
+    forder
+#endif
+#ifndef FZIMP
     order YA3 YA2 YA1
-//       	  dta_zfil
-       	  dta_zfilt
+       	  dta_zfexp
     forder
-forder
-#endif
+#endif
+forder
+#endif
+
 order modinspace S3d
        order YA3 YA2 YA1
@@ -1145,5 +1175,4 @@
 #ifdef FILTER
 
-#ifndef FILNOZL
 #ifndef FILZNOL
 order spaceintraj Tlfil
@@ -1151,8 +1180,10 @@
 forder
 #endif
+#ifndef FILLNOZ
 order spaceintraj Tzfil
 	S3dtzf
 forder
 #endif
+
 order spaceintraj Tcst
 	S3d
Index: branches/branche-mb/src/sinobad.h
===================================================================
--- branches/branche-mb/src/sinobad.h	(revision 63)
+++ branches/branche-mb/src/sinobad.h	(revision 67)
@@ -14,4 +14,9 @@
 
 #ifdef K_FILTER
+#ifdef K_FZIMP
+void luzimp_init(); // initialise tab_luzimp
+#define tab_luzimp( i, j, k , t )  (tab_luzimp[(i)*(NY*NZ)+(j)*(NZ)+(k)][t]) // factorisation LU 
+double tab_luzimp[NZ*NY*NX][2];   // tableau factorisation LU
+#endif
 #define ta_eb( i, j, k )  (ta_eb[(i)*(NY*NZ)+(j)*(NZ)+(k)]) // ebauche
 double ta_eb[NZ*NY*NX];   // ebauche
@@ -81,8 +86,10 @@
 #ifdef K_FILTER
 double pdth_fil=100.;//7200.;
-double pdtz_fil=100.;//7200.;
-double fsaht_fil= 1.2e+2;//1000.;
-double avt_fil=1.2e-5;
-double lscale= 212000.; // length-scale
+double pdtz_fil=100.;//100.;//7200.;
+double fsaht_fil= 5.e+2;//1000.;
+double avt_fil=1.2e-05;//1.2e-5;
+//double lscale= 212000.; // length-scale
+double norm_fil; //coef de normalisation
+void normfil();// calcul du coef de normalisation norm_fil
 #endif
 
@@ -146,4 +153,10 @@
   cal_ff();
   xdom_init();
+#ifdef K_FILTER
+#ifdef K_FZIMP
+  luzimp_init();
+#endif
+  normfil();
+#endif
   xsolmat_init();
   xflt_rst();
@@ -151,5 +164,4 @@
   xdisplay();
   xtraqsr_init();
-  
 }
 //____________________________________________________________________________
@@ -244,5 +256,26 @@
   normsup_alla_c();
 }
+
+//_____________________________________________________________________________
 #ifdef K_FILTER
+void normfil(){
+  double norm_zfil=1.;
+  double norm_lfil=1.;
+#if defined (K_FILZNOL) /* && !defined (K_FILLNOZ)*/ 
+  norm_zfil= 2.*sqrt(PI*avt_fil*pdtz_fil*2.*OFTZ);
+#ifdef K_FZIMP
+  double fact=1.; 
+  int M=2*(OFTZ-1);
+  for(int i=1;i<M;i++)
+      fact = 4.*fact * (double) i / (double) (M+i-1);
+  norm_zfil=2.*fact*sqrt(avt_fil*pdtz_fil);
+#endif
+#elif  defined (K_FILLNOZ) /*&& !defined (K_FILZNOL)*/  
+  norm_lfil= 2.*sqrt(PI*fsaht_fil*pdth_fil*2.*OFTL);
+#endif
+  norm_fil= norm_zfil*norm_lfil;
+  printf("norm_fil = %23.16e\n",norm_fil);
+}
+//_____________________________________________________________________________
 void init_nu(){
 
@@ -251,9 +284,49 @@
       for(int j=0;j<NY;j++)
 	for(int i=0;i<NX;i++){
-	  YS_nu(0,i,j,k)=YS_nu(0,i,j,k)+1.*exp(-((i+1.-(3.*NX)/4.)*(i+1.-(3.*NX)/4.)+ 
+	  YS_nu(0,i,j,k)=YS_nu(0,i,j,k)+0.1*exp(-((i+1.-(3.*NX)/4.)*(i+1.-(3.*NX)/4.)+ 
 					      (j+1.-(3.*NY)/4.)*(j+1.-(3.*NY)/4.))/4.)
 	    *(1.-exp(-double(k+1.-NZ)/NZ))*(1.-exp(-double(tt)/24.));
 	    }
 }
+//_____________________________________________________________________________
+#ifdef K_FZIMP
+//_____________________________________________________________________________
+void luzimp_init(){
+  for(int j=0;j<NY;j++)
+    for(int i=0;i<NX;i++)
+      for(int k=0;k<NZ;k++){ // init a 0
+	tab_luzimp( i, j, k , 0 ) = 0.;// 0-->gam
+	tab_luzimp( i, j, k , 1 ) = 0.;// 1-->bet
+      }
+  double a0,a1;
+  for(int j=1;j<NY-1;j++)
+    for(int i=1;i<NX-1;i++){
+      a1=avt_fil*pdtz_fil/fse3w(i,j,1);
+      tab_luzimp( i, j, 0 , 0 ) = 0.;// 0-->gam
+      tab_luzimp( i, j, 0 , 1 ) = fse3t(i,j,0)+a1;// 1-->bet
+#ifndef K_NEUM
+      a0=avt_fil*pdtz_fil/fse3w(i,j,0);
+      tab_luzimp( i, j, 0 , 1 ) += a0;// 1-->bet
+#endif
+      for(int k=1;k<NZ-2;k++){
+	a0=avt_fil*pdtz_fil/fse3w(i,j,k);
+	a1=avt_fil*pdtz_fil/fse3w(i,j,k+1);
+	tab_luzimp( i, j, k , 0 ) = -a0/tab_luzimp( i, j, k-1 , 1);
+	tab_luzimp( i, j, k , 1 ) = fse3t(i,j,k)+a1+a0 + a0 * tab_luzimp( i, j, k , 0 );
+      }
+      a0=avt_fil*pdtz_fil/fse3w(i,j,NZ-2);
+      tab_luzimp( i, j, NZ-2 , 0 ) = -a0/tab_luzimp( i, j, NZ-3 , 1);
+      tab_luzimp( i, j, NZ-2 , 1 ) = fse3t(i,j,NZ-2)+a0 + a0 * tab_luzimp( i, j, NZ-2 , 0 );
+#ifndef K_NEUM
+      a1=avt_fil*pdtz_fil/fse3w(i,j,NZ-1);
+      tab_luzimp( i, j, NZ-2 , 1 ) += a1;
+#endif
+    }
+  /*  for(int k=0;k<NZ;k++){ // init a 0
+    printf("gam(%d)=%f \t",k+1,tab_luzimp( 5, 5, k , 0 ));
+    printf("bet(%d)=%f \n",k+1,tab_luzimp( 5, 5, k , 1 ));
+    }*/
+}
+#endif
 #endif
 //_____________________________________________________________________________
@@ -678,5 +751,5 @@
 
 //----------------------------------------------
-#if defined (YE_ta_c) || defined (YE_pca_ta)
+#if defined (YE_ta_c) || defined (YE_pca_ta) || defined (YE_nu)
 #define true_tac( i, j, k )   (true_tac[(k)*(NY*NX)+(j)*(NX)+(i)])
 double true_tac[NZ*NY*NX];
@@ -701,5 +774,5 @@
   int i,j,k;
   if(!strcmp(argv[1],"ta_c")){
-#if defined (YE_ta_c) || defined (YE_pca_ta)
+#if defined (YE_ta_c) || defined (YE_pca_ta) || defined (YE_nu)
     for(i=0;i<NX;i++)
       for(j=0;j<NY;j++)
@@ -743,5 +816,5 @@
   int i,j,k;
   
-#if defined (YE_ta_c) || defined (YE_pca_ta)
+#if defined (YE_ta_c) || defined (YE_pca_ta) || defined (YE_nu)
   sum=0.;sumn=0.;
   for(i=0;i<NX;i++)
Index: branches/branche-mb/src/ta_c.h
===================================================================
--- branches/branche-mb/src/ta_c.h	(revision 63)
+++ branches/branche-mb/src/ta_c.h	(revision 67)
@@ -8,16 +8,5 @@
 forward (YREAL x1)
 { 
-
-  //if(Yk==0 && Yi<14 && Yi>10 && Yj<14 && Yj>10) printf("nu(%d,%d) = %24.16e \n",Yi+1,Yj+1,x1);
-
-  double norm_fac;
-#ifdef K_FILZNOL
-  norm_fac= 2.*sqrt(PI*avt_fil*pdtz_fil*2.*OFTZ);///1.e-01;//1./sqrt(2.*PI)/lscale;
-#elif defined (K_FILNOZL) 
-  norm_fac= 1.e+00;
-#else
-  norm_fac= 1.e+00;
-#endif
-  YS1 = ta_eb(Yi,Yj,Yk) +norm_fac*x1;
+  YS1 = ta_eb(Yi,Yj,Yk) +norm_fil*x1;
   if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 || Yk==NZ-1){
     YS1=0.;
@@ -30,6 +19,7 @@
   //YS1=sum;
   ////
-  /* if(fabs(x1)>0.1) 
-     printf("increm(%d,%d,%d) = %24.16e (%24.16e) \n",Yi+1,Yj+1,Yk+1,x1,YS1);*/
+  //  printf("norm_fac= %24.16e\n",norm_fac);
+  if(fabs(norm_fil*x1)>5.) 
+      printf("increm(%d,%d,%d) = %24.16e (%24.16e) \n",Yi+1,Yj+1,Yk+1,norm_fil*x1,YS1);
 }
 //===========================================================================
@@ -38,13 +28,5 @@
 backward (YREAL x1)
 {
-  double norm_fac;
-#ifdef K_FILZNOL
-  norm_fac= 2.*sqrt(PI*avt_fil*pdtz_fil*2.*OFTZ);///1.e-01;//1./sqrt(2.*PI)/lscale;
-#elif defined (K_FILNOZL) 
-  norm_fac= 1.e+00;
-#else
-  norm_fac= 1.e+00;
-#endif
-  YJ1I1=norm_fac; 
+  YJ1I1=norm_fil; 
   if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 || Yk==NZ-1){
     YJ1I1=0.;
