Ignore:
Timestamp:
09/22/14 14:17:33 (10 years ago)
Author:
mhnguyen
Message:

Ticket 50: Implementing the getting/setting methods for Fortran interface

+) Add some C and Fortran functions to set and get data to/from CVariable with an id
+) Add method to send, receive and dispatch in CVariable
+) Add dispatch method in server class

Test
-) On Curie
-) Test data: integer, float, double, boolean, string
-) File: one and multiple, using_server: ON and OFF
+) All test cases passed and had correct results

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

Legend:

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

    r461 r489  
    44   USE, INTRINSIC :: ISO_C_BINDING 
    55   USE ICONTEXT 
    6     
     6 
    77   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 
    88 
     
    1717         INTEGER  (kind = C_INT)                    :: f_return_comm 
    1818      END SUBROUTINE cxios_init_client 
    19        
     19 
    2020      SUBROUTINE  cxios_context_initialize(context_id,len_context_id,f_comm) BIND(C) 
    2121         USE ISO_C_BINDING 
     
    3131         LOGICAL  (kind = C_BOOL)                   :: initialized 
    3232      END SUBROUTINE cxios_context_is_initialized 
    33        
    34        
     33 
     34 
    3535       SUBROUTINE  cxios_context_close_definition() BIND(C) 
    3636         USE ISO_C_BINDING 
    3737      END SUBROUTINE cxios_context_close_definition 
    38       
     38 
    3939 
    4040       SUBROUTINE  cxios_context_finalize() BIND(C) 
    4141         USE ISO_C_BINDING 
    4242      END SUBROUTINE cxios_context_finalize 
    43       
    44   
     43 
     44 
    4545      SUBROUTINE  cxios_finalize() BIND(C) 
    4646      END SUBROUTINE cxios_finalize 
     
    4949      END SUBROUTINE cxios_solve_inheritance 
    5050 
    51   
     51 
    5252      SUBROUTINE cxios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C) 
    5353         USE ISO_C_BINDING 
     
    5757         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
    5858      END SUBROUTINE cxios_write_data_k81 
    59        
     59 
    6060      SUBROUTINE cxios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C) 
    6161         USE ISO_C_BINDING 
     
    6565         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize 
    6666      END SUBROUTINE cxios_write_data_k82 
    67        
     67 
    6868      SUBROUTINE cxios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C) 
    6969         USE ISO_C_BINDING 
     
    7373         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize 
    7474      END SUBROUTINE cxios_write_data_k83 
    75        
     75 
    7676      SUBROUTINE cxios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C) 
    7777         USE ISO_C_BINDING 
     
    8181         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
    8282      END SUBROUTINE cxios_write_data_k41 
    83        
     83 
    8484      SUBROUTINE cxios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C) 
    8585         USE ISO_C_BINDING 
     
    8989         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize 
    9090      END SUBROUTINE cxios_write_data_k42 
    91        
     91 
    9292      SUBROUTINE cxios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C) 
    9393         USE ISO_C_BINDING 
     
    9797         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize 
    9898      END SUBROUTINE cxios_write_data_k43 
    99        
     99 
     100      ! Binding C and Fortran interface of get_variable (icdata.cpp) 
     101      SUBROUTINE cxios_get_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C) 
     102         USE ISO_C_BINDING 
     103         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     104         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     105         REAL     (kind = C_DOUBLE)               :: data_k8 
     106         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     107      END SUBROUTINE cxios_get_variable_data_k8 
     108 
     109      SUBROUTINE cxios_get_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C) 
     110         USE ISO_C_BINDING 
     111         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     112         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     113         REAL     (kind = C_FLOAT)                :: data_k4 
     114         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     115      END SUBROUTINE cxios_get_variable_data_k4 
     116 
     117      SUBROUTINE cxios_get_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C) 
     118         USE ISO_C_BINDING 
     119         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     120         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     121         INTEGER  (kind = C_INT)                  :: data_int 
     122         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     123      END SUBROUTINE cxios_get_variable_data_int 
     124 
     125      SUBROUTINE cxios_get_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C) 
     126         USE ISO_C_BINDING 
     127         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     128         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     129         LOGICAL  (kind = 4)                      :: data_logic 
     130         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     131      END SUBROUTINE cxios_get_variable_data_logic 
     132 
     133      SUBROUTINE cxios_get_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C) 
     134         USE ISO_C_BINDING 
     135         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     136         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     137         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in 
     138         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char 
     139         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     140      END SUBROUTINE cxios_get_variable_data_char 
     141 
     142      ! Binding C and Fortran interface of set_variable (icdata.cpp) 
     143      SUBROUTINE cxios_set_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C) 
     144         USE ISO_C_BINDING 
     145         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     146         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     147         REAL     (kind = C_DOUBLE), VALUE        :: data_k8 
     148         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     149      END SUBROUTINE cxios_set_variable_data_k8 
     150 
     151      SUBROUTINE cxios_set_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C) 
     152         USE ISO_C_BINDING 
     153         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     154         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     155         REAL     (kind = C_FLOAT) , VALUE        :: data_k4 
     156         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     157      END SUBROUTINE cxios_set_variable_data_k4 
     158 
     159      SUBROUTINE cxios_set_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C) 
     160         USE ISO_C_BINDING 
     161         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     162         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     163         INTEGER  (kind = C_INT)   , VALUE        :: data_int 
     164         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     165      END SUBROUTINE cxios_set_variable_data_int 
     166 
     167      SUBROUTINE cxios_set_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C) 
     168         USE ISO_C_BINDING 
     169         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     170         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     171         LOGICAL  (kind = 4)       , VALUE        :: data_logic 
     172         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     173      END SUBROUTINE cxios_set_variable_data_logic 
     174 
     175      SUBROUTINE cxios_set_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C) 
     176         USE ISO_C_BINDING 
     177         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid 
     178         INTEGER  (kind = C_INT)   , VALUE        :: varid_size 
     179         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in 
     180         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char 
     181         LOGICAL  (kind = C_BOOL)                 :: is_var_existed 
     182      END SUBROUTINE cxios_set_variable_data_char 
     183 
    100184   END INTERFACE 
    101     
    102     
     185 
     186 
    103187   CONTAINS ! Fonctions disponibles pour les utilisateurs. 
    104188 
     
    107191     CALL cxios_init_server() 
    108192   END SUBROUTINE xios(init_server) 
    109     
     193 
    110194   SUBROUTINE  xios(initialize)(client_id, local_comm, return_comm) 
    111195   IMPLICIT NONE 
    112196   INCLUDE 'mpif.h' 
    113197   CHARACTER(LEN=*),INTENT(IN) :: client_id 
    114    INTEGER,INTENT(IN),OPTIONAL         :: local_comm   
     198   INTEGER,INTENT(IN),OPTIONAL         :: local_comm 
    115199   INTEGER,INTENT(OUT),OPTIONAL        :: return_comm 
    116200   INTEGER :: f_local_comm 
    117201   INTEGER :: f_return_comm 
    118     
     202 
    119203      IF (PRESENT(local_comm)) THEN 
    120         f_local_comm=local_comm  
     204        f_local_comm=local_comm 
    121205      ELSE 
    122         f_local_comm = MPI_COMM_NULL  
     206        f_local_comm = MPI_COMM_NULL 
    123207      ENDIF 
    124        
     208 
    125209      CALL cxios_init_client(client_id,LEN(client_id),f_local_comm,f_return_comm) 
    126   
     210 
    127211      IF (PRESENT(return_comm)) return_comm=f_return_comm 
    128212 
     
    134218   CHARACTER(LEN=*),INTENT(IN)  :: context_id 
    135219   INTEGER, INTENT(IN)          :: comm 
    136        
     220 
    137221      CALL cxios_context_initialize(context_id,LEN(context_id),comm) 
    138   
     222 
    139223    END SUBROUTINE  xios(context_initialize) 
    140224 
     
    145229   CHARACTER(LEN=*),INTENT(IN)  :: context_id 
    146230   LOGICAL(KIND=C_BOOL) :: is_init 
    147           
     231 
    148232      CALL cxios_context_is_initialized(context_id, LEN(context_id), is_init) 
    149233      xios(context_is_initialized) = is_init 
    150   
    151     END FUNCTION xios(context_is_initialized)    
    152  
    153      
     234 
     235    END FUNCTION xios(context_is_initialized) 
     236 
     237 
    154238   SUBROUTINE  xios(finalize) 
    155239   IMPLICIT NONE 
     
    159243    END SUBROUTINE  xios(finalize) 
    160244 
    161     
     245 
    162246   SUBROUTINE xios(close_context_definition)() 
    163247   IMPLICIT NONE 
     
    165249   END SUBROUTINE xios(close_context_definition) 
    166250 
    167     
     251 
    168252   SUBROUTINE xios(context_finalize)() 
    169253   IMPLICIT NONE 
    170254      CALL cxios_context_finalize() 
    171255   END SUBROUTINE xios(context_finalize) 
    172     
     256 
    173257   SUBROUTINE xios(solve_inheritance)() 
    174258   IMPLICIT NONE 
    175259      CALL cxios_solve_inheritance() 
    176260   END SUBROUTINE xios(solve_inheritance) 
    177    
    178     
     261 
     262 
    179263   SUBROUTINE xios(send_field_r8_1d)(fieldid, data1d_k8) 
    180264   IMPLICIT NONE 
     
    183267      CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1)) 
    184268   END SUBROUTINE xios(send_field_r8_1d) 
    185     
     269 
    186270   SUBROUTINE  xios(send_field_r8_2d)(fieldid, data2d_k8) 
    187271   IMPLICIT NONE 
     
    190274      CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2)) 
    191275   END SUBROUTINE  xios(send_field_r8_2d) 
    192     
     276 
    193277   SUBROUTINE  xios(send_field_r8_3d)(fieldid, data3d_k8) 
    194278   IMPLICIT NONE 
     
    197281      CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3)) 
    198282   END SUBROUTINE  xios(send_field_r8_3d) 
    199     
     283 
    200284   SUBROUTINE xios(send_field_r4_1d)(fieldid, data1d_k4) 
    201285   IMPLICIT NONE 
     
    204288      CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1)) 
    205289   END SUBROUTINE xios(send_field_r4_1d) 
    206     
     290 
    207291   SUBROUTINE xios(send_field_r4_2d)(fieldid, data2d_k4) 
    208292   IMPLICIT NONE 
     
    211295      CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2)) 
    212296   END SUBROUTINE xios(send_field_r4_2d) 
    213     
     297 
    214298   SUBROUTINE xios(send_field_r4_3d)(fieldid, data3d_k4) 
    215299   IMPLICIT NONE 
     
    218302      CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3)) 
    219303   END SUBROUTINE xios(send_field_r4_3d) 
    220     
    221     
     304 
     305   ! Get variable functions 
     306   LOGICAL FUNCTION xios(getVar_k8)(varId, data_k8) 
     307   IMPLICIT NONE 
     308      LOGICAL  (kind = 1)                           :: val 
     309      CHARACTER(len = *)               , INTENT(IN) :: varId 
     310      REAL     (kind = 8)              , INTENT(OUT):: data_k8 
     311 
     312      CALL cxios_get_variable_data_k8(varId, len(varId), data_k8, val) 
     313 
     314      xios(getVar_k8) = val 
     315   END FUNCTION xios(getVar_k8) 
     316 
     317   LOGICAL FUNCTION xios(getVar_k4)(varId, data_k4) 
     318   IMPLICIT NONE 
     319      LOGICAL  (kind = 1)                           :: val 
     320      CHARACTER(len = *)               , INTENT(IN) :: varId 
     321      REAL     (kind = 4)              , INTENT(OUT):: data_k4 
     322 
     323      CALL cxios_get_variable_data_k4(varId, len(varId), data_k4, val) 
     324 
     325      xios(getVar_k4) = val 
     326   END FUNCTION xios(getVar_k4) 
     327 
     328   LOGICAL FUNCTION xios(getVar_int)(varId, data_int) 
     329   IMPLICIT NONE 
     330      LOGICAL  (kind = 1)                           :: val 
     331      CHARACTER(len = *)               , INTENT(IN) :: varId 
     332      INTEGER                          , INTENT(OUT):: data_int 
     333 
     334      CALL cxios_get_variable_data_int(varId, len(varId), data_int, val) 
     335 
     336      xios(getVar_int) = val 
     337   END FUNCTION xios(getVar_int) 
     338 
     339   LOGICAL FUNCTION xios(getVar_logic)(varId, data_logic) 
     340   IMPLICIT NONE 
     341      LOGICAL  (kind = 1)                           :: val 
     342      CHARACTER(len  = *)              , INTENT(IN) :: varId 
     343      LOGICAL  (kind = 4)              , INTENT(OUT):: data_logic 
     344 
     345      CALL cxios_get_variable_data_logic(varId, len(varId), data_logic, val) 
     346 
     347      xios(getVar_logic) = val 
     348   END FUNCTION xios(getVar_logic) 
     349 
     350   LOGICAL FUNCTION xios(getVar_char)(varId, data_char) 
     351   IMPLICIT NONE 
     352      LOGICAL  (kind = 1)                           :: val 
     353      CHARACTER(len  = *)              , INTENT(IN) :: varId 
     354      CHARACTER(len  = *)              , INTENT(OUT):: data_char 
     355 
     356      CALL cxios_get_variable_data_char(varId, len(varId), data_char, len(data_char), val) 
     357 
     358      xios(getVar_char) = val 
     359   END FUNCTION xios(getVar_char) 
     360 
     361   ! Set variable functions 
     362   LOGICAL FUNCTION xios(setVar_k8)(varId, data_k8) 
     363   IMPLICIT NONE 
     364      LOGICAL  (kind = 1)                           :: val 
     365      CHARACTER(len = *)               , INTENT(IN) :: varId 
     366      REAL     (kind = 8)              , INTENT(IN) :: data_k8 
     367 
     368      CALL cxios_set_variable_data_k8(varId, len(varId), data_k8, val) 
     369 
     370      xios(setVar_k8) = val 
     371   END FUNCTION xios(setVar_k8) 
     372 
     373   LOGICAL FUNCTION xios(setVar_k4)(varId, data_k4) 
     374   IMPLICIT NONE 
     375      LOGICAL  (kind = 1)                           :: val 
     376      CHARACTER(len = *)               , INTENT(IN) :: varId 
     377      REAL     (kind = 4)              , INTENT(IN) :: data_k4 
     378 
     379      CALL cxios_set_variable_data_k4(varId, len(varId), data_k4, val) 
     380 
     381      xios(setVar_k4) = val 
     382   END FUNCTION xios(setVar_k4) 
     383 
     384   LOGICAL FUNCTION xios(setVar_int)(varId, data_int) 
     385   IMPLICIT NONE 
     386      LOGICAL  (kind = 1)                           :: val 
     387      CHARACTER(len = *)               , INTENT(IN) :: varId 
     388      INTEGER                          , INTENT(IN) :: data_int 
     389 
     390      CALL cxios_set_variable_data_int(varId, len(varId), data_int, val) 
     391 
     392      xios(setVar_int) = val 
     393   END FUNCTION xios(setVar_int) 
     394 
     395   LOGICAL FUNCTION xios(setVar_logic)(varId, data_logic) 
     396   IMPLICIT NONE 
     397      LOGICAL  (kind = 1)                           :: val 
     398      CHARACTER(len  = *)              , INTENT(IN) :: varId 
     399      LOGICAL  (kind = 4)              , INTENT(IN) :: data_logic 
     400 
     401      CALL cxios_set_variable_data_logic(varId, len(varId), data_logic, val) 
     402 
     403      xios(setVar_logic) = val 
     404   END FUNCTION xios(setVar_logic) 
     405 
     406   LOGICAL FUNCTION xios(setVar_char)(varId, data_char) 
     407   IMPLICIT NONE 
     408      LOGICAL  (kind = 1)                           :: val 
     409      CHARACTER(len  = *)              , INTENT(IN) :: varId 
     410      CHARACTER(len  = *)              , INTENT(IN) :: data_char 
     411 
     412      CALL cxios_set_variable_data_char(varId, len(varId), data_char, len(data_char), val) 
     413 
     414      xios(setVar_char) = val 
     415   END FUNCTION xios(setVar_char) 
     416 
    222417END MODULE IDATA 
  • XIOS/trunk/src/interface/fortran/ixios.F90

    r472 r489  
    1010                          xios(get_context_attr), xios(get_context_attr_hdl), & 
    1111                          xios(is_defined_context_attr), xios(is_defined_context_attr_hdl) 
    12                                                 
     12 
    1313USE idata, ONLY : xios(initialize),xios(init_server), xios(finalize), xios(context_initialize),  & 
    1414                  xios(context_is_initialized), xios(close_context_definition),xios(solve_inheritance),       & 
    1515                  xios(context_finalize), xios(send_field_r8_1d), xios(send_field_r8_2d), & 
    1616                  xios(send_field_r8_3d), xios(send_field_r4_1d), xios(send_field_r4_2d), & 
    17                   xios(send_field_r4_3d) 
     17                  xios(send_field_r4_3d), xios(getVar_k8), xios(getVar_k4), xios(getVar_int), & 
     18                  xios(getVar_logic), xios(getVar_char), xios(setVar_k8), xios(setVar_k4), xios(setVar_int), & 
     19                  xios(setVar_logic), xios(setVar_char) 
    1820 
    1921USE idate, ONLY : txios(date),txios(time), xios(set_timestep),xios(update_calendar) 
     
    2729                          xios(is_defined_domain_attr), xios(is_defined_domain_attr_hdl) 
    2830 
    29 USE idomaingroup_attr, ONLY : xios(set_domaingroup_attr), xios(set_domaingroup_attr_hdl),  &  
    30                               xios(get_domaingroup_attr), xios(get_domaingroup_attr_hdl), &  
    31                               xios(is_defined_domaingroup_attr), xios(is_defined_domaingroup_attr_hdl)  
    32                      
     31USE idomaingroup_attr, ONLY : xios(set_domaingroup_attr), xios(set_domaingroup_attr_hdl),  & 
     32                              xios(get_domaingroup_attr), xios(get_domaingroup_attr_hdl), & 
     33                              xios(is_defined_domaingroup_attr), xios(is_defined_domaingroup_attr_hdl) 
     34 
    3335USE ifield, ONLY : txios(field), txios(fieldgroup), xios(get_field_handle),  & 
    3436                   xios(get_fieldgroup_handle), xios(is_valid_field),        & 
    35                    xios(is_valid_fieldgroup),xios(field_is_active_id),xios(field_is_active_hdl)   
     37                   xios(is_valid_fieldgroup),xios(field_is_active_id),xios(field_is_active_hdl) 
    3638 
    3739USE ifield_attr, ONLY : xios(set_field_attr),xios(set_field_attr_hdl),    & 
    3840                        xios(get_field_attr),xios(get_field_attr_hdl), & 
    3941                        xios(is_defined_field_attr),xios(is_defined_field_attr_hdl) 
    40    
     42 
    4143USE ifieldgroup_attr, ONLY : xios(set_fieldgroup_attr), xios(set_fieldgroup_attr_hdl),  & 
    4244                             xios(get_fieldgroup_attr), xios(get_fieldgroup_attr_hdl), & 
     
    5052                        xios(get_variable_attr),xios(get_variable_attr_hdl), & 
    5153                        xios(is_defined_variable_attr),xios(is_defined_variable_attr_hdl) 
    52    
     54 
    5355USE ivariablegroup_attr, ONLY : xios(set_variablegroup_attr), xios(set_variablegroup_attr_hdl),  & 
    5456                             xios(get_variablegroup_attr), xios(get_variablegroup_attr_hdl), & 
    5557                             xios(is_defined_variablegroup_attr), xios(is_defined_variablegroup_attr_hdl) 
    56                               
    57 USE ifile, ONLY : txios(file), txios(filegroup), xios(get_file_handle),    &  
     58 
     59USE ifile, ONLY : txios(file), txios(filegroup), xios(get_file_handle),    & 
    5860                  xios(get_filegroup_handle), xios(is_valid_file), xios(is_valid_filegroup) 
    5961 
     
    6567                            xios(get_filegroup_attr), xios(get_filegroup_attr_hdl), & 
    6668                            xios(is_defined_filegroup_attr), xios(is_defined_filegroup_attr_hdl) 
    67                    
     69 
    6870USE igrid, ONLY : txios(grid), txios(gridgroup), xios(get_grid_handle),     & 
    69                   xios(get_gridgroup_handle), xios(is_valid_grid), xios(is_valid_gridgroup)  
     71                  xios(get_gridgroup_handle), xios(is_valid_grid), xios(is_valid_gridgroup) 
    7072 
    7173USE igrid_attr, ONLY : xios(set_grid_attr_hdl), xios(set_grid_attr), & 
     
    7880 
    7981USE iaxis, ONLY : txios(axis), txios(axisgroup), xios(get_axis_handle),     & 
    80                   xios(get_axisgroup_handle), xios(is_valid_axis), xios(is_valid_axisgroup)  
     82                  xios(get_axisgroup_handle), xios(is_valid_axis), xios(is_valid_axisgroup) 
    8183 
    8284USE iaxis_attr, ONLY :  xios(set_axis_attr), xios(set_axis_attr_hdl), & 
     
    9092USE ixml_tree, ONLY : xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),          & 
    9193                     xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield),                  & 
    92                      xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup),         &  
     94                     xios(add_axisgroup), xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup),         & 
    9395                     xios(add_domaingroup), xios(add_fieldgrouptofile), xios(add_variablegrouptofile),            & 
    9496                     xios(add_variablegrouptofield) 
     
    127129                    xios(get_field_handle), xios(get_fieldgroup_handle),xios(get_variable_handle),          & 
    128130                    xios(get_variablegroup_handle) 
    129 END INTERFACE xios(get_handle)  
     131END INTERFACE xios(get_handle) 
    130132 
    131133INTERFACE xios(add_child) 
     
    133135                   xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield), xios(add_axisgroup),  & 
    134136                   xios(add_filegroup), xios(add_gridgroup), xios(add_fieldgroup), xios(add_domaingroup),            & 
    135                    xios(add_fieldgrouptofile), xios(add_variablegrouptofile),xios(add_variablegrouptofield)  
     137                   xios(add_fieldgrouptofile), xios(add_variablegrouptofile),xios(add_variablegrouptofield) 
    136138END INTERFACE xios(add_child) 
    137139 
     
    145147  MODULE PROCEDURE xios(field_is_active_id),xios(field_is_active_hdl) 
    146148END INTERFACE 
    147    
     149 
     150INTERFACE xios(getVar) 
     151  MODULE PROCEDURE xios(getVar_k8), xios(getVar_k4), xios(getVar_int), xios(getVar_logic), xios(getVar_char) 
     152END INTERFACE xios(getVar) 
     153 
     154INTERFACE xios(setVar) 
     155  MODULE PROCEDURE xios(setVar_k8), xios(setVar_k4), xios(setVar_int), xios(setVar_logic), xios(setVar_char) 
     156END INTERFACE xios(setVar) 
     157 
    148158 PUBLIC :: txios(domain), txios(domaingroup),txios(field), txios(fieldgroup),txios(file), txios(filegroup), & 
    149           txios(grid), txios(gridgroup), txios(axis), txios(axisgroup),txios(context), txios(date),txios(time)   
     159          txios(grid), txios(gridgroup), txios(axis), txios(axisgroup),txios(context), txios(date),txios(time) 
    150160 
    151161 PUBLIC :: xios(set_attr), xios(set_domain_attr), xios(set_domaingroup_attr), xios(set_fieldgroup_attr), & 
     
    164174          xios(is_defined_axisgroup_attr), xios(is_defined_context_attr) 
    165175 
    166  PUBLIC :: xios(get_handle)  
    167  PUBLIC :: xios(add_child)  
     176 PUBLIC :: xios(get_handle) 
     177 PUBLIC :: xios(add_child) 
    168178 
    169179 PUBLIC :: xios(is_valid_context),xios(is_valid_domain), xios(is_valid_domaingroup),xios(is_valid_field),        & 
    170180          xios(is_valid_fieldgroup), xios(is_valid_file), xios(is_valid_filegroup), xios(is_valid_grid),         & 
    171181          xios(is_valid_gridgroup), xios(is_valid_axis), xios(is_valid_axisgroup) 
    172            
    173  PUBLIC :: xios(set_current_context)   
     182 
     183 PUBLIC :: xios(set_current_context) 
    174184 PUBLIC :: xios(set_timestep),xios(update_calendar) 
    175185 PUBLIC :: xios(initialize), xios(init_server), xios(finalize), xios(context_initialize),xios(context_is_initialized), & 
     
    177187           xios(field_is_active) 
    178188 
     189 PUBLIC :: xios(getVar) 
     190 PUBLIC :: xios(setVar) 
     191 
    179192END MODULE XIOS 
Note: See TracChangeset for help on using the changeset viewer.