Ignore:
Timestamp:
04/08/16 15:00:29 (8 years ago)
Author:
mhnguyen
Message:

Exposing some functions to Fortran interface

+) Allow add axis and domain into grid with Fortran interface
+) Remove some redundant code

Test
+) On Curie
+) test_client passes

File:
1 edited

Legend:

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

    r501 r835  
    99   USE IDOMAIN 
    1010   USE IVARIABLE 
    11       
     11 
    1212   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 
    13       
     13 
    1414      SUBROUTINE cxios_xml_tree_add_field(parent_, child_, child_id, child_id_size) BIND(C) 
    1515         USE ISO_C_BINDING 
     
    1919         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    2020      END SUBROUTINE cxios_xml_tree_add_field 
    21        
     21 
    2222      SUBROUTINE cxios_xml_tree_add_grid(parent_, child_, child_id, child_id_size) BIND(C) 
    2323         USE ISO_C_BINDING 
     
    2727         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    2828      END SUBROUTINE cxios_xml_tree_add_grid 
    29        
     29 
    3030      SUBROUTINE cxios_xml_tree_add_file(parent_, child_, child_id, child_id_size) BIND(C) 
    3131         USE ISO_C_BINDING 
     
    3535         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    3636      END SUBROUTINE cxios_xml_tree_add_file 
    37        
     37 
    3838      SUBROUTINE cxios_xml_tree_add_axis(parent_, child_, child_id, child_id_size) BIND(C) 
    3939         USE ISO_C_BINDING 
     
    4343         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    4444      END SUBROUTINE cxios_xml_tree_add_axis 
    45        
     45 
    4646      SUBROUTINE cxios_xml_tree_add_domain(parent_, child_, child_id, child_id_size) BIND(C) 
    4747         USE ISO_C_BINDING 
     
    5151         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    5252      END SUBROUTINE cxios_xml_tree_add_domain 
    53        
     53 
    5454      SUBROUTINE cxios_xml_tree_add_fieldtofile(parent_, child_, child_id, child_id_size) BIND(C) 
    5555         USE ISO_C_BINDING 
     
    117117         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    118118      END SUBROUTINE cxios_xml_tree_add_domaingroup 
    119        
     119 
    120120      SUBROUTINE cxios_xml_tree_add_fieldgrouptofile(parent_, child_, child_id, child_id_size) BIND(C) 
    121121         USE ISO_C_BINDING 
     
    124124         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
    125125         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    126       END SUBROUTINE cxios_xml_tree_add_fieldgrouptofile     
     126      END SUBROUTINE cxios_xml_tree_add_fieldgrouptofile 
    127127 
    128128      SUBROUTINE cxios_xml_tree_add_variablegrouptofile(parent_, child_, child_id, child_id_size) BIND(C) 
     
    132132         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
    133133         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    134       END SUBROUTINE cxios_xml_tree_add_variablegrouptofile     
     134      END SUBROUTINE cxios_xml_tree_add_variablegrouptofile 
    135135 
    136136      SUBROUTINE cxios_xml_tree_add_variablegrouptofield(parent_, child_, child_id, child_id_size) BIND(C) 
     
    140140         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
    141141         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    142       END SUBROUTINE cxios_xml_tree_add_variablegrouptofield     
     142      END SUBROUTINE cxios_xml_tree_add_variablegrouptofield 
     143 
     144      SUBROUTINE cxios_xml_tree_add_axistogrid(parent_, child_, child_id, child_id_size) BIND(C) 
     145         USE ISO_C_BINDING 
     146         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     147         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     148         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     149         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     150      END SUBROUTINE cxios_xml_tree_add_axistogrid 
     151 
     152      SUBROUTINE cxios_xml_tree_add_domaintogrid(parent_, child_, child_id, child_id_size) BIND(C) 
     153         USE ISO_C_BINDING 
     154         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     155         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     156         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     157         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     158      END SUBROUTINE cxios_xml_tree_add_domaintogrid 
    143159 
    144160      SUBROUTINE cxios_xml_tree_show(filename, filename_size) BIND(C) 
     
    159175         INTEGER  (kind = C_INT) , VALUE        :: xmlcontent_size 
    160176      END SUBROUTINE cxios_xml_parse_string 
    161       
     177 
    162178   END INTERFACE 
    163179 
    164     
     180 
    165181   CONTAINS ! Fonctions disponibles pour les utilisateurs. 
    166182 
     
    178194 
    179195   END SUBROUTINE xios(add_axis) 
    180     
     196 
    181197   SUBROUTINE xios(add_file)(parent_hdl, child_hdl, child_id) 
    182198      TYPE(txios(filegroup))      , INTENT(IN) :: parent_hdl 
     
    191207 
    192208   END SUBROUTINE xios(add_file) 
    193     
     209 
    194210   SUBROUTINE xios(add_grid)(parent_hdl, child_hdl, child_id) 
    195211      TYPE(txios(gridgroup))     , INTENT(IN) :: parent_hdl 
     
    203219 
    204220   END SUBROUTINE xios(add_grid) 
    205     
    206     
     221 
     222 
    207223   SUBROUTINE xios(add_field)(parent_hdl, child_hdl, child_id) 
    208224      TYPE(txios(fieldgroup))     , INTENT(IN) :: parent_hdl 
     
    217233 
    218234   END SUBROUTINE xios(add_field) 
    219     
    220     
     235 
     236 
    221237   SUBROUTINE xios(add_domain)(parent_hdl, child_hdl, child_id) 
    222238      TYPE(txios(domaingroup))     , INTENT(IN) :: parent_hdl 
     
    231247 
    232248   END SUBROUTINE xios(add_domain) 
    233     
     249 
    234250   SUBROUTINE xios(add_fieldtofile)(parent_hdl, child_hdl, child_id) 
    235251      TYPE(txios(file))            , INTENT(IN) :: parent_hdl 
     
    309325         CALL cxios_xml_tree_add_gridgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
    310326      END IF 
    311        
     327 
    312328   END SUBROUTINE xios(add_gridgroup) 
    313329 
     
    374390      END IF 
    375391 
    376    END SUBROUTINE xios(add_variablegrouptofield)   
    377           
     392   END SUBROUTINE xios(add_variablegrouptofield) 
     393 
     394   SUBROUTINE xios(add_axistogrid)(parent_hdl, child_hdl, child_id) 
     395      TYPE(txios(grid))             , INTENT(IN) :: parent_hdl 
     396      TYPE(txios(axis))             , INTENT(OUT):: child_hdl 
     397      CHARACTER(len = *), OPTIONAL  , INTENT(IN) :: child_id 
     398 
     399      IF (PRESENT(child_id)) THEN 
     400         CALL cxios_xml_tree_add_axistogrid(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     401      ELSE 
     402         CALL cxios_xml_tree_add_axistogrid(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     403      END IF 
     404 
     405   END SUBROUTINE xios(add_axistogrid) 
     406 
     407   SUBROUTINE xios(add_domaintogrid)(parent_hdl, child_hdl, child_id) 
     408      TYPE(txios(grid))             , INTENT(IN) :: parent_hdl 
     409      TYPE(txios(domain))           , INTENT(OUT):: child_hdl 
     410      CHARACTER(len = *), OPTIONAL  , INTENT(IN) :: child_id 
     411 
     412      IF (PRESENT(child_id)) THEN 
     413         CALL cxios_xml_tree_add_domaintogrid(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     414      ELSE 
     415         CALL cxios_xml_tree_add_domaintogrid(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     416      END IF 
     417 
     418   END SUBROUTINE xios(add_domaintogrid) 
    378419END MODULE IXML_TREE 
Note: See TracChangeset for help on using the changeset viewer.