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

commit final avec filtre

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/branche-mb/src/sinobad.h

    r67 r68  
    8787double pdth_fil=100.;//7200.; 
    8888double pdtz_fil=100.;//100.;//7200.; 
    89 double fsaht_fil= 5.e+2;//1000.; 
     89double fsaht_fil= 5.e+02;//1000.; 
    9090double avt_fil=1.2e-05;//1.2e-5; 
    9191//double lscale= 212000.; // length-scale 
    9292double norm_fil; //coef de normalisation 
    9393void normfil();// calcul du coef de normalisation norm_fil 
     94void xset_fdt_fco();// set fdt fcoef 
    9495#endif 
    9596 
     
    259260//_____________________________________________________________________________ 
    260261#ifdef K_FILTER 
     262//_____________________________________________________________________________ 
    261263void normfil(){ 
    262264  double norm_zfil=1.; 
    263265  double norm_lfil=1.; 
    264 #if defined (K_FILZNOL) /* && !defined (K_FILLNOZ)*/  
    265   norm_zfil= 2.*sqrt(PI*avt_fil*pdtz_fil*2.*OFTZ); 
    266 #ifdef K_FZIMP 
     266  norm_lfil= 2.*sqrt(PI*fsaht_fil*pdth_fil*2.*(OFTL-1.));// schema explicite 
     267  norm_zfil= 2.*sqrt(PI*avt_fil*pdtz_fil*2.*(OFTZ-1.));// schema explicite  
     268#ifdef K_FZIMP  // schema implicite  
    267269  double fact=1.;  
    268270  int M=2*(OFTZ-1); 
     
    271273  norm_zfil=2.*fact*sqrt(avt_fil*pdtz_fil); 
    272274#endif 
    273 #elif  defined (K_FILLNOZ) /*&& !defined (K_FILZNOL)*/   
    274   norm_lfil= 2.*sqrt(PI*fsaht_fil*pdth_fil*2.*OFTL); 
    275 #endif 
     275 
     276#if defined (K_FILZNOL) 
     277  norm_lfil=1.; 
     278#endif 
     279#if  defined (K_FILLNOZ) 
     280  norm_zfil=1.; 
     281#endif 
     282 
    276283  norm_fil= norm_zfil*norm_lfil; 
    277284  printf("norm_fil = %23.16e\n",norm_fil); 
    278285} 
    279286//_____________________________________________________________________________ 
    280 void init_nu(){ 
    281  
    282   for(int tt=0;tt<24;tt++) 
     287void xset_fdt_fco(int argc, char *argv[]){// set fdt fcoef 
     288  if (argc!=3){ 
     289    printf("\n inappropriate arguments choice in command xset_fdt_fco\n"); 
     290    exit(99); 
     291  } 
     292  if(!strcmp(argv[1],"th")){ 
     293    pdth_fil=atof(argv[2]); 
     294  } 
     295  else if(!strcmp(argv[1],"tz")){ 
     296    pdtz_fil=atof(argv[2]); 
     297  } 
     298  else if(!strcmp(argv[1],"kh")){ 
     299    fsaht_fil=atof(argv[2]); 
     300  } 
     301  else if(!strcmp(argv[1],"kz")){ 
     302    avt_fil=atof(argv[2]); 
     303  } 
     304  else{ 
     305    printf("\n inappropriate first argument choice in command xset_fdt_fco\n"); 
     306    exit(99); 
     307  } 
     308} 
     309//_____________________________________________________________________________ 
     310void init_nu(int argc, char *argv[]){ 
     311  if (argc==1){ 
     312    for(int tt=0;tt<24;tt++) 
     313      for(int k=0;k<NZ;k++) 
     314        for(int j=0;j<NY;j++) 
     315          for(int i=0;i<NX;i++){ 
     316            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.)+  
     317                                                    (j+1.-(3.*NY)/4.)*(j+1.-(3.*NY)/4.))/4.) 
     318              *(1.-exp(-double(k+1.-NZ)/NZ))*(1.-exp(-double(tt)/24.)); 
     319          } 
     320  } 
     321  else if  (argc==5){ 
    283322    for(int k=0;k<NZ;k++) 
    284323      for(int j=0;j<NY;j++) 
    285324        for(int i=0;i<NX;i++){ 
    286           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.)+  
    287                                               (j+1.-(3.*NY)/4.)*(j+1.-(3.*NY)/4.))/4.) 
    288             *(1.-exp(-double(k+1.-NZ)/NZ))*(1.-exp(-double(tt)/24.)); 
    289             } 
     325          YS_nu(0,i,j,k)=0.; 
     326          } 
     327 
     328    float v=atof(argv[1]); 
     329    int ji=atoi(argv[2])-1; 
     330    int jj=atoi(argv[3])-1; 
     331    int jk=atoi(argv[4])-1; 
     332    YS_nu(0,ji,jj,jk)=v; 
     333  } 
     334  else{ 
     335    printf("\n inappropriate arguments choice in command init_nu\n"); 
     336    exit(99); 
     337  } 
    290338} 
    291339//_____________________________________________________________________________ 
     
    300348      } 
    301349  double a0,a1; 
     350  double a2,b2,c2; 
    302351  for(int j=1;j<NY-1;j++) 
    303352    for(int i=1;i<NX-1;i++){ 
    304353      a1=avt_fil*pdtz_fil/fse3w(i,j,1); 
    305       tab_luzimp( i, j, 0 , 0 ) = 0.;// 0-->gam 
    306       tab_luzimp( i, j, 0 , 1 ) = fse3t(i,j,0)+a1;// 1-->bet 
     354      b2= 1.-a1/fse3t(i,j,0); 
    307355#ifndef K_NEUM 
    308356      a0=avt_fil*pdtz_fil/fse3w(i,j,0); 
    309       tab_luzimp( i, j, 0 , 1 ) += a0;// 1-->bet 
    310 #endif 
     357      b2 -= (a0/fse3t(i,j,0));// 1-->bet 
     358#endif 
     359      tab_luzimp( i, j, 0 , 0 ) = 0.;// 0-->gam 
     360      tab_luzimp( i, j, 0 , 1 ) = b2;// 1-->bet 
    311361      for(int k=1;k<NZ-2;k++){ 
    312362        a0=avt_fil*pdtz_fil/fse3w(i,j,k); 
    313363        a1=avt_fil*pdtz_fil/fse3w(i,j,k+1); 
    314         tab_luzimp( i, j, k , 0 ) = -a0/tab_luzimp( i, j, k-1 , 1); 
    315         tab_luzimp( i, j, k , 1 ) = fse3t(i,j,k)+a1+a0 + a0 * tab_luzimp( i, j, k , 0 ); 
     364        a2 = a0/fse3t(i,j,k); 
     365        b2 =  1.-a1/fse3t(i,j,k)-a0/fse3t(i,j,k); 
     366        c2 = a0/fse3t(i,j,k-1); 
     367        tab_luzimp( i, j, k , 0 ) = c2/tab_luzimp( i, j, k-1 , 1); 
     368        tab_luzimp( i, j, k , 1 ) = b2 - a2 * tab_luzimp( i, j, k , 0 ); 
    316369      } 
    317370      a0=avt_fil*pdtz_fil/fse3w(i,j,NZ-2); 
    318       tab_luzimp( i, j, NZ-2 , 0 ) = -a0/tab_luzimp( i, j, NZ-3 , 1); 
    319       tab_luzimp( i, j, NZ-2 , 1 ) = fse3t(i,j,NZ-2)+a0 + a0 * tab_luzimp( i, j, NZ-2 , 0 ); 
     371      a2 = a0/fse3t(i,j,NZ-2); 
     372      b2 =  1.-a0/fse3t(i,j,NZ-2); 
    320373#ifndef K_NEUM 
    321374      a1=avt_fil*pdtz_fil/fse3w(i,j,NZ-1); 
    322       tab_luzimp( i, j, NZ-2 , 1 ) += a1; 
    323 #endif 
    324     } 
    325   /*  for(int k=0;k<NZ;k++){ // init a 0 
    326     printf("gam(%d)=%f \t",k+1,tab_luzimp( 5, 5, k , 0 )); 
    327     printf("bet(%d)=%f \n",k+1,tab_luzimp( 5, 5, k , 1 )); 
    328     }*/ 
     375      b2 -= a1/fse3t(i,j,NZ-2); 
     376#endif 
     377      c2 = a0/fse3t(i,j,NZ-3); 
     378      
     379      tab_luzimp( i, j, NZ-2 , 0 ) = c2/tab_luzimp( i, j, NZ-3 , 1); 
     380      tab_luzimp( i, j, NZ-2 , 1 ) = b2 - a2 * tab_luzimp( i, j, NZ-2 , 0 ); 
     381    } 
     382  for(int k=0;k<NZ;k++){ // init a 0 
     383    printf("gam(%d)=%f \t",k+1,tab_luzimp( 23, 15, k , 0 )); 
     384    printf("bet(%d)=%f \n",k+1,tab_luzimp( 23, 15, k , 1 )); 
     385    } 
    329386} 
    330387#endif 
Note: See TracChangeset for help on using the changeset viewer.