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

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

File:
1 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) 
Note: See TracChangeset for help on using the changeset viewer.