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