source: trunk/include/meshmask.h @ 1

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

Import initial

  • Property svn:eol-style set to native
File size: 10.9 KB
Line 
1#define e1u( i, j )  (e1u[(j)*(NX)+(i)])
2#define e2u( i, j )  (e2u[(j)*(NX)+(i)])
3#define e1v( i, j )  (e1v[(j)*(NX)+(i)])
4#define e2v( i, j )  (e2v[(j)*(NX)+(i)])
5#define e1t( i, j )  (e1t[(j)*(NX)+(i)])
6#define e2t( i, j )  (e2t[(j)*(NX)+(i)])
7#define e1f( i, j )  (e1f[(j)*(NX)+(i)])
8#define e2f( i, j )  (e2f[(j)*(NX)+(i)])
9#define gphit( i, j) (gphit[(j)*(NX)+(i)])
10#define gphiu( i, j) (gphiu[(j)*(NX)+(i)])
11#define gphiv( i, j) (gphiv[(j)*(NX)+(i)])
12#define gphif( i, j) (gphif[(j)*(NX)+(i)])
13#define tmask( i, j, k) (tmask[(k)*(NY*NX)+(j)*(NX)+(i)])
14#define umask( i, j, k) (umask[(k)*(NY*NX)+(j)*(NX)+(i)])
15#define vmask( i, j, k) (vmask[(k)*(NY*NX)+(j)*(NX)+(i)])
16#define fmask( i, j, k) (fmask[(k)*(NY*NX)+(j)*(NX)+(i)])
17#define tmask_i( i, j )  (tmask_i[(j)*(NX)+(i)])  //mohamed (18/03/09) voir domwri.F90
18#define bmask( i, j )   (bmask[(j)*(NX)+(i)])  //mohamed (21/04/09) voir domwri.F90
19
20// tous les indices commencent de 0
21//domzgr_substitute.h90 key_zco
22#   define  fsdept( i , j , k )  gdept_0[k]
23#   define  fsdepw( i , j , k )  gdepw_0[k]
24#   define  fsde3w( i , j , k )  gdepw_0[k]
25#   define  fse3t( i , j , k )   e3t_0[k]
26#   define  fse3u( i , j , k )   e3t_0[k]
27#   define  fse3v( i , j , k )   e3t_0[k]
28#   define  fse3f( i , j , k )   e3t_0[k]
29#   define  fse3w( i , j , k )   e3w_0[k]
30#   define  fse3uw( i , j , k )  e3w_0[k]
31#   define  fse3vw( i , j , k )  e3w_0[k]
32//
33#   define  ff( i , j )   (ff[(j)*(NX)+(i)])
34#   define  mbathy( i , j )   (mbathy[(j)*(NX)+(i)])
35
36//!   Defautl option :                     avs = avt
37#   define   fsavs(i,j,k)   avt(i,j,k)
38//ldftra_substitute.h90
39//substitute fsaht. the eddy diffusivity coeff
40//!   Default option :             aht: Constant coefficient
41#      define   fsahtt(i,j,k)   aht0
42#      define   fsahtu(i,j,k)   aht0
43#      define   fsahtv(i,j,k)   aht0
44#      define   fsahtw(i,j,k)   aht0
45
46//ldfdyn_substitute.h90
47//the lateral eddy viscosity coeff.
48//   default option :  Constant coefficient
49#  define   fsahmt(i,j,k)   ahm0
50#  define   fsahmf(i,j,k)   ahm0
51#  define   fsahmu(i,j,k)   ahm0
52#  define   fsahmv(i,j,k)   ahm0
53
54double e1u[NY*NX];    // from mesh_mask.nc
55double e2u[NY*NX];    // from mesh_mask.nc
56double e1v[NY*NX];    // from mesh_mask.nc
57double e2v[NY*NX];    // from mesh_mask.nc
58double e1t[NY*NX];    // from mesh_mask.nc
59double e2t[NY*NX];    // from mesh_mask.nc
60double e1f[NY*NX];    // from mesh_mask.nc
61double e2f[NY*NX];    // from mesh_mask.nc
62double e3t_0[NZ];    // from mesh_mask.nc
63double e3w_0[NZ];    // from mesh_mask.nc
64double gphit[NY*NX]; // from mesh_mask.nc
65double gphiu[NY*NX]; // from mesh_mask.nc
66double gphiv[NY*NX]; // from mesh_mask.nc
67double gphif[NY*NX]; // from mesh_mask.nc
68double ff[NY*NX]; //
69int mbathy[NY*NX];// from mesh_mask.nc
70double gdept_0[NZ]; //  from mesh_mask.nc
71double gdepw_0[NZ]; // from mesh_mask.nc
72int tmask[NZ*NY*NX]; // from mesh_mask.nc
73int umask[NZ*NY*NX]; // from mesh_mask.nc
74int vmask[NZ*NY*NX]; // from mesh_mask.nc
75int fmask[NZ*NY*NX]; // from mesh_mask.nc
76int tmask_i[NY*NX]; // from mesh_mask.nc
77int bmask[NY*NX]; // from mesh_mask.nc
78
79typedef float netcdf_type;
80
81char const    *mesh_mask_file    = PATH_NCFILES"/mesh_mask.nc";
82int mesh_mask_file_id;
83int e1u_id,e2u_id,e1v_id,e2v_id,e1t_id,e2t_id,e1f_id,e2f_id,e3t_0_id,e3w_0_id;
84int mbathy_id,gphit_id,gphiu_id,gphiv_id,gphif_id,gdept_0_id,gdepw_0_id;
85int tmask_id,umask_id,vmask_id,fmask_id,tmask_i_id,bmask_id; // l'id des variables a lire
86int status;
87
88int neuler=0; //restart file
89
90#   define        ze1ur(i,j)  e2u(i,j) / e1u(i,j)
91#   define        ze2vr(i,j)  e1v(i,j) / e2v(i,j)
92#   define        zbtr2(i,j)  1. / ( e1t(i,j) * e2t(i,j))
93
94void vonclire(int t,int znbval, int ynbval, int xnbval, int ncid, int varid, double vect[]);
95// lire volume 3D au temps t
96void sonclire(int t,int ynbval, int xnbval, int ncid, int varid, double vect[]);
97void zonclire(int t,int znbval, int ncid, int varid, double vect[]);
98// lire surface 2D au temps t
99void vonclire(int t,int znbval, int ynbval, int xnbval, int ncid, int varid, int vect[]);
100// lire volume 3D au temps t
101void sonclire(int t,int ynbval, int xnbval, int ncid, int varid, int vect[]);
102void zonclire(int t,int znbval, int ncid, int varid, int vect[]);
103// lire surface 2D au temps t
104void xinit_mesh_mask_nc();// lire le fichier mesh_mask.nc
105void xistate_rest_file();
106void    xinit_mesh_mask_nc()
107{
108  //ouvrire le fichier mesh_mask.nc
109  mesh_mask_file_id=Ouvre_nc(mesh_mask_file);
110
111  e1u_id=Var_id(mesh_mask_file_id,"e1u");
112  sonclire(0, NY,NX, mesh_mask_file_id, e1u_id,e1u);
113
114  e2u_id=Var_id(mesh_mask_file_id,"e2u");
115  sonclire(0, NY,NX, mesh_mask_file_id, e2u_id,e2u);
116
117  e1v_id=Var_id(mesh_mask_file_id,"e1v");
118  sonclire(0, NY,NX, mesh_mask_file_id, e1v_id,e1v);
119
120  e2v_id=Var_id(mesh_mask_file_id,"e2v");
121  sonclire(0, NY,NX, mesh_mask_file_id, e2v_id,e2v);
122
123  e1t_id=Var_id(mesh_mask_file_id,"e1t");
124  sonclire(0, NY,NX, mesh_mask_file_id, e1t_id,e1t);
125
126  e2t_id=Var_id(mesh_mask_file_id,"e2t");
127  sonclire(0, NY,NX, mesh_mask_file_id, e2t_id,e2t);
128
129  e1f_id=Var_id(mesh_mask_file_id,"e1f");
130  sonclire(0, NY,NX, mesh_mask_file_id, e1f_id,e1f);
131
132  e2f_id=Var_id(mesh_mask_file_id,"e2f");
133  sonclire(0, NY,NX, mesh_mask_file_id, e2f_id,e2f);
134
135  e3t_0_id=Var_id(mesh_mask_file_id,"e3t_0");
136  zonclire(0, NZ, mesh_mask_file_id, e3t_0_id,e3t_0);
137
138  e3w_0_id=Var_id(mesh_mask_file_id,"e3w_0");
139  zonclire(0, NZ, mesh_mask_file_id, e3w_0_id,e3w_0);
140
141  mbathy_id=Var_id(mesh_mask_file_id,"mbathy");
142  sonclire(0, NY,NX, mesh_mask_file_id, mbathy_id,mbathy);
143
144  gphit_id=Var_id(mesh_mask_file_id,"gphit");
145  sonclire(0, NY,NX, mesh_mask_file_id, gphit_id,gphit);
146
147  gphiu_id=Var_id(mesh_mask_file_id,"gphiu");
148  sonclire(0, NY,NX, mesh_mask_file_id, gphiu_id,gphiu);
149
150  gphiv_id=Var_id(mesh_mask_file_id,"gphiv");
151  sonclire(0, NY,NX, mesh_mask_file_id, gphiv_id,gphiv);
152
153  gphif_id=Var_id(mesh_mask_file_id,"gphif");
154  sonclire(0, NY,NX, mesh_mask_file_id, gphif_id,gphif);
155
156  tmask_id=Var_id(mesh_mask_file_id,"tmask");
157  vonclire(0, NZ, NY,NX, mesh_mask_file_id, tmask_id,tmask);
158
159  umask_id=Var_id(mesh_mask_file_id,"umask");
160  vonclire(0, NZ, NY,NX, mesh_mask_file_id, umask_id,umask);
161
162  vmask_id=Var_id(mesh_mask_file_id,"vmask");
163  vonclire(0, NZ, NY,NX, mesh_mask_file_id, vmask_id,vmask);
164
165  fmask_id=Var_id(mesh_mask_file_id,"fmask");
166  vonclire(0, NZ, NY,NX, mesh_mask_file_id, fmask_id,fmask);
167
168  tmask_i_id=Var_id(mesh_mask_file_id,"tmask_i");
169  sonclire(0, NY,NX, mesh_mask_file_id, tmask_i_id,tmask_i);
170
171  bmask_id=Var_id(mesh_mask_file_id,"bmask");
172  sonclire(0, NY,NX, mesh_mask_file_id, bmask_id,bmask);
173
174  gdept_0_id=Var_id(mesh_mask_file_id,"gdept_0");
175  zonclire(0, NZ, mesh_mask_file_id, gdept_0_id,gdept_0);
176
177  gdepw_0_id=Var_id(mesh_mask_file_id,"gdepw_0");
178  zonclire(0, NZ, mesh_mask_file_id, gdepw_0_id,gdepw_0);
179 
180  //gdept_0
181  nc_close( mesh_mask_file_id);
182}
183
184void xistate_rest_file(int rest_file_id){
185  double temp[NZ*NY*NX];
186  int temp_id;
187
188  //-----------un
189  temp_id=Var_id(rest_file_id,"un");
190  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
191  for(int k=0;k<NZ;k++){
192    for(int j=0;j<NY;j++){
193      for(int i=0;i<NX;i++){
194        YS_ua(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
195      }
196    }
197  }
198  //-----------ub
199  temp_id=Var_id(rest_file_id,"ub");
200  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
201  for(int k=0;k<NZ;k++){
202    for(int j=0;j<NY;j++){
203      for(int i=0;i<NX;i++){
204        YS_ub(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
205      }
206    }
207  }
208 
209  //-----------vn
210  temp_id=Var_id(rest_file_id,"vn");
211  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
212  for(int k=0;k<NZ;k++){
213    for(int j=0;j<NY;j++){
214      for(int i=0;i<NX;i++){
215        YS_va(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
216      }
217    }
218  }
219 
220  //-----------vb
221  temp_id=Var_id(rest_file_id,"vb");
222  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
223  for(int k=0;k<NZ;k++)
224    for(int j=0;j<NY;j++)
225      for(int i=0;i<NX;i++){
226        YS_vb(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
227      }
228
229  //-----------wn
230  //if( lk_vvl )
231  /*  temp_id=Var_id(rest_file_id,"wn");
232  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
233  for(int k=0;k<NZ;k++){
234    for(int j=0;j<NY;j++){
235      for(int i=0;i<NX;i++){
236        YS_wa(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
237      }
238    }
239    }*/
240  //-----------
241  temp_id=Var_id(rest_file_id,"tn");
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_ta(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
247      }
248
249  //-----------
250  temp_id=Var_id(rest_file_id,"tb");
251  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
252  for(int k=0;k<NZ;k++)
253    for(int j=0;j<NY;j++)
254      for(int i=0;i<NX;i++){
255        YS_tb(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
256      }
257
258  //-----------
259  temp_id=Var_id(rest_file_id,"sn");
260  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
261  for(int k=0;k<NZ;k++)
262    for(int j=0;j<NY;j++)
263      for(int i=0;i<NX;i++){
264        YS_sa(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
265      }
266
267  //-----------
268  temp_id=Var_id(rest_file_id,"sb");
269  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
270  for(int k=0;k<NZ;k++)
271    for(int j=0;j<NY;j++)
272      for(int i=0;i<NX;i++){
273        YS_sb(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
274      }
275
276  //-----------
277  temp_id=Var_id(rest_file_id,"sshn");
278  sonclire(0, NY, NX, rest_file_id, temp_id,temp);
279  for(int j=0;j<NY;j++)
280    for(int i=0;i<NX;i++){
281      YS_sshn(0,i,j,TU)=temp[(j)*(NX)+(i)];
282    }
283
284  //-----------
285  temp_id=Var_id(rest_file_id,"sshb");
286  sonclire(0, NY, NX, rest_file_id, temp_id,temp);
287  for(int j=0;j<NY;j++)
288    for(int i=0;i<NX;i++){
289      YS_sshb(0,i,j,TU)=temp[(j)*(NX)+(i)];
290    }
291
292  //-----------
293  temp_id=Var_id(rest_file_id,"hdivn");
294  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
295  for(int k=0;k<NZ;k++)
296    for(int j=0;j<NY;j++)
297      for(int i=0;i<NX;i++){
298        YS_hdivn(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
299      }
300
301  //-----------
302  temp_id=Var_id(rest_file_id,"hdivb");// a revoir
303  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
304  for(int k=0;k<NZ;k++)
305    for(int j=0;j<NY;j++)
306      for(int i=0;i<NX;i++){
307        YS_hdivn(0,i,j,k,TU-1)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
308      }
309
310  //-----------
311  temp_id=Var_id(rest_file_id,"rotn");
312  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
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_rotn(0,i,j,k,TU)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
317      }
318
319  //-----------
320  temp_id=Var_id(rest_file_id,"rotb"); // a revoir
321  vonclire(0, NZ, NY, NX, rest_file_id, temp_id,temp);
322  for(int k=0;k<NZ;k++)
323    for(int j=0;j<NY;j++)
324      for(int i=0;i<NX;i++){
325        YS_rotn(0,i,j,k,TU-1)=temp[(k)*(NY*NX)+(j)*(NX)+(i)];
326      }
327
328   //-----------
329  temp_id=Var_id(rest_file_id,"gcx");
330  sonclire(0, NY, NX, rest_file_id, temp_id,temp);
331    for(int j=0;j<NY;j++)
332      for(int i=0;i<NX;i++){
333        YS_gcx2(0,i,j,TU)=temp[(j)*(NX)+(i)];
334      }
335
336  //-----------
337  temp_id=Var_id(rest_file_id,"gcxb");
338  sonclire(0, NY, NX, rest_file_id, temp_id,temp);
339  for(int j=0;j<NY;j++)
340    for(int i=0;i<NX;i++){
341      YS_gcx2(0,i,j,TU-1)=temp[(j)*(NX)+(i)];
342    }
343}
Note: See TracBrowser for help on using the repository browser.