Changeset 70


Ignore:
Timestamp:
08/30/11 16:51:09 (13 years ago)
Author:
berrada
Message:

fusion mb-branche dans tronc

Location:
trunk/src
Files:
1 added
1 deleted
7 edited
9 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/.TERM_xterm

    r64 r70  
    1111 lun. juin 27 15:44:44 CEST 2011 ... ariane.locean-ipsl.upmc.fr  
    1212 mer. juin 29 16:45:11 CEST 2011 ... ariane.locean-ipsl.upmc.fr  
    13  lun. août  1 16:18:44 CEST 2011 ... ariane  
     13 mar. juil. 12 12:15:52 CEST 2011 ... antea  
  • trunk/src/Makefile

    r66 r70  
    1 #GENOPT=-DOPTIMORDER -DSOLSORYAO -E 
     1# GENOPT=-DOPTIMORDER -DSOLSORYAO -E 
    22#GENOPT= -E 
    33GENOPT=-DOPTIMORDER -E 
  • trunk/src/cost.dat

    r61 r70  
    11 0.0000000000000000e+00 
     2 0.0000000000000000e+00 
     3 0.0000000000000000e+00 
  • trunk/src/gcx2.h

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • trunk/src/sinobad.d

    r64 r70  
    1 //#define FILTER 
     1//defval K_NEU 
     2//#define FZIMP 
     3#define FILTER 
     4#define FILZNOL 
     5//#define FILLNOZ 
    26//#define SOLSORYAO 
    37//#define OPTIMORDER 
     
    1822defval TU       2 | start time step 
    1923#ifdef FILTER 
    20 defval OFTL      40 
    21 defval OFTZ      40 
    22 defval OFT      80 
     24defval OFTL      0 
     25defval OFTZ      4 
     26defval OFT       4 
    2327#endif 
    2428#ifndef FILTER 
     
    2630#endif 
    2731//#exec disp_valdef 
    28 #ifdef FILTER 
     32#ifdef FZIMP //Filtre Z implicit 
     33defval K_FZIMP 
     34#endif 
     35#ifdef FILTER //Filtre 
    2936defval K_FILTER 
     37#endif 
     38#ifdef FILZNOL //uniquement Filtre Z 
     39defval K_FILZNOL 
     40#endif 
     41#ifdef FILLNOZ //uniquement Filtre L 
     42defval K_FILLNOZ 
    3043#endif 
    3144#ifdef SOLSORYAO 
     
    5366#ifdef FILTER 
    5467traj  Tcstf      M   0  1 
     68#ifndef FILZNOL 
    5569traj  Tlfil      M   1  0    1  OFTL 
     70#endif 
     71#ifndef FILLNOZ 
    5672traj  Tzfil      M   1  OFTL 1  OFTZ 
     73#endif 
    5774#endif 
    5875traj  Tcst       M   0   OFT  1 1 
     
    6279#ifdef FILTER 
    6380space  S3df      M    NX NY NZ    Tcstf 
     81#ifndef FILZNOL 
    6482space  S3dtlf    M    NX NY NZ    Tlfil 
     83#endif 
     84#ifndef FILLNOZ 
    6585space  S3dtzf    M    NX NY NZ    Tzfil 
    6686#endif 
     87#endif 
    6788 
    6889space  S0d       M    1           Tcst 
    69 //#space  S3d    M    NX NY NZ    Tcst 
    7090space  S3d       M    NX NY NZ    Tcst 
    7191space  S3dt      M    NX NY NZ    Tsbd 
     
    96116#ifdef FILTER 
    97117modul    nu                     space   S3df                    noward            output 1      target 
    98 modul    dta_lfil               space   S3dtlf                  input 6           output 1      tempo 
    99 modul    ztuv_lfil              space   S3dtlf                  input 3           output 2      tempo 
    100 modul    dta_zfil               space   S3dtzf                  input 4           output 1      tempo 
    101 modul    zwy_zfil               space   S3dtzf                  input 2           output 1      tempo 
     118#ifndef FILZNOL 
     119modul    dta_lfexp              space   S3dtlf                  input 6           output 1      tempo 
     120#endif 
     121 
     122#ifndef FILLNOZ 
     123#ifdef FZIMP 
     124modul    dta_zfimp_t            space   S3dtzf                  input 2           output 1      tempo 
     125modul    dta_zfimp              space   S3dtzf                  input 3           output 1      tempo 
     126#endif 
     127#ifndef FZIMP 
     128modul    dta_zfexp              space   S3dtzf                  input 4           output 1      tempo 
     129#endif 
     130 
     131#endif 
     132 
    102133modul    ta_c                   space   S3d                     input 1           output 1       
    103134#endif 
     
    285316 
    286317#ifdef FILTER 
    287 //#---------->dta_lfil 
    288 ctin     dta_lfil       1       from    nu                      1  i    j    k   
    289 ctin     dta_lfil       2       from    dta_lfil                1  i    j    k-1 t-1 
    290 ctin     dta_lfil       3       from    ztuv_lfil               1  i-1  j    k  t  
    291 ctin     dta_lfil       4       from    ztuv_lfil               1  i    j    k  t 
    292 ctin     dta_lfil       5       from    ztuv_lfil               2  i    j-1  k  t  
    293 ctin     dta_lfil       6       from    ztuv_lfil               2  i    j    k  t  
    294  
    295 //#---------->ztuv_lfil 
    296 ctin     ztuv_lfil      1       from    dta_lfil                1  i+1  j    k     t-1 
    297 ctin     ztuv_lfil      2       from    dta_lfil                1  i    j    k     t-1  
    298 ctin     ztuv_lfil      3       from    dta_lfil                1  i    j+1  k     t-1  
     318 
     319#ifndef FILZNOL 
     320//#---------->dta_lfexp 
     321ctin     dta_lfexp      1       from    nu                      1  i    j    k 
     322ctin     dta_lfexp      2       from    dta_lfexp               1  i    j    k     t-1  
     323ctin     dta_lfexp      3       from    dta_lfexp               1  i-1  j    k     t-1  
     324ctin     dta_lfexp      4       from    dta_lfexp               1  i+1  j    k     t-1 
     325ctin     dta_lfexp      5       from    dta_lfexp               1  i    j-1  k     t-1  
     326ctin     dta_lfexp      6       from    dta_lfexp               1  i    j+1  k     t-1  
     327#endif 
    299328 
    300329//#---------->dta_zfil 
    301 ctin     dta_zfil       1       from    dta_lfil                1  i    j    k     t 
    302 ctin     dta_zfil       2       from    dta_zfil                1  i    j    k     t-1  
    303 ctin     dta_zfil       3       from    zwy_zfil                1  i    j    k+1   t  
    304 ctin     dta_zfil       4       from    zwy_zfil                1  i    j    k     t 
    305  
    306 //#---------->zwy_zfil 
    307 ctin     zwy_zfil       1       from    dta_zfil                1  i    j    k-1   t-1 
    308 ctin     zwy_zfil       2       from    dta_zfil                1  i    j    k     t-1  
     330#ifndef FILLNOZ 
     331 
     332#ifndef FILZNOL 
     333#ifndef FZIMP 
     334ctin     dta_zfexp      1       from    dta_lfexp               1  i    j    k     t 
     335#endif 
     336#ifdef FZIMP 
     337ctin     dta_zfimp      1       from    dta_lfexp               1  i    j    k     t  
     338#endif 
     339#endif 
     340 
     341#ifdef FILZNOL 
     342#ifndef FZIMP 
     343ctin     dta_zfexp      1       from    nu                      1  i    j    k   
     344#endif 
     345#ifdef FZIMP 
     346ctin     dta_zfimp      1       from    nu                      1  i    j    k  
     347#endif 
     348#endif 
     349 
     350#ifdef FZIMP 
     351ctin     dta_zfimp      2       from    dta_zfimp               1  i    j    k+1   t  
     352ctin     dta_zfimp      3       from    dta_zfimp_t             1  i    j    k     t 
     353 
     354ctin     dta_zfimp_t    1       from    dta_zfimp_t             1  i    j    k-1 t 
     355ctin     dta_zfimp_t    2       from    dta_zfimp               1  i    j    k  t-1 
     356#endif 
     357#ifndef FZIMP 
     358ctin     dta_zfexp      2       from    dta_zfexp               1  i    j    k-1     t-1  
     359ctin     dta_zfexp      3       from    dta_zfexp               1  i    j    k   t-1  
     360ctin     dta_zfexp      4       from    dta_zfexp               1  i    j    k+1     t-1 
     361#endif 
    309362 
    310363//#---------->ta_c 
    311 ctin     ta_c           1       from    dta_zfil                1  i    j    k-1   t 
    312 #endif 
     364#ifdef FZIMP 
     365ctin     ta_c           1       from    dta_zfimp               1  i    j    k   t 
     366#endif 
     367#ifndef FZIMP 
     368ctin     ta_c           1       from    dta_zfexp               1  i    j    k   t 
     369#endif 
     370 
     371#endif 
     372 
     373#ifdef FILLNOZ 
     374ctin     ta_c           1       from    dta_lfexp               1  i    j    k   t 
     375#endif 
     376 
     377 
     378#endif 
     379 
    313380//#ctin  ta_c                   1..NPCA from    pca_ta                  1..NPCA  1 
    314381 
    315 //exec disp_ct_in 
    316 exec disp_modul 
     382//#exec disp_ct_in 
     383//exec disp_modul 
    317384 
    318385 
     
    878945#ifdef FILTER 
    879946// calcul du filtre 
    880  
     947#ifndef FILZNOL 
    881948order modinspace S3dtlf 
    882       order YA3   
    883             order YA2 YA1 
    884                   ztuv_lfil 
    885             forder 
    886             order YA2 YA1 
    887                   dta_lfil 
    888             forder 
    889       forder 
    890 forder 
    891  
     949    order YA3 YA2 YA1 
     950          dta_lfexp 
     951    forder 
     952forder 
     953#endif 
     954#ifndef FILLNOZ 
    892955order modinspace S3dtzf 
     956#ifdef FZIMP 
     957    order YA2 YA1 
     958      order YA3 
     959          dta_zfimp_t 
     960      forder 
     961      order YB3 
     962          dta_zfimp 
     963      forder 
     964    forder 
     965#endif 
     966#ifndef FZIMP 
    893967    order YA3 YA2 YA1 
    894           zwy_zfil 
     968          dta_zfexp 
    895969    forder 
    896     order YA3 YA2 YA1 
    897           dta_zfil 
    898     forder 
    899 forder 
     970#endif 
     971forder 
     972#endif 
     973 
    900974order modinspace S3d 
    901975       order YA3 YA2 YA1 
     
    11041178#ifdef FILTER 
    11051179 
     1180#ifndef FILZNOL 
    11061181order spaceintraj Tlfil 
    11071182        S3dtlf 
    11081183forder 
     1184#endif 
     1185#ifndef FILLNOZ 
    11091186order spaceintraj Tzfil 
    11101187        S3dtzf 
    11111188forder 
     1189#endif 
     1190 
    11121191order spaceintraj Tcst 
    11131192        S3d 
     
    11331212#ifdef FILTER 
    11341213insert_fct  arg load_eb 
    1135 #endif 
    1136  
     1214insert_fct  arg init_nu 
     1215insert_fct  arg xset_fdt_fco 
     1216#endif 
    11371217insert_fct arg xwriteout 
    11381218insert_fct arg xwritegrad 
  • trunk/src/sinobad.h

    r64 r70  
    1313#include"../include/meshmask.h" 
    1414 
     15#ifdef K_FILTER 
     16#ifdef K_FZIMP 
     17void luzimp_init(); // initialise tab_luzimp 
     18#define tab_luzimp( i, j, k , t )  (tab_luzimp[(i)*(NY*NZ)+(j)*(NZ)+(k)][t]) // factorisation LU  
     19double tab_luzimp[NZ*NY*NX][2];   // tableau factorisation LU 
     20#endif 
     21#define ta_eb( i, j, k )  (ta_eb[(i)*(NY*NZ)+(j)*(NZ)+(k)]) // ebauche 
     22double ta_eb[NZ*NY*NX];   // ebauche 
     23void load_eb (int argc, char *argv[]);  // load "ebauche" from current variable ta_c   
     24#endif 
    1525// For PPCA  
    1626/*double shfs_ta[NZ*NY*NX][NPCA]; 
     
    7585  ndastp    : = nyear*10000 + nmonth*100 + nday*/ 
    7686 
     87#ifdef K_FILTER 
     88double pdth_fil=100.;//7200.; 
     89double pdtz_fil=100.;//100.;//7200.; 
     90double fsaht_fil= 5.e+02;//1000.; 
     91double avt_fil=1.2e-05;//1.2e-5; 
     92//double lscale= 212000.; // length-scale 
     93double norm_fil; //coef de normalisation 
     94void normfil();// calcul du coef de normalisation norm_fil 
     95void xset_fdt_fco();// set fdt fcoef 
     96#endif 
     97 
    7798void cal_ff(); 
    7899void xdisplay() ;  
     
    97118  printf("//====================================================================//\n"); 
    98119  printf("\n"); 
     120#ifdef K_FILTER 
     121  printf("option FILTER enable\n"); 
     122#else 
     123  printf("option FILTER disable\n"); 
     124#endif 
    99125#ifdef K_SOLSORYAO 
    100126  printf("option SOLSORYAO enable\n"); 
     
    129155  cal_ff(); 
    130156  xdom_init(); 
     157#ifdef K_FILTER 
     158#ifdef K_FZIMP 
     159  luzimp_init(); 
     160#endif 
     161  normfil(); 
     162#endif 
    131163  xsolmat_init(); 
    132164  xflt_rst(); 
     
    235267} 
    236268 
     269//_____________________________________________________________________________ 
     270#ifdef K_FILTER 
     271//_____________________________________________________________________________ 
     272void normfil(){ 
     273  double norm_zfil=1.; 
     274  double norm_lfil=1.; 
     275  norm_lfil= 2.*sqrt(PI*fsaht_fil*pdth_fil*2.*(OFTL-1.));// schema explicite 
     276  norm_zfil= 2.*sqrt(PI*avt_fil*pdtz_fil*2.*(OFTZ-1.));// schema explicite  
     277#ifdef K_FZIMP  // schema implicite  
     278  double fact=1.;  
     279  int M=2*(OFTZ-1); 
     280  for(int i=1;i<M;i++) 
     281      fact = 4.*fact * (double) i / (double) (M+i-1); 
     282  norm_zfil=2.*fact*sqrt(avt_fil*pdtz_fil); 
     283#endif 
     284 
     285#if defined (K_FILZNOL) 
     286  norm_lfil=1.; 
     287#endif 
     288#if  defined (K_FILLNOZ) 
     289  norm_zfil=1.; 
     290#endif 
     291 
     292  norm_fil= norm_zfil*norm_lfil; 
     293  printf("norm_fil = %23.16e\n",norm_fil); 
     294} 
     295//_____________________________________________________________________________ 
     296void xset_fdt_fco(int argc, char *argv[]){// set fdt fcoef 
     297  if (argc!=3){ 
     298    printf("\n inappropriate arguments choice in command xset_fdt_fco\n"); 
     299    exit(99); 
     300  } 
     301  if(!strcmp(argv[1],"th")){ 
     302    pdth_fil=atof(argv[2]); 
     303  } 
     304  else if(!strcmp(argv[1],"tz")){ 
     305    pdtz_fil=atof(argv[2]); 
     306  } 
     307  else if(!strcmp(argv[1],"kh")){ 
     308    fsaht_fil=atof(argv[2]); 
     309  } 
     310  else if(!strcmp(argv[1],"kz")){ 
     311    avt_fil=atof(argv[2]); 
     312  } 
     313  else{ 
     314    printf("\n inappropriate first argument choice in command xset_fdt_fco\n"); 
     315    exit(99); 
     316  } 
     317} 
     318//_____________________________________________________________________________ 
     319void init_nu(int argc, char *argv[]){ 
     320  if (argc==1){ 
     321    for(int tt=0;tt<24;tt++) 
     322      for(int k=0;k<NZ;k++) 
     323        for(int j=0;j<NY;j++) 
     324          for(int i=0;i<NX;i++){ 
     325            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.)+  
     326                                                    (j+1.-(3.*NY)/4.)*(j+1.-(3.*NY)/4.))/4.) 
     327              *(1.-exp(-double(k+1.-NZ)/NZ))*(1.-exp(-double(tt)/24.)); 
     328          } 
     329  } 
     330  else if  (argc==5){ 
     331    for(int k=0;k<NZ;k++) 
     332      for(int j=0;j<NY;j++) 
     333        for(int i=0;i<NX;i++){ 
     334          YS_nu(0,i,j,k)=0.; 
     335          } 
     336 
     337    float v=atof(argv[1]); 
     338    int ji=atoi(argv[2])-1; 
     339    int jj=atoi(argv[3])-1; 
     340    int jk=atoi(argv[4])-1; 
     341    YS_nu(0,ji,jj,jk)=v; 
     342  } 
     343  else{ 
     344    printf("\n inappropriate arguments choice in command init_nu\n"); 
     345    exit(99); 
     346  } 
     347} 
     348//_____________________________________________________________________________ 
     349#ifdef K_FZIMP 
     350//_____________________________________________________________________________ 
     351void luzimp_init(){ 
     352  for(int j=0;j<NY;j++) 
     353    for(int i=0;i<NX;i++) 
     354      for(int k=0;k<NZ;k++){ // init a 0 
     355        tab_luzimp( i, j, k , 0 ) = 0.;// 0-->gam 
     356        tab_luzimp( i, j, k , 1 ) = 0.;// 1-->bet 
     357      } 
     358  double a0,a1; 
     359  double a2,b2,c2; 
     360  for(int j=1;j<NY-1;j++) 
     361    for(int i=1;i<NX-1;i++){ 
     362      a1=avt_fil*pdtz_fil/fse3w(i,j,1); 
     363      b2= 1.-a1/fse3t(i,j,0); 
     364#ifndef K_NEUM 
     365      a0=avt_fil*pdtz_fil/fse3w(i,j,0); 
     366      b2 -= (a0/fse3t(i,j,0));// 1-->bet 
     367#endif 
     368      tab_luzimp( i, j, 0 , 0 ) = 0.;// 0-->gam 
     369      tab_luzimp( i, j, 0 , 1 ) = b2;// 1-->bet 
     370      for(int k=1;k<NZ-2;k++){ 
     371        a0=avt_fil*pdtz_fil/fse3w(i,j,k); 
     372        a1=avt_fil*pdtz_fil/fse3w(i,j,k+1); 
     373        a2 = a0/fse3t(i,j,k); 
     374        b2 =  1.-a1/fse3t(i,j,k)-a0/fse3t(i,j,k); 
     375        c2 = a0/fse3t(i,j,k-1); 
     376        tab_luzimp( i, j, k , 0 ) = c2/tab_luzimp( i, j, k-1 , 1); 
     377        tab_luzimp( i, j, k , 1 ) = b2 - a2 * tab_luzimp( i, j, k , 0 ); 
     378      } 
     379      a0=avt_fil*pdtz_fil/fse3w(i,j,NZ-2); 
     380      a2 = a0/fse3t(i,j,NZ-2); 
     381      b2 =  1.-a0/fse3t(i,j,NZ-2); 
     382#ifndef K_NEUM 
     383      a1=avt_fil*pdtz_fil/fse3w(i,j,NZ-1); 
     384      b2 -= a1/fse3t(i,j,NZ-2); 
     385#endif 
     386      c2 = a0/fse3t(i,j,NZ-3); 
     387      
     388      tab_luzimp( i, j, NZ-2 , 0 ) = c2/tab_luzimp( i, j, NZ-3 , 1); 
     389      tab_luzimp( i, j, NZ-2 , 1 ) = b2 - a2 * tab_luzimp( i, j, NZ-2 , 0 ); 
     390    } 
     391  for(int k=0;k<NZ;k++){ // init a 0 
     392    printf("gam(%d)=%f \t",k+1,tab_luzimp( 23, 15, k , 0 )); 
     393    printf("bet(%d)=%f \n",k+1,tab_luzimp( 23, 15, k , 1 )); 
     394    } 
     395} 
     396#endif 
     397#endif 
    237398//_____________________________________________________________________________ 
    238399#define hu( i, j )  (hu[(j)*(NX)+(i)]) 
     
    537698  } 
    538699} 
     700//______________________________________________________________________________ 
     701#ifdef K_FILTER 
     702void load_eb (int argc, char *argv[]){  // load "ebauche" 
     703  // on doit presiser la variable exple : load_eb ta_c 
     704  if (!strcmp(argv[1],"ta_c")){ 
     705    for(int i=0;i<NX;i++) 
     706      for(int j=0;j<NY;j++) 
     707        for(int k=0;k<NZ;k++){ 
     708          ta_eb( i, j, k )=0.0; 
     709        } 
     710    for(int i=0;i<NX;i++) 
     711      for(int j=0;j<NY;j++) 
     712        for(int k=0;k<NZ;k++){ 
     713          ta_eb( i, j, k )=YS_ta_c(0,i,j,k); 
     714        } 
     715     
     716  } 
     717  else{ 
     718    printf( "function load_eb:: argument incorrect\n"); 
     719    exit(99);// abort program 
     720  } 
     721} 
     722#endif 
     723 
     724 
    539725//_____________________________________________________________________________ 
    540726/*void load_shape_func (int argc, char *argv[])  // load PCA axes from file 
     
    631817 
    632818//---------------------------------------------- 
    633 #if defined (YE_ta_c) || defined (YE_pca_ta) 
     819#if defined (YE_ta_c) || defined (YE_pca_ta) || defined (YE_nu) 
    634820#define true_tac( i, j, k )   (true_tac[(k)*(NY*NX)+(j)*(NX)+(i)]) 
    635821double true_tac[NZ*NY*NX]; 
     
    654840  int i,j,k; 
    655841  if(!strcmp(argv[1],"ta_c")){ 
    656 #if defined (YE_ta_c) || defined (YE_pca_ta) 
     842#if defined (YE_ta_c) || defined (YE_pca_ta) || defined (YE_nu) 
    657843    for(i=0;i<NX;i++) 
    658844      for(j=0;j<NY;j++) 
     
    696882  int i,j,k; 
    697883   
    698 #if defined (YE_ta_c) || defined (YE_pca_ta) 
     884#if defined (YE_ta_c) || defined (YE_pca_ta) || defined (YE_nu) 
    699885  sum=0.;sumn=0.; 
    700886  for(i=0;i<NX;i++) 
  • trunk/src/ta_c.h

    r1 r70  
    66//=========================================================================== 
    77//                          methode forward 
    8 forward () 
    9 { /*    1..NPCA from    pca_ta                  1..NPCA  1*/ 
    10   double sum=moy_ta(Yi,Yj,Yk); 
    11   for(int n=0;n<NPCA;n++) sum+=Yting[n]*stdev_ta[n]*shfs_ta(Yi,Yj,Yk,n); 
    12   YS1=sum; 
    13   // 
     8forward (YREAL x1) 
     9{  
     10  YS1 = ta_eb(Yi,Yj,Yk) +norm_fil*x1; 
     11  if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 || Yk==NZ-1){ 
     12    YS1=0.; 
     13  } 
     14 
     15 
     16  ///*  1..NPCA from    pca_ta                  1..NPCA  1*/ 
     17  //double sum=moy_ta(Yi,Yj,Yk); 
     18  //for(int n=0;n<NPCA;n++) sum+=Yting[n]*stdev_ta[n]*shfs_ta(Yi,Yj,Yk,n); 
     19  //YS1=sum; 
     20  //// 
     21  //  printf("norm_fac= %24.16e\n",norm_fac); 
     22  if(fabs(norm_fil*x1)>5)  
     23      printf("increm(%d,%d,%d) = %24.16e (%24.16e) \n",Yi+1,Yj+1,Yk+1,norm_fil*x1,YS1); 
    1424} 
    1525//=========================================================================== 
    1626//                         methode  backward 
    1727 
    18 backward () 
     28backward (YREAL x1) 
    1929{ 
    20   for(int n=0;n<NPCA;n++)        
    21     Yjac[0][n]    = stdev_ta[n]*shfs_ta(Yi,Yj,Yk,n); 
    22   // 
     30  YJ1I1=norm_fil;  
     31  if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 || Yk==NZ-1){ 
     32    YJ1I1=0.; 
     33  } 
     34    
     35  //for(int n=0;n<NPCA;n++)      
     36  //  Yjac[0][n]    = stdev_ta[n]*shfs_ta(Yi,Yj,Yk,n); 
     37  //// 
    2338} 
    2439 
Note: See TracChangeset for help on using the changeset viewer.