source: LMDZ6/branches/Amaury_dev/libf/misc/lmdz_xios.F90 @ 5122

Last change on this file since 5122 was 5119, checked in by abarral, 4 months ago

enforce PRIVATE by default in several modules, expose PUBLIC as needed
move eigen.f90 to obsolete/
(lint) aslong the way

File size: 49.6 KB
Line 
1#ifdef CPP_XIOS
2
3MODULE lmdz_xios
4  USE xios  ! no ONLY, on purpose
5 
6  LOGICAL,PARAMETER :: using_xios = .TRUE.
7
8END MODULE lmdz_xios
9
10#else
11
12MODULE lmdz_xios
13  !!!! Wrapper XIOS
14  !! => must be replaced later by official xios wrapper when available
15
16  LOGICAL, PARAMETER :: using_xios = .FALSE.
17
18  INTERFACE xios_send_field
19    MODULE PROCEDURE xios_send_field_scalar, xios_send_field_1d, xios_send_field_2d, xios_send_field_3d, &
20            xios_send_field_4d, xios_send_field_5d
21  END INTERFACE  xios_send_field
22
23  INTERFACE xios_recv_field
24    MODULE PROCEDURE xios_recv_field_scalar, xios_recv_field_1d, xios_recv_field_2d, xios_recv_field_3d, &
25            xios_recv_field_4d
26  END INTERFACE  xios_recv_field
27
28  INTERFACE xios_field_is_active
29    MODULE PROCEDURE xios_field_is_active_id, xios_field_is_active_hdl
30  END INTERFACE xios_field_is_active
31
32  INTERFACE xios_set_attr
33    MODULE PROCEDURE xios_set_fieldgroup_attr_hdl, xios_set_field_attr_hdl, xios_set_domain_attr_hdl, &
34            xios_set_axis_attr_hdl, xios_set_file_attr_hdl
35  END INTERFACE  xios_set_attr
36
37  INTERFACE xios_get_handle
38    MODULE PROCEDURE  xios_get_context_handle, xios_get_field_handle, xios_get_fieldgroup_handle, &
39            xios_get_domain_handle, xios_get_file_handle, xios_get_filegroup_handle
40  END INTERFACE  xios_get_handle
41
42  INTERFACE xios_add_child
43    MODULE PROCEDURE xios_fieldgroup_add_child, xios_add_fieldtofile, xios_add_file
44  END INTERFACE  xios_add_child
45
46  INTERFACE xios_set_current_context
47    MODULE PROCEDURE xios_set_current_context_hdl, xios_set_current_context_id
48  END INTERFACE xios_set_current_context
49
50  INTERFACE xios_get_current_context
51    MODULE PROCEDURE xios_get_current_context_hdl, xios_get_current_context_id
52  END INTERFACE xios_get_current_context
53
54  INTERFACE xios_set_start_date
55    MODULE PROCEDURE xios_set_start_date_date, xios_set_start_date_dur
56  END INTERFACE xios_set_start_date
57
58  INTERFACE xios_set_time_origin
59    MODULE PROCEDURE xios_set_time_origin_date, xios_set_time_origin_dur
60  END INTERFACE xios_set_time_origin
61
62  INTERFACE xios_is_defined_attr
63    MODULE PROCEDURE xios_is_defined_domain_attr_hdl
64  END INTERFACE xios_is_defined_attr
65
66  TYPE xios_duration
67    DOUBLE PRECISION :: year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0, timestep = 0
68  END TYPE xios_duration
69
70  TYPE xios_date
71    INTEGER :: year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0
72  END TYPE xios_date
73
74  REAL, PARAMETER :: xios_timestep = 1.
75  REAL, PARAMETER :: xios_second = 1.
76
77  TYPE xios_fieldgroup
78  END TYPE xios_fieldgroup
79
80  TYPE xios_filegroup
81  END TYPE xios_filegroup
82
83  TYPE xios_context
84  END TYPE xios_context
85
86  TYPE xios_domain
87  END TYPE xios_domain
88
89  TYPE xios_axis
90  END TYPE xios_axis
91
92  TYPE xios_file
93  END TYPE xios_file
94
95  TYPE xios_field
96  END TYPE
97
98
99CONTAINS
100
101
102  SUBROUTINE  xios_initialize(client_id, local_comm, return_comm)
103    IMPLICIT NONE
104    CHARACTER(LEN = *), INTENT(IN) :: client_id
105    INTEGER, INTENT(IN), OPTIONAL :: local_comm
106    INTEGER, INTENT(OUT), OPTIONAL :: return_comm
107    INTEGER :: f_local_comm
108    INTEGER :: f_return_comm
109
110  END SUBROUTINE  xios_initialize
111
112  SUBROUTINE xios_define_calendar(type, timestep, start_date, time_origin, &
113          day_length, month_lengths, year_length, &
114          leap_year_month, leap_year_drift, leap_year_drift_offset)
115    IMPLICIT NONE
116    CHARACTER(len = *), INTENT(IN) :: type
117    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: timestep
118    TYPE(xios_date), OPTIONAL, INTENT(IN) :: start_date
119    TYPE(xios_date), OPTIONAL, INTENT(IN) :: time_origin
120    INTEGER, OPTIONAL, INTENT(IN) :: day_length
121    INTEGER, OPTIONAL, INTENT(IN) :: month_lengths(:)
122    INTEGER, OPTIONAL, INTENT(IN) :: year_length
123    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: leap_year_drift
124    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: leap_year_drift_offset
125    INTEGER, OPTIONAL, INTENT(IN) :: leap_year_month
126
127  END SUBROUTINE xios_define_calendar
128
129  SUBROUTINE xios_duration_convert_to_string(dur, str)
130    IMPLICIT NONE
131    TYPE(xios_duration), INTENT(IN) :: dur
132    CHARACTER(len = *), INTENT(OUT) :: str
133    str = ''
134  END SUBROUTINE xios_duration_convert_to_string
135
136  FUNCTION xios_duration_convert_from_string(str) RESULT(res)
137    IMPLICIT NONE
138    CHARACTER(len = *), INTENT(IN) :: str
139    TYPE(xios_duration) :: res
140
141  END FUNCTION xios_duration_convert_from_string
142
143  SUBROUTINE xios_set_timestep(timestep)
144    IMPLICIT NONE
145    TYPE(xios_duration), INTENT(IN) :: timestep
146  END SUBROUTINE xios_set_timestep
147
148  SUBROUTINE xios_set_start_date_date(start_date)
149    IMPLICIT NONE
150    TYPE(xios_date), INTENT(IN) :: start_date
151  END SUBROUTINE xios_set_start_date_date
152
153  SUBROUTINE xios_set_start_date_dur(start_date)
154    IMPLICIT NONE
155    TYPE(xios_duration), INTENT(IN) :: start_date
156  END SUBROUTINE xios_set_start_date_dur
157
158  SUBROUTINE xios_set_time_origin_date(time_origin)
159    IMPLICIT NONE
160    TYPE(xios_date), INTENT(IN) :: time_origin
161  END SUBROUTINE xios_set_time_origin_date
162
163  SUBROUTINE xios_set_time_origin_dur(time_origin)
164    IMPLICIT NONE
165    TYPE(xios_duration), INTENT(IN) :: time_origin
166  END SUBROUTINE xios_set_time_origin_dur
167
168  SUBROUTINE xios_send_field_scalar(name, field)
169    IMPLICIT NONE
170    CHARACTER(LEN = *), INTENT(IN) :: name
171    REAL, INTENT(IN) :: field
172  END SUBROUTINE xios_send_field_scalar
173
174  SUBROUTINE xios_send_field_1d(name, field)
175    IMPLICIT NONE
176    CHARACTER(LEN = *), INTENT(IN) :: name
177    REAL, INTENT(IN) :: field(:)
178  END SUBROUTINE xios_send_field_1d
179
180  SUBROUTINE xios_send_field_2d(name, field)
181    IMPLICIT NONE
182    CHARACTER(LEN = *), INTENT(IN) :: name
183    REAL, INTENT(IN) :: field(:, :)
184  END SUBROUTINE xios_send_field_2d
185
186  SUBROUTINE xios_send_field_3d(name, field)
187    IMPLICIT NONE
188    CHARACTER(LEN = *), INTENT(IN) :: name
189    REAL, INTENT(IN) :: field(:, :, :)
190  END SUBROUTINE xios_send_field_3d
191
192  SUBROUTINE xios_send_field_4d(name, field)
193    IMPLICIT NONE
194    CHARACTER(LEN = *), INTENT(IN) :: name
195    REAL, INTENT(IN) :: field(:, :, :, :)
196  END SUBROUTINE xios_send_field_4d
197
198  SUBROUTINE xios_send_field_5d(name, field)
199    IMPLICIT NONE
200    CHARACTER(LEN = *), INTENT(IN) :: name
201    REAL, INTENT(IN) :: field(:, :, :, :, :)
202  END SUBROUTINE xios_send_field_5d
203
204
205  SUBROUTINE xios_recv_field_scalar(name, field)
206    IMPLICIT NONE
207    CHARACTER(LEN = *), INTENT(IN) :: name
208    REAL, INTENT(OUT) :: field
209    field = 0
210  END SUBROUTINE xios_recv_field_scalar
211
212  SUBROUTINE xios_recv_field_1d(name, field)
213    IMPLICIT NONE
214    CHARACTER(LEN = *), INTENT(IN) :: name
215    REAL, INTENT(OUT) :: field(:)
216    field = 0
217  END SUBROUTINE xios_recv_field_1d
218
219  SUBROUTINE xios_recv_field_2d(name, field)
220    IMPLICIT NONE
221    CHARACTER(LEN = *), INTENT(IN) :: name
222    REAL, INTENT(OUT) :: field(:, :)
223    field = 0
224  END SUBROUTINE xios_recv_field_2d
225
226  SUBROUTINE xios_recv_field_3d(name, field)
227    IMPLICIT NONE
228    CHARACTER(LEN = *), INTENT(IN) :: name
229    REAL, INTENT(OUT) :: field(:, :, :)
230    field = 0
231  END SUBROUTINE xios_recv_field_3d
232
233  SUBROUTINE xios_recv_field_4d(name, field)
234    IMPLICIT NONE
235    CHARACTER(LEN = *), INTENT(IN) :: name
236    REAL, INTENT(OUT) :: field(:, :, :, :)
237    field = 0
238  END SUBROUTINE xios_recv_field_4d
239
240
241  FUNCTION xios_is_active_field(field_id)
242    IMPLICIT NONE
243    LOGICAL :: xios_is_active_field
244    CHARACTER(LEN = *) :: field_id
245    xios_is_active_field = .TRUE.
246  END FUNCTION xios_is_active_field
247
248  LOGICAL FUNCTION xios_is_valid_field(idt)
249    IMPLICIT NONE
250    CHARACTER(len = *), INTENT(IN) :: idt
251    xios_is_valid_field = .FALSE.
252  END FUNCTION  xios_is_valid_field
253
254  LOGICAL FUNCTION xios_is_valid_file(idt)
255    IMPLICIT NONE
256    CHARACTER(len = *), INTENT(IN) :: idt
257    xios_is_valid_file = .FALSE.
258  END FUNCTION  xios_is_valid_file
259
260  LOGICAL FUNCTION xios_is_valid_axis(idt)
261    IMPLICIT NONE
262    CHARACTER(len = *), INTENT(IN) :: idt
263    xios_is_valid_axis = .FALSE.
264  END FUNCTION  xios_is_valid_axis
265
266  LOGICAL FUNCTION xios_is_valid_domain(idt)
267    IMPLICIT NONE
268    CHARACTER(len = *), INTENT(IN) :: idt
269    xios_is_valid_domain = .FALSE.
270  END FUNCTION  xios_is_valid_domain
271
272
273  SUBROUTINE  xios_context_initialize(context_id, comm)
274    IMPLICIT NONE
275    CHARACTER(LEN = *), INTENT(IN) :: context_id
276    INTEGER, INTENT(IN) :: comm
277
278  END SUBROUTINE  xios_context_initialize
279
280
281  SUBROUTINE  xios_finalize
282    IMPLICIT NONE
283
284  END SUBROUTINE  xios_finalize
285
286
287  SUBROUTINE  xios_oasis_enddef
288    IMPLICIT NONE
289
290  END SUBROUTINE  xios_oasis_enddef
291
292
293  SUBROUTINE xios_close_context_definition
294    IMPLICIT NONE
295
296  END SUBROUTINE xios_close_context_definition
297
298
299  SUBROUTINE xios_set_current_context_hdl(context, withswap)
300    IMPLICIT NONE
301    TYPE(xios_context), INTENT(IN) :: context
302    LOGICAL, OPTIONAL, INTENT(IN) :: withswap
303  END SUBROUTINE xios_set_current_context_hdl
304
305  SUBROUTINE xios_set_current_context_id(idt)
306    IMPLICIT NONE
307
308    CHARACTER(len = *), INTENT(IN) :: idt
309    LOGICAL :: withswap
310  END SUBROUTINE xios_set_current_context_id
311
312
313  SUBROUTINE xios_get_current_context_hdl(context)
314    IMPLICIT NONE
315    TYPE(xios_context), INTENT(OUT) :: context
316  END SUBROUTINE xios_get_current_context_hdl
317
318  SUBROUTINE xios_get_current_context_id(idt)
319    IMPLICIT NONE
320    CHARACTER(len = *), INTENT(OUT) :: idt
321    TYPE(xios_context) :: context
322  END SUBROUTINE xios_get_current_context_id
323
324  SUBROUTINE xios_context_finalize()
325    IMPLICIT NONE
326
327  END SUBROUTINE xios_context_finalize
328
329
330  SUBROUTINE xios_solve_inheritance()
331    IMPLICIT NONE
332
333  END SUBROUTINE xios_solve_inheritance
334
335
336  SUBROUTINE xios_update_calendar(step)
337    IMPLICIT NONE
338    INTEGER, INTENT(IN) :: step
339  END SUBROUTINE xios_update_calendar
340
341  SUBROUTINE xios_set_filegroup_attr(name, enabled)
342    CHARACTER(LEN = *) :: name
343    LOGICAL, OPTIONAL :: enabled
344  END SUBROUTINE xios_set_filegroup_attr
345
346  SUBROUTINE xios_get_axis_attr(name, n_glo, value)
347    CHARACTER(LEN = *) :: name
348    INTEGER, OPTIONAL :: n_glo
349    REAL, OPTIONAL :: value(:)
350  END SUBROUTINE xios_get_axis_attr
351
352  SUBROUTINE xios_get_context_handle(idt, ret)
353    IMPLICIT NONE
354    CHARACTER(len = *), INTENT(IN) :: idt
355    TYPE(xios_context), INTENT(OUT) :: ret
356    TYPE(xios_context) :: nothing
357
358    ret = nothing
359  END SUBROUTINE xios_get_context_handle
360
361  SUBROUTINE xios_get_domain_handle(idt, ret)
362    IMPLICIT NONE
363    CHARACTER(len = *), INTENT(IN) :: idt
364    TYPE(xios_domain), INTENT(OUT) :: ret
365    TYPE(xios_domain) :: hdl
366    ret = hdl
367  END SUBROUTINE xios_get_domain_handle
368
369  SUBROUTINE xios_get_field_handle(idt, ret)
370    IMPLICIT NONE
371    CHARACTER(len = *), INTENT(IN) :: idt
372    TYPE(xios_field), INTENT(OUT) :: ret
373    TYPE(xios_field) :: hdl
374    ret = hdl
375  END SUBROUTINE xios_get_field_handle
376
377  SUBROUTINE xios_get_fieldgroup_handle(idt, ret)
378    IMPLICIT NONE
379    CHARACTER(len = *), INTENT(IN) :: idt
380    TYPE(xios_fieldgroup), INTENT(OUT) :: ret
381    TYPE(xios_fieldgroup) :: hdl
382    ret = hdl
383  END SUBROUTINE xios_get_fieldgroup_handle
384
385  SUBROUTINE xios_get_file_handle(idt, ret)
386    IMPLICIT NONE
387    CHARACTER(len = *), INTENT(IN) :: idt
388    TYPE(xios_file), INTENT(OUT) :: ret
389    TYPE(xios_file) :: hdl
390    ret = hdl
391  END SUBROUTINE xios_get_file_handle
392
393  SUBROUTINE xios_get_filegroup_handle(idt, ret)
394    IMPLICIT NONE
395    CHARACTER(len = *), INTENT(IN) :: idt
396    TYPE(xios_filegroup), INTENT(OUT) :: ret
397    TYPE(xios_filegroup) :: hdl
398    ret = hdl
399  END SUBROUTINE xios_get_filegroup_handle
400
401
402  SUBROUTINE xios_fieldgroup_add_child(fieldgroup_hdl, field_hdl, id)
403    TYPE(xios_fieldgroup) :: fieldgroup_hdl
404    TYPE(xios_field) :: field_hdl
405    CHARACTER(LEN = *), OPTIONAL :: id
406  END SUBROUTINE xios_fieldgroup_add_child
407
408  SUBROUTINE xios_add_file(parent_hdl, child_hdl, child_id)
409    TYPE(xios_filegroup), INTENT(IN) :: parent_hdl
410    TYPE(xios_file), INTENT(OUT) :: child_hdl
411    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
412    TYPE(xios_file) :: hdl
413    child_hdl = hdl
414  END SUBROUTINE xios_add_file
415
416  SUBROUTINE xios_add_field(parent_hdl, child_hdl, child_id)
417    TYPE(xios_fieldgroup), INTENT(IN) :: parent_hdl
418    TYPE(xios_field), INTENT(OUT) :: child_hdl
419    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
420    TYPE(xios_field) :: hdl
421    child_hdl = hdl
422  END SUBROUTINE xios_add_field
423
424  SUBROUTINE xios_add_fieldtofile(parent_hdl, child_hdl, child_id)
425    TYPE(xios_file), INTENT(IN) :: parent_hdl
426    TYPE(xios_field), INTENT(OUT) :: child_hdl
427    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
428    TYPE(xios_field) :: hdl
429    child_hdl = hdl
430
431  END SUBROUTINE xios_add_fieldtofile
432
433  LOGICAL FUNCTION xios_field_is_active_id(field_id, at_current_timestep_arg)
434    IMPLICIT NONE
435    CHARACTER(len = *), INTENT(IN) :: field_id
436    LOGICAL, OPTIONAL, INTENT(IN) :: at_current_timestep_arg
437
438    xios_field_is_active_id = .FALSE.
439  END FUNCTION xios_field_is_active_id
440
441  LOGICAL FUNCTION xios_field_is_active_hdl(field_hdl, at_current_timestep_arg)
442    IMPLICIT NONE
443    TYPE(xios_field), INTENT(IN) :: field_hdl
444    LOGICAL, OPTIONAL, INTENT(IN) :: at_current_timestep_arg
445
446    xios_field_is_active_hdl = .FALSE.
447  END FUNCTION xios_field_is_active_hdl
448
449
450  SUBROUTINE  xios_set_generate_rectilinear_domain_attr(id, bounds_lon_start, bounds_lon_end, bounds_lat_start, bounds_lat_end)
451    CHARACTER(LEN = *) :: id
452    REAL, OPTIONAL :: bounds_lon_start
453    REAL, OPTIONAL :: bounds_lon_end
454    REAL, OPTIONAL :: bounds_lat_start
455    REAL, OPTIONAL :: bounds_lat_end
456  END SUBROUTINE  xios_set_generate_rectilinear_domain_attr
457
458  SUBROUTINE xios_set_domain_attr  &
459          (domain_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
460          , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
461          , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
462          , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
463          , nj, nj_glo, nvertex, prec, radius, standard_name, type)
464
465    IMPLICIT NONE
466    TYPE(xios_domain) :: domain_hdl
467    CHARACTER(LEN = *), INTENT(IN) :: domain_id
468    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: area(:, :)
469    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds_lat_1d(:, :)
470    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds_lat_2d(:, :, :)
471    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: bounds_lat_name
472    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds_lon_1d(:, :)
473    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds_lon_2d(:, :, :)
474    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: bounds_lon_name
475    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
476    INTEGER, OPTIONAL, INTENT(IN) :: data_dim
477    INTEGER, OPTIONAL, INTENT(IN) :: data_i_index(:)
478    INTEGER, OPTIONAL, INTENT(IN) :: data_ibegin
479    INTEGER, OPTIONAL, INTENT(IN) :: data_j_index(:)
480    INTEGER, OPTIONAL, INTENT(IN) :: data_jbegin
481    INTEGER, OPTIONAL, INTENT(IN) :: data_ni
482    INTEGER, OPTIONAL, INTENT(IN) :: data_nj
483    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: dim_i_name
484    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: dim_j_name
485    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: domain_ref
486    INTEGER, OPTIONAL, INTENT(IN) :: i_index(:)
487    INTEGER, OPTIONAL, INTENT(IN) :: ibegin
488    INTEGER, OPTIONAL, INTENT(IN) :: j_index(:)
489    INTEGER, OPTIONAL, INTENT(IN) :: jbegin
490    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: lat_name
491    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: latvalue_1d(:)
492    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: latvalue_2d(:, :)
493    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: lon_name
494    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: long_name
495    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: lonvalue_1d(:)
496    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: lonvalue_2d(:, :)
497    LOGICAL, OPTIONAL, INTENT(IN) :: mask_1d(:)
498    LOGICAL, OPTIONAL, INTENT(IN) :: mask_2d(:, :)
499    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
500    INTEGER, OPTIONAL, INTENT(IN) :: ni
501    INTEGER, OPTIONAL, INTENT(IN) :: ni_glo
502    INTEGER, OPTIONAL, INTENT(IN) :: nj
503    INTEGER, OPTIONAL, INTENT(IN) :: nj_glo
504    INTEGER, OPTIONAL, INTENT(IN) :: nvertex
505    INTEGER, OPTIONAL, INTENT(IN) :: prec
506    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: radius
507    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: standard_name
508    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type
509
510  END SUBROUTINE xios_set_domain_attr
511
512  SUBROUTINE xios_set_domain_attr_hdl  &
513          (domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
514          , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
515          , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
516          , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
517          , nj, nj_glo, nvertex, prec, radius, standard_name, type)
518
519    IMPLICIT NONE
520    TYPE(xios_domain), INTENT(IN) :: domain_hdl
521    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: area(:, :)
522    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds_lat_1d(:, :)
523    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds_lat_2d(:, :, :)
524    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: bounds_lat_name
525    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds_lon_1d(:, :)
526    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds_lon_2d(:, :, :)
527    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: bounds_lon_name
528    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
529    INTEGER, OPTIONAL, INTENT(IN) :: data_dim
530    INTEGER, OPTIONAL, INTENT(IN) :: data_i_index(:)
531    INTEGER, OPTIONAL, INTENT(IN) :: data_ibegin
532    INTEGER, OPTIONAL, INTENT(IN) :: data_j_index(:)
533    INTEGER, OPTIONAL, INTENT(IN) :: data_jbegin
534    INTEGER, OPTIONAL, INTENT(IN) :: data_ni
535    INTEGER, OPTIONAL, INTENT(IN) :: data_nj
536    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: dim_i_name
537    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: dim_j_name
538    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: domain_ref
539    INTEGER, OPTIONAL, INTENT(IN) :: i_index(:)
540    INTEGER, OPTIONAL, INTENT(IN) :: ibegin
541    INTEGER, OPTIONAL, INTENT(IN) :: j_index(:)
542    INTEGER, OPTIONAL, INTENT(IN) :: jbegin
543    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: lat_name
544    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: latvalue_1d(:)
545    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: latvalue_2d(:, :)
546    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: lon_name
547    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: long_name
548    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: lonvalue_1d(:)
549    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: lonvalue_2d(:, :)
550    LOGICAL, OPTIONAL, INTENT(IN) :: mask_1d(:)
551    LOGICAL, OPTIONAL, INTENT(IN) :: mask_2d(:, :)
552    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
553    INTEGER, OPTIONAL, INTENT(IN) :: ni
554    INTEGER, OPTIONAL, INTENT(IN) :: ni_glo
555    INTEGER, OPTIONAL, INTENT(IN) :: nj
556    INTEGER, OPTIONAL, INTENT(IN) :: nj_glo
557    INTEGER, OPTIONAL, INTENT(IN) :: nvertex
558    INTEGER, OPTIONAL, INTENT(IN) :: prec
559    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: radius
560    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: standard_name
561    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type
562
563  END SUBROUTINE xios_set_domain_attr_hdl
564
565
566  SUBROUTINE xios_set_axis_attr  &
567          (axis_id, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
568          , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
569          , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
570          , value)
571
572    IMPLICIT NONE
573    TYPE(xios_axis) :: axis_hdl
574    CHARACTER(LEN = *), INTENT(IN) :: axis_id
575    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: axis_ref
576    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: axis_type
577    INTEGER, OPTIONAL, INTENT(IN) :: begin
578    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds(:, :)
579    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: bounds_name
580    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
581    INTEGER, OPTIONAL, INTENT(IN) :: data_begin
582    INTEGER, OPTIONAL, INTENT(IN) :: data_index(:)
583    INTEGER, OPTIONAL, INTENT(IN) :: data_n
584    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: dim_name
585    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: formula
586    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: formula_bounds
587    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: formula_term
588    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: formula_term_bounds
589    INTEGER, OPTIONAL, INTENT(IN) :: index(:)
590    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: label(:)
591    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: long_name
592    LOGICAL, OPTIONAL, INTENT(IN) :: mask(:)
593    INTEGER, OPTIONAL, INTENT(IN) :: n
594    INTEGER, OPTIONAL, INTENT(IN) :: n_distributed_partition
595    INTEGER, OPTIONAL, INTENT(IN) :: n_glo
596    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
597    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: positive
598    INTEGER, OPTIONAL, INTENT(IN) :: prec
599    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: standard_name
600    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: unit
601    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: value(:)
602
603  END SUBROUTINE xios_set_axis_attr
604
605  SUBROUTINE xios_set_axis_attr_hdl  &
606          (axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
607          , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
608          , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
609          , value)
610
611    IMPLICIT NONE
612    TYPE(xios_axis), INTENT(IN) :: axis_hdl
613    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: axis_ref
614    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: axis_type
615    INTEGER, OPTIONAL, INTENT(IN) :: begin
616    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: bounds(:, :)
617    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: bounds_name
618    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
619    INTEGER, OPTIONAL, INTENT(IN) :: data_begin
620    INTEGER, OPTIONAL, INTENT(IN) :: data_index(:)
621    INTEGER, OPTIONAL, INTENT(IN) :: data_n
622    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: dim_name
623    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: formula
624    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: formula_bounds
625    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: formula_term
626    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: formula_term_bounds
627    INTEGER, OPTIONAL, INTENT(IN) :: index(:)
628    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: label(:)
629    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: long_name
630    LOGICAL, OPTIONAL, INTENT(IN) :: mask(:)
631    INTEGER, OPTIONAL, INTENT(IN) :: n
632    INTEGER, OPTIONAL, INTENT(IN) :: n_distributed_partition
633    INTEGER, OPTIONAL, INTENT(IN) :: n_glo
634    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
635    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: positive
636    INTEGER, OPTIONAL, INTENT(IN) :: prec
637    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: standard_name
638    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: unit
639    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: value(:)
640
641  END SUBROUTINE xios_set_axis_attr_hdl
642
643  SUBROUTINE xios_set_field_attr  &
644          (field_id, add_offset, axis_ref, build_workflow_graph, cell_methods, cell_methods_mode, check_if_active  &
645          , comment, compression_level, default_value, detect_missing_value, domain_ref, enabled, expr  &
646          , field_ref, freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name  &
647          , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
648          , unit, valid_max, valid_min)
649
650    IMPLICIT NONE
651    TYPE(xios_field) :: field_hdl
652    CHARACTER(LEN = *), INTENT(IN) :: field_id
653    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: add_offset
654    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: axis_ref
655    LOGICAL, OPTIONAL, INTENT(IN) :: build_workflow_graph
656    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: cell_methods
657    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: cell_methods_mode
658    LOGICAL, OPTIONAL, INTENT(IN) :: check_if_active
659    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
660    INTEGER, OPTIONAL, INTENT(IN) :: compression_level
661    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: default_value
662    LOGICAL, OPTIONAL, INTENT(IN) :: detect_missing_value
663    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: domain_ref
664    LOGICAL, OPTIONAL, INTENT(IN) :: enabled
665    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: expr
666    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: field_ref
667    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: freq_offset
668    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: freq_op
669    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: grid_path
670    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: grid_ref
671    LOGICAL, OPTIONAL, INTENT(IN) :: indexed_output
672    INTEGER, OPTIONAL, INTENT(IN) :: level
673    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: long_name
674    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
675    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: operation
676    INTEGER, OPTIONAL, INTENT(IN) :: prec
677    LOGICAL, OPTIONAL, INTENT(IN) :: read_access
678    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: scalar_ref
679    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: scale_factor
680    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: standard_name
681    LOGICAL, OPTIONAL, INTENT(IN) :: ts_enabled
682    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: ts_split_freq
683    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: unit
684    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: valid_max
685    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: valid_min
686
687  END SUBROUTINE xios_set_field_attr
688
689  SUBROUTINE xios_set_field_attr_hdl  &
690          (field_hdl, add_offset, axis_ref, build_workflow_graph, cell_methods, cell_methods_mode, check_if_active  &
691          , comment, compression_level, default_value, detect_missing_value, domain_ref, enabled, expr  &
692          , field_ref, freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name  &
693          , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
694          , unit, valid_max, valid_min)
695
696    IMPLICIT NONE
697    TYPE(xios_field), INTENT(IN) :: field_hdl
698    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: add_offset
699    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: axis_ref
700    LOGICAL, OPTIONAL, INTENT(IN) :: build_workflow_graph
701    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: cell_methods
702    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: cell_methods_mode
703    LOGICAL, OPTIONAL, INTENT(IN) :: check_if_active
704    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
705    INTEGER, OPTIONAL, INTENT(IN) :: compression_level
706    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: default_value
707    LOGICAL, OPTIONAL, INTENT(IN) :: detect_missing_value
708    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: domain_ref
709    LOGICAL, OPTIONAL, INTENT(IN) :: enabled
710    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: expr
711    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: field_ref
712    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: freq_offset
713    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: freq_op
714    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: grid_path
715    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: grid_ref
716    LOGICAL, OPTIONAL, INTENT(IN) :: indexed_output
717    INTEGER, OPTIONAL, INTENT(IN) :: level
718    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: long_name
719    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
720    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: operation
721    INTEGER, OPTIONAL, INTENT(IN) :: prec
722    LOGICAL, OPTIONAL, INTENT(IN) :: read_access
723    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: scalar_ref
724    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: scale_factor
725    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: standard_name
726    LOGICAL, OPTIONAL, INTENT(IN) :: ts_enabled
727    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: ts_split_freq
728    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: unit
729    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: valid_max
730    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: valid_min
731
732  END SUBROUTINE xios_set_field_attr_hdl
733
734
735  SUBROUTINE xios_set_fieldgroup_attr  &
736          (fieldgroup_id, add_offset, axis_ref, build_workflow_graph, cell_methods, cell_methods_mode  &
737          , check_if_active, comment, compression_level, default_value, detect_missing_value, domain_ref  &
738          , enabled, expr, field_ref, freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output  &
739          , level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor, standard_name  &
740          , ts_enabled, ts_split_freq, unit, valid_max, valid_min)
741
742    IMPLICIT NONE
743    TYPE(xios_fieldgroup) :: fieldgroup_hdl
744    CHARACTER(LEN = *), INTENT(IN) :: fieldgroup_id
745    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: add_offset
746    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: axis_ref
747    LOGICAL, OPTIONAL, INTENT(IN) :: build_workflow_graph
748    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: cell_methods
749    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: cell_methods_mode
750    LOGICAL, OPTIONAL, INTENT(IN) :: check_if_active
751    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
752    INTEGER, OPTIONAL, INTENT(IN) :: compression_level
753    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: default_value
754    LOGICAL, OPTIONAL, INTENT(IN) :: detect_missing_value
755    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: domain_ref
756    LOGICAL, OPTIONAL, INTENT(IN) :: enabled
757    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: expr
758    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: field_ref
759    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: freq_offset
760    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: freq_op
761    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: grid_path
762    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: grid_ref
763    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: group_ref
764    LOGICAL, OPTIONAL, INTENT(IN) :: indexed_output
765    INTEGER, OPTIONAL, INTENT(IN) :: level
766    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: long_name
767    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
768    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: operation
769    INTEGER, OPTIONAL, INTENT(IN) :: prec
770    LOGICAL, OPTIONAL, INTENT(IN) :: read_access
771    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: scalar_ref
772    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: scale_factor
773    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: standard_name
774    LOGICAL, OPTIONAL, INTENT(IN) :: ts_enabled
775    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: ts_split_freq
776    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: unit
777    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: valid_max
778    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: valid_min
779
780  END SUBROUTINE xios_set_fieldgroup_attr
781
782  SUBROUTINE xios_set_fieldgroup_attr_hdl  &
783          (fieldgroup_hdl, add_offset, axis_ref, build_workflow_graph, cell_methods, cell_methods_mode  &
784          , check_if_active, comment, compression_level, default_value, detect_missing_value, domain_ref  &
785          , enabled, expr, field_ref, freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output  &
786          , level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor, standard_name  &
787          , ts_enabled, ts_split_freq, unit, valid_max, valid_min)
788
789    IMPLICIT NONE
790    TYPE(xios_fieldgroup), INTENT(IN) :: fieldgroup_hdl
791    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: add_offset
792    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: axis_ref
793    LOGICAL, OPTIONAL, INTENT(IN) :: build_workflow_graph
794    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: cell_methods
795    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: cell_methods_mode
796    LOGICAL, OPTIONAL, INTENT(IN) :: check_if_active
797    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
798    INTEGER, OPTIONAL, INTENT(IN) :: compression_level
799    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: default_value
800    LOGICAL, OPTIONAL, INTENT(IN) :: detect_missing_value
801    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: domain_ref
802    LOGICAL, OPTIONAL, INTENT(IN) :: enabled
803    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: expr
804    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: field_ref
805    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: freq_offset
806    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: freq_op
807    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: grid_path
808    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: grid_ref
809    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: group_ref
810    LOGICAL, OPTIONAL, INTENT(IN) :: indexed_output
811    INTEGER, OPTIONAL, INTENT(IN) :: level
812    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: long_name
813    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
814    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: operation
815    INTEGER, OPTIONAL, INTENT(IN) :: prec
816    LOGICAL, OPTIONAL, INTENT(IN) :: read_access
817    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: scalar_ref
818    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: scale_factor
819    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: standard_name
820    LOGICAL, OPTIONAL, INTENT(IN) :: ts_enabled
821    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: ts_split_freq
822    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: unit
823    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: valid_max
824    REAL (KIND = 8), OPTIONAL, INTENT(IN) :: valid_min
825
826  END SUBROUTINE xios_set_fieldgroup_attr_hdl
827
828
829  SUBROUTINE xios_set_file_attr  &
830          (file_id, append, comment, compression_level, convention, convention_str, cyclic, description  &
831          , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
832          , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
833          , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
834          , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name)
835
836    IMPLICIT NONE
837    TYPE(xios_file) :: file_hdl
838    CHARACTER(LEN = *), INTENT(IN) :: file_id
839    LOGICAL, OPTIONAL, INTENT(IN) :: append
840    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
841    INTEGER, OPTIONAL, INTENT(IN) :: compression_level
842    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: convention
843    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: convention_str
844    LOGICAL, OPTIONAL, INTENT(IN) :: cyclic
845    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description
846    LOGICAL, OPTIONAL, INTENT(IN) :: enabled
847    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: format
848    INTEGER, OPTIONAL, INTENT(IN) :: min_digits
849    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: mode
850    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
851    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix
852    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: output_freq
853    INTEGER, OPTIONAL, INTENT(IN) :: output_level
854    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: par_access
855    LOGICAL, OPTIONAL, INTENT(IN) :: read_metadata_par
856    INTEGER, OPTIONAL, INTENT(IN) :: record_offset
857    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: split_end_offset
858    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: split_freq
859    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: split_freq_format
860    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: split_last_date
861    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: split_start_offset
862    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: sync_freq
863    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_counter
864    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_counter_name
865    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_stamp_format
866    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_stamp_name
867    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_units
868    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: timeseries
869    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: ts_prefix
870    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type
871    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: uuid_format
872    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: uuid_name
873
874  END SUBROUTINE xios_set_file_attr
875
876  SUBROUTINE xios_set_file_attr_hdl  &
877          (file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
878          , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
879          , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
880          , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
881          , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name)
882
883    IMPLICIT NONE
884    TYPE(xios_file), INTENT(IN) :: file_hdl
885    LOGICAL, OPTIONAL, INTENT(IN) :: append
886    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: comment
887    INTEGER, OPTIONAL, INTENT(IN) :: compression_level
888    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: convention
889    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: convention_str
890    LOGICAL, OPTIONAL, INTENT(IN) :: cyclic
891    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: description
892    LOGICAL, OPTIONAL, INTENT(IN) :: enabled
893    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: format
894    INTEGER, OPTIONAL, INTENT(IN) :: min_digits
895    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: mode
896    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name
897    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: name_suffix
898    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: output_freq
899    INTEGER, OPTIONAL, INTENT(IN) :: output_level
900    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: par_access
901    LOGICAL, OPTIONAL, INTENT(IN) :: read_metadata_par
902    INTEGER, OPTIONAL, INTENT(IN) :: record_offset
903    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: split_end_offset
904    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: split_freq
905    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: split_freq_format
906    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: split_last_date
907    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: split_start_offset
908    TYPE(xios_duration), OPTIONAL, INTENT(IN) :: sync_freq
909    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_counter
910    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_counter_name
911    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_stamp_format
912    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_stamp_name
913    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: time_units
914    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: timeseries
915    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: ts_prefix
916    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: type
917    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: uuid_format
918    CHARACTER(len = *), OPTIONAL, INTENT(IN) :: uuid_name
919
920  END SUBROUTINE xios_set_file_attr_hdl
921
922
923  SUBROUTINE xios_is_defined_domain_attr  &
924          (domain_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
925          , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
926          , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
927          , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
928          , nj, nj_glo, nvertex, prec, radius, standard_name, type)
929
930    IMPLICIT NONE
931    CHARACTER(LEN = *), INTENT(IN) :: domain_id
932    LOGICAL, OPTIONAL, INTENT(OUT) :: area
933    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_1d
934    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_2d
935    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_name
936    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_1d
937    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_2d
938    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_name
939    LOGICAL, OPTIONAL, INTENT(OUT) :: comment
940    LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim
941    LOGICAL, OPTIONAL, INTENT(OUT) :: data_i_index
942    LOGICAL, OPTIONAL, INTENT(OUT) :: data_ibegin
943    LOGICAL, OPTIONAL, INTENT(OUT) :: data_j_index
944    LOGICAL, OPTIONAL, INTENT(OUT) :: data_jbegin
945    LOGICAL, OPTIONAL, INTENT(OUT) :: data_ni
946    LOGICAL, OPTIONAL, INTENT(OUT) :: data_nj
947    LOGICAL, OPTIONAL, INTENT(OUT) :: dim_i_name
948    LOGICAL, OPTIONAL, INTENT(OUT) :: dim_j_name
949    LOGICAL, OPTIONAL, INTENT(OUT) :: domain_ref
950    LOGICAL, OPTIONAL, INTENT(OUT) :: i_index
951    LOGICAL, OPTIONAL, INTENT(OUT) :: ibegin
952    LOGICAL, OPTIONAL, INTENT(OUT) :: j_index
953    LOGICAL, OPTIONAL, INTENT(OUT) :: jbegin
954    LOGICAL, OPTIONAL, INTENT(OUT) :: lat_name
955    LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_1d
956    LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_2d
957    LOGICAL, OPTIONAL, INTENT(OUT) :: lon_name
958    LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
959    LOGICAL, OPTIONAL, INTENT(OUT) :: lonvalue_1d
960    LOGICAL, OPTIONAL, INTENT(OUT) :: lonvalue_2d
961    LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
962    LOGICAL, OPTIONAL, INTENT(OUT) :: mask_2d
963    LOGICAL, OPTIONAL, INTENT(OUT) :: name
964    LOGICAL, OPTIONAL, INTENT(OUT) :: ni
965    LOGICAL, OPTIONAL, INTENT(OUT) :: ni_glo
966    LOGICAL, OPTIONAL, INTENT(OUT) :: nj
967    LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo
968    LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex
969    LOGICAL, OPTIONAL, INTENT(OUT) :: prec
970    LOGICAL, OPTIONAL, INTENT(OUT) :: radius
971    LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name
972    LOGICAL, OPTIONAL, INTENT(OUT) :: type
973
974    area = .FALSE.
975    bounds_lat_1d = .FALSE.
976    bounds_lat_2d = .FALSE.
977    bounds_lat_name = .FALSE.
978    bounds_lon_1d = .FALSE.
979    bounds_lon_2d = .FALSE.
980    bounds_lon_name = .FALSE.
981    comment = .FALSE.
982    data_dim = .FALSE.
983    data_i_index = .FALSE.
984    data_ibegin = .FALSE.
985    data_j_index = .FALSE.
986    data_jbegin = .FALSE.
987    data_ni = .FALSE.
988    data_nj = .FALSE.
989    dim_i_name = .FALSE.
990    dim_j_name = .FALSE.
991    domain_ref = .FALSE.
992    i_index = .FALSE.
993    ibegin = .FALSE.
994    j_index = .FALSE.
995    jbegin = .FALSE.
996    lat_name = .FALSE.
997    latvalue_1d = .FALSE.
998    latvalue_2d = .FALSE.
999    lon_name = .FALSE.
1000    long_name = .FALSE.
1001    lonvalue_1d = .FALSE.
1002    lonvalue_2d = .FALSE.
1003    mask_1d = .FALSE.
1004    mask_2d = .FALSE.
1005    name = .FALSE.
1006    ni = .FALSE.
1007    ni_glo = .FALSE.
1008    nj = .FALSE.
1009    nj_glo = .FALSE.
1010    nvertex = .FALSE.
1011    prec = .FALSE.
1012    radius = .FALSE.
1013    standard_name = .FALSE.
1014    type = .FALSE.
1015
1016  END SUBROUTINE xios_is_defined_domain_attr
1017
1018  SUBROUTINE xios_is_defined_domain_attr_hdl  &
1019          (domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
1020          , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
1021          , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
1022          , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
1023          , nj, nj_glo, nvertex, prec, radius, standard_name, type)
1024
1025    IMPLICIT NONE
1026    TYPE(xios_domain), INTENT(IN) :: domain_hdl
1027    LOGICAL, OPTIONAL, INTENT(OUT) :: area
1028    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_1d
1029    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_2d
1030    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_name
1031    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_1d
1032    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_2d
1033    LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_name
1034    LOGICAL, OPTIONAL, INTENT(OUT) :: comment
1035    LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim
1036    LOGICAL, OPTIONAL, INTENT(OUT) :: data_i_index
1037    LOGICAL, OPTIONAL, INTENT(OUT) :: data_ibegin
1038    LOGICAL, OPTIONAL, INTENT(OUT) :: data_j_index
1039    LOGICAL, OPTIONAL, INTENT(OUT) :: data_jbegin
1040    LOGICAL, OPTIONAL, INTENT(OUT) :: data_ni
1041    LOGICAL, OPTIONAL, INTENT(OUT) :: data_nj
1042    LOGICAL, OPTIONAL, INTENT(OUT) :: dim_i_name
1043    LOGICAL, OPTIONAL, INTENT(OUT) :: dim_j_name
1044    LOGICAL, OPTIONAL, INTENT(OUT) :: domain_ref
1045    LOGICAL, OPTIONAL, INTENT(OUT) :: i_index
1046    LOGICAL, OPTIONAL, INTENT(OUT) :: ibegin
1047    LOGICAL, OPTIONAL, INTENT(OUT) :: j_index
1048    LOGICAL, OPTIONAL, INTENT(OUT) :: jbegin
1049    LOGICAL, OPTIONAL, INTENT(OUT) :: lat_name
1050    LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_1d
1051    LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_2d
1052    LOGICAL, OPTIONAL, INTENT(OUT) :: lon_name
1053    LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
1054    LOGICAL, OPTIONAL, INTENT(OUT) :: lonvalue_1d
1055    LOGICAL, OPTIONAL, INTENT(OUT) :: lonvalue_2d
1056    LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
1057    LOGICAL, OPTIONAL, INTENT(OUT) :: mask_2d
1058    LOGICAL, OPTIONAL, INTENT(OUT) :: name
1059    LOGICAL, OPTIONAL, INTENT(OUT) :: ni
1060    LOGICAL, OPTIONAL, INTENT(OUT) :: ni_glo
1061    LOGICAL, OPTIONAL, INTENT(OUT) :: nj
1062    LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo
1063    LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex
1064    LOGICAL, OPTIONAL, INTENT(OUT) :: prec
1065    LOGICAL, OPTIONAL, INTENT(OUT) :: radius
1066    LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name
1067    LOGICAL, OPTIONAL, INTENT(OUT) :: type
1068
1069    area = .FALSE.
1070    bounds_lat_1d = .FALSE.
1071    bounds_lat_2d = .FALSE.
1072    bounds_lat_name = .FALSE.
1073    bounds_lon_1d = .FALSE.
1074    bounds_lon_2d = .FALSE.
1075    bounds_lon_name = .FALSE.
1076    comment = .FALSE.
1077    data_dim = .FALSE.
1078    data_i_index = .FALSE.
1079    data_ibegin = .FALSE.
1080    data_j_index = .FALSE.
1081    data_jbegin = .FALSE.
1082    data_ni = .FALSE.
1083    data_nj = .FALSE.
1084    dim_i_name = .FALSE.
1085    dim_j_name = .FALSE.
1086    domain_ref = .FALSE.
1087    i_index = .FALSE.
1088    ibegin = .FALSE.
1089    j_index = .FALSE.
1090    jbegin = .FALSE.
1091    lat_name = .FALSE.
1092    latvalue_1d = .FALSE.
1093    latvalue_2d = .FALSE.
1094    lon_name = .FALSE.
1095    long_name = .FALSE.
1096    lonvalue_1d = .FALSE.
1097    lonvalue_2d = .FALSE.
1098    mask_1d = .FALSE.
1099    mask_2d = .FALSE.
1100    name = .FALSE.
1101    ni = .FALSE.
1102    ni_glo = .FALSE.
1103    nj = .FALSE.
1104    nj_glo = .FALSE.
1105    nvertex = .FALSE.
1106    prec = .FALSE.
1107    radius = .FALSE.
1108    standard_name = .FALSE.
1109    type = .FALSE.
1110
1111  END SUBROUTINE xios_is_defined_domain_attr_hdl
1112
1113  SUBROUTINE xios_get_field_attr  &
1114          (field_id, add_offset, axis_ref, build_workflow_graph, cell_methods, cell_methods_mode, check_if_active  &
1115          , comment, compression_level, default_value, detect_missing_value, domain_ref, enabled, expr  &
1116          , field_ref, freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name  &
1117          , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
1118          , unit, valid_max, valid_min)
1119
1120    IMPLICIT NONE
1121    TYPE(xios_field) :: field_hdl
1122    CHARACTER(LEN = *), INTENT(IN) :: field_id
1123    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: add_offset
1124    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: axis_ref
1125    LOGICAL, OPTIONAL, INTENT(OUT) :: build_workflow_graph
1126    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: cell_methods
1127    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: cell_methods_mode
1128    LOGICAL, OPTIONAL, INTENT(OUT) :: check_if_active
1129    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: comment
1130    INTEGER, OPTIONAL, INTENT(OUT) :: compression_level
1131    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: default_value
1132    LOGICAL, OPTIONAL, INTENT(OUT) :: detect_missing_value
1133    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: domain_ref
1134    LOGICAL, OPTIONAL, INTENT(OUT) :: enabled
1135    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: expr
1136    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: field_ref
1137    TYPE(xios_duration), OPTIONAL, INTENT(OUT) :: freq_offset
1138    TYPE(xios_duration), OPTIONAL, INTENT(OUT) :: freq_op
1139    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: grid_path
1140    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: grid_ref
1141    LOGICAL, OPTIONAL, INTENT(OUT) :: indexed_output
1142    INTEGER, OPTIONAL, INTENT(OUT) :: level
1143    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: long_name
1144    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: name
1145    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: operation
1146    INTEGER, OPTIONAL, INTENT(OUT) :: prec
1147    LOGICAL, OPTIONAL, INTENT(OUT) :: read_access
1148    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: scalar_ref
1149    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: scale_factor
1150    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: standard_name
1151    LOGICAL, OPTIONAL, INTENT(OUT) :: ts_enabled
1152    TYPE(xios_duration), OPTIONAL, INTENT(OUT) :: ts_split_freq
1153    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: unit
1154    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: valid_max
1155    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: valid_min
1156
1157  END SUBROUTINE xios_get_field_attr
1158
1159  SUBROUTINE xios_get_field_attr_hdl  &
1160          (field_hdl, add_offset, axis_ref, build_workflow_graph, cell_methods, cell_methods_mode, check_if_active  &
1161          , comment, compression_level, default_value, detect_missing_value, domain_ref, enabled, expr  &
1162          , field_ref, freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name  &
1163          , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
1164          , unit, valid_max, valid_min)
1165
1166    IMPLICIT NONE
1167    TYPE(xios_field), INTENT(IN) :: field_hdl
1168    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: add_offset
1169    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: axis_ref
1170    LOGICAL, OPTIONAL, INTENT(OUT) :: build_workflow_graph
1171    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: cell_methods
1172    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: cell_methods_mode
1173    LOGICAL, OPTIONAL, INTENT(OUT) :: check_if_active
1174    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: comment
1175    INTEGER, OPTIONAL, INTENT(OUT) :: compression_level
1176    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: default_value
1177    LOGICAL, OPTIONAL, INTENT(OUT) :: detect_missing_value
1178    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: domain_ref
1179    LOGICAL, OPTIONAL, INTENT(OUT) :: enabled
1180    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: expr
1181    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: field_ref
1182    TYPE(xios_duration), OPTIONAL, INTENT(OUT) :: freq_offset
1183    TYPE(xios_duration), OPTIONAL, INTENT(OUT) :: freq_op
1184    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: grid_path
1185    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: grid_ref
1186    LOGICAL, OPTIONAL, INTENT(OUT) :: indexed_output
1187    INTEGER, OPTIONAL, INTENT(OUT) :: level
1188    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: long_name
1189    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: name
1190    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: operation
1191    INTEGER, OPTIONAL, INTENT(OUT) :: prec
1192    LOGICAL, OPTIONAL, INTENT(OUT) :: read_access
1193    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: scalar_ref
1194    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: scale_factor
1195    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: standard_name
1196    LOGICAL, OPTIONAL, INTENT(OUT) :: ts_enabled
1197    TYPE(xios_duration), OPTIONAL, INTENT(OUT) :: ts_split_freq
1198    CHARACTER(len = *), OPTIONAL, INTENT(OUT) :: unit
1199    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: valid_max
1200    REAL (KIND = 8), OPTIONAL, INTENT(OUT) :: valid_min
1201
1202  END SUBROUTINE xios_get_field_attr_hdl
1203
1204END MODULE lmdz_xios
1205
1206#endif
Note: See TracBrowser for help on using the repository browser.