source: trunk/include/meshmask.h @ 7

Last change on this file since 7 was 7, checked in by jbrlod, 13 years ago

rst write

  • Property svn:eol-style set to native
File size: 17.5 KB
Line 
1#define nav_lon( i, j ) (nav_lon[(j)*(NX)+(i)])
2#define nav_lat( i, j ) (nav_lat[(j)*(NX)+(i)])
3#define e1u( i, j )  (e1u[(j)*(NX)+(i)])
4#define e2u( i, j )  (e2u[(j)*(NX)+(i)])
5#define e1v( i, j )  (e1v[(j)*(NX)+(i)])
6#define e2v( i, j )  (e2v[(j)*(NX)+(i)])
7#define e1t( i, j )  (e1t[(j)*(NX)+(i)])
8#define e2t( i, j )  (e2t[(j)*(NX)+(i)])
9#define e1f( i, j )  (e1f[(j)*(NX)+(i)])
10#define e2f( i, j )  (e2f[(j)*(NX)+(i)])
11#define gphit( i, j) (gphit[(j)*(NX)+(i)])
12#define gphiu( i, j) (gphiu[(j)*(NX)+(i)])
13#define gphiv( i, j) (gphiv[(j)*(NX)+(i)])
14#define gphif( i, j) (gphif[(j)*(NX)+(i)])
15#define tmask( i, j, k) (tmask[(k)*(NY*NX)+(j)*(NX)+(i)])
16#define umask( i, j, k) (umask[(k)*(NY*NX)+(j)*(NX)+(i)])
17#define vmask( i, j, k) (vmask[(k)*(NY*NX)+(j)*(NX)+(i)])
18#define fmask( i, j, k) (fmask[(k)*(NY*NX)+(j)*(NX)+(i)])
19#define tmask_i( i, j )  (tmask_i[(j)*(NX)+(i)])  //mohamed (18/03/09) voir domwri.F90
20#define bmask( i, j )   (bmask[(j)*(NX)+(i)])  //mohamed (21/04/09) voir domwri.F90
21
22// tous les indices commencent de 0
23//domzgr_substitute.h90 key_zco
24#   define  nav_lev( i , j , k ) nav_lev[k]
25#   define  fsdept( i , j , k )  gdept_0[k]
26#   define  fsdepw( i , j , k )  gdepw_0[k]
27#   define  fsde3w( i , j , k )  gdepw_0[k]
28#   define  fse3t( i , j , k )   e3t_0[k]
29#   define  fse3u( i , j , k )   e3t_0[k]
30#   define  fse3v( i , j , k )   e3t_0[k]
31#   define  fse3f( i , j , k )   e3t_0[k]
32#   define  fse3w( i , j , k )   e3w_0[k]
33#   define  fse3uw( i , j , k )  e3w_0[k]
34#   define  fse3vw( i , j , k )  e3w_0[k]
35//
36#   define  ff( i , j )   (ff[(j)*(NX)+(i)])
37#   define  mbathy( i , j )   (mbathy[(j)*(NX)+(i)])
38
39//!   Defautl option :                     avs = avt
40#   define   fsavs(i,j,k)   avt(i,j,k)
41//ldftra_substitute.h90
42//substitute fsaht. the eddy diffusivity coeff
43//!   Default option :             aht: Constant coefficient
44#      define   fsahtt(i,j,k)   aht0
45#      define   fsahtu(i,j,k)   aht0
46#      define   fsahtv(i,j,k)   aht0
47#      define   fsahtw(i,j,k)   aht0
48
49//ldfdyn_substitute.h90
50//the lateral eddy viscosity coeff.
51//   default option :  Constant coefficient
52#  define   fsahmt(i,j,k)   ahm0
53#  define   fsahmf(i,j,k)   ahm0
54#  define   fsahmu(i,j,k)   ahm0
55#  define   fsahmv(i,j,k)   ahm0
56
57double nav_lon[NY*NX]; // from mesh_mask.nc
58double nav_lat[NY*NX]; // from mesh_mask.nc
59double e1u[NY*NX];    // from mesh_mask.nc
60double e2u[NY*NX];    // from mesh_mask.nc
61double e1v[NY*NX];    // from mesh_mask.nc
62double e2v[NY*NX];    // from mesh_mask.nc
63double e1t[NY*NX];    // from mesh_mask.nc
64double e2t[NY*NX];    // from mesh_mask.nc
65double e1f[NY*NX];    // from mesh_mask.nc
66double e2f[NY*NX];    // from mesh_mask.nc
67double nav_lev[NZ];   // from mesh_mask.nc
68double e3t_0[NZ];    // from mesh_mask.nc
69double e3w_0[NZ];    // from mesh_mask.nc
70double gphit[NY*NX]; // from mesh_mask.nc
71double gphiu[NY*NX]; // from mesh_mask.nc
72double gphiv[NY*NX]; // from mesh_mask.nc
73double gphif[NY*NX]; // from mesh_mask.nc
74double ff[NY*NX]; //
75int mbathy[NY*NX];// from mesh_mask.nc
76double gdept_0[NZ]; //  from mesh_mask.nc
77double gdepw_0[NZ]; // from mesh_mask.nc
78int tmask[NZ*NY*NX]; // from mesh_mask.nc
79int umask[NZ*NY*NX]; // from mesh_mask.nc
80int vmask[NZ*NY*NX]; // from mesh_mask.nc
81int fmask[NZ*NY*NX]; // from mesh_mask.nc
82int tmask_i[NY*NX]; // from mesh_mask.nc
83int bmask[NY*NX]; // from mesh_mask.nc
84
85typedef float netcdf_type;
86
87char const    *mesh_mask_file    = PATH_NCFILES"/mesh_mask.nc";
88int mesh_mask_file_id;
89int nav_lon_id, nav_lat_id, nav_lev_id; //Utiliser juste pour info
90int e1u_id,e2u_id,e1v_id,e2v_id,e1t_id,e2t_id,e1f_id,e2f_id,e3t_0_id,e3w_0_id;
91int mbathy_id,gphit_id,gphiu_id,gphiv_id,gphif_id,gdept_0_id,gdepw_0_id;
92int tmask_id,umask_id,vmask_id,fmask_id,tmask_i_id,bmask_id; // l'id des variables a lire
93int status;
94
95int neuler=0; //restart file
96
97#   define        ze1ur(i,j)  e2u(i,j) / e1u(i,j)
98#   define        ze2vr(i,j)  e1v(i,j) / e2v(i,j)
99#   define        zbtr2(i,j)  1. / ( e1t(i,j) * e2t(i,j))
100
101void vonclire(int t,int znbval, int ynbval, int xnbval, int ncid, int varid, double vect[]);
102// lire volume 3D au temps t
103void sonclire(int t,int ynbval, int xnbval, int ncid, int varid, double vect[]);
104void zonclire(int t,int znbval, int ncid, int varid, double vect[]);
105// lire surface 2D au temps t
106void vonclire(int t,int znbval, int ynbval, int xnbval, int ncid, int varid, int vect[]);
107// lire volume 3D au temps t
108void sonclire(int t,int ynbval, int xnbval, int ncid, int varid, int vect[]);
109void zonclire(int t,int znbval, int ncid, int varid, int vect[]);
110// lire surface 2D au temps t
111void xinit_mesh_mask_nc();// lire le fichier mesh_mask.nc
112void xistate_rest_file();
113
114
115
116//Ecriture du netcdf
117void write_rst_global_att(int ncid); //Ecrit les attributs globaux du restart standard
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[]);
123void define_dim(int ncid, int dimid[]);
124//défini les dimensions en x,y,z, et t (unlimited),
125//renvoie les id des dimensions dans le tableau dimid
126//dimid={t_id,z_id,y_id,x_id};
127
128void    xinit_mesh_mask_nc()
129{
130  //ouvrire le fichier mesh_mask.nc
131  mesh_mask_file_id=Ouvre_nc(mesh_mask_file);
132
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
139  e1u_id=Var_id(mesh_mask_file_id,"e1u");
140  sonclire(0, NY,NX, mesh_mask_file_id, e1u_id,e1u);
141
142  e2u_id=Var_id(mesh_mask_file_id,"e2u");
143  sonclire(0, NY,NX, mesh_mask_file_id, e2u_id,e2u);
144
145  e1v_id=Var_id(mesh_mask_file_id,"e1v");
146  sonclire(0, NY,NX, mesh_mask_file_id, e1v_id,e1v);
147
148  e2v_id=Var_id(mesh_mask_file_id,"e2v");
149  sonclire(0, NY,NX, mesh_mask_file_id, e2v_id,e2v);
150
151  e1t_id=Var_id(mesh_mask_file_id,"e1t");
152  sonclire(0, NY,NX, mesh_mask_file_id, e1t_id,e1t);
153
154  e2t_id=Var_id(mesh_mask_file_id,"e2t");
155  sonclire(0, NY,NX, mesh_mask_file_id, e2t_id,e2t);
156
157  e1f_id=Var_id(mesh_mask_file_id,"e1f");
158  sonclire(0, NY,NX, mesh_mask_file_id, e1f_id,e1f);
159
160  e2f_id=Var_id(mesh_mask_file_id,"e2f");
161  sonclire(0, NY,NX, mesh_mask_file_id, e2f_id,e2f);
162
163  e3t_0_id=Var_id(mesh_mask_file_id,"e3t_0");
164  zonclire(0, NZ, mesh_mask_file_id, e3t_0_id,e3t_0);
165
166  e3w_0_id=Var_id(mesh_mask_file_id,"e3w_0");
167  zonclire(0, NZ, mesh_mask_file_id, e3w_0_id,e3w_0);
168
169  mbathy_id=Var_id(mesh_mask_file_id,"mbathy");
170  sonclire(0, NY,NX, mesh_mask_file_id, mbathy_id,mbathy);
171
172  gphit_id=Var_id(mesh_mask_file_id,"gphit");
173  sonclire(0, NY,NX, mesh_mask_file_id, gphit_id,gphit);
174
175  gphiu_id=Var_id(mesh_mask_file_id,"gphiu");
176  sonclire(0, NY,NX, mesh_mask_file_id, gphiu_id,gphiu);
177
178  gphiv_id=Var_id(mesh_mask_file_id,"gphiv");
179  sonclire(0, NY,NX, mesh_mask_file_id, gphiv_id,gphiv);
180
181  gphif_id=Var_id(mesh_mask_file_id,"gphif");
182  sonclire(0, NY,NX, mesh_mask_file_id, gphif_id,gphif);
183
184  tmask_id=Var_id(mesh_mask_file_id,"tmask");
185  vonclire(0, NZ, NY,NX, mesh_mask_file_id, tmask_id,tmask);
186
187  umask_id=Var_id(mesh_mask_file_id,"umask");
188  vonclire(0, NZ, NY,NX, mesh_mask_file_id, umask_id,umask);
189
190  vmask_id=Var_id(mesh_mask_file_id,"vmask");
191  vonclire(0, NZ, NY,NX, mesh_mask_file_id, vmask_id,vmask);
192
193  fmask_id=Var_id(mesh_mask_file_id,"fmask");
194  vonclire(0, NZ, NY,NX, mesh_mask_file_id, fmask_id,fmask);
195
196  tmask_i_id=Var_id(mesh_mask_file_id,"tmask_i");
197  sonclire(0, NY,NX, mesh_mask_file_id, tmask_i_id,tmask_i);
198
199  bmask_id=Var_id(mesh_mask_file_id,"bmask");
200  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);
204
205  gdept_0_id=Var_id(mesh_mask_file_id,"gdept_0");
206  zonclire(0, NZ, mesh_mask_file_id, gdept_0_id,gdept_0);
207
208  gdepw_0_id=Var_id(mesh_mask_file_id,"gdepw_0");
209  zonclire(0, NZ, mesh_mask_file_id, gdepw_0_id,gdepw_0);
210 
211  //gdept_0
212  nc_close( mesh_mask_file_id);
213}
214
215void xistate_rest_file(int rest_file_id){
216  double temp[NZ*NY*NX];
217  int temp_id;
218
219  //-----------un
220  temp_id=Var_id(rest_file_id,"un");
221  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
222  for(int k=0;k<NZ;k++){
223    for(int j=0;j<NY;j++){
224      for(int i=0;i<NX;i++){
225        YS_ua(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
226      }
227    }
228  }
229  //-----------ub
230  temp_id=Var_id(rest_file_id,"ub");
231  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
232  for(int k=0;k<NZ;k++){
233    for(int j=0;j<NY;j++){
234      for(int i=0;i<NX;i++){
235        YS_ub(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
236      }
237    }
238  }
239 
240  //-----------vn
241  temp_id=Var_id(rest_file_id,"vn");
242  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
243  for(int k=0;k<NZ;k++){
244    for(int j=0;j<NY;j++){
245      for(int i=0;i<NX;i++){
246        YS_va(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
247      }
248    }
249  }
250 
251  //-----------vb
252  temp_id=Var_id(rest_file_id,"vb");
253  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
254  for(int k=0;k<NZ;k++)
255    for(int j=0;j<NY;j++)
256      for(int i=0;i<NX;i++){
257        YS_vb(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
258      }
259
260  //-----------wn
261  //if( lk_vvl )
262  /*  temp_id=Var_id(rest_file_id,"wn");
263  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
264  for(int k=0;k<NZ;k++){
265    for(int j=0;j<NY;j++){
266      for(int i=0;i<NX;i++){
267        YS_wa(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
268      }
269    }
270    }*/
271  //-----------
272  temp_id=Var_id(rest_file_id,"tn");
273  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
274  for(int k=0;k<NZ;k++)
275    for(int j=0;j<NY;j++)
276      for(int i=0;i<NX;i++){
277        YS_ta(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
278      }
279
280  //-----------
281  temp_id=Var_id(rest_file_id,"tb");
282  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
283  for(int k=0;k<NZ;k++)
284    for(int j=0;j<NY;j++)
285      for(int i=0;i<NX;i++){
286        YS_tb(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
287      }
288
289  //-----------
290  temp_id=Var_id(rest_file_id,"sn");
291  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
292  for(int k=0;k<NZ;k++)
293    for(int j=0;j<NY;j++)
294      for(int i=0;i<NX;i++){
295        YS_sa(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
296      }
297
298  //-----------
299  temp_id=Var_id(rest_file_id,"sb");
300  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
301  for(int k=0;k<NZ;k++)
302    for(int j=0;j<NY;j++)
303      for(int i=0;i<NX;i++){
304        YS_sb(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
305      }
306
307  //-----------
308  temp_id=Var_id(rest_file_id,"sshn");
309  sonclire(0, NY, NX, rest_file_id, temp_id,temp);
310  for(int j=0;j<NY;j++)
311    for(int i=0;i<NX;i++){
312      YS_sshn(0,i,j,TU)=temp[(j)*(NX)+(i)];
313    }
314
315  //-----------
316  temp_id=Var_id(rest_file_id,"sshb");
317  sonclire(0, NY, NX, rest_file_id, temp_id,temp);
318  for(int j=0;j<NY;j++)
319    for(int i=0;i<NX;i++){
320      YS_sshb(0,i,j,TU)=temp[(j)*(NX)+(i)];
321    }
322
323  //-----------
324  temp_id=Var_id(rest_file_id,"hdivn");
325  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
326  for(int k=0;k<NZ;k++)
327    for(int j=0;j<NY;j++)
328      for(int i=0;i<NX;i++){
329        YS_hdivn(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
330      }
331
332  //-----------
333  temp_id=Var_id(rest_file_id,"hdivb");// a revoir
334  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
335  for(int k=0;k<NZ;k++)
336    for(int j=0;j<NY;j++)
337      for(int i=0;i<NX;i++){
338        YS_hdivn(0,i,j,k,TU-1)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
339      }
340
341  //-----------
342  temp_id=Var_id(rest_file_id,"rotn");
343  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
344  for(int k=0;k<NZ;k++)
345    for(int j=0;j<NY;j++)
346      for(int i=0;i<NX;i++){
347        YS_rotn(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
348      }
349
350  //-----------
351  temp_id=Var_id(rest_file_id,"rotb"); // a revoir
352  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
353  for(int k=0;k<NZ;k++)
354    for(int j=0;j<NY;j++)
355      for(int i=0;i<NX;i++){
356        YS_rotn(0,i,j,k,TU-1)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
357      }
358
359   //-----------
360  temp_id=Var_id(rest_file_id,"gcx");
361  sonclire(0, NY, NX, rest_file_id, temp_id,temp);
362    for(int j=0;j<NY;j++)
363      for(int i=0;i<NX;i++){
364        YS_gcx2(0,i,j,TU)=temp[(j)*(NX)+(i)];
365      }
366
367  //-----------
368  temp_id=Var_id(rest_file_id,"gcxb");
369  sonclire(0, NY, NX, rest_file_id, temp_id,temp);
370  for(int j=0;j<NY;j++)
371    for(int i=0;i<NX;i++){
372      YS_gcx2(0,i,j,TU-1)=temp[(j)*(NX)+(i)];
373    }
374}
375
376void define_dim(int ncid, int dimid[])
377//défini les dimensions en x,y,z, et t (unlimited),
378//renvoie les id des dimensions dans le tableau dimid
379//dimid={t_id,z_id,y_id,x_id};
380{ 
381  nc_redef(ncid);
382  nc_def_dim(ncid,"x",NX,&dimid[3]);
383  nc_def_dim(ncid,"y",NY,&dimid[2]);
384  nc_def_dim(ncid,"z",NZ,&dimid[1]);
385  nc_def_dim(ncid,"t",NC_UNLIMITED,&dimid[0]);
386  nc_enddef(ncid);
387 
388 
389}
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
542
543void write_rst_global_att(int ncid) {
544
545  //:DOMAIN_number_total = 1 ;
546  static int DOMAIN_number_total=1;
547  nc_put_att_int (ncid,NC_GLOBAL,"DOMAIN_number_total",NC_INT,1,&DOMAIN_number_total);
548
549  //:DOMAIN_number = 0 ;
550  static int DOMAIN_number=0;
551  nc_put_att_int (ncid,NC_GLOBAL,"DOMAIN_number",NC_INT,1,&DOMAIN_number);
552
553  //:DOMAIN_dimensions_ids = 1, 2 ;
554  static int DOMAIN_dimensions_ids[]={1,2};
555  nc_put_att_int (ncid,NC_GLOBAL,"DOMAIN_dimensions_ids",NC_INT,2,DOMAIN_dimensions_ids);
556
557  //:DOMAIN_size_global = 32, 22 ;
558  static int DOMAIN_size_global[]={NX,NY};
559  nc_put_att_int (ncid,NC_GLOBAL,"DOMAIN_size_global",NC_INT,2,DOMAIN_size_global);
560
561  //:DOMAIN_size_local = 32, 22 ;
562  static int DOMAIN_size_local[]={NX,NY};
563  nc_put_att_int (ncid,NC_GLOBAL,"DOMAIN_size_local",NC_INT,2,DOMAIN_size_local);
564
565  //:DOMAIN_position_first = 1, 1 ;
566  static int DOMAIN_position_first[]={1,1};
567  nc_put_att_int (ncid,NC_GLOBAL,"DOMAIN_position_first",NC_INT,2,DOMAIN_position_first);
568
569  //:DOMAIN_position_last = 32, 22 ;
570 static int DOMAIN_position_last[]={NX,NY};
571 nc_put_att_int (ncid,NC_GLOBAL,"DOMAIN_position_last",NC_INT,2,DOMAIN_position_last);
572
573 //:DOMAIN_halo_size_start = 0, 0 ;
574 static int DOMAIN_halo_size_start[]={0,0};
575 nc_put_att_int (ncid,NC_GLOBAL,"DOMAIN_halo_size_start",NC_INT,2,DOMAIN_halo_size_start);
576
577 //:DOMAIN_halo_size_end = 0, 0 ;
578 static int DOMAIN_halo_size_end[]={0,0};
579  nc_put_att_int (ncid,NC_GLOBAL,"DOMAIN_halo_size_end",NC_INT,2,DOMAIN_halo_size_end);
580
581  //DOMAIN_type = "BOX" ;
582  nc_put_att_text(ncid,NC_GLOBAL,"DOMAIN_type",3,"BOX");
583
584}
Note: See TracBrowser for help on using the repository browser.