Ignore:
Timestamp:
09/21/16 14:35:03 (8 years ago)
Author:
mhnguyen
Message:

Adding Fortran interface for high-dimension grid (up to 7)

+) Add check mask for high-dimension grid
+) Add Fortran interface for send_field, recv_field

Test
+) On Curie
+) Work

File:
1 edited

Legend:

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

    r704 r932  
    438438   } 
    439439 
     440   void cxios_write_data_k84(const char* fieldid, int fieldid_size, double* data_k8, int data_0size, int data_1size, int data_2size, int data_3size) 
     441   { 
     442      std::string fieldid_str; 
     443      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     444 
     445      CTimer::get("XIOS").resume(); 
     446      CTimer::get("XIOS send field").resume(); 
     447 
     448      CContext* context = CContext::getCurrent(); 
     449      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     450        context->checkBuffersAndListen(); 
     451 
     452      CArray<double, 4>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData); 
     453      CField::get(fieldid_str)->setData(data); 
     454 
     455      CTimer::get("XIOS send field").suspend(); 
     456      CTimer::get("XIOS").suspend(); 
     457   } 
     458 
     459   void cxios_write_data_k85(const char* fieldid, int fieldid_size, double* data_k8, 
     460                             int data_0size, int data_1size, int data_2size, 
     461                             int data_3size, int data_4size) 
     462   { 
     463      std::string fieldid_str; 
     464      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     465 
     466      CTimer::get("XIOS").resume(); 
     467      CTimer::get("XIOS send field").resume(); 
     468 
     469      CContext* context = CContext::getCurrent(); 
     470      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     471        context->checkBuffersAndListen(); 
     472 
     473      CArray<double, 5>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData); 
     474      CField::get(fieldid_str)->setData(data); 
     475 
     476      CTimer::get("XIOS send field").suspend(); 
     477      CTimer::get("XIOS").suspend(); 
     478   } 
     479 
     480   void cxios_write_data_k86(const char* fieldid, int fieldid_size, double* data_k8, 
     481                             int data_0size, int data_1size, int data_2size, 
     482                             int data_3size, int data_4size, int data_5size) 
     483   { 
     484      std::string fieldid_str; 
     485      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     486 
     487      CTimer::get("XIOS").resume(); 
     488      CTimer::get("XIOS send field").resume(); 
     489 
     490      CContext* context = CContext::getCurrent(); 
     491      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     492        context->checkBuffersAndListen(); 
     493 
     494      CArray<double, 6>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData); 
     495      CField::get(fieldid_str)->setData(data); 
     496 
     497      CTimer::get("XIOS send field").suspend(); 
     498      CTimer::get("XIOS").suspend(); 
     499   } 
     500 
     501   void cxios_write_data_k87(const char* fieldid, int fieldid_size, double* data_k8, 
     502                             int data_0size, int data_1size, int data_2size, 
     503                             int data_3size, int data_4size, int data_5size, 
     504                             int data_6size) 
     505   { 
     506      std::string fieldid_str; 
     507      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     508 
     509      CTimer::get("XIOS").resume(); 
     510      CTimer::get("XIOS send field").resume(); 
     511 
     512      CContext* context = CContext::getCurrent(); 
     513      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     514        context->checkBuffersAndListen(); 
     515 
     516      CArray<double, 7>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData); 
     517      CField::get(fieldid_str)->setData(data); 
     518 
     519      CTimer::get("XIOS send field").suspend(); 
     520      CTimer::get("XIOS").suspend(); 
     521   } 
     522 
    440523   void cxios_write_data_k40(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize) 
    441524   { 
     
    520603    } 
    521604 
     605   void cxios_write_data_k44(const char* fieldid, int fieldid_size, float* data_k4, 
     606                             int data_0size, int data_1size, int data_2size, 
     607                             int data_3size) 
     608   { 
     609      std::string fieldid_str; 
     610      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     611 
     612      CTimer::get("XIOS").resume(); 
     613      CTimer::get("XIOS send field").resume(); 
     614 
     615      CContext* context = CContext::getCurrent(); 
     616      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     617        context->checkBuffersAndListen(); 
     618 
     619      CArray<float, 4> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData); 
     620      CArray<double, 4> data(data_0size, data_1size, data_2size, data_3size); 
     621      data = data_tmp; 
     622      CField::get(fieldid_str)->setData(data); 
     623 
     624      CTimer::get("XIOS send field").suspend(); 
     625      CTimer::get("XIOS").suspend(); 
     626    } 
     627 
     628   void cxios_write_data_k45(const char* fieldid, int fieldid_size, float* data_k4, 
     629                             int data_0size, int data_1size, int data_2size, 
     630                             int data_3size, int data_4size) 
     631   { 
     632      std::string fieldid_str; 
     633      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     634 
     635      CTimer::get("XIOS").resume(); 
     636      CTimer::get("XIOS send field").resume(); 
     637 
     638      CContext* context = CContext::getCurrent(); 
     639      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     640        context->checkBuffersAndListen(); 
     641 
     642      CArray<float, 5> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData); 
     643      CArray<double, 5> data(data_0size, data_1size, data_2size, data_3size, data_4size); 
     644      data = data_tmp; 
     645      CField::get(fieldid_str)->setData(data); 
     646 
     647      CTimer::get("XIOS send field").suspend(); 
     648      CTimer::get("XIOS").suspend(); 
     649    } 
     650 
     651   void cxios_write_data_k46(const char* fieldid, int fieldid_size, float* data_k4, 
     652                             int data_0size, int data_1size, int data_2size, 
     653                             int data_3size, int data_4size, int data_5size) 
     654   { 
     655      std::string fieldid_str; 
     656      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     657 
     658      CTimer::get("XIOS").resume(); 
     659      CTimer::get("XIOS send field").resume(); 
     660 
     661      CContext* context = CContext::getCurrent(); 
     662      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     663        context->checkBuffersAndListen(); 
     664 
     665      CArray<float, 6> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData); 
     666      CArray<double, 6> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size); 
     667      data = data_tmp; 
     668      CField::get(fieldid_str)->setData(data); 
     669 
     670      CTimer::get("XIOS send field").suspend(); 
     671      CTimer::get("XIOS").suspend(); 
     672    } 
     673 
     674   void cxios_write_data_k47(const char* fieldid, int fieldid_size, float* data_k4, 
     675                             int data_0size, int data_1size, int data_2size, 
     676                             int data_3size, int data_4size, int data_5size, 
     677                             int data_6size) 
     678   { 
     679      std::string fieldid_str; 
     680      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     681 
     682      CTimer::get("XIOS").resume(); 
     683      CTimer::get("XIOS send field").resume(); 
     684 
     685      CContext* context = CContext::getCurrent(); 
     686      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     687        context->checkBuffersAndListen(); 
     688 
     689      CArray<float, 7> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData); 
     690      CArray<double, 7> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size); 
     691      data = data_tmp; 
     692      CField::get(fieldid_str)->setData(data); 
     693 
     694      CTimer::get("XIOS send field").suspend(); 
     695      CTimer::get("XIOS").suspend(); 
     696    } 
     697 
    522698   // ---------------------- Lecture des données ------------------------------ 
    523699 
     
    573749 
    574750      CArray<double, 3>data(data_k8, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData); 
     751      CField::get(fieldid_str)->getData(data); 
     752 
     753      CTimer::get("XIOS recv field").suspend(); 
     754      CTimer::get("XIOS").suspend(); 
     755   } 
     756 
     757   void cxios_read_data_k84(const char* fieldid, int fieldid_size, double* data_k8, 
     758                            int data_0size, int data_1size, int data_2size, 
     759                            int data_3size) 
     760   { 
     761      std::string fieldid_str; 
     762      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     763 
     764      CTimer::get("XIOS").resume(); 
     765      CTimer::get("XIOS recv field").resume(); 
     766 
     767      CContext* context = CContext::getCurrent(); 
     768      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     769        context->checkBuffersAndListen(); 
     770 
     771      CArray<double, 4>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData); 
     772      CField::get(fieldid_str)->getData(data); 
     773 
     774      CTimer::get("XIOS recv field").suspend(); 
     775      CTimer::get("XIOS").suspend(); 
     776   } 
     777 
     778   void cxios_read_data_k85(const char* fieldid, int fieldid_size, double* data_k8, 
     779                            int data_0size, int data_1size, int data_2size, 
     780                            int data_3size, int data_4size) 
     781   { 
     782      std::string fieldid_str; 
     783      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     784 
     785      CTimer::get("XIOS").resume(); 
     786      CTimer::get("XIOS recv field").resume(); 
     787 
     788      CContext* context = CContext::getCurrent(); 
     789      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     790        context->checkBuffersAndListen(); 
     791 
     792      CArray<double, 5>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData); 
     793      CField::get(fieldid_str)->getData(data); 
     794 
     795      CTimer::get("XIOS recv field").suspend(); 
     796      CTimer::get("XIOS").suspend(); 
     797   } 
     798 
     799   void cxios_read_data_k86(const char* fieldid, int fieldid_size, double* data_k8, 
     800                            int data_0size, int data_1size, int data_2size, 
     801                            int data_3size, int data_4size, int data_5size) 
     802   { 
     803      std::string fieldid_str; 
     804      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     805 
     806      CTimer::get("XIOS").resume(); 
     807      CTimer::get("XIOS recv field").resume(); 
     808 
     809      CContext* context = CContext::getCurrent(); 
     810      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     811        context->checkBuffersAndListen(); 
     812 
     813      CArray<double, 6>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData); 
     814      CField::get(fieldid_str)->getData(data); 
     815 
     816      CTimer::get("XIOS recv field").suspend(); 
     817      CTimer::get("XIOS").suspend(); 
     818   } 
     819 
     820   void cxios_read_data_k87(const char* fieldid, int fieldid_size, double* data_k8, 
     821                            int data_0size, int data_1size, int data_2size, 
     822                            int data_3size, int data_4size, int data_5size, 
     823                            int data_6size) 
     824   { 
     825      std::string fieldid_str; 
     826      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     827 
     828      CTimer::get("XIOS").resume(); 
     829      CTimer::get("XIOS recv field").resume(); 
     830 
     831      CContext* context = CContext::getCurrent(); 
     832      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     833        context->checkBuffersAndListen(); 
     834 
     835      CArray<double, 7>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData); 
    575836      CField::get(fieldid_str)->getData(data); 
    576837 
     
    641902      CTimer::get("XIOS").suspend(); 
    642903    } 
     904 
     905   void cxios_read_data_k44(const char* fieldid, int fieldid_size, float* data_k4, 
     906                            int data_0size, int data_1size, int data_2size, 
     907                            int data_3size) 
     908   { 
     909      std::string fieldid_str; 
     910      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     911 
     912      CTimer::get("XIOS").resume(); 
     913      CTimer::get("XIOS recv field").resume(); 
     914 
     915      CContext* context = CContext::getCurrent(); 
     916      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     917        context->checkBuffersAndListen(); 
     918 
     919      CArray<double, 4> data(data_0size, data_1size, data_2size, data_3size); 
     920      CField::get(fieldid_str)->getData(data); 
     921      CArray<float, 4> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData); 
     922      data_tmp = data; 
     923 
     924      CTimer::get("XIOS recv field").suspend(); 
     925      CTimer::get("XIOS").suspend(); 
     926    } 
     927 
     928   void cxios_read_data_k45(const char* fieldid, int fieldid_size, float* data_k4, 
     929                            int data_0size, int data_1size, int data_2size, 
     930                            int data_3size, int data_4size) 
     931   { 
     932      std::string fieldid_str; 
     933      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     934 
     935      CTimer::get("XIOS").resume(); 
     936      CTimer::get("XIOS recv field").resume(); 
     937 
     938      CContext* context = CContext::getCurrent(); 
     939      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     940        context->checkBuffersAndListen(); 
     941 
     942      CArray<double, 5> data(data_0size, data_1size, data_2size, data_3size, data_4size); 
     943      CField::get(fieldid_str)->getData(data); 
     944      CArray<float, 5> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData); 
     945      data_tmp = data; 
     946 
     947      CTimer::get("XIOS recv field").suspend(); 
     948      CTimer::get("XIOS").suspend(); 
     949    } 
     950 
     951   void cxios_read_data_k46(const char* fieldid, int fieldid_size, float* data_k4, 
     952                            int data_0size, int data_1size, int data_2size, 
     953                            int data_3size, int data_4size, int data_5size) 
     954   { 
     955      std::string fieldid_str; 
     956      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     957 
     958      CTimer::get("XIOS").resume(); 
     959      CTimer::get("XIOS recv field").resume(); 
     960 
     961      CContext* context = CContext::getCurrent(); 
     962      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     963        context->checkBuffersAndListen(); 
     964 
     965      CArray<double, 6> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size); 
     966      CField::get(fieldid_str)->getData(data); 
     967      CArray<float, 6> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData); 
     968      data_tmp = data; 
     969 
     970      CTimer::get("XIOS recv field").suspend(); 
     971      CTimer::get("XIOS").suspend(); 
     972    } 
     973 
     974   void cxios_read_data_k47(const char* fieldid, int fieldid_size, float* data_k4, 
     975                            int data_0size, int data_1size, int data_2size, 
     976                            int data_3size, int data_4size, int data_5size, 
     977                            int data_6size) 
     978   { 
     979      std::string fieldid_str; 
     980      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
     981 
     982      CTimer::get("XIOS").resume(); 
     983      CTimer::get("XIOS recv field").resume(); 
     984 
     985      CContext* context = CContext::getCurrent(); 
     986      if (!context->hasServer && !context->client->isAttachedModeEnabled()) 
     987        context->checkBuffersAndListen(); 
     988 
     989      CArray<double, 7> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size); 
     990      CField::get(fieldid_str)->getData(data); 
     991      CArray<float, 7> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData); 
     992      data_tmp = data; 
     993 
     994      CTimer::get("XIOS recv field").suspend(); 
     995      CTimer::get("XIOS").suspend(); 
     996    } 
    643997} // extern "C" 
Note: See TracChangeset for help on using the changeset viewer.