Ignore:
Timestamp:
04/01/15 17:53:02 (9 years ago)
Author:
mhnguyen
Message:

Fixing some bugs on writting non-distributed data

+) Implement scalar grid: Allow to send scalar real data
+) Modify the way to compute the mapping of buffer size from one client to a server
+) Fix a bug of writting axis on one_file mode
+) Make some changes in test_new_features.f90 and test_complete.f90

Test
+) On Curie,
+) test_client and test_complete pass and results are correct

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

Legend:

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

    r576 r586  
    365365   // ---------------------- Ecriture des données ------------------------------ 
    366366 
    367    void cxios_write_data_k81(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize) 
     367   void cxios_write_data_k80(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize) 
    368368   { 
    369369      std::string fieldid_str; 
     
    380380   } 
    381381 
    382    void cxios_write_data_k82(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize) 
    383    { 
    384       std::string fieldid_str; 
    385       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    386  
    387       CTimer::get("XIOS").resume() ; 
    388       CTimer::get("XIOS send field").resume() ; 
    389       CContext* context = CContext::getCurrent() ; 
    390       if (!context->hasServer) context->client->checkBuffers() ; 
    391  
    392       CArray<double,2>data(data_k8,shape(data_Xsize,data_Ysize),neverDeleteData) ; 
    393       CField::get(fieldid_str)->setData(data) ; 
    394       CTimer::get("XIOS send field").suspend() ; 
    395       CTimer::get("XIOS").suspend() ; 
    396    } 
    397  
    398    void cxios_write_data_k83(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize, int data_Zsize) 
    399    { 
    400       std::string fieldid_str; 
    401       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
    402  
    403       CTimer::get("XIOS").resume() ; 
    404       CTimer::get("XIOS send field").resume() ; 
    405       CContext* context = CContext::getCurrent() ; 
    406       if (!context->hasServer) context->client->checkBuffers() ; 
    407  
    408       CArray<double,3>data(data_k8,shape(data_Xsize,data_Ysize,data_Zsize),neverDeleteData) ; 
    409       CField::get(fieldid_str)->setData(data) ; 
    410       CTimer::get("XIOS send field").suspend() ; 
    411       CTimer::get("XIOS").suspend() ; 
    412    } 
    413  
    414    void cxios_write_data_k41(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize) 
     382   void cxios_write_data_k40(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize) 
    415383   { 
    416384      std::string fieldid_str; 
     
    430398   } 
    431399 
     400   void cxios_write_data_k81(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize) 
     401   { 
     402      std::string fieldid_str; 
     403      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     404 
     405      CTimer::get("XIOS").resume() ; 
     406      CTimer::get("XIOS send field").resume() ; 
     407      CContext* context = CContext::getCurrent() ; 
     408      if (!context->hasServer) context->client->checkBuffers() ; 
     409      CArray<double,(StdSize)1> data(data_k8,shape(data_Xsize),neverDeleteData) ; 
     410      CField::get(fieldid_str)->setData(data) ; 
     411      CTimer::get("XIOS send field").suspend() ; 
     412      CTimer::get("XIOS").suspend() ; 
     413   } 
     414 
     415   void cxios_write_data_k82(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize) 
     416   { 
     417      std::string fieldid_str; 
     418      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     419 
     420      CTimer::get("XIOS").resume() ; 
     421      CTimer::get("XIOS send field").resume() ; 
     422      CContext* context = CContext::getCurrent() ; 
     423      if (!context->hasServer) context->client->checkBuffers() ; 
     424 
     425      CArray<double,2>data(data_k8,shape(data_Xsize,data_Ysize),neverDeleteData) ; 
     426      CField::get(fieldid_str)->setData(data) ; 
     427      CTimer::get("XIOS send field").suspend() ; 
     428      CTimer::get("XIOS").suspend() ; 
     429   } 
     430 
     431   void cxios_write_data_k83(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize, int data_Zsize) 
     432   { 
     433      std::string fieldid_str; 
     434      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     435 
     436      CTimer::get("XIOS").resume() ; 
     437      CTimer::get("XIOS send field").resume() ; 
     438      CContext* context = CContext::getCurrent() ; 
     439      if (!context->hasServer) context->client->checkBuffers() ; 
     440 
     441      CArray<double,3>data(data_k8,shape(data_Xsize,data_Ysize,data_Zsize),neverDeleteData) ; 
     442      CField::get(fieldid_str)->setData(data) ; 
     443      CTimer::get("XIOS send field").suspend() ; 
     444      CTimer::get("XIOS").suspend() ; 
     445   } 
     446 
     447   void cxios_write_data_k41(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize) 
     448   { 
     449      std::string fieldid_str; 
     450     if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     451 
     452      CTimer::get("XIOS").resume() ; 
     453      CTimer::get("XIOS send field").resume() ; 
     454      CContext* context = CContext::getCurrent() ; 
     455      if (!context->hasServer) context->client->checkBuffers() ; 
     456 
     457      CArray<float,1> data_tmp(data_k4,shape(data_Xsize),neverDeleteData) ; 
     458      CArray<double,1> data(data_Xsize) ; 
     459      data=data_tmp ; 
     460      CField::get(fieldid_str)->setData(data) ; 
     461      CTimer::get("XIOS send field").suspend() ; 
     462      CTimer::get("XIOS").suspend() ; 
     463   } 
     464 
    432465   void cxios_write_data_k42(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize) 
    433466   { 
  • XIOS/trunk/src/interface/fortran/idata.F90

    r501 r586  
    4848      SUBROUTINE  cxios_solve_inheritance() BIND(C) 
    4949      END SUBROUTINE cxios_solve_inheritance 
     50 
     51      SUBROUTINE cxios_write_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C) 
     52         USE ISO_C_BINDING 
     53         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     54         REAL     (kind = C_DOUBLE)               :: data_k8 
     55         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     56         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     57      END SUBROUTINE cxios_write_data_k80 
     58 
     59      SUBROUTINE cxios_write_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C) 
     60         USE ISO_C_BINDING 
     61         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid 
     62         REAL     (kind = C_FLOAT)                :: data_k4 
     63         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size 
     64         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize 
     65      END SUBROUTINE cxios_write_data_k40 
    5066 
    5167 
     
    261277 
    262278 
     279   SUBROUTINE xios(send_field_r8)(fieldid, data_k8) 
     280   IMPLICIT NONE 
     281      CHARACTER(len = *) , INTENT(IN) :: fieldid 
     282      REAL     (kind = 8), INTENT(IN) :: data_k8 
     283      CALL cxios_write_data_k80(fieldid, len(fieldid), data_k8, 1) 
     284   END SUBROUTINE xios(send_field_r8) 
     285 
     286   SUBROUTINE xios(send_field_r4)(fieldid, data_k4) 
     287   IMPLICIT NONE 
     288      CHARACTER(len = *) , INTENT(IN) :: fieldid 
     289      REAL     (kind = 4), INTENT(IN) :: data_k4 
     290      CALL cxios_write_data_k40(fieldid, len(fieldid), data_k4, 1) 
     291   END SUBROUTINE xios(send_field_r4) 
     292 
     293 
     294 
    263295   SUBROUTINE xios(send_field_r8_1d)(fieldid, data1d_k8) 
    264296   IMPLICIT NONE 
  • XIOS/trunk/src/interface/fortran/ixios.F90

    • Property svn:executable set to *
    r576 r586  
    1111 
    1212USE icontext_attr, ONLY : xios(set_context_attr), xios(get_context_attr), xios(is_defined_context_attr) 
     13                  xios(setVar_logic), xios(setVar_char), xios(send_field_r8), xios(send_field_r4) 
    1314 
    1415USE idata, ONLY : xios(initialize), xios(init_server), xios(finalize), xios(context_initialize), xios(context_is_initialized), & 
     
    3839 
    3940USE ifield, ONLY : txios(field), txios(fieldgroup), xios(is_valid_field), xios(is_valid_fieldgroup) 
     41                    xios(send_field_r4_1d), xios(send_field_r4_2d), xios(send_field_r4_3d),              & 
     42                    xios(send_field_r8), xios(send_field_r4) 
    4043 
    4144USE ifield_attr, ONLY : xios(set_field_attr), xios(get_field_attr), xios(is_defined_field_attr) 
Note: See TracChangeset for help on using the changeset viewer.