Changeset 71


Ignore:
Timestamp:
09/28/11 16:47:04 (13 years ago)
Author:
jbrlod
Message:

can restart from any restart (including kt>0)

Location:
trunk
Files:
1 added
2 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/meshmask.h

    r36 r71  
    391391  //kt 
    392392temp_id=Var_id(rest_file_id,"kt"); 
    393   scalarlire(rest_file_id,temp_id,&kt); 
     393  scalarlire(rest_file_id,temp_id,&nit000); 
    394394 
    395395} 
  • trunk/include/namelist.h

    r1 r71  
    2525//                           !                  = 1 use ndate0 in namelist (not the value in the restart file) 
    2626//                           !                  = 2 calendar parameters read in the restart file 
    27 //   nit000      =       1  !  first time step 
     27double   nit000      =        0 ;// !  first time step 
    2828//   nitend      =    10 !4320   !  last  time step 
    2929int ndate0      =  010101;//   !  initial calendar date yymmdd (used if nrstdt=1) 
  • trunk/scripts/sinobad.i

    r64 r71  
    2525##OBSERVATION 
    2626xwriteout 50 obs_48 ../data_out/exp_T.nc 
     27 
     28xrst_save ../data_in/file_rest/GYRE_00000420_restart_forwardYAO.nc 
    2729 
    2830goto FINRUN 
  • trunk/src/Makefile

    r70 r71  
    22#GENOPT= -E 
    33GENOPT=-DOPTIMORDER -E 
    4 YAOPT=  -p  -x sinobad 
     4YAOPT=  -n -p  -x sinobad 
    55 
    66essai: essai.d ../object/ncutil.o 
  • trunk/src/sinobad.d

    r70 r71  
    11//defval K_NEU 
    22//#define FZIMP 
    3 #define FILTER 
    4 #define FILZNOL 
     3//#define FILTER 
     4//#define FILZNOL 
    55//#define FILLNOZ 
    66//#define SOLSORYAO 
     
    1919defval NZ      31  
    2020defval NMAX    800 //    !  maximum of iterations for the SOR solver 
    21 defval TA      50 |__DATE__ | number of time steps 
     21defval TA      101 |__DATE__ | number of time steps 
    2222defval TU       2 | start time step 
    2323#ifdef FILTER 
     
    5454//#OPTION ----------------------------------------------OPTION 
    5555 
    56 option    O_M1QN3 | M2QN1  
     56//#option    O_M1QN3 | M2QN1  
     57option O_M1QN3 
    5758//#option O_VARINCR 
    58 option    O_GRADTEST 
    59 option   O_DBG_NANF 
     59//#option    O_GRADTEST 
     60//#option   O_DBG_NANF 
    6061//#option   O_DBG_TING 
    6162option  O_EXTOBJ "../object/ncutil.o" 
     
    12191220insert_fct arg xinitnc 
    12201221insert_fct arg init_euler 
     1222insert_fct arg init_kt 
    12211223//#insert_fct  arg load_shape_func 
    12221224//#insert_fct  arg load_stdev_pca 
  • trunk/src/sinobad.h

    r70 r71  
    6060int nksr; 
    6161void xtraqsr_init();// init of solar radiation penetration 
    62 double Ytold; //pour voir se pas de temps 
    63 double ktinit; //premier pas ocean 
     62 
     63 
    6464#   define  rdttra( k ) rdt 
    6565double r2dt; 
     
    7373//latitude for the Coriolis or Beta parameter 
    7474 
    75 //mode de sauvegarde (==0 3D, ==1 2D surface) 
     75//mode de sauvegarde (==0 3D, ==1 2D surface ==2 un seul point) 
    7676short savemode=0; 
    77  
     77short isave=23; 
     78short jsave=16; 
     79short ksave=0; 
    7880 
    7981int n_zdfexp=3; 
     
    166168  xdisplay(); 
    167169  xtraqsr_init(); 
    168   ktinit=0; //A mettre dans la namelist ???? 
     170  YDispTime=1; 
    169171} 
    170172//____________________________________________________________________________ 
     
    180182  fprintf(p,"%23.16e\n",YTotalCost); 
    181183  fclose(p); 
    182   Ytold=Yt; 
    183   kt=ktinit; 
     184  //kt=nit000+(Yt-TU); 
    184185} 
    185186//_____________________________________________________________________________ 
     
    199200void forward_before (int ctrp) 
    200201{       // permet d'intervenir si besoin avant le forward 
    201   
    202  
    203   kt=ktinit + (Yt-TU); 
    204   printf("kt=%lf\n",kt); 
    205     if(Yt==TU+1 && neuler==0) 
    206       r2dt=rdt; 
    207     else 
    208       r2dt=2.*rdt;   
     202  kt=nit000 + (Yt-TU); 
     203  if(YDispTime) printf(" >>> current forward time : kt=%lf \n",kt); 
     204  if(Yt==TU+1 && neuler==0) 
     205    r2dt=rdt; 
     206  else 
     207    r2dt=2.*rdt;   
    209208  } 
    210209//_____________________________________________________________________________ 
    211210void forward_after (int ctrp) 
    212 {                       // permet d'intervenir si besoin aprÚs le forward 
    213   //printf("neuler=%d\n",neuler); 
     211{                
     212        // permet d'intervenir si besoin aprÚs le forward 
     213 //printf("neuler=%d\n",neuler); 
    214214} 
    215215//_____________________________________________________________________________ 
     
    241241                        // =YIO_OUTOOBS    => appel via outoobs 
    242242 
    243    if(indic==YIO_SAVESTATE && !strcmp(nmmod,"tb") && savemode){ 
     243   if(indic==YIO_SAVESTATE && !strcmp(nmmod,"tb") && savemode==1){ 
    244244    if(kaxe==0 ) 
    245245      return(1); 
     
    247247      return(0); 
    248248      } 
     249   if(indic==YIO_SAVESTATE && !strcmp(nmmod,"tb") && savemode==2){ 
     250     if(iaxe==isave && jaxe==jsave && kaxe==ksave)  
     251       return(1); 
     252     else 
     253       return(0); 
     254   } 
     255 
    249256     
    250257  /*  if(indic==YIO_OUTOOBS){ 
     
    643650  short newmode=atoi(argv[1]); 
    644651  savemode=newmode; 
     652  if (newmode==2) { 
     653    isave=atoi(argv[2]); 
     654    jsave=atoi(argv[3]); 
     655    ksave=atoi(argv[4]); 
     656    printf("\n savemode : 1 point (Yi=%d,Yj=%d,Yk=%d)\n",isave,jsave,ksave); 
     657  } 
    645658 
    646659} 
     
    10811094      write_rst_global_att(rest_file_id); //Ecrit les global attributes 
    10821095      define_dim(rest_file_id,dimid); //Définit les dimensions 
    1083       write_rst_var(TU,rest_file_id,dimid); //Ecrit les variables 
     1096      printf("\n Save restart at kt=%f (Yt=%d)\n",kt,Yt);       
     1097      write_rst_var(kt-nit000+TU,rest_file_id,dimid); //Ecrit les variables 
    10841098      nc_close( rest_file_id); //ferme le fichier 
    10851099    } 
     
    11691183    } 
    11701184} 
     1185 
     1186void init_kt(int argc, char *argv[]){ 
     1187  if (argc!=2) 
     1188    { 
     1189      printf("\nwrong number of argument in init_kt : specify a positive number\n"); 
     1190      exit(1); 
     1191    } 
     1192  else 
     1193    { 
     1194      double t0; 
     1195      t0=atof(argv[1]); 
     1196      if(t0<0) 
     1197        { 
     1198          printf("\nwrong argument in init_kt : specify a postiive number\n"); 
     1199          exit(1); 
     1200        } 
     1201      nit000=t0; 
     1202    } 
     1203} 
     1204 
     1205/* Plus tard pour tester l'erreur modÚle. 
     1206void genere_obs(int argc, char *argv[]){ 
     1207  //genere_obs Module increment t0 dt tend i j k 
     1208  if (argc!=9) 
     1209    { 
     1210      printf("\n wrong number of argument in genere_obs \n"); 
     1211      exit(1); 
     1212    } 
     1213  else 
     1214    { 
     1215 
     1216    } 
     1217 
     1218 
     1219 
     1220} 
     1221*/ 
Note: See TracChangeset for help on using the changeset viewer.