Changeset 7 for trunk/include/meshmask.h


Ignore:
Timestamp:
03/07/11 11:49:01 (13 years ago)
Author:
jbrlod
Message:

rst write

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/meshmask.h

    r6 r7  
     1#define nav_lon( i, j ) (nav_lon[(j)*(NX)+(i)]) 
     2#define nav_lat( i, j ) (nav_lat[(j)*(NX)+(i)]) 
    13#define e1u( i, j )  (e1u[(j)*(NX)+(i)]) 
    24#define e2u( i, j )  (e2u[(j)*(NX)+(i)]) 
     
    2022// tous les indices commencent de 0 
    2123//domzgr_substitute.h90 key_zco 
     24#   define  nav_lev( i , j , k ) nav_lev[k] 
    2225#   define  fsdept( i , j , k )  gdept_0[k] 
    2326#   define  fsdepw( i , j , k )  gdepw_0[k] 
     
    5255#  define   fsahmv(i,j,k)   ahm0 
    5356 
     57double nav_lon[NY*NX]; // from mesh_mask.nc 
     58double nav_lat[NY*NX]; // from mesh_mask.nc 
    5459double e1u[NY*NX];    // from mesh_mask.nc 
    5560double e2u[NY*NX];    // from mesh_mask.nc 
     
    6065double e1f[NY*NX];    // from mesh_mask.nc 
    6166double e2f[NY*NX];    // from mesh_mask.nc 
     67double nav_lev[NZ];   // from mesh_mask.nc 
    6268double e3t_0[NZ];    // from mesh_mask.nc 
    6369double e3w_0[NZ];    // from mesh_mask.nc 
     
    8187char const    *mesh_mask_file    = PATH_NCFILES"/mesh_mask.nc"; 
    8288int mesh_mask_file_id; 
     89int nav_lon_id, nav_lat_id, nav_lev_id; //Utiliser juste pour info 
    8390int e1u_id,e2u_id,e1v_id,e2v_id,e1t_id,e2t_id,e1f_id,e2f_id,e3t_0_id,e3w_0_id; 
    8491int mbathy_id,gphit_id,gphiu_id,gphiv_id,gphif_id,gdept_0_id,gdepw_0_id; 
     
    106113 
    107114 
     115 
    108116//Ecriture du netcdf 
    109117void write_rst_global_att(int ncid); //Ecrit les attributs globaux du restart standard 
    110  
     118void voncwrite(int t,int znbval,int ynbval, int xnbval, char const *var_name,int ncid,int dimids[], YREAL vect[]); 
     119void soncwrite(int t,int ynbval, int xnbval, char const *var_name,int ncid,int dimids[], YREAL vect[]); 
     120void zoncwrite(int t,int znbval,char const *var_name,int ncid,int dimids[], YREAL vect[]); 
     121void zncwrite(int znbval,char const *var_name,int ncid,int dimids[], YREAL vect[]); 
     122void sncwrite(int ynbval, int xnbval, char const *var_name,int ncid,int dimids[], YREAL vect[]); 
    111123void define_dim(int ncid, int dimid[]); 
    112124//défini les dimensions en x,y,z, et t (unlimited),  
     
    119131  mesh_mask_file_id=Ouvre_nc(mesh_mask_file); 
    120132 
     133  nav_lon_id=Var_id(mesh_mask_file_id,"nav_lon"); 
     134  snclire(NY,NX, mesh_mask_file_id, nav_lon_id,nav_lon); 
     135   
     136  nav_lat_id=Var_id(mesh_mask_file_id,"nav_lat"); 
     137  snclire(NY,NX, mesh_mask_file_id, nav_lat_id,nav_lat); 
     138 
    121139  e1u_id=Var_id(mesh_mask_file_id,"e1u"); 
    122140  sonclire(0, NY,NX, mesh_mask_file_id, e1u_id,e1u); 
     
    181199  bmask_id=Var_id(mesh_mask_file_id,"bmask"); 
    182200  sonclire(0, NY,NX, mesh_mask_file_id, bmask_id,bmask); 
     201 
     202  nav_lev_id=Var_id(mesh_mask_file_id,"nav_lev"); 
     203  znclire(NZ, mesh_mask_file_id, nav_lev_id,nav_lev); 
    183204 
    184205  gdept_0_id=Var_id(mesh_mask_file_id,"gdept_0"); 
     
    358379//dimid={t_id,z_id,y_id,x_id}; 
    359380{  
    360  
     381  nc_redef(ncid); 
    361382  nc_def_dim(ncid,"x",NX,&dimid[3]); 
    362383  nc_def_dim(ncid,"y",NY,&dimid[2]); 
    363384  nc_def_dim(ncid,"z",NZ,&dimid[1]); 
    364385  nc_def_dim(ncid,"t",NC_UNLIMITED,&dimid[0]); 
    365   
     386  nc_enddef(ncid); 
    366387  
    367388  
    368389} 
     390 
     391void write_rst_var(int t,   int ncid, int dimids[]) { 
     392YREAL vect[NZ*NY*NX]; 
     393  
     394//nav_lon 
     395 for(int j=0;j<NY;j++) 
     396      for(int i=0;i<NX;i++){ 
     397        vect[(j)*(NX)+(i)]=nav_lon( i, j ); 
     398      } 
     399 sncwrite(NY,NX,"nav_lon",ncid,dimids,vect); 
     400  
     401 //nav_lat 
     402 for(int j=0;j<NY;j++) 
     403   for(int i=0;i<NX;i++){ 
     404     vect[(j)*(NX)+(i)]=nav_lat( i, j ); 
     405   } 
     406 sncwrite(NY,NX,"nav_lat",ncid,dimids,vect); 
     407  
     408 //nav_lev 
     409 for(int k=0;k<NZ;k++){ 
     410  vect[k]=nav_lev[k];   
     411} 
     412zncwrite(NZ,"nav_lev",ncid,dimids,vect); 
     413 
     414//gcx 
     415for(int j=0;j<NY;j++) 
     416   for(int i=0;i<NX;i++){ 
     417     vect[(j)*(NX)+(i)]=YS_gcx2(0,i,j,t); 
     418   } 
     419 soncwrite(0,NY,NX,"gcx",ncid,dimids,vect); 
     420  
     421//gcxb 
     422for(int j=0;j<NY;j++) 
     423   for(int i=0;i<NX;i++){ 
     424     vect[(j)*(NX)+(i)]=YS_gcx2(0,i,j,t-1); 
     425   } 
     426 soncwrite(0,NY,NX,"gcxb",ncid,dimids,vect); 
     427  
     428//sshb 
     429for(int j=0;j<NY;j++) 
     430   for(int i=0;i<NX;i++){ 
     431     vect[(j)*(NX)+(i)]=YS_sshb(0,i,j,t); 
     432   } 
     433 soncwrite(0,NY,NX,"sshb",ncid,dimids,vect); 
     434  
     435//sshn 
     436for(int j=0;j<NY;j++) 
     437   for(int i=0;i<NX;i++){ 
     438     vect[(j)*(NX)+(i)]=YS_sshn(0,i,j,t); 
     439   } 
     440 soncwrite(0,NY,NX,"sshn",ncid,dimids,vect); 
     441  
     442 //ub 
     443 for(int k=0;k<NZ;k++) 
     444   for(int j=0;j<NY;j++) 
     445     for(int i=0;i<NX;i++){ 
     446       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_ub(0,i,j,k,t); 
     447     } 
     448 voncwrite(0,NZ,NY,NX,"ub",ncid,dimids,vect); 
     449 
     450//vb 
     451 for(int k=0;k<NZ;k++) 
     452   for(int j=0;j<NY;j++) 
     453     for(int i=0;i<NX;i++){ 
     454       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_vb(0,i,j,k,t); 
     455     } 
     456 voncwrite(0,NZ,NY,NX,"vb",ncid,dimids,vect); 
     457 
     458//tb 
     459 for(int k=0;k<NZ;k++) 
     460   for(int j=0;j<NY;j++) 
     461     for(int i=0;i<NX;i++){ 
     462       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_tb(0,i,j,k,t); 
     463     } 
     464 voncwrite(0,NZ,NY,NX,"tb",ncid,dimids,vect); 
     465 
     466//sb 
     467 for(int k=0;k<NZ;k++) 
     468   for(int j=0;j<NY;j++) 
     469     for(int i=0;i<NX;i++){ 
     470       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_sb(0,i,j,k,t); 
     471     } 
     472 voncwrite(0,NZ,NY,NX,"sb",ncid,dimids,vect); 
     473 
     474//rotb 
     475 for(int k=0;k<NZ;k++) 
     476   for(int j=0;j<NY;j++) 
     477     for(int i=0;i<NX;i++){ 
     478       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_rotn(0,i,j,k,t-1); 
     479     } 
     480 voncwrite(0,NZ,NY,NX,"rotb",ncid,dimids,vect); 
     481 
     482//hdivb 
     483 for(int k=0;k<NZ;k++) 
     484   for(int j=0;j<NY;j++) 
     485     for(int i=0;i<NX;i++){ 
     486       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_hdivn(0,i,j,k,t-1); 
     487     } 
     488 voncwrite(0,NZ,NY,NX,"hdivb",ncid,dimids,vect); 
     489 
     490//un 
     491 for(int k=0;k<NZ;k++) 
     492   for(int j=0;j<NY;j++) 
     493     for(int i=0;i<NX;i++){ 
     494       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_ua(0,i,j,k,t); 
     495     } 
     496 voncwrite(0,NZ,NY,NX,"un",ncid,dimids,vect); 
     497 
     498//vn 
     499 for(int k=0;k<NZ;k++) 
     500   for(int j=0;j<NY;j++) 
     501     for(int i=0;i<NX;i++){ 
     502       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_va(0,i,j,k,t); 
     503     } 
     504 voncwrite(0,NZ,NY,NX,"vn",ncid,dimids,vect); 
     505 
     506//tn 
     507 for(int k=0;k<NZ;k++) 
     508   for(int j=0;j<NY;j++) 
     509     for(int i=0;i<NX;i++){ 
     510       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_ta(0,i,j,k,t); 
     511     } 
     512 voncwrite(0,NZ,NY,NX,"tn",ncid,dimids,vect); 
     513 
     514//sn 
     515 for(int k=0;k<NZ;k++) 
     516   for(int j=0;j<NY;j++) 
     517     for(int i=0;i<NX;i++){ 
     518       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_sa(0,i,j,k,t); 
     519     } 
     520 voncwrite(0,NZ,NY,NX,"sn",ncid,dimids,vect); 
     521 
     522//rotn 
     523 for(int k=0;k<NZ;k++) 
     524   for(int j=0;j<NY;j++) 
     525     for(int i=0;i<NX;i++){ 
     526       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_rotn(0,i,j,k,t); 
     527     } 
     528 voncwrite(0,NZ,NY,NX,"rotn",ncid,dimids,vect); 
     529 
     530//hdivn 
     531 for(int k=0;k<NZ;k++) 
     532   for(int j=0;j<NY;j++) 
     533     for(int i=0;i<NX;i++){ 
     534       vect[(k)*(NY*NX)+(j)*(NX)+(i)]=YS_hdivn(0,i,j,k,t); 
     535     } 
     536 voncwrite(0,NZ,NY,NX,"hdivn",ncid,dimids,vect); 
     537 
     538 
     539} 
     540 
     541 
    369542 
    370543void write_rst_global_att(int ncid) { 
Note: See TracChangeset for help on using the changeset viewer.