Ignore:
Timestamp:
05/26/15 16:13:45 (7 years ago)
Author:
rlacroix
Message:

Add a new interface xios_recv_field to get local instant data from a field.

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

Legend:

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

    r587 r593  
    113113         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize 
    114114      END SUBROUTINE cxios_write_data_k43 
     115 
     116      SUBROUTINE cxios_read_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C) 
     117         USE ISO_C_BINDING 
     118         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     119         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8 
     120         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     121         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     122      END SUBROUTINE cxios_read_data_k81 
     123 
     124      SUBROUTINE cxios_read_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C) 
     125         USE ISO_C_BINDING 
     126         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     127         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8 
     128         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     129         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize 
     130      END SUBROUTINE cxios_read_data_k82 
     131 
     132      SUBROUTINE cxios_read_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C) 
     133         USE ISO_C_BINDING 
     134         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     135         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8 
     136         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     137         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize 
     138      END SUBROUTINE cxios_read_data_k83 
     139 
     140      SUBROUTINE cxios_read_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C) 
     141         USE ISO_C_BINDING 
     142         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     143         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4 
     144         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     145         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     146      END SUBROUTINE cxios_read_data_k41 
     147 
     148      SUBROUTINE cxios_read_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C) 
     149         USE ISO_C_BINDING 
     150         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     151         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4 
     152         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     153         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize 
     154      END SUBROUTINE cxios_read_data_k42 
     155 
     156      SUBROUTINE cxios_read_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C) 
     157         USE ISO_C_BINDING 
     158         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     159         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4 
     160         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     161         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize 
     162      END SUBROUTINE cxios_read_data_k43 
    115163 
    116164      ! Binding C and Fortran interface of get_variable (icdata.cpp) 
     
    276324   END SUBROUTINE xios(solve_inheritance) 
    277325 
    278  
     326   ! Send field functions 
    279327   SUBROUTINE xios(send_scalar_r8)(fieldid, data_k8) 
    280328   IMPLICIT NONE 
     
    335383   END SUBROUTINE xios(send_field_r4_3d) 
    336384 
     385   ! Receive field functions 
     386   SUBROUTINE xios(recv_field_r8_1d)(fieldid, data1d_k8) 
     387   IMPLICIT NONE 
     388      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     389      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data1d_k8(:) 
     390      CALL cxios_read_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1)) 
     391   END SUBROUTINE xios(recv_field_r8_1d) 
     392 
     393   SUBROUTINE  xios(recv_field_r8_2d)(fieldid, data2d_k8) 
     394   IMPLICIT NONE 
     395      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     396      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data2d_k8(:,:) 
     397      CALL cxios_read_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2)) 
     398   END SUBROUTINE  xios(recv_field_r8_2d) 
     399 
     400   SUBROUTINE  xios(recv_field_r8_3d)(fieldid, data3d_k8) 
     401   IMPLICIT NONE 
     402      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     403      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data3d_k8(:,:,:) 
     404      CALL cxios_read_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3)) 
     405   END SUBROUTINE  xios(recv_field_r8_3d) 
     406 
     407   SUBROUTINE xios(recv_field_r4_1d)(fieldid, data1d_k4) 
     408   IMPLICIT NONE 
     409      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     410      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data1d_k4(:) 
     411      CALL cxios_read_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1)) 
     412   END SUBROUTINE xios(recv_field_r4_1d) 
     413 
     414   SUBROUTINE xios(recv_field_r4_2d)(fieldid, data2d_k4) 
     415   IMPLICIT NONE 
     416      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     417      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data2d_k4(:,:) 
     418      CALL cxios_read_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2)) 
     419   END SUBROUTINE xios(recv_field_r4_2d) 
     420 
     421   SUBROUTINE xios(recv_field_r4_3d)(fieldid, data3d_k4) 
     422   IMPLICIT NONE 
     423      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     424      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data3d_k4(:,:,:) 
     425      CALL cxios_read_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3)) 
     426   END SUBROUTINE xios(recv_field_r4_3d) 
     427 
    337428   ! Get variable functions 
    338429   LOGICAL FUNCTION xios(getVar_k8)(varId, data_k8) 
  • XIOS/trunk/src/interface/fortran/ixios.F90

    r587 r593  
    6767USE iaxisgroup_attr, ONLY : xios(set_axisgroup_attr), xios(get_axisgroup_attr), xios(is_defined_axisgroup_attr) 
    6868 
    69 USE XIOS_INTERFACES, ONLY : xios(set_attr), xios(get_attr), xios(is_defined_attr), xios(get_handle), & 
    70                             xios(add_child), xios(send_field), xios(send_scalar), xios(field_is_active), xios(getVar), xios(setVar) 
     69USE XIOS_INTERFACES, ONLY : xios(set_attr), xios(get_attr), xios(is_defined_attr), xios(get_handle), xios(add_child), & 
     70                            xios(send_field), xios(send_scalar), xios(recv_field), xios(field_is_active), xios(getVar), xios(setVar) 
    7171 
    7272END MODULE XIOS 
  • XIOS/trunk/src/interface/fortran/ixios_interfaces.F90

    r587 r593  
    77USE icontext_attr, ONLY : xios(set_context_attr_hdl), xios(get_context_attr_hdl), xios(is_defined_context_attr_hdl) 
    88 
    9 USE idata, ONLY : xios(send_scalar_r8), xios(send_field_r8_1d), xios(send_field_r8_2d), xios(send_field_r8_3d),                    & 
    10                   xios(send_scalar_r4), xios(send_field_r4_1d), xios(send_field_r4_2d), xios(send_field_r4_3d),                    & 
    11                   xios(getVar_k8), xios(getVar_k4), xios(getVar_int), xios(getVar_logic), xios(getVar_char), & 
     9USE idata, ONLY : xios(send_scalar_r8), xios(send_field_r8_1d), xios(send_field_r8_2d), xios(send_field_r8_3d), & 
     10                  xios(send_scalar_r4), xios(send_field_r4_1d), xios(send_field_r4_2d), xios(send_field_r4_3d), & 
     11                  xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d),                       & 
     12                  xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d),                       & 
     13                  xios(getVar_k8), xios(getVar_k4), xios(getVar_int), xios(getVar_logic), xios(getVar_char),    & 
    1214                  xios(setVar_k8), xios(setVar_k4), xios(setVar_int), xios(setVar_logic), xios(setVar_char) 
    1315 
     
    9698END INTERFACE xios(add_child) 
    9799 
    98  
    99100INTERFACE xios(send_field) 
    100101  MODULE PROCEDURE xios(send_field_r8_1d), xios(send_field_r8_2d), xios(send_field_r8_3d), & 
     
    105106  MODULE PROCEDURE xios(send_scalar_r8), xios(send_scalar_r4) 
    106107END INTERFACE xios(send_scalar) 
     108 
     109INTERFACE xios(recv_field) 
     110  MODULE PROCEDURE xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d), & 
     111                   xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d) 
     112END INTERFACE xios(recv_field) 
    107113 
    108114INTERFACE xios(field_is_active) 
     
    118124END INTERFACE xios(setVar) 
    119125 
    120 PUBLIC :: xios(set_attr), xios(get_attr), xios(is_defined_attr), xios(get_handle), & 
    121           xios(add_child), xios(send_field), xios(field_is_active), xios(getVar), xios(setVar), xios(send_scalar) 
     126PUBLIC :: xios(set_attr), xios(get_attr), xios(is_defined_attr), xios(get_handle), xios(add_child), & 
     127          xios(send_scalar), xios(send_field), xios(recv_field), xios(field_is_active), xios(getVar), xios(setVar) 
    122128 
    123129END MODULE XIOS_INTERFACES 
Note: See TracChangeset for help on using the changeset viewer.