Ignore:
Timestamp:
02/03/14 14:16:20 (10 years ago)
Author:
ymipsl
Message:

Enhancement : user defined global and field attribute can be output in the netcdfcf file.
A variable child element inclosed into a file element will be output as a global file attribute.
A variable child element inclosed into a field element will be output as a field attribute.

+ variable fortran interface added

YM

Location:
XIOS/trunk/src/interface/fortran
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/fortran/ixios.F90

    r461 r472  
    4343                             xios(is_defined_fieldgroup_attr), xios(is_defined_fieldgroup_attr_hdl) 
    4444 
     45USE ivariable, ONLY : txios(variable), txios(variablegroup), xios(get_variable_handle),  & 
     46                   xios(get_variablegroup_handle), xios(is_valid_variable),        & 
     47                   xios(is_valid_variablegroup) 
     48 
     49USE ivariable_attr, ONLY : xios(set_variable_attr),xios(set_variable_attr_hdl),    & 
     50                        xios(get_variable_attr),xios(get_variable_attr_hdl), & 
     51                        xios(is_defined_variable_attr),xios(is_defined_variable_attr_hdl) 
     52   
     53USE ivariablegroup_attr, ONLY : xios(set_variablegroup_attr), xios(set_variablegroup_attr_hdl),  & 
     54                             xios(get_variablegroup_attr), xios(get_variablegroup_attr_hdl), & 
     55                             xios(is_defined_variablegroup_attr), xios(is_defined_variablegroup_attr_hdl) 
     56                              
    4557USE ifile, ONLY : txios(file), txios(filegroup), xios(get_file_handle),    &  
    4658                  xios(get_filegroup_handle), xios(is_valid_file), xios(is_valid_filegroup) 
     
    7789 
    7890USE ixml_tree, ONLY : xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),          & 
    79                      xios(add_fieldtofile), xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), & 
    80                      xios(add_fieldgroup), xios(add_domaingroup), xios(add_fieldgrouptofile) 
    81                    
     91                     xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield),                  & 
     92                     xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup),         &  
     93                     xios(add_domaingroup), xios(add_fieldgrouptofile), xios(add_variablegrouptofile),            & 
     94                     xios(add_variablegrouptofield) 
    8295 
    8396PRIVATE 
     
    8699INTERFACE xios(set_attr) 
    87100  MODULE PROCEDURE xios(set_domaingroup_attr_hdl), xios(set_domain_attr_hdl), xios(set_fieldgroup_attr_hdl), & 
    88                    xios(set_field_attr_hdl), xios(set_file_attr_hdl), xios(set_filegroup_attr_hdl),          & 
     101                   xios(set_field_attr_hdl),xios(set_variable_attr_hdl), xios(set_variablegroup_attr_hdl),   & 
     102                   xios(set_file_attr_hdl), xios(set_filegroup_attr_hdl),                                    & 
    89103                   xios(set_grid_attr_hdl), xios(set_gridgroup_attr_hdl), xios(set_axis_attr_hdl) ,          & 
    90104                   xios(set_axisgroup_attr_hdl), xios(set_context_attr_hdl) 
     
    93107INTERFACE xios(get_attr) 
    94108  MODULE PROCEDURE xios(get_domaingroup_attr_hdl), xios(get_domain_attr_hdl), xios(get_fieldgroup_attr_hdl), & 
    95                    xios(get_field_attr_hdl), xios(get_file_attr_hdl), xios(get_filegroup_attr_hdl),          & 
     109                   xios(get_field_attr_hdl), xios(get_variable_attr_hdl), xios(get_variablegroup_attr_hdl),  & 
     110                   xios(get_file_attr_hdl), xios(get_filegroup_attr_hdl),                                    & 
    96111                   xios(get_grid_attr_hdl), xios(get_gridgroup_attr_hdl), xios(get_axis_attr_hdl) ,          & 
    97112                   xios(get_axisgroup_attr_hdl), xios(get_context_attr_hdl) 
     
    100115INTERFACE xios(is_defined_attr) 
    101116  MODULE PROCEDURE xios(is_defined_domaingroup_attr_hdl), xios(is_defined_domain_attr_hdl), xios(is_defined_fieldgroup_attr_hdl), & 
    102                    xios(is_defined_field_attr_hdl), xios(is_defined_file_attr_hdl), xios(is_defined_filegroup_attr_hdl),          & 
     117                   xios(is_defined_field_attr_hdl), xios(is_defined_variable_attr_hdl), xios(is_defined_variablegroup_attr_hdl),  & 
     118                   xios(is_defined_file_attr_hdl), xios(is_defined_filegroup_attr_hdl),                                           & 
    103119                   xios(is_defined_grid_attr_hdl), xios(is_defined_gridgroup_attr_hdl), xios(is_defined_axis_attr_hdl) ,          & 
    104120                   xios(is_defined_axisgroup_attr_hdl), xios(is_defined_context_attr_hdl) 
     
    109125                    xios(get_file_handle), xios(get_filegroup_handle), xios(get_grid_handle),               & 
    110126                    xios(get_gridgroup_handle), xios(get_axis_handle), xios(get_axisgroup_handle),          & 
    111                     xios(get_field_handle), xios(get_fieldgroup_handle) 
     127                    xios(get_field_handle), xios(get_fieldgroup_handle),xios(get_variable_handle),          & 
     128                    xios(get_variablegroup_handle) 
    112129END INTERFACE xios(get_handle)  
    113130 
    114131INTERFACE xios(add_child) 
    115   MODULE PROCEDURE xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),    & 
    116                    xios(add_fieldtofile), xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), & 
    117                    xios(add_fieldgroup), xios(add_domaingroup), xios(add_fieldgrouptofile) 
     132  MODULE PROCEDURE xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),                & 
     133                   xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield), xios(add_axisgroup),  & 
     134                   xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup), xios(add_domaingroup),            & 
     135                   xios(add_fieldgrouptofile), xios(add_variablegrouptofile),xios(add_variablegrouptofield)  
    118136END INTERFACE xios(add_child) 
    119137 
  • XIOS/trunk/src/interface/fortran/ixml_tree.F90

    r325 r472  
    88   USE IGRID 
    99   USE IDOMAIN 
     10   USE IVARIABLE 
    1011      
    1112   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 
     
    5960      END SUBROUTINE cxios_xml_tree_add_fieldtofile 
    6061 
     62      SUBROUTINE cxios_xml_tree_add_variabletofile(parent_, child_, child_id, child_id_size) BIND(C) 
     63         USE ISO_C_BINDING 
     64         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     65         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     66         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     67         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     68      END SUBROUTINE cxios_xml_tree_add_variabletofile 
     69 
     70 
     71      SUBROUTINE cxios_xml_tree_add_variabletofield(parent_, child_, child_id, child_id_size) BIND(C) 
     72         USE ISO_C_BINDING 
     73         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     74         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     75         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     76         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     77      END SUBROUTINE cxios_xml_tree_add_variabletofield 
     78 
     79 
    6180      SUBROUTINE cxios_xml_tree_add_fieldgroup(parent_, child_, child_id, child_id_size) BIND(C) 
    6281         USE ISO_C_BINDING 
     
    106125         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    107126      END SUBROUTINE cxios_xml_tree_add_fieldgrouptofile     
     127 
     128      SUBROUTINE cxios_xml_tree_add_variablegrouptofile(parent_, child_, child_id, child_id_size) BIND(C) 
     129         USE ISO_C_BINDING 
     130         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     131         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     132         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     133         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     134      END SUBROUTINE cxios_xml_tree_add_variablegrouptofile     
     135 
     136      SUBROUTINE cxios_xml_tree_add_variablegrouptofield(parent_, child_, child_id, child_id_size) BIND(C) 
     137         USE ISO_C_BINDING 
     138         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     139         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     140         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     141         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     142      END SUBROUTINE cxios_xml_tree_add_variablegrouptofield     
    108143 
    109144      SUBROUTINE cxios_xml_tree_show(filename, filename_size) BIND(C) 
     
    210245   END SUBROUTINE xios(add_fieldtofile) 
    211246 
     247   SUBROUTINE xios(add_variabletofile)(parent_hdl, child_hdl, child_id) 
     248      TYPE(txios(file))            , INTENT(IN) :: parent_hdl 
     249      TYPE(txios(variable))           , INTENT(OUT):: child_hdl 
     250      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id 
     251 
     252      IF (PRESENT(child_id)) THEN 
     253         CALL cxios_xml_tree_add_variabletofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     254      ELSE 
     255         CALL cxios_xml_tree_add_variabletofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     256      END IF 
     257 
     258   END SUBROUTINE xios(add_variabletofile) 
     259 
     260   SUBROUTINE xios(add_variabletofield)(parent_hdl, child_hdl, child_id) 
     261      TYPE(txios(field))            , INTENT(IN) :: parent_hdl 
     262      TYPE(txios(variable))           , INTENT(OUT):: child_hdl 
     263      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id 
     264 
     265      IF (PRESENT(child_id)) THEN 
     266         CALL cxios_xml_tree_add_variabletofield(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     267      ELSE 
     268         CALL cxios_xml_tree_add_variabletofield(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     269      END IF 
     270 
     271   END SUBROUTINE xios(add_variabletofield) 
     272 
    212273 
    213274   SUBROUTINE xios(add_axisgroup)(parent_hdl, child_hdl, child_id) 
     
    288349 
    289350   END SUBROUTINE xios(add_fieldgrouptofile) 
    290        
     351 
     352   SUBROUTINE xios(add_variablegrouptofile)(parent_hdl, child_hdl, child_id) 
     353      TYPE(txios(file))            , INTENT(IN) :: parent_hdl 
     354      TYPE(txios(variablegroup))     , INTENT(OUT):: child_hdl 
     355      CHARACTER(len = *), OPTIONAL  , INTENT(IN) :: child_id 
     356 
     357      IF (PRESENT(child_id)) THEN 
     358         CALL cxios_xml_tree_add_variablegrouptofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     359      ELSE 
     360         CALL cxios_xml_tree_add_variablegrouptofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     361      END IF 
     362 
     363   END SUBROUTINE xios(add_variablegrouptofile) 
     364 
     365   SUBROUTINE xios(add_variablegrouptofield)(parent_hdl, child_hdl, child_id) 
     366      TYPE(txios(field))            , INTENT(IN) :: parent_hdl 
     367      TYPE(txios(variablegroup))     , INTENT(OUT):: child_hdl 
     368      CHARACTER(len = *), OPTIONAL  , INTENT(IN) :: child_id 
     369 
     370      IF (PRESENT(child_id)) THEN 
     371         CALL cxios_xml_tree_add_variablegrouptofield(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     372      ELSE 
     373         CALL cxios_xml_tree_add_variablegrouptofield(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     374      END IF 
     375 
     376   END SUBROUTINE xios(add_variablegrouptofield)   
     377          
    291378END MODULE IXML_TREE 
Note: See TracChangeset for help on using the changeset viewer.