Changeset 961


Ignore:
Timestamp:
10/04/16 18:59:37 (5 years ago)
Author:
mhnguyen
Message:

Fortran interface: Receiving scalar value

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

Legend:

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

    r932 r961  
    698698   // ---------------------- Lecture des données ------------------------------ 
    699699 
     700   void cxios_read_data_k80(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize) 
     701   { 
     702      std::string fieldid_str; 
     703      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     704 
     705      CTimer::get("XIOS").resume(); 
     706      CTimer::get("XIOS recv field").resume(); 
     707 
     708      CContext* context = CContext::getCurrent(); 
     709      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     710        context->checkBuffersAndListen(); 
     711 
     712      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData); 
     713      CField::get(fieldid_str)->getData(data); 
     714 
     715      CTimer::get("XIOS recv field").suspend(); 
     716      CTimer::get("XIOS").suspend(); 
     717   } 
     718 
    700719   void cxios_read_data_k81(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize) 
    701720   { 
     
    840859   } 
    841860 
     861   void cxios_read_data_k40(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize) 
     862   { 
     863      std::string fieldid_str; 
     864      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     865 
     866      CTimer::get("XIOS").resume(); 
     867      CTimer::get("XIOS recv field").resume(); 
     868 
     869      CContext* context = CContext::getCurrent(); 
     870      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     871        context->checkBuffersAndListen(); 
     872 
     873      CArray<double, 1> data(data_Xsize); 
     874      CField::get(fieldid_str)->getData(data); 
     875      CArray<float, 1> data_tmp(data_k4, shape(data_Xsize), neverDeleteData); 
     876      data_tmp = data; 
     877 
     878      CTimer::get("XIOS recv field").suspend(); 
     879      CTimer::get("XIOS").suspend(); 
     880   } 
     881 
    842882   void cxios_read_data_k41(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize) 
    843883   { 
  • XIOS/trunk/src/interface/fortran/idata.F90

    r932 r961  
    206206 
    207207      ! Read data 
     208      SUBROUTINE cxios_read_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C) 
     209         USE ISO_C_BINDING 
     210         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     211         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8 
     212         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     213         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     214      END SUBROUTINE cxios_read_data_k80 
     215 
    208216      SUBROUTINE cxios_read_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C) 
    209217         USE ISO_C_BINDING 
     
    275283         INTEGER  (kind = C_INT)   , VALUE        :: data_6size 
    276284      END SUBROUTINE cxios_read_data_k87 
     285 
     286      SUBROUTINE cxios_read_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C) 
     287         USE ISO_C_BINDING 
     288         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     289         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4 
     290         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     291         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     292      END SUBROUTINE cxios_read_data_k40 
    277293 
    278294      SUBROUTINE cxios_read_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C) 
     
    640656 
    641657   ! Receive field functions 
     658   SUBROUTINE xios(recv_field_r8_0d)(fieldid, data1d_k8) 
     659   IMPLICIT NONE 
     660      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     661      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data1d_k8(:) 
     662      CALL cxios_read_data_k80(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1)) 
     663   END SUBROUTINE xios(recv_field_r8_0d) 
     664 
    642665   SUBROUTINE xios(recv_field_r8_1d)(fieldid, data1d_k8) 
    643666   IMPLICIT NONE 
     
    698721   END SUBROUTINE  xios(recv_field_r8_7d) 
    699722 
     723   SUBROUTINE xios(recv_field_r4_0d)(fieldid, data0d_k4) 
     724   IMPLICIT NONE 
     725      CHARACTER(len = *)               , INTENT(IN) :: fieldid 
     726      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data0d_k4(:) 
     727      CALL cxios_read_data_k40(fieldid, len(fieldid), data0d_k4, size(data0d_k4, 1)) 
     728   END SUBROUTINE xios(recv_field_r4_0d) 
     729 
    700730   SUBROUTINE xios(recv_field_r4_1d)(fieldid, data1d_k4) 
    701731   IMPLICIT NONE 
  • XIOS/trunk/src/interface/fortran/ixios_interfaces.F90

    r943 r961  
    1111                  xios(send_field_r4_0d), xios(send_field_r4_1d), xios(send_field_r4_2d), xios(send_field_r4_3d), & 
    1212                  xios(send_field_r4_4d), xios(send_field_r4_5d), xios(send_field_r4_6d), xios(send_field_r4_7d), & 
    13                   xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d),                        & 
     13                  xios(recv_field_r8_0d), xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d), & 
    1414                  xios(recv_field_r8_4d), xios(recv_field_r8_5d), xios(recv_field_r8_6d), xios(recv_field_r8_7d), & 
    15                   xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d),                        & 
     15                  xios(recv_field_r4_0d), xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d), & 
    1616                  xios(recv_field_r4_4d), xios(recv_field_r4_5d), xios(recv_field_r4_6d), xios(recv_field_r4_7d), & 
    1717                  xios(getVar_k8), xios(getVar_k4), xios(getVar_int), xios(getVar_logic), xios(getVar_char),      & 
     
    187187 
    188188INTERFACE xios(recv_field) 
    189   MODULE PROCEDURE xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d), & 
     189  MODULE PROCEDURE xios(recv_field_r8_0d), xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d), & 
    190190                   xios(recv_field_r8_4d), xios(recv_field_r8_5d), xios(recv_field_r8_6d), xios(recv_field_r8_7d), & 
    191                    xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d), & 
     191                   xios(recv_field_r4_0d), xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d), & 
    192192                   xios(recv_field_r4_4d), xios(recv_field_r4_5d), xios(recv_field_r4_6d), xios(recv_field_r4_7d) 
    193193END INTERFACE xios(recv_field) 
Note: See TracChangeset for help on using the changeset viewer.