Ignore:
Timestamp:
07/05/16 15:59:23 (8 years ago)
Author:
mhnguyen
Message:

Adding Fortran interface for reduce_axis_to_scalar

Test
+) On Curie
+) Only compilation

File:
1 edited

Legend:

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

    r840 r891  
    33MODULE IXML_TREE 
    44   USE, INTRINSIC :: ISO_C_BINDING 
     5   USE ISCALAR 
    56   USE IAXIS 
    67   USE IFILE 
     
    1516   USE IINTERPOLATE_AXIS 
    1617   USE IINVERSE_AXIS 
     18   USE IREDUCE_AXIS_TO_SCALAR 
    1719 
    1820   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 
     
    4244      END SUBROUTINE cxios_xml_tree_add_file 
    4345 
     46      SUBROUTINE cxios_xml_tree_add_scalar(parent_, child_, child_id, child_id_size) BIND(C) 
     47         USE ISO_C_BINDING 
     48         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     49         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     50         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     51         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     52      END SUBROUTINE cxios_xml_tree_add_scalar 
     53 
    4454      SUBROUTINE cxios_xml_tree_add_axis(parent_, child_, child_id, child_id_size) BIND(C) 
    4555         USE ISO_C_BINDING 
     
    108118      END SUBROUTINE cxios_xml_tree_add_filegroup 
    109119 
     120      SUBROUTINE cxios_xml_tree_add_scalargroup(parent_, child_, child_id, child_id_size) BIND(C) 
     121         USE ISO_C_BINDING 
     122         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     123         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     124         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     125         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     126      END SUBROUTINE cxios_xml_tree_add_scalargroup 
     127 
    110128      SUBROUTINE cxios_xml_tree_add_axisgroup(parent_, child_, child_id, child_id_size) BIND(C) 
    111129         USE ISO_C_BINDING 
     
    148166      END SUBROUTINE cxios_xml_tree_add_variablegrouptofield 
    149167 
     168      SUBROUTINE cxios_xml_tree_add_scalartogrid(parent_, child_, child_id, child_id_size) BIND(C) 
     169         USE ISO_C_BINDING 
     170         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     171         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     172         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     173         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     174      END SUBROUTINE cxios_xml_tree_add_scalartogrid 
     175 
    150176      SUBROUTINE cxios_xml_tree_add_axistogrid(parent_, child_, child_id, child_id_size) BIND(C) 
    151177         USE ISO_C_BINDING 
     
    211237         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
    212238      END SUBROUTINE cxios_xml_tree_add_inverseaxistoaxis 
     239 
     240      SUBROUTINE cxios_xml_tree_add_reduceaxistoscalartoscalar(parent_, child_, child_id, child_id_size) BIND(C) 
     241         USE ISO_C_BINDING 
     242         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_ 
     243         INTEGER  (kind = C_INTPTR_T)               :: child_ 
     244         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id 
     245         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size 
     246      END SUBROUTINE cxios_xml_tree_add_reduceaxistoscalartoscalar 
    213247 
    214248      SUBROUTINE cxios_xml_tree_show(filename, filename_size) BIND(C) 
     
    235269   CONTAINS ! Fonctions disponibles pour les utilisateurs. 
    236270 
     271   SUBROUTINE xios(add_scalar)(parent_hdl, child_hdl, child_id) 
     272      TYPE(txios(scalargroup))     , INTENT(IN) :: parent_hdl 
     273      TYPE(txios(scalar))          , INTENT(OUT):: child_hdl 
     274      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id 
     275 
     276      IF (PRESENT(child_id)) THEN 
     277         CALL cxios_xml_tree_add_scalar(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     278      ELSE 
     279         CALL cxios_xml_tree_add_scalar(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     280      END IF 
     281 
     282   END SUBROUTINE xios(add_scalar) 
    237283 
    238284   SUBROUTINE xios(add_axis)(parent_hdl, child_hdl, child_id) 
     
    341387   END SUBROUTINE xios(add_variabletofield) 
    342388 
     389   SUBROUTINE xios(add_scalargroup)(parent_hdl, child_hdl, child_id) 
     390      TYPE(txios(scalargroup))      , INTENT(IN) :: parent_hdl 
     391      TYPE(txios(scalargroup))      , INTENT(OUT):: child_hdl 
     392      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id 
     393 
     394      IF (PRESENT(child_id)) THEN 
     395         CALL cxios_xml_tree_add_scalargroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     396      ELSE 
     397         CALL cxios_xml_tree_add_scalargroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     398      END IF 
     399 
     400   END SUBROUTINE xios(add_scalargroup) 
    343401 
    344402   SUBROUTINE xios(add_axisgroup)(parent_hdl, child_hdl, child_id) 
     
    446504   END SUBROUTINE xios(add_variablegrouptofield) 
    447505 
     506   SUBROUTINE xios(add_scalartogrid)(parent_hdl, child_hdl, child_id) 
     507      TYPE(txios(grid))             , INTENT(IN) :: parent_hdl 
     508      TYPE(txios(scalar))           , INTENT(OUT):: child_hdl 
     509      CHARACTER(len = *), OPTIONAL  , INTENT(IN) :: child_id 
     510 
     511      IF (PRESENT(child_id)) THEN 
     512         CALL cxios_xml_tree_add_scalartogrid(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     513      ELSE 
     514         CALL cxios_xml_tree_add_scalartogrid(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     515      END IF 
     516 
     517   END SUBROUTINE xios(add_scalartogrid) 
     518 
    448519   SUBROUTINE xios(add_axistogrid)(parent_hdl, child_hdl, child_id) 
    449520      TYPE(txios(grid))             , INTENT(IN) :: parent_hdl 
     
    549620 
    550621   END SUBROUTINE xios(add_inverseaxistoaxis) 
     622 
     623   SUBROUTINE xios(add_reduceaxistoscalartoscalar)(parent_hdl, child_hdl, child_id) 
     624      TYPE(txios(axis))                      , INTENT(IN) :: parent_hdl 
     625      TYPE(txios(inverse_axis))              , INTENT(OUT):: child_hdl 
     626      CHARACTER(len = *), OPTIONAL           , INTENT(IN) :: child_id 
     627 
     628      IF (PRESENT(child_id)) THEN 
     629         CALL cxios_xml_tree_add_reduceaxistoscalartoscalar(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) 
     630      ELSE 
     631         CALL cxios_xml_tree_add_reduceaxistoscalartoscalar(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) 
     632      END IF 
     633 
     634   END SUBROUTINE xios(add_reduceaxistoscalartoscalar) 
    551635END MODULE IXML_TREE 
Note: See TracChangeset for help on using the changeset viewer.