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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.