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

Location:
XIOS/trunk/src/interface
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/c/icxml_tree.cpp

    r591 r835  
    310310   } 
    311311 
     312   void cxios_xml_tree_add_axistogrid 
     313      (XGridPtr parent_, XAxisPtr * child_, const char * child_id, int child_id_size) 
     314   { 
     315      std::string child_id_str; 
     316      CTimer::get("XIOS").resume() ; 
     317      if (cstr2string(child_id, child_id_size, child_id_str)) 
     318      { 
     319         *child_ = parent_->addAxis(child_id_str); 
     320      } 
     321      else 
     322      { 
     323         *child_ = parent_->addAxis(); 
     324      } 
     325      CTimer::get("XIOS").suspend() ; 
     326   } 
     327 
     328   void cxios_xml_tree_add_domaintogrid 
     329      (XGridPtr parent_, XDomainPtr * child_, const char * child_id, int child_id_size) 
     330   { 
     331      std::string child_id_str; 
     332      CTimer::get("XIOS").resume() ; 
     333      if (cstr2string(child_id, child_id_size, child_id_str)) 
     334      { 
     335         *child_ = parent_->addDomain(child_id_str); 
     336      } 
     337      else 
     338      { 
     339         *child_ = parent_->addDomain(); 
     340      } 
     341      CTimer::get("XIOS").suspend() ; 
     342   } 
    312343 
    313344   // ----------------------- Affichage de l'arborescence ---------------------- 
  • XIOS/trunk/src/interface/fortran/ixios_interfaces.F90

    r786 r835  
    8383                      xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup), & 
    8484                      xios(add_domaingroup), xios(add_fieldgrouptofile), xios(add_variablegrouptofile),    & 
    85                       xios(add_variablegrouptofield) 
     85                      xios(add_variablegrouptofield), xios(add_axistogrid), xios(add_domaintogrid) 
    8686 
    8787PRIVATE 
     
    135135                   xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield), xios(add_axisgroup),  & 
    136136                   xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup), xios(add_domaingroup),            & 
    137                    xios(add_fieldgrouptofile), xios(add_variablegrouptofile),xios(add_variablegrouptofield) 
     137                   xios(add_fieldgrouptofile), xios(add_variablegrouptofile),xios(add_variablegrouptofield),         & 
     138                   xios(add_axistogrid), xios(add_domaintogrid) 
    138139END INTERFACE xios(add_child) 
    139140 
  • 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.