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

Last change on this file since 5230 was 5119, checked in by abarral, 11 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.