Line |
Branch |
Exec |
Source |
1 |
|
✗ |
SUBROUTINE iotd_ini(fichnom,iim,jjm,llm,prlon,prlat,pcoordv,jour0,mois0,an0,t0,timestep,calendrier) |
2 |
|
|
IMPLICIT NONE |
3 |
|
|
|
4 |
|
|
!======================================================================= |
5 |
|
|
! |
6 |
|
|
! Auteur: F. Hourdin |
7 |
|
|
! ------- |
8 |
|
|
! |
9 |
|
|
! Objet: |
10 |
|
|
! ------ |
11 |
|
|
! Light interface for netcdf outputs. can be used outside LMDZ |
12 |
|
|
! |
13 |
|
|
!======================================================================= |
14 |
|
|
!----------------------------------------------------------------------- |
15 |
|
|
! Declarations: |
16 |
|
|
! ------------- |
17 |
|
|
|
18 |
|
|
! NetCDF-3. |
19 |
|
|
! |
20 |
|
|
! netcdf version 3 fortran interface: |
21 |
|
|
! |
22 |
|
|
|
23 |
|
|
! |
24 |
|
|
! external netcdf data types: |
25 |
|
|
! |
26 |
|
|
integer nf_byte |
27 |
|
|
integer nf_int1 |
28 |
|
|
integer nf_char |
29 |
|
|
integer nf_short |
30 |
|
|
integer nf_int2 |
31 |
|
|
integer nf_int |
32 |
|
|
integer nf_float |
33 |
|
|
integer nf_real |
34 |
|
|
integer nf_double |
35 |
|
|
|
36 |
|
|
parameter (nf_byte = 1) |
37 |
|
|
parameter (nf_int1 = nf_byte) |
38 |
|
|
parameter (nf_char = 2) |
39 |
|
|
parameter (nf_short = 3) |
40 |
|
|
parameter (nf_int2 = nf_short) |
41 |
|
|
parameter (nf_int = 4) |
42 |
|
|
parameter (nf_float = 5) |
43 |
|
|
parameter (nf_real = nf_float) |
44 |
|
|
parameter (nf_double = 6) |
45 |
|
|
|
46 |
|
|
! |
47 |
|
|
! default fill values: |
48 |
|
|
! |
49 |
|
|
integer nf_fill_byte |
50 |
|
|
integer nf_fill_int1 |
51 |
|
|
integer nf_fill_char |
52 |
|
|
integer nf_fill_short |
53 |
|
|
integer nf_fill_int2 |
54 |
|
|
integer nf_fill_int |
55 |
|
|
real nf_fill_float |
56 |
|
|
real nf_fill_real |
57 |
|
|
doubleprecision nf_fill_double |
58 |
|
|
|
59 |
|
|
parameter (nf_fill_byte = -127) |
60 |
|
|
parameter (nf_fill_int1 = nf_fill_byte) |
61 |
|
|
parameter (nf_fill_char = 0) |
62 |
|
|
parameter (nf_fill_short = -32767) |
63 |
|
|
parameter (nf_fill_int2 = nf_fill_short) |
64 |
|
|
parameter (nf_fill_int = -2147483647) |
65 |
|
|
parameter (nf_fill_float = 9.9692099683868690e+36) |
66 |
|
|
parameter (nf_fill_real = nf_fill_float) |
67 |
|
|
parameter (nf_fill_double = 9.9692099683868690e+36) |
68 |
|
|
|
69 |
|
|
! |
70 |
|
|
! mode flags for opening and creating a netcdf dataset: |
71 |
|
|
! |
72 |
|
|
integer nf_nowrite |
73 |
|
|
integer nf_write |
74 |
|
|
integer nf_clobber |
75 |
|
|
integer nf_noclobber |
76 |
|
|
integer nf_fill |
77 |
|
|
integer nf_nofill |
78 |
|
|
integer nf_lock |
79 |
|
|
integer nf_share |
80 |
|
|
integer nf_64bit_offset |
81 |
|
|
integer nf_sizehint_default |
82 |
|
|
integer nf_align_chunk |
83 |
|
|
integer nf_format_classic |
84 |
|
|
integer nf_format_64bit |
85 |
|
|
|
86 |
|
|
parameter (nf_nowrite = 0) |
87 |
|
|
parameter (nf_write = 1) |
88 |
|
|
parameter (nf_clobber = 0) |
89 |
|
|
parameter (nf_noclobber = 4) |
90 |
|
|
parameter (nf_fill = 0) |
91 |
|
|
parameter (nf_nofill = 256) |
92 |
|
|
parameter (nf_lock = 1024) |
93 |
|
|
parameter (nf_share = 2048) |
94 |
|
|
parameter (nf_64bit_offset = 512) |
95 |
|
|
parameter (nf_sizehint_default = 0) |
96 |
|
|
parameter (nf_align_chunk = -1) |
97 |
|
|
parameter (nf_format_classic = 1) |
98 |
|
|
parameter (nf_format_64bit = 2) |
99 |
|
|
|
100 |
|
|
! |
101 |
|
|
! size argument for defining an unlimited dimension: |
102 |
|
|
! |
103 |
|
|
integer nf_unlimited |
104 |
|
|
parameter (nf_unlimited = 0) |
105 |
|
|
|
106 |
|
|
! |
107 |
|
|
! global attribute id: |
108 |
|
|
! |
109 |
|
|
integer nf_global |
110 |
|
|
parameter (nf_global = 0) |
111 |
|
|
|
112 |
|
|
! |
113 |
|
|
! implementation limits: |
114 |
|
|
! |
115 |
|
|
integer nf_max_dims |
116 |
|
|
integer nf_max_attrs |
117 |
|
|
integer nf_max_vars |
118 |
|
|
integer nf_max_name |
119 |
|
|
integer nf_max_var_dims |
120 |
|
|
|
121 |
|
|
parameter (nf_max_dims = 1024) |
122 |
|
|
parameter (nf_max_attrs = 8192) |
123 |
|
|
parameter (nf_max_vars = 8192) |
124 |
|
|
parameter (nf_max_name = 256) |
125 |
|
|
parameter (nf_max_var_dims = nf_max_dims) |
126 |
|
|
|
127 |
|
|
! |
128 |
|
|
! error codes: |
129 |
|
|
! |
130 |
|
|
integer nf_noerr |
131 |
|
|
integer nf_ebadid |
132 |
|
|
integer nf_eexist |
133 |
|
|
integer nf_einval |
134 |
|
|
integer nf_eperm |
135 |
|
|
integer nf_enotindefine |
136 |
|
|
integer nf_eindefine |
137 |
|
|
integer nf_einvalcoords |
138 |
|
|
integer nf_emaxdims |
139 |
|
|
integer nf_enameinuse |
140 |
|
|
integer nf_enotatt |
141 |
|
|
integer nf_emaxatts |
142 |
|
|
integer nf_ebadtype |
143 |
|
|
integer nf_ebaddim |
144 |
|
|
integer nf_eunlimpos |
145 |
|
|
integer nf_emaxvars |
146 |
|
|
integer nf_enotvar |
147 |
|
|
integer nf_eglobal |
148 |
|
|
integer nf_enotnc |
149 |
|
|
integer nf_ests |
150 |
|
|
integer nf_emaxname |
151 |
|
|
integer nf_eunlimit |
152 |
|
|
integer nf_enorecvars |
153 |
|
|
integer nf_echar |
154 |
|
|
integer nf_eedge |
155 |
|
|
integer nf_estride |
156 |
|
|
integer nf_ebadname |
157 |
|
|
integer nf_erange |
158 |
|
|
integer nf_enomem |
159 |
|
|
integer nf_evarsize |
160 |
|
|
integer nf_edimsize |
161 |
|
|
integer nf_etrunc |
162 |
|
|
|
163 |
|
|
parameter (nf_noerr = 0) |
164 |
|
|
parameter (nf_ebadid = -33) |
165 |
|
|
parameter (nf_eexist = -35) |
166 |
|
|
parameter (nf_einval = -36) |
167 |
|
|
parameter (nf_eperm = -37) |
168 |
|
|
parameter (nf_enotindefine = -38) |
169 |
|
|
parameter (nf_eindefine = -39) |
170 |
|
|
parameter (nf_einvalcoords = -40) |
171 |
|
|
parameter (nf_emaxdims = -41) |
172 |
|
|
parameter (nf_enameinuse = -42) |
173 |
|
|
parameter (nf_enotatt = -43) |
174 |
|
|
parameter (nf_emaxatts = -44) |
175 |
|
|
parameter (nf_ebadtype = -45) |
176 |
|
|
parameter (nf_ebaddim = -46) |
177 |
|
|
parameter (nf_eunlimpos = -47) |
178 |
|
|
parameter (nf_emaxvars = -48) |
179 |
|
|
parameter (nf_enotvar = -49) |
180 |
|
|
parameter (nf_eglobal = -50) |
181 |
|
|
parameter (nf_enotnc = -51) |
182 |
|
|
parameter (nf_ests = -52) |
183 |
|
|
parameter (nf_emaxname = -53) |
184 |
|
|
parameter (nf_eunlimit = -54) |
185 |
|
|
parameter (nf_enorecvars = -55) |
186 |
|
|
parameter (nf_echar = -56) |
187 |
|
|
parameter (nf_eedge = -57) |
188 |
|
|
parameter (nf_estride = -58) |
189 |
|
|
parameter (nf_ebadname = -59) |
190 |
|
|
parameter (nf_erange = -60) |
191 |
|
|
parameter (nf_enomem = -61) |
192 |
|
|
parameter (nf_evarsize = -62) |
193 |
|
|
parameter (nf_edimsize = -63) |
194 |
|
|
parameter (nf_etrunc = -64) |
195 |
|
|
! |
196 |
|
|
! error handling modes: |
197 |
|
|
! |
198 |
|
|
integer nf_fatal |
199 |
|
|
integer nf_verbose |
200 |
|
|
|
201 |
|
|
parameter (nf_fatal = 1) |
202 |
|
|
parameter (nf_verbose = 2) |
203 |
|
|
|
204 |
|
|
! |
205 |
|
|
! miscellaneous routines: |
206 |
|
|
! |
207 |
|
|
character*80 nf_inq_libvers |
208 |
|
|
external nf_inq_libvers |
209 |
|
|
|
210 |
|
|
character*80 nf_strerror |
211 |
|
|
! (integer ncerr) |
212 |
|
|
external nf_strerror |
213 |
|
|
|
214 |
|
|
logical nf_issyserr |
215 |
|
|
! (integer ncerr) |
216 |
|
|
external nf_issyserr |
217 |
|
|
|
218 |
|
|
! |
219 |
|
|
! control routines: |
220 |
|
|
! |
221 |
|
|
integer nf_inq_base_pe |
222 |
|
|
! (integer ncid, |
223 |
|
|
! integer pe) |
224 |
|
|
external nf_inq_base_pe |
225 |
|
|
|
226 |
|
|
integer nf_set_base_pe |
227 |
|
|
! (integer ncid, |
228 |
|
|
! integer pe) |
229 |
|
|
external nf_set_base_pe |
230 |
|
|
|
231 |
|
|
integer nf_create |
232 |
|
|
! (character*(*) path, |
233 |
|
|
! integer cmode, |
234 |
|
|
! integer ncid) |
235 |
|
|
external nf_create |
236 |
|
|
|
237 |
|
|
integer nf__create |
238 |
|
|
! (character*(*) path, |
239 |
|
|
! integer cmode, |
240 |
|
|
! integer initialsz, |
241 |
|
|
! integer chunksizehint, |
242 |
|
|
! integer ncid) |
243 |
|
|
external nf__create |
244 |
|
|
|
245 |
|
|
integer nf__create_mp |
246 |
|
|
! (character*(*) path, |
247 |
|
|
! integer cmode, |
248 |
|
|
! integer initialsz, |
249 |
|
|
! integer basepe, |
250 |
|
|
! integer chunksizehint, |
251 |
|
|
! integer ncid) |
252 |
|
|
external nf__create_mp |
253 |
|
|
|
254 |
|
|
integer nf_open |
255 |
|
|
! (character*(*) path, |
256 |
|
|
! integer mode, |
257 |
|
|
! integer ncid) |
258 |
|
|
external nf_open |
259 |
|
|
|
260 |
|
|
integer nf__open |
261 |
|
|
! (character*(*) path, |
262 |
|
|
! integer mode, |
263 |
|
|
! integer chunksizehint, |
264 |
|
|
! integer ncid) |
265 |
|
|
external nf__open |
266 |
|
|
|
267 |
|
|
integer nf__open_mp |
268 |
|
|
! (character*(*) path, |
269 |
|
|
! integer mode, |
270 |
|
|
! integer basepe, |
271 |
|
|
! integer chunksizehint, |
272 |
|
|
! integer ncid) |
273 |
|
|
external nf__open_mp |
274 |
|
|
|
275 |
|
|
integer nf_set_fill |
276 |
|
|
! (integer ncid, |
277 |
|
|
! integer fillmode, |
278 |
|
|
! integer old_mode) |
279 |
|
|
external nf_set_fill |
280 |
|
|
|
281 |
|
|
integer nf_set_default_format |
282 |
|
|
! (integer format, |
283 |
|
|
! integer old_format) |
284 |
|
|
external nf_set_default_format |
285 |
|
|
|
286 |
|
|
integer nf_redef |
287 |
|
|
! (integer ncid) |
288 |
|
|
external nf_redef |
289 |
|
|
|
290 |
|
|
integer nf_enddef |
291 |
|
|
! (integer ncid) |
292 |
|
|
external nf_enddef |
293 |
|
|
|
294 |
|
|
integer nf__enddef |
295 |
|
|
! (integer ncid, |
296 |
|
|
! integer h_minfree, |
297 |
|
|
! integer v_align, |
298 |
|
|
! integer v_minfree, |
299 |
|
|
! integer r_align) |
300 |
|
|
external nf__enddef |
301 |
|
|
|
302 |
|
|
integer nf_sync |
303 |
|
|
! (integer ncid) |
304 |
|
|
external nf_sync |
305 |
|
|
|
306 |
|
|
integer nf_abort |
307 |
|
|
! (integer ncid) |
308 |
|
|
external nf_abort |
309 |
|
|
|
310 |
|
|
integer nf_close |
311 |
|
|
! (integer ncid) |
312 |
|
|
external nf_close |
313 |
|
|
|
314 |
|
|
integer nf_delete |
315 |
|
|
! (character*(*) ncid) |
316 |
|
|
external nf_delete |
317 |
|
|
|
318 |
|
|
! |
319 |
|
|
! general inquiry routines: |
320 |
|
|
! |
321 |
|
|
|
322 |
|
|
integer nf_inq |
323 |
|
|
! (integer ncid, |
324 |
|
|
! integer ndims, |
325 |
|
|
! integer nvars, |
326 |
|
|
! integer ngatts, |
327 |
|
|
! integer unlimdimid) |
328 |
|
|
external nf_inq |
329 |
|
|
|
330 |
|
|
integer nf_inq_ndims |
331 |
|
|
! (integer ncid, |
332 |
|
|
! integer ndims) |
333 |
|
|
external nf_inq_ndims |
334 |
|
|
|
335 |
|
|
integer nf_inq_nvars |
336 |
|
|
! (integer ncid, |
337 |
|
|
! integer nvars) |
338 |
|
|
external nf_inq_nvars |
339 |
|
|
|
340 |
|
|
integer nf_inq_natts |
341 |
|
|
! (integer ncid, |
342 |
|
|
! integer ngatts) |
343 |
|
|
external nf_inq_natts |
344 |
|
|
|
345 |
|
|
integer nf_inq_unlimdim |
346 |
|
|
! (integer ncid, |
347 |
|
|
! integer unlimdimid) |
348 |
|
|
external nf_inq_unlimdim |
349 |
|
|
|
350 |
|
|
integer nf_inq_format |
351 |
|
|
! (integer ncid, |
352 |
|
|
! integer format) |
353 |
|
|
external nf_inq_format |
354 |
|
|
|
355 |
|
|
! |
356 |
|
|
! dimension routines: |
357 |
|
|
! |
358 |
|
|
|
359 |
|
|
integer nf_def_dim |
360 |
|
|
! (integer ncid, |
361 |
|
|
! character(*) name, |
362 |
|
|
! integer len, |
363 |
|
|
! integer dimid) |
364 |
|
|
external nf_def_dim |
365 |
|
|
|
366 |
|
|
integer nf_inq_dimid |
367 |
|
|
! (integer ncid, |
368 |
|
|
! character(*) name, |
369 |
|
|
! integer dimid) |
370 |
|
|
external nf_inq_dimid |
371 |
|
|
|
372 |
|
|
integer nf_inq_dim |
373 |
|
|
! (integer ncid, |
374 |
|
|
! integer dimid, |
375 |
|
|
! character(*) name, |
376 |
|
|
! integer len) |
377 |
|
|
external nf_inq_dim |
378 |
|
|
|
379 |
|
|
integer nf_inq_dimname |
380 |
|
|
! (integer ncid, |
381 |
|
|
! integer dimid, |
382 |
|
|
! character(*) name) |
383 |
|
|
external nf_inq_dimname |
384 |
|
|
|
385 |
|
|
integer nf_inq_dimlen |
386 |
|
|
! (integer ncid, |
387 |
|
|
! integer dimid, |
388 |
|
|
! integer len) |
389 |
|
|
external nf_inq_dimlen |
390 |
|
|
|
391 |
|
|
integer nf_rename_dim |
392 |
|
|
! (integer ncid, |
393 |
|
|
! integer dimid, |
394 |
|
|
! character(*) name) |
395 |
|
|
external nf_rename_dim |
396 |
|
|
|
397 |
|
|
! |
398 |
|
|
! general attribute routines: |
399 |
|
|
! |
400 |
|
|
|
401 |
|
|
integer nf_inq_att |
402 |
|
|
! (integer ncid, |
403 |
|
|
! integer varid, |
404 |
|
|
! character(*) name, |
405 |
|
|
! integer xtype, |
406 |
|
|
! integer len) |
407 |
|
|
external nf_inq_att |
408 |
|
|
|
409 |
|
|
integer nf_inq_attid |
410 |
|
|
! (integer ncid, |
411 |
|
|
! integer varid, |
412 |
|
|
! character(*) name, |
413 |
|
|
! integer attnum) |
414 |
|
|
external nf_inq_attid |
415 |
|
|
|
416 |
|
|
integer nf_inq_atttype |
417 |
|
|
! (integer ncid, |
418 |
|
|
! integer varid, |
419 |
|
|
! character(*) name, |
420 |
|
|
! integer xtype) |
421 |
|
|
external nf_inq_atttype |
422 |
|
|
|
423 |
|
|
integer nf_inq_attlen |
424 |
|
|
! (integer ncid, |
425 |
|
|
! integer varid, |
426 |
|
|
! character(*) name, |
427 |
|
|
! integer len) |
428 |
|
|
external nf_inq_attlen |
429 |
|
|
|
430 |
|
|
integer nf_inq_attname |
431 |
|
|
! (integer ncid, |
432 |
|
|
! integer varid, |
433 |
|
|
! integer attnum, |
434 |
|
|
! character(*) name) |
435 |
|
|
external nf_inq_attname |
436 |
|
|
|
437 |
|
|
integer nf_copy_att |
438 |
|
|
! (integer ncid_in, |
439 |
|
|
! integer varid_in, |
440 |
|
|
! character(*) name, |
441 |
|
|
! integer ncid_out, |
442 |
|
|
! integer varid_out) |
443 |
|
|
external nf_copy_att |
444 |
|
|
|
445 |
|
|
integer nf_rename_att |
446 |
|
|
! (integer ncid, |
447 |
|
|
! integer varid, |
448 |
|
|
! character(*) curname, |
449 |
|
|
! character(*) newname) |
450 |
|
|
external nf_rename_att |
451 |
|
|
|
452 |
|
|
integer nf_del_att |
453 |
|
|
! (integer ncid, |
454 |
|
|
! integer varid, |
455 |
|
|
! character(*) name) |
456 |
|
|
external nf_del_att |
457 |
|
|
|
458 |
|
|
! |
459 |
|
|
! attribute put/get routines: |
460 |
|
|
! |
461 |
|
|
|
462 |
|
|
integer nf_put_att_text |
463 |
|
|
! (integer ncid, |
464 |
|
|
! integer varid, |
465 |
|
|
! character(*) name, |
466 |
|
|
! integer len, |
467 |
|
|
! character(*) text) |
468 |
|
|
external nf_put_att_text |
469 |
|
|
|
470 |
|
|
integer nf_get_att_text |
471 |
|
|
! (integer ncid, |
472 |
|
|
! integer varid, |
473 |
|
|
! character(*) name, |
474 |
|
|
! character(*) text) |
475 |
|
|
external nf_get_att_text |
476 |
|
|
|
477 |
|
|
integer nf_put_att_int1 |
478 |
|
|
! (integer ncid, |
479 |
|
|
! integer varid, |
480 |
|
|
! character(*) name, |
481 |
|
|
! integer xtype, |
482 |
|
|
! integer len, |
483 |
|
|
! nf_int1_t i1vals(1)) |
484 |
|
|
external nf_put_att_int1 |
485 |
|
|
|
486 |
|
|
integer nf_get_att_int1 |
487 |
|
|
! (integer ncid, |
488 |
|
|
! integer varid, |
489 |
|
|
! character(*) name, |
490 |
|
|
! nf_int1_t i1vals(1)) |
491 |
|
|
external nf_get_att_int1 |
492 |
|
|
|
493 |
|
|
integer nf_put_att_int2 |
494 |
|
|
! (integer ncid, |
495 |
|
|
! integer varid, |
496 |
|
|
! character(*) name, |
497 |
|
|
! integer xtype, |
498 |
|
|
! integer len, |
499 |
|
|
! nf_int2_t i2vals(1)) |
500 |
|
|
external nf_put_att_int2 |
501 |
|
|
|
502 |
|
|
integer nf_get_att_int2 |
503 |
|
|
! (integer ncid, |
504 |
|
|
! integer varid, |
505 |
|
|
! character(*) name, |
506 |
|
|
! nf_int2_t i2vals(1)) |
507 |
|
|
external nf_get_att_int2 |
508 |
|
|
|
509 |
|
|
integer nf_put_att_int |
510 |
|
|
! (integer ncid, |
511 |
|
|
! integer varid, |
512 |
|
|
! character(*) name, |
513 |
|
|
! integer xtype, |
514 |
|
|
! integer len, |
515 |
|
|
! integer ivals(1)) |
516 |
|
|
external nf_put_att_int |
517 |
|
|
|
518 |
|
|
integer nf_get_att_int |
519 |
|
|
! (integer ncid, |
520 |
|
|
! integer varid, |
521 |
|
|
! character(*) name, |
522 |
|
|
! integer ivals(1)) |
523 |
|
|
external nf_get_att_int |
524 |
|
|
|
525 |
|
|
integer nf_put_att_real |
526 |
|
|
! (integer ncid, |
527 |
|
|
! integer varid, |
528 |
|
|
! character(*) name, |
529 |
|
|
! integer xtype, |
530 |
|
|
! integer len, |
531 |
|
|
! real rvals(1)) |
532 |
|
|
external nf_put_att_real |
533 |
|
|
|
534 |
|
|
integer nf_get_att_real |
535 |
|
|
! (integer ncid, |
536 |
|
|
! integer varid, |
537 |
|
|
! character(*) name, |
538 |
|
|
! real rvals(1)) |
539 |
|
|
external nf_get_att_real |
540 |
|
|
|
541 |
|
|
integer nf_put_att_double |
542 |
|
|
! (integer ncid, |
543 |
|
|
! integer varid, |
544 |
|
|
! character(*) name, |
545 |
|
|
! integer xtype, |
546 |
|
|
! integer len, |
547 |
|
|
! double dvals(1)) |
548 |
|
|
external nf_put_att_double |
549 |
|
|
|
550 |
|
|
integer nf_get_att_double |
551 |
|
|
! (integer ncid, |
552 |
|
|
! integer varid, |
553 |
|
|
! character(*) name, |
554 |
|
|
! double dvals(1)) |
555 |
|
|
external nf_get_att_double |
556 |
|
|
|
557 |
|
|
! |
558 |
|
|
! general variable routines: |
559 |
|
|
! |
560 |
|
|
|
561 |
|
|
integer nf_def_var |
562 |
|
|
! (integer ncid, |
563 |
|
|
! character(*) name, |
564 |
|
|
! integer datatype, |
565 |
|
|
! integer ndims, |
566 |
|
|
! integer dimids(1), |
567 |
|
|
! integer varid) |
568 |
|
|
external nf_def_var |
569 |
|
|
|
570 |
|
|
integer nf_inq_var |
571 |
|
|
! (integer ncid, |
572 |
|
|
! integer varid, |
573 |
|
|
! character(*) name, |
574 |
|
|
! integer datatype, |
575 |
|
|
! integer ndims, |
576 |
|
|
! integer dimids(1), |
577 |
|
|
! integer natts) |
578 |
|
|
external nf_inq_var |
579 |
|
|
|
580 |
|
|
integer nf_inq_varid |
581 |
|
|
! (integer ncid, |
582 |
|
|
! character(*) name, |
583 |
|
|
! integer varid) |
584 |
|
|
external nf_inq_varid |
585 |
|
|
|
586 |
|
|
integer nf_inq_varname |
587 |
|
|
! (integer ncid, |
588 |
|
|
! integer varid, |
589 |
|
|
! character(*) name) |
590 |
|
|
external nf_inq_varname |
591 |
|
|
|
592 |
|
|
integer nf_inq_vartype |
593 |
|
|
! (integer ncid, |
594 |
|
|
! integer varid, |
595 |
|
|
! integer xtype) |
596 |
|
|
external nf_inq_vartype |
597 |
|
|
|
598 |
|
|
integer nf_inq_varndims |
599 |
|
|
! (integer ncid, |
600 |
|
|
! integer varid, |
601 |
|
|
! integer ndims) |
602 |
|
|
external nf_inq_varndims |
603 |
|
|
|
604 |
|
|
integer nf_inq_vardimid |
605 |
|
|
! (integer ncid, |
606 |
|
|
! integer varid, |
607 |
|
|
! integer dimids(1)) |
608 |
|
|
external nf_inq_vardimid |
609 |
|
|
|
610 |
|
|
integer nf_inq_varnatts |
611 |
|
|
! (integer ncid, |
612 |
|
|
! integer varid, |
613 |
|
|
! integer natts) |
614 |
|
|
external nf_inq_varnatts |
615 |
|
|
|
616 |
|
|
integer nf_rename_var |
617 |
|
|
! (integer ncid, |
618 |
|
|
! integer varid, |
619 |
|
|
! character(*) name) |
620 |
|
|
external nf_rename_var |
621 |
|
|
|
622 |
|
|
integer nf_copy_var |
623 |
|
|
! (integer ncid_in, |
624 |
|
|
! integer varid, |
625 |
|
|
! integer ncid_out) |
626 |
|
|
external nf_copy_var |
627 |
|
|
|
628 |
|
|
! |
629 |
|
|
! entire variable put/get routines: |
630 |
|
|
! |
631 |
|
|
|
632 |
|
|
integer nf_put_var_text |
633 |
|
|
! (integer ncid, |
634 |
|
|
! integer varid, |
635 |
|
|
! character(*) text) |
636 |
|
|
external nf_put_var_text |
637 |
|
|
|
638 |
|
|
integer nf_get_var_text |
639 |
|
|
! (integer ncid, |
640 |
|
|
! integer varid, |
641 |
|
|
! character(*) text) |
642 |
|
|
external nf_get_var_text |
643 |
|
|
|
644 |
|
|
integer nf_put_var_int1 |
645 |
|
|
! (integer ncid, |
646 |
|
|
! integer varid, |
647 |
|
|
! nf_int1_t i1vals(1)) |
648 |
|
|
external nf_put_var_int1 |
649 |
|
|
|
650 |
|
|
integer nf_get_var_int1 |
651 |
|
|
! (integer ncid, |
652 |
|
|
! integer varid, |
653 |
|
|
! nf_int1_t i1vals(1)) |
654 |
|
|
external nf_get_var_int1 |
655 |
|
|
|
656 |
|
|
integer nf_put_var_int2 |
657 |
|
|
! (integer ncid, |
658 |
|
|
! integer varid, |
659 |
|
|
! nf_int2_t i2vals(1)) |
660 |
|
|
external nf_put_var_int2 |
661 |
|
|
|
662 |
|
|
integer nf_get_var_int2 |
663 |
|
|
! (integer ncid, |
664 |
|
|
! integer varid, |
665 |
|
|
! nf_int2_t i2vals(1)) |
666 |
|
|
external nf_get_var_int2 |
667 |
|
|
|
668 |
|
|
integer nf_put_var_int |
669 |
|
|
! (integer ncid, |
670 |
|
|
! integer varid, |
671 |
|
|
! integer ivals(1)) |
672 |
|
|
external nf_put_var_int |
673 |
|
|
|
674 |
|
|
integer nf_get_var_int |
675 |
|
|
! (integer ncid, |
676 |
|
|
! integer varid, |
677 |
|
|
! integer ivals(1)) |
678 |
|
|
external nf_get_var_int |
679 |
|
|
|
680 |
|
|
integer nf_put_var_real |
681 |
|
|
! (integer ncid, |
682 |
|
|
! integer varid, |
683 |
|
|
! real rvals(1)) |
684 |
|
|
external nf_put_var_real |
685 |
|
|
|
686 |
|
|
integer nf_get_var_real |
687 |
|
|
! (integer ncid, |
688 |
|
|
! integer varid, |
689 |
|
|
! real rvals(1)) |
690 |
|
|
external nf_get_var_real |
691 |
|
|
|
692 |
|
|
integer nf_put_var_double |
693 |
|
|
! (integer ncid, |
694 |
|
|
! integer varid, |
695 |
|
|
! doubleprecision dvals(1)) |
696 |
|
|
external nf_put_var_double |
697 |
|
|
|
698 |
|
|
integer nf_get_var_double |
699 |
|
|
! (integer ncid, |
700 |
|
|
! integer varid, |
701 |
|
|
! doubleprecision dvals(1)) |
702 |
|
|
external nf_get_var_double |
703 |
|
|
|
704 |
|
|
! |
705 |
|
|
! single variable put/get routines: |
706 |
|
|
! |
707 |
|
|
|
708 |
|
|
integer nf_put_var1_text |
709 |
|
|
! (integer ncid, |
710 |
|
|
! integer varid, |
711 |
|
|
! integer index(1), |
712 |
|
|
! character*1 text) |
713 |
|
|
external nf_put_var1_text |
714 |
|
|
|
715 |
|
|
integer nf_get_var1_text |
716 |
|
|
! (integer ncid, |
717 |
|
|
! integer varid, |
718 |
|
|
! integer index(1), |
719 |
|
|
! character*1 text) |
720 |
|
|
external nf_get_var1_text |
721 |
|
|
|
722 |
|
|
integer nf_put_var1_int1 |
723 |
|
|
! (integer ncid, |
724 |
|
|
! integer varid, |
725 |
|
|
! integer index(1), |
726 |
|
|
! nf_int1_t i1val) |
727 |
|
|
external nf_put_var1_int1 |
728 |
|
|
|
729 |
|
|
integer nf_get_var1_int1 |
730 |
|
|
! (integer ncid, |
731 |
|
|
! integer varid, |
732 |
|
|
! integer index(1), |
733 |
|
|
! nf_int1_t i1val) |
734 |
|
|
external nf_get_var1_int1 |
735 |
|
|
|
736 |
|
|
integer nf_put_var1_int2 |
737 |
|
|
! (integer ncid, |
738 |
|
|
! integer varid, |
739 |
|
|
! integer index(1), |
740 |
|
|
! nf_int2_t i2val) |
741 |
|
|
external nf_put_var1_int2 |
742 |
|
|
|
743 |
|
|
integer nf_get_var1_int2 |
744 |
|
|
! (integer ncid, |
745 |
|
|
! integer varid, |
746 |
|
|
! integer index(1), |
747 |
|
|
! nf_int2_t i2val) |
748 |
|
|
external nf_get_var1_int2 |
749 |
|
|
|
750 |
|
|
integer nf_put_var1_int |
751 |
|
|
! (integer ncid, |
752 |
|
|
! integer varid, |
753 |
|
|
! integer index(1), |
754 |
|
|
! integer ival) |
755 |
|
|
external nf_put_var1_int |
756 |
|
|
|
757 |
|
|
integer nf_get_var1_int |
758 |
|
|
! (integer ncid, |
759 |
|
|
! integer varid, |
760 |
|
|
! integer index(1), |
761 |
|
|
! integer ival) |
762 |
|
|
external nf_get_var1_int |
763 |
|
|
|
764 |
|
|
integer nf_put_var1_real |
765 |
|
|
! (integer ncid, |
766 |
|
|
! integer varid, |
767 |
|
|
! integer index(1), |
768 |
|
|
! real rval) |
769 |
|
|
external nf_put_var1_real |
770 |
|
|
|
771 |
|
|
integer nf_get_var1_real |
772 |
|
|
! (integer ncid, |
773 |
|
|
! integer varid, |
774 |
|
|
! integer index(1), |
775 |
|
|
! real rval) |
776 |
|
|
external nf_get_var1_real |
777 |
|
|
|
778 |
|
|
integer nf_put_var1_double |
779 |
|
|
! (integer ncid, |
780 |
|
|
! integer varid, |
781 |
|
|
! integer index(1), |
782 |
|
|
! doubleprecision dval) |
783 |
|
|
external nf_put_var1_double |
784 |
|
|
|
785 |
|
|
integer nf_get_var1_double |
786 |
|
|
! (integer ncid, |
787 |
|
|
! integer varid, |
788 |
|
|
! integer index(1), |
789 |
|
|
! doubleprecision dval) |
790 |
|
|
external nf_get_var1_double |
791 |
|
|
|
792 |
|
|
! |
793 |
|
|
! variable array put/get routines: |
794 |
|
|
! |
795 |
|
|
|
796 |
|
|
integer nf_put_vara_text |
797 |
|
|
! (integer ncid, |
798 |
|
|
! integer varid, |
799 |
|
|
! integer start(1), |
800 |
|
|
! integer count(1), |
801 |
|
|
! character(*) text) |
802 |
|
|
external nf_put_vara_text |
803 |
|
|
|
804 |
|
|
integer nf_get_vara_text |
805 |
|
|
! (integer ncid, |
806 |
|
|
! integer varid, |
807 |
|
|
! integer start(1), |
808 |
|
|
! integer count(1), |
809 |
|
|
! character(*) text) |
810 |
|
|
external nf_get_vara_text |
811 |
|
|
|
812 |
|
|
integer nf_put_vara_int1 |
813 |
|
|
! (integer ncid, |
814 |
|
|
! integer varid, |
815 |
|
|
! integer start(1), |
816 |
|
|
! integer count(1), |
817 |
|
|
! nf_int1_t i1vals(1)) |
818 |
|
|
external nf_put_vara_int1 |
819 |
|
|
|
820 |
|
|
integer nf_get_vara_int1 |
821 |
|
|
! (integer ncid, |
822 |
|
|
! integer varid, |
823 |
|
|
! integer start(1), |
824 |
|
|
! integer count(1), |
825 |
|
|
! nf_int1_t i1vals(1)) |
826 |
|
|
external nf_get_vara_int1 |
827 |
|
|
|
828 |
|
|
integer nf_put_vara_int2 |
829 |
|
|
! (integer ncid, |
830 |
|
|
! integer varid, |
831 |
|
|
! integer start(1), |
832 |
|
|
! integer count(1), |
833 |
|
|
! nf_int2_t i2vals(1)) |
834 |
|
|
external nf_put_vara_int2 |
835 |
|
|
|
836 |
|
|
integer nf_get_vara_int2 |
837 |
|
|
! (integer ncid, |
838 |
|
|
! integer varid, |
839 |
|
|
! integer start(1), |
840 |
|
|
! integer count(1), |
841 |
|
|
! nf_int2_t i2vals(1)) |
842 |
|
|
external nf_get_vara_int2 |
843 |
|
|
|
844 |
|
|
integer nf_put_vara_int |
845 |
|
|
! (integer ncid, |
846 |
|
|
! integer varid, |
847 |
|
|
! integer start(1), |
848 |
|
|
! integer count(1), |
849 |
|
|
! integer ivals(1)) |
850 |
|
|
external nf_put_vara_int |
851 |
|
|
|
852 |
|
|
integer nf_get_vara_int |
853 |
|
|
! (integer ncid, |
854 |
|
|
! integer varid, |
855 |
|
|
! integer start(1), |
856 |
|
|
! integer count(1), |
857 |
|
|
! integer ivals(1)) |
858 |
|
|
external nf_get_vara_int |
859 |
|
|
|
860 |
|
|
integer nf_put_vara_real |
861 |
|
|
! (integer ncid, |
862 |
|
|
! integer varid, |
863 |
|
|
! integer start(1), |
864 |
|
|
! integer count(1), |
865 |
|
|
! real rvals(1)) |
866 |
|
|
external nf_put_vara_real |
867 |
|
|
|
868 |
|
|
integer nf_get_vara_real |
869 |
|
|
! (integer ncid, |
870 |
|
|
! integer varid, |
871 |
|
|
! integer start(1), |
872 |
|
|
! integer count(1), |
873 |
|
|
! real rvals(1)) |
874 |
|
|
external nf_get_vara_real |
875 |
|
|
|
876 |
|
|
integer nf_put_vara_double |
877 |
|
|
! (integer ncid, |
878 |
|
|
! integer varid, |
879 |
|
|
! integer start(1), |
880 |
|
|
! integer count(1), |
881 |
|
|
! doubleprecision dvals(1)) |
882 |
|
|
external nf_put_vara_double |
883 |
|
|
|
884 |
|
|
integer nf_get_vara_double |
885 |
|
|
! (integer ncid, |
886 |
|
|
! integer varid, |
887 |
|
|
! integer start(1), |
888 |
|
|
! integer count(1), |
889 |
|
|
! doubleprecision dvals(1)) |
890 |
|
|
external nf_get_vara_double |
891 |
|
|
|
892 |
|
|
! |
893 |
|
|
! strided variable put/get routines: |
894 |
|
|
! |
895 |
|
|
|
896 |
|
|
integer nf_put_vars_text |
897 |
|
|
! (integer ncid, |
898 |
|
|
! integer varid, |
899 |
|
|
! integer start(1), |
900 |
|
|
! integer count(1), |
901 |
|
|
! integer stride(1), |
902 |
|
|
! character(*) text) |
903 |
|
|
external nf_put_vars_text |
904 |
|
|
|
905 |
|
|
integer nf_get_vars_text |
906 |
|
|
! (integer ncid, |
907 |
|
|
! integer varid, |
908 |
|
|
! integer start(1), |
909 |
|
|
! integer count(1), |
910 |
|
|
! integer stride(1), |
911 |
|
|
! character(*) text) |
912 |
|
|
external nf_get_vars_text |
913 |
|
|
|
914 |
|
|
integer nf_put_vars_int1 |
915 |
|
|
! (integer ncid, |
916 |
|
|
! integer varid, |
917 |
|
|
! integer start(1), |
918 |
|
|
! integer count(1), |
919 |
|
|
! integer stride(1), |
920 |
|
|
! nf_int1_t i1vals(1)) |
921 |
|
|
external nf_put_vars_int1 |
922 |
|
|
|
923 |
|
|
integer nf_get_vars_int1 |
924 |
|
|
! (integer ncid, |
925 |
|
|
! integer varid, |
926 |
|
|
! integer start(1), |
927 |
|
|
! integer count(1), |
928 |
|
|
! integer stride(1), |
929 |
|
|
! nf_int1_t i1vals(1)) |
930 |
|
|
external nf_get_vars_int1 |
931 |
|
|
|
932 |
|
|
integer nf_put_vars_int2 |
933 |
|
|
! (integer ncid, |
934 |
|
|
! integer varid, |
935 |
|
|
! integer start(1), |
936 |
|
|
! integer count(1), |
937 |
|
|
! integer stride(1), |
938 |
|
|
! nf_int2_t i2vals(1)) |
939 |
|
|
external nf_put_vars_int2 |
940 |
|
|
|
941 |
|
|
integer nf_get_vars_int2 |
942 |
|
|
! (integer ncid, |
943 |
|
|
! integer varid, |
944 |
|
|
! integer start(1), |
945 |
|
|
! integer count(1), |
946 |
|
|
! integer stride(1), |
947 |
|
|
! nf_int2_t i2vals(1)) |
948 |
|
|
external nf_get_vars_int2 |
949 |
|
|
|
950 |
|
|
integer nf_put_vars_int |
951 |
|
|
! (integer ncid, |
952 |
|
|
! integer varid, |
953 |
|
|
! integer start(1), |
954 |
|
|
! integer count(1), |
955 |
|
|
! integer stride(1), |
956 |
|
|
! integer ivals(1)) |
957 |
|
|
external nf_put_vars_int |
958 |
|
|
|
959 |
|
|
integer nf_get_vars_int |
960 |
|
|
! (integer ncid, |
961 |
|
|
! integer varid, |
962 |
|
|
! integer start(1), |
963 |
|
|
! integer count(1), |
964 |
|
|
! integer stride(1), |
965 |
|
|
! integer ivals(1)) |
966 |
|
|
external nf_get_vars_int |
967 |
|
|
|
968 |
|
|
integer nf_put_vars_real |
969 |
|
|
! (integer ncid, |
970 |
|
|
! integer varid, |
971 |
|
|
! integer start(1), |
972 |
|
|
! integer count(1), |
973 |
|
|
! integer stride(1), |
974 |
|
|
! real rvals(1)) |
975 |
|
|
external nf_put_vars_real |
976 |
|
|
|
977 |
|
|
integer nf_get_vars_real |
978 |
|
|
! (integer ncid, |
979 |
|
|
! integer varid, |
980 |
|
|
! integer start(1), |
981 |
|
|
! integer count(1), |
982 |
|
|
! integer stride(1), |
983 |
|
|
! real rvals(1)) |
984 |
|
|
external nf_get_vars_real |
985 |
|
|
|
986 |
|
|
integer nf_put_vars_double |
987 |
|
|
! (integer ncid, |
988 |
|
|
! integer varid, |
989 |
|
|
! integer start(1), |
990 |
|
|
! integer count(1), |
991 |
|
|
! integer stride(1), |
992 |
|
|
! doubleprecision dvals(1)) |
993 |
|
|
external nf_put_vars_double |
994 |
|
|
|
995 |
|
|
integer nf_get_vars_double |
996 |
|
|
! (integer ncid, |
997 |
|
|
! integer varid, |
998 |
|
|
! integer start(1), |
999 |
|
|
! integer count(1), |
1000 |
|
|
! integer stride(1), |
1001 |
|
|
! doubleprecision dvals(1)) |
1002 |
|
|
external nf_get_vars_double |
1003 |
|
|
|
1004 |
|
|
! |
1005 |
|
|
! mapped variable put/get routines: |
1006 |
|
|
! |
1007 |
|
|
|
1008 |
|
|
integer nf_put_varm_text |
1009 |
|
|
! (integer ncid, |
1010 |
|
|
! integer varid, |
1011 |
|
|
! integer start(1), |
1012 |
|
|
! integer count(1), |
1013 |
|
|
! integer stride(1), |
1014 |
|
|
! integer imap(1), |
1015 |
|
|
! character(*) text) |
1016 |
|
|
external nf_put_varm_text |
1017 |
|
|
|
1018 |
|
|
integer nf_get_varm_text |
1019 |
|
|
! (integer ncid, |
1020 |
|
|
! integer varid, |
1021 |
|
|
! integer start(1), |
1022 |
|
|
! integer count(1), |
1023 |
|
|
! integer stride(1), |
1024 |
|
|
! integer imap(1), |
1025 |
|
|
! character(*) text) |
1026 |
|
|
external nf_get_varm_text |
1027 |
|
|
|
1028 |
|
|
integer nf_put_varm_int1 |
1029 |
|
|
! (integer ncid, |
1030 |
|
|
! integer varid, |
1031 |
|
|
! integer start(1), |
1032 |
|
|
! integer count(1), |
1033 |
|
|
! integer stride(1), |
1034 |
|
|
! integer imap(1), |
1035 |
|
|
! nf_int1_t i1vals(1)) |
1036 |
|
|
external nf_put_varm_int1 |
1037 |
|
|
|
1038 |
|
|
integer nf_get_varm_int1 |
1039 |
|
|
! (integer ncid, |
1040 |
|
|
! integer varid, |
1041 |
|
|
! integer start(1), |
1042 |
|
|
! integer count(1), |
1043 |
|
|
! integer stride(1), |
1044 |
|
|
! integer imap(1), |
1045 |
|
|
! nf_int1_t i1vals(1)) |
1046 |
|
|
external nf_get_varm_int1 |
1047 |
|
|
|
1048 |
|
|
integer nf_put_varm_int2 |
1049 |
|
|
! (integer ncid, |
1050 |
|
|
! integer varid, |
1051 |
|
|
! integer start(1), |
1052 |
|
|
! integer count(1), |
1053 |
|
|
! integer stride(1), |
1054 |
|
|
! integer imap(1), |
1055 |
|
|
! nf_int2_t i2vals(1)) |
1056 |
|
|
external nf_put_varm_int2 |
1057 |
|
|
|
1058 |
|
|
integer nf_get_varm_int2 |
1059 |
|
|
! (integer ncid, |
1060 |
|
|
! integer varid, |
1061 |
|
|
! integer start(1), |
1062 |
|
|
! integer count(1), |
1063 |
|
|
! integer stride(1), |
1064 |
|
|
! integer imap(1), |
1065 |
|
|
! nf_int2_t i2vals(1)) |
1066 |
|
|
external nf_get_varm_int2 |
1067 |
|
|
|
1068 |
|
|
integer nf_put_varm_int |
1069 |
|
|
! (integer ncid, |
1070 |
|
|
! integer varid, |
1071 |
|
|
! integer start(1), |
1072 |
|
|
! integer count(1), |
1073 |
|
|
! integer stride(1), |
1074 |
|
|
! integer imap(1), |
1075 |
|
|
! integer ivals(1)) |
1076 |
|
|
external nf_put_varm_int |
1077 |
|
|
|
1078 |
|
|
integer nf_get_varm_int |
1079 |
|
|
! (integer ncid, |
1080 |
|
|
! integer varid, |
1081 |
|
|
! integer start(1), |
1082 |
|
|
! integer count(1), |
1083 |
|
|
! integer stride(1), |
1084 |
|
|
! integer imap(1), |
1085 |
|
|
! integer ivals(1)) |
1086 |
|
|
external nf_get_varm_int |
1087 |
|
|
|
1088 |
|
|
integer nf_put_varm_real |
1089 |
|
|
! (integer ncid, |
1090 |
|
|
! integer varid, |
1091 |
|
|
! integer start(1), |
1092 |
|
|
! integer count(1), |
1093 |
|
|
! integer stride(1), |
1094 |
|
|
! integer imap(1), |
1095 |
|
|
! real rvals(1)) |
1096 |
|
|
external nf_put_varm_real |
1097 |
|
|
|
1098 |
|
|
integer nf_get_varm_real |
1099 |
|
|
! (integer ncid, |
1100 |
|
|
! integer varid, |
1101 |
|
|
! integer start(1), |
1102 |
|
|
! integer count(1), |
1103 |
|
|
! integer stride(1), |
1104 |
|
|
! integer imap(1), |
1105 |
|
|
! real rvals(1)) |
1106 |
|
|
external nf_get_varm_real |
1107 |
|
|
|
1108 |
|
|
integer nf_put_varm_double |
1109 |
|
|
! (integer ncid, |
1110 |
|
|
! integer varid, |
1111 |
|
|
! integer start(1), |
1112 |
|
|
! integer count(1), |
1113 |
|
|
! integer stride(1), |
1114 |
|
|
! integer imap(1), |
1115 |
|
|
! doubleprecision dvals(1)) |
1116 |
|
|
external nf_put_varm_double |
1117 |
|
|
|
1118 |
|
|
integer nf_get_varm_double |
1119 |
|
|
! (integer ncid, |
1120 |
|
|
! integer varid, |
1121 |
|
|
! integer start(1), |
1122 |
|
|
! integer count(1), |
1123 |
|
|
! integer stride(1), |
1124 |
|
|
! integer imap(1), |
1125 |
|
|
! doubleprecision dvals(1)) |
1126 |
|
|
external nf_get_varm_double |
1127 |
|
|
|
1128 |
|
|
|
1129 |
|
|
! NetCDF-2. |
1130 |
|
|
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
1131 |
|
|
! begin netcdf 2.4 backward compatibility: |
1132 |
|
|
! |
1133 |
|
|
|
1134 |
|
|
! |
1135 |
|
|
! functions in the fortran interface |
1136 |
|
|
! |
1137 |
|
|
integer nccre |
1138 |
|
|
integer ncopn |
1139 |
|
|
integer ncddef |
1140 |
|
|
integer ncdid |
1141 |
|
|
integer ncvdef |
1142 |
|
|
integer ncvid |
1143 |
|
|
integer nctlen |
1144 |
|
|
integer ncsfil |
1145 |
|
|
|
1146 |
|
|
external nccre |
1147 |
|
|
external ncopn |
1148 |
|
|
external ncddef |
1149 |
|
|
external ncdid |
1150 |
|
|
external ncvdef |
1151 |
|
|
external ncvid |
1152 |
|
|
external nctlen |
1153 |
|
|
external ncsfil |
1154 |
|
|
|
1155 |
|
|
|
1156 |
|
|
integer ncrdwr |
1157 |
|
|
integer nccreat |
1158 |
|
|
integer ncexcl |
1159 |
|
|
integer ncindef |
1160 |
|
|
integer ncnsync |
1161 |
|
|
integer nchsync |
1162 |
|
|
integer ncndirty |
1163 |
|
|
integer nchdirty |
1164 |
|
|
integer nclink |
1165 |
|
|
integer ncnowrit |
1166 |
|
|
integer ncwrite |
1167 |
|
|
integer ncclob |
1168 |
|
|
integer ncnoclob |
1169 |
|
|
integer ncglobal |
1170 |
|
|
integer ncfill |
1171 |
|
|
integer ncnofill |
1172 |
|
|
integer maxncop |
1173 |
|
|
integer maxncdim |
1174 |
|
|
integer maxncatt |
1175 |
|
|
integer maxncvar |
1176 |
|
|
integer maxncnam |
1177 |
|
|
integer maxvdims |
1178 |
|
|
integer ncnoerr |
1179 |
|
|
integer ncebadid |
1180 |
|
|
integer ncenfile |
1181 |
|
|
integer nceexist |
1182 |
|
|
integer nceinval |
1183 |
|
|
integer nceperm |
1184 |
|
|
integer ncenotin |
1185 |
|
|
integer nceindef |
1186 |
|
|
integer ncecoord |
1187 |
|
|
integer ncemaxds |
1188 |
|
|
integer ncename |
1189 |
|
|
integer ncenoatt |
1190 |
|
|
integer ncemaxat |
1191 |
|
|
integer ncebadty |
1192 |
|
|
integer ncebadd |
1193 |
|
|
integer ncests |
1194 |
|
|
integer nceunlim |
1195 |
|
|
integer ncemaxvs |
1196 |
|
|
integer ncenotvr |
1197 |
|
|
integer nceglob |
1198 |
|
|
integer ncenotnc |
1199 |
|
|
integer ncfoobar |
1200 |
|
|
integer ncsyserr |
1201 |
|
|
integer ncfatal |
1202 |
|
|
integer ncverbos |
1203 |
|
|
integer ncentool |
1204 |
|
|
|
1205 |
|
|
|
1206 |
|
|
! |
1207 |
|
|
! netcdf data types: |
1208 |
|
|
! |
1209 |
|
|
integer ncbyte |
1210 |
|
|
integer ncchar |
1211 |
|
|
integer ncshort |
1212 |
|
|
integer nclong |
1213 |
|
|
integer ncfloat |
1214 |
|
|
integer ncdouble |
1215 |
|
|
|
1216 |
|
|
parameter(ncbyte = 1) |
1217 |
|
|
parameter(ncchar = 2) |
1218 |
|
|
parameter(ncshort = 3) |
1219 |
|
|
parameter(nclong = 4) |
1220 |
|
|
parameter(ncfloat = 5) |
1221 |
|
|
parameter(ncdouble = 6) |
1222 |
|
|
|
1223 |
|
|
! |
1224 |
|
|
! masks for the struct nc flag field; passed in as 'mode' arg to |
1225 |
|
|
! nccreate and ncopen. |
1226 |
|
|
! |
1227 |
|
|
|
1228 |
|
|
! read/write, 0 => readonly |
1229 |
|
|
parameter(ncrdwr = 1) |
1230 |
|
|
! in create phase, cleared by ncendef |
1231 |
|
|
parameter(nccreat = 2) |
1232 |
|
|
! on create destroy existing file |
1233 |
|
|
parameter(ncexcl = 4) |
1234 |
|
|
! in define mode, cleared by ncendef |
1235 |
|
|
parameter(ncindef = 8) |
1236 |
|
|
! synchronise numrecs on change (x'10') |
1237 |
|
|
parameter(ncnsync = 16) |
1238 |
|
|
! synchronise whole header on change (x'20') |
1239 |
|
|
parameter(nchsync = 32) |
1240 |
|
|
! numrecs has changed (x'40') |
1241 |
|
|
parameter(ncndirty = 64) |
1242 |
|
|
! header info has changed (x'80') |
1243 |
|
|
parameter(nchdirty = 128) |
1244 |
|
|
! prefill vars on endef and increase of record, the default behavior |
1245 |
|
|
parameter(ncfill = 0) |
1246 |
|
|
! do not fill vars on endef and increase of record (x'100') |
1247 |
|
|
parameter(ncnofill = 256) |
1248 |
|
|
! isa link (x'8000') |
1249 |
|
|
parameter(nclink = 32768) |
1250 |
|
|
|
1251 |
|
|
! |
1252 |
|
|
! 'mode' arguments for nccreate and ncopen |
1253 |
|
|
! |
1254 |
|
|
parameter(ncnowrit = 0) |
1255 |
|
|
parameter(ncwrite = ncrdwr) |
1256 |
|
|
parameter(ncclob = nf_clobber) |
1257 |
|
|
parameter(ncnoclob = nf_noclobber) |
1258 |
|
|
|
1259 |
|
|
! |
1260 |
|
|
! 'size' argument to ncdimdef for an unlimited dimension |
1261 |
|
|
! |
1262 |
|
|
integer ncunlim |
1263 |
|
|
parameter(ncunlim = 0) |
1264 |
|
|
|
1265 |
|
|
! |
1266 |
|
|
! attribute id to put/get a global attribute |
1267 |
|
|
! |
1268 |
|
|
parameter(ncglobal = 0) |
1269 |
|
|
|
1270 |
|
|
! |
1271 |
|
|
! advisory maximums: |
1272 |
|
|
! |
1273 |
|
|
parameter(maxncop = 64) |
1274 |
|
|
parameter(maxncdim = 1024) |
1275 |
|
|
parameter(maxncatt = 8192) |
1276 |
|
|
parameter(maxncvar = 8192) |
1277 |
|
|
! not enforced |
1278 |
|
|
parameter(maxncnam = 256) |
1279 |
|
|
parameter(maxvdims = maxncdim) |
1280 |
|
|
|
1281 |
|
|
! |
1282 |
|
|
! global netcdf error status variable |
1283 |
|
|
! initialized in error.c |
1284 |
|
|
! |
1285 |
|
|
|
1286 |
|
|
! no error |
1287 |
|
|
parameter(ncnoerr = nf_noerr) |
1288 |
|
|
! not a netcdf id |
1289 |
|
|
parameter(ncebadid = nf_ebadid) |
1290 |
|
|
! too many netcdfs open |
1291 |
|
|
parameter(ncenfile = -31) ! nc_syserr |
1292 |
|
|
! netcdf file exists && ncnoclob |
1293 |
|
|
parameter(nceexist = nf_eexist) |
1294 |
|
|
! invalid argument |
1295 |
|
|
parameter(nceinval = nf_einval) |
1296 |
|
|
! write to read only |
1297 |
|
|
parameter(nceperm = nf_eperm) |
1298 |
|
|
! operation not allowed in data mode |
1299 |
|
|
parameter(ncenotin = nf_enotindefine ) |
1300 |
|
|
! operation not allowed in define mode |
1301 |
|
|
parameter(nceindef = nf_eindefine) |
1302 |
|
|
! coordinates out of domain |
1303 |
|
|
parameter(ncecoord = nf_einvalcoords) |
1304 |
|
|
! maxncdims exceeded |
1305 |
|
|
parameter(ncemaxds = nf_emaxdims) |
1306 |
|
|
! string match to name in use |
1307 |
|
|
parameter(ncename = nf_enameinuse) |
1308 |
|
|
! attribute not found |
1309 |
|
|
parameter(ncenoatt = nf_enotatt) |
1310 |
|
|
! maxncattrs exceeded |
1311 |
|
|
parameter(ncemaxat = nf_emaxatts) |
1312 |
|
|
! not a netcdf data type |
1313 |
|
|
parameter(ncebadty = nf_ebadtype) |
1314 |
|
|
! invalid dimension id |
1315 |
|
|
parameter(ncebadd = nf_ebaddim) |
1316 |
|
|
! ncunlimited in the wrong index |
1317 |
|
|
parameter(nceunlim = nf_eunlimpos) |
1318 |
|
|
! maxncvars exceeded |
1319 |
|
|
parameter(ncemaxvs = nf_emaxvars) |
1320 |
|
|
! variable not found |
1321 |
|
|
parameter(ncenotvr = nf_enotvar) |
1322 |
|
|
! action prohibited on ncglobal varid |
1323 |
|
|
parameter(nceglob = nf_eglobal) |
1324 |
|
|
! not a netcdf file |
1325 |
|
|
parameter(ncenotnc = nf_enotnc) |
1326 |
|
|
parameter(ncests = nf_ests) |
1327 |
|
|
parameter (ncentool = nf_emaxname) |
1328 |
|
|
parameter(ncfoobar = 32) |
1329 |
|
|
parameter(ncsyserr = -31) |
1330 |
|
|
|
1331 |
|
|
! |
1332 |
|
|
! global options variable. used to determine behavior of error handler. |
1333 |
|
|
! initialized in lerror.c |
1334 |
|
|
! |
1335 |
|
|
parameter(ncfatal = 1) |
1336 |
|
|
parameter(ncverbos = 2) |
1337 |
|
|
|
1338 |
|
|
! |
1339 |
|
|
! default fill values. these must be the same as in the c interface. |
1340 |
|
|
! |
1341 |
|
|
integer filbyte |
1342 |
|
|
integer filchar |
1343 |
|
|
integer filshort |
1344 |
|
|
integer fillong |
1345 |
|
|
real filfloat |
1346 |
|
|
doubleprecision fildoub |
1347 |
|
|
|
1348 |
|
|
parameter (filbyte = -127) |
1349 |
|
|
parameter (filchar = 0) |
1350 |
|
|
parameter (filshort = -32767) |
1351 |
|
|
parameter (fillong = -2147483647) |
1352 |
|
|
parameter (filfloat = 9.9692099683868690e+36) |
1353 |
|
|
parameter (fildoub = 9.9692099683868690e+36) |
1354 |
|
|
!======================================================================= |
1355 |
|
|
! |
1356 |
|
|
! Auteur: F. Hourdin |
1357 |
|
|
! ------- |
1358 |
|
|
! |
1359 |
|
|
! Objet: |
1360 |
|
|
! ------ |
1361 |
|
|
! Light interface for netcdf outputs. can be used outside LMDZ |
1362 |
|
|
! |
1363 |
|
|
!======================================================================= |
1364 |
|
|
|
1365 |
|
|
integer imax,jmax,lmax,nid |
1366 |
|
|
INTEGER dim_coord(4) |
1367 |
|
|
real iotd_ts,iotd_t0 |
1368 |
|
|
integer :: n_names_iotd_def |
1369 |
|
|
character*20, dimension(200) :: names_iotd_def |
1370 |
|
|
character*20 :: un_nom |
1371 |
|
|
|
1372 |
|
|
common/iotd_ca/imax,jmax,lmax,nid,dim_coord,iotd_t0,iotd_ts |
1373 |
|
|
common/iotd_cb/n_names_iotd_def,names_iotd_def |
1374 |
|
|
!$OMP THREADPRIVATE(/iotd_ca/) |
1375 |
|
|
!$OMP THREADPRIVATE(/iotd_cb/) |
1376 |
|
|
|
1377 |
|
|
! Arguments: |
1378 |
|
|
! ---------- |
1379 |
|
|
|
1380 |
|
|
integer iim,jjm,llm |
1381 |
|
|
real prlon(iim),prlat(jjm),pcoordv(llm),timestep,t0 |
1382 |
|
|
INTEGER id_FOCE |
1383 |
|
|
INTEGER jour0,mois0,an0 |
1384 |
|
|
CHARACTER*(*) calendrier |
1385 |
|
|
|
1386 |
|
|
integer corner(4),edges(4),ndim |
1387 |
|
|
real px(1000) |
1388 |
|
|
character (len=10) :: nom |
1389 |
|
✗ |
real*4 rlon(iim),rlat(jjm),coordv(llm) |
1390 |
|
|
|
1391 |
|
|
! Local: |
1392 |
|
|
! ------ |
1393 |
|
|
CHARACTER*3,DIMENSION(12) :: cmois=(/'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'/) |
1394 |
|
|
CHARACTER*10 date0 |
1395 |
|
|
CHARACTER*11 date0b |
1396 |
|
|
|
1397 |
|
|
INTEGER :: ierr |
1398 |
|
|
|
1399 |
|
|
integer :: nvarid |
1400 |
|
|
integer, dimension(2) :: id |
1401 |
|
|
|
1402 |
|
|
character*(*) fichnom |
1403 |
|
|
|
1404 |
|
|
real pi |
1405 |
|
|
|
1406 |
|
✗ |
iotd_ts=timestep |
1407 |
|
✗ |
iotd_t0=t0 |
1408 |
|
✗ |
print*,'iotd_ini, ',timestep,iotd_ts |
1409 |
|
✗ |
imax=iim |
1410 |
|
✗ |
jmax=jjm |
1411 |
|
✗ |
lmax=llm |
1412 |
|
|
! Utile pour passer en real*4 pour les ecritures |
1413 |
|
✗ |
rlon=prlon |
1414 |
|
✗ |
rlat=prlat |
1415 |
|
✗ |
coordv=pcoordv |
1416 |
|
|
|
1417 |
|
|
|
1418 |
|
|
!----------------------------------------------------------------------- |
1419 |
|
|
! Possibilité de spécifier une liste de variables à sortir |
1420 |
|
|
! dans iotd.def |
1421 |
|
|
! Si iotd.def existe et est non vide, |
1422 |
|
|
! seules les variables faisant à la fois l'objet d'un call iotd_ecrit |
1423 |
|
|
! et étant spécifiées dans iotd.def sont sorties. |
1424 |
|
|
! Sinon, toutes les variables faisant l'objet d'un call iotd_ecrit |
1425 |
|
|
! sont sorties |
1426 |
|
|
!----------------------------------------------------------------------- |
1427 |
|
✗ |
n_names_iotd_def=0 |
1428 |
|
✗ |
open(99,file='iotd.def',form='formatted',status='old',iostat=ierr) |
1429 |
|
✗ |
if ( ierr.eq.0 ) then |
1430 |
|
✗ |
ierr=0 |
1431 |
|
✗ |
do while (ierr==0) |
1432 |
|
✗ |
read(99,*,iostat=ierr) un_nom |
1433 |
|
✗ |
if (ierr==0) then |
1434 |
|
✗ |
n_names_iotd_def=n_names_iotd_def+1 |
1435 |
|
✗ |
names_iotd_def(n_names_iotd_def)=un_nom |
1436 |
|
|
endif |
1437 |
|
|
enddo |
1438 |
|
|
endif |
1439 |
|
✗ |
print*,n_names_iotd_def,names_iotd_def(1:n_names_iotd_def) |
1440 |
|
✗ |
close(99) |
1441 |
|
|
|
1442 |
|
|
|
1443 |
|
|
pi=2.*asin(1.) |
1444 |
|
|
|
1445 |
|
|
! Define dimensions |
1446 |
|
|
|
1447 |
|
|
! Create the NetCDF file |
1448 |
|
✗ |
ierr=NF_CREATE(fichnom, NF_CLOBBER, nid) |
1449 |
|
✗ |
ierr=NF_DEF_DIM(nid, "lon", iim, dim_coord(1)) |
1450 |
|
✗ |
ierr=NF_DEF_DIM(nid, "lat", jjm, dim_coord(2)) |
1451 |
|
✗ |
ierr=NF_DEF_DIM(nid, "lev", llm, dim_coord(3)) |
1452 |
|
✗ |
ierr=NF_DEF_DIM(nid,"time",NF_UNLIMITED,dim_coord(4)) |
1453 |
|
✗ |
ierr = NF_PUT_ATT_TEXT(nid,NF_GLOBAL,'Conventions',6,"CF-1.1") |
1454 |
|
|
!ierr = NF_PUT_ATT_TEXT(nid,NF_GLOBAL,'file_name',TRIM(fname)) |
1455 |
|
✗ |
ierr=NF_ENDDEF(nid) |
1456 |
|
|
|
1457 |
|
|
! Switch out of NetCDF Define mode |
1458 |
|
|
|
1459 |
|
|
|
1460 |
|
✗ |
ierr=NF_ENDDEF(nid) |
1461 |
|
|
! |
1462 |
|
|
! Contol parameters for this run |
1463 |
|
|
! ---- longitude ----------- |
1464 |
|
|
|
1465 |
|
✗ |
ierr=NF_REDEF(nid) |
1466 |
|
✗ |
ierr=NF_DEF_VAR(nid,"lon", NF_FLOAT, 1, dim_coord(1),nvarid) |
1467 |
|
✗ |
ierr = NF_PUT_ATT_TEXT(nid,nvarid,'axis',1,'X') |
1468 |
|
✗ |
ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east") |
1469 |
|
✗ |
ierr=NF_ENDDEF(nid) |
1470 |
|
✗ |
ierr=NF_PUT_VAR_REAL(nid,nvarid,rlon) |
1471 |
|
✗ |
print*,ierr |
1472 |
|
|
|
1473 |
|
|
! ---- latitude ------------ |
1474 |
|
✗ |
ierr=NF_REDEF(nid) |
1475 |
|
✗ |
ierr=NF_DEF_VAR(nid, "lat", NF_FLOAT, 1, dim_coord(2),nvarid) |
1476 |
|
✗ |
ierr = NF_PUT_ATT_TEXT(nid,nvarid,'axis',1,'Y') |
1477 |
|
✗ |
ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north") |
1478 |
|
✗ |
ierr=NF_ENDDEF(nid) |
1479 |
|
✗ |
ierr=NF_PUT_VAR_REAL(nid,nvarid,rlat) |
1480 |
|
|
! |
1481 |
|
|
! ---- vertical ------------ |
1482 |
|
✗ |
ierr=NF_REDEF(nid) |
1483 |
|
✗ |
ierr=NF_DEF_VAR(nid, "lev", NF_FLOAT, 1,dim_coord(3),nvarid) |
1484 |
|
✗ |
ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"vert level") |
1485 |
|
✗ |
if ( coordv(2)>coordv(1) ) then |
1486 |
|
✗ |
ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"pseudo-alt") |
1487 |
|
✗ |
ierr=NF_PUT_ATT_TEXT(nid,nvarid,'positive',2,"up") |
1488 |
|
|
else |
1489 |
|
✗ |
ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",8,"pressure") |
1490 |
|
✗ |
ierr = NF_PUT_ATT_TEXT (nid,nvarid,'positive',4,"down") |
1491 |
|
|
endif |
1492 |
|
✗ |
ierr=NF_ENDDEF(nid) |
1493 |
|
✗ |
ierr=NF_PUT_VAR_REAL(nid,nvarid,coordv) |
1494 |
|
|
|
1495 |
|
|
! |
1496 |
|
|
! ---- time ---------------- |
1497 |
|
✗ |
ierr=NF_REDEF(nid) |
1498 |
|
|
! Define the 'time' variable |
1499 |
|
✗ |
ierr=NF_DEF_VAR(nid, "time", NF_FLOAT, 1, dim_coord(4),nvarid) |
1500 |
|
|
! ! Add attributes |
1501 |
|
✗ |
ierr = NF_PUT_ATT_TEXT(nid,nvarid,'axis',1,'T') |
1502 |
|
✗ |
ierr = NF_PUT_ATT_TEXT(nid,nvarid,'standard_name',4,'time') |
1503 |
|
✗ |
WRITE(date0,'(i4.4,"-",i2.2,"-",i2.2)') an0,mois0,jour0 |
1504 |
|
|
ierr=NF_PUT_ATT_TEXT(nid, nvarid,'units',33, & |
1505 |
|
✗ |
& "seconds since "//date0//" 00:00:00") |
1506 |
|
✗ |
ierr = NF_PUT_ATT_TEXT(nid,nvarid,'calendar',9,calendrier) |
1507 |
|
|
!ierr = NF_PUT_ATT_TEXT(nid,nvarid,'calendar',4,'360d') |
1508 |
|
✗ |
ierr = NF_PUT_ATT_TEXT(nid,nvarid,'title',4,'Time') |
1509 |
|
✗ |
ierr = NF_PUT_ATT_TEXT(nid,nvarid,'long_name',9,'Time axis') |
1510 |
|
✗ |
WRITE(date0b,'(i4.4,"-",a3,"-",i2.2)') an0,cmois(mois0),jour0 |
1511 |
|
|
ierr = NF_PUT_ATT_TEXT(nid,nvarid,'time_origin',20, & |
1512 |
|
✗ |
& date0b//' 00:00:00') |
1513 |
|
✗ |
ierr=NF_ENDDEF(nid) |
1514 |
|
|
|
1515 |
|
|
|
1516 |
|
✗ |
END |
1517 |
|
|
|