Changeset 68


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

commit final avec filtre

Location:
branches/branche-mb
Files:
2 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/branche-mb/scripts/sinobad.i

    r62 r68  
    1818xwriteout 0 true ../data_out/exp_T.nc 
    1919#setstate nu 1 
    20 #init_nu 
     20init_nu 
     21xset_fdt_fco th 100.  
     22xset_fdt_fco tz 100. 
     23xset_fdt_fco kh 5.e+02 
     24xset_fdt_fco kz 1.2e-05 
     25 
    2126print_time OFF 
    2227set_modeltime 0 
     
    3641savestate ub  1   ijk   50    A       1       ../data_out/ub_obs_48.dat    
    3742savestate vb  1   ijk   50    A       1       ../data_out/vb_obs_48.dat    
    38 #GOTO TESTAD  
     43GOTO TESTAD  
    3944 
    4045loadobs sshb  1   ij   50    A       1       ../data_out/sshb_obs_48.dat D    
  • branches/branche-mb/scripts/sinobad_2D.i

    r62 r68  
    22#               fichier de D'INSTRUCTIONS de référence 
    33#Julien Brajard 
     4# modified by mohamed Berrada (filtre August 2011) 
    45#============================================================================== 
    56#script faisant l'assimilation de référence 
     
    1415load_eb ta_c   // pour tenir en compte ta_c sinon sera 0 cause filtre 
    1516true_target_in_tab ta_c 
     17 
     18xset_fdt_fco th 1000.  
     19xset_fdt_fco tz 10. 
     20xset_fdt_fco kh 5.e+05 
     21xset_fdt_fco kz 1.2e-03 
     22 
    1623xinitnc ../data_out/exp_T_2D.nc 
    1724 
     
    4047setstate nu 0 
    4148outoebx nu 1 0 
    42 set_bcoef nu 1.e-05 
     49set_bcoef nu 1.e-8 
    4350set_modeltime 0 
    4451print_time OFF 
     
    6976goto nomulti 
    7077load_eb ta_c  // charger l'ebauche ' 
    71 set_bcoef nu 1.e-06 
     78set_bcoef nu 5.e-05 
    7279runm 
    7380 
    7481load_eb ta_c  // charger l'ebauche ' 
    75 set_bcoef nu 1.e-07 
     82set_bcoef nu 1.e-04 
    7683runm 
     84 
     85##SAUVEGARDE 
     86xwriteout 0 fin ../data_out/exp_T_2D.nc 
     87xwriteout 50 forwfin_48 ../data_out/exp_T_2D.nc 
     88 
     89xrst_save ../data_in/file_rest/GYRE_00000400_restart_CONTROL_T_2D.nc 
     90 
     91 
    7792nomulti 
    7893 
  • branches/branche-mb/src/cost.dat

    r67 r68  
    22 0.0000000000000000e+00 
    33 0.0000000000000000e+00 
     4 2.1474823164582097e+02 
     5 1.2274234090104164e+01 
     6 2.3881198434552111e+01 
     7 8.8771059162513382e+00 
     8 5.5557975737505458e+00 
     9 3.4803779742760317e+00 
     10 1.7128978455386892e+00 
     11 1.1973455752757605e+00 
     12 9.8335187344394392e-01 
     13 7.6117334075192200e-01 
     14 5.9846985043808543e-01 
     15 6.7366624706570466e-01 
     16 5.5874401856066103e-01 
     17 7.3595639204467600e-01 
     18 5.0953722678532765e-01 
     19 1.1965283691171660e+00 
     20 6.5986339544255534e-01 
     21 6.6013045954860117e-01 
     22 6.5392286280927792e-01 
     23 5.6394373996837344e-01 
     24 5.7610237016601717e-01 
     25 5.8032116526810040e-01 
     26 5.8309360765246787e-01 
     27 5.8519910883568982e-01 
     28 5.8664512715255190e-01 
     29 5.8761359807265934e-01 
     30 5.8831541023256795e-01 
     31 5.8880781610867361e-01 
     32 5.8915693207370023e-01 
     33 5.0893021741293576e-01 
     34 5.0885469878063883e-01 
     35 5.8920763747258753e-01 
     36 5.0875296736771736e-01 
     37 5.0874187732734499e-01 
     38 5.8921509431560293e-01 
     39 5.8922030000369108e-01 
     40 5.8922395197080846e-01 
     41 5.8922651344473387e-01 
  • branches/branche-mb/src/dta_lfexp.h

    r67 r68  
    3737        tim1= 0.; 
    3838#ifdef K_NEU 
    39         tim1= - bim1 * x2; 
     39        tim1= bim1 * x2; 
    4040#endif 
    4141      } 
    4242      else{ 
    43         tim1= -bim1 * x3; 
     43        tim1= bim1 * x3; 
    4444      } 
    4545      if (Yi==NX-2){ 
    4646        tip1= 0.; 
    4747#ifdef K_NEU 
    48         tip1= - bi * x2; 
     48        tip1= bi * x2; 
    4949#endif 
    5050      } 
    5151      else{ 
    52         tip1= -bi * x4; 
     52        tip1= bi * x4; 
    5353      } 
    5454      //cdt au bord j 
     
    5656        tjm1= 0.; 
    5757#ifdef K_NEU 
    58         tjm1= - bjm1 * x2; 
     58        tjm1= bjm1 * x2; 
    5959#endif 
    6060      } 
    6161      else{ 
    62         tjm1= -bjm1 * x5; 
     62        tjm1= bjm1 * x5; 
    6363      } 
    6464      if (Yj==NY-2){ 
    6565        tjp1= 0.; 
    6666#ifdef K_NEU 
    67         tjp1= - bj * x2; 
     67        tjp1= bj * x2; 
    6868#endif 
    6969      } 
    7070      else{ 
    71         tjp1= -bj * x6; 
     71        tjp1= bj * x6; 
    7272      } 
    7373 
    74       tij= (1./zbtr+bi+bim1+bj+bjm1) * x2; 
     74      tij= (1./zbtr-bi-bim1-bj-bjm1) * x2; 
    7575      YS1 = zbtr*(tip1 + tim1 + tjp1 + tjm1 + tij); 
    7676    } 
     
    105105        dtim1_x2= 0.; 
    106106#ifdef K_NEU 
    107         dtim1_x2= - bim1; 
     107        dtim1_x2= bim1; 
    108108#endif 
    109109      } 
    110110      else{ 
    111         dtim1_x3= -bim1; 
     111        dtim1_x3= bim1; 
    112112      } 
    113113      if (Yi==NX-2){ 
    114114        dtip1_x2= 0.; 
    115115#ifdef K_NEU 
    116         dtip1_x2= - bi; 
     116        dtip1_x2= bi; 
    117117#endif 
    118118      } 
    119119      else{ 
    120         dtip1_x4= -bi; 
     120        dtip1_x4= bi; 
    121121      } 
    122122      //cdt au bord j 
     
    124124        dtjm1_x2= 0.; 
    125125#ifdef K_NEU 
    126         dtjm1_x2= - bjm1; 
     126        dtjm1_x2= bjm1; 
    127127#endif 
    128128      } 
    129129      else{ 
    130         dtjm1_x5= -bjm1; 
     130        dtjm1_x5= bjm1; 
    131131      } 
    132132      if (Yj==NY-2){ 
    133133        dtjp1_x2= 0.; 
    134134#ifdef K_NEU 
    135         dtjp1_x2= - bj; 
     135        dtjp1_x2= bj; 
    136136#endif 
    137137      } 
    138138      else{ 
    139         dtjp1_x6= -bj; 
     139        dtjp1_x6= bj; 
    140140      } 
    141       dtij_x2= (1./zbtr+bi+bim1+bj+bjm1); 
     141      dtij_x2= (1./zbtr-bi-bim1-bj-bjm1); 
    142142 
    143143      YJ1I1 = 0.; 
  • branches/branche-mb/src/sinobad.d

    r67 r68  
    1 defval K_NEU 
     1//defval K_NEU 
    22#define FZIMP 
    33#define FILTER 
    4 //#define FILZNOL 
    5 #define FILLNOZ 
     4#define FILZNOL 
     5//#define FILLNOZ 
    66//#define SOLSORYAO 
    77//#define OPTIMORDER 
     
    2222defval TU       2 | start time step 
    2323#ifdef FILTER 
    24 defval OFTL      10 
    25 defval OFTZ      0 
    26 defval OFT       10 
     24defval OFTL      0 
     25defval OFTZ      4 
     26defval OFT       4 
    2727#endif 
    2828#ifndef FILTER 
     
    329329//#---------->dta_zfil 
    330330#ifndef FILLNOZ 
     331 
    331332#ifndef FILZNOL 
    332333#ifndef FZIMP 
     
    367368ctin     ta_c           1       from    dta_zfexp               1  i    j    k   t 
    368369#endif 
    369 #endif 
     370 
     371#endif 
     372 
    370373#ifdef FILLNOZ 
    371374ctin     ta_c           1       from    dta_lfexp               1  i    j    k   t 
     
    12091212#ifdef FILTER 
    12101213insert_fct  arg load_eb 
    1211 insert_fct  init_nu 
     1214insert_fct  arg init_nu 
     1215insert_fct  arg xset_fdt_fco 
    12121216#endif 
    12131217insert_fct arg xwriteout 
  • 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 
  • branches/branche-mb/src/ta_c.h

    r67 r68  
    2020  //// 
    2121  //  printf("norm_fac= %24.16e\n",norm_fac); 
    22   if(fabs(norm_fil*x1)>5.)  
     22  if(fabs(norm_fil*x1)>5)  
    2323      printf("increm(%d,%d,%d) = %24.16e (%24.16e) \n",Yi+1,Yj+1,Yk+1,norm_fil*x1,YS1); 
    2424} 
Note: See TracChangeset for help on using the changeset viewer.