source: XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/c/icdata.cpp @ 2121

Last change on this file since 2121 was 2121, checked in by ymipsl, 3 years ago

Merge fortran interface functionnalities from trunk :

  • sendField & recvField with field handle
  • getCurrentContext

YM

  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
  • Property svn:eol-style set to native
File size: 47.8 KB
RevLine 
[325]1/* ************************************************************************** *
[335]2 *      Copyright © IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
[325]3 * ************************************************************************** */
4
5#include <boost/multi_array.hpp>
[1542]6#include <memory>
[325]7#include <string>
[489]8#include <cstring>
[325]9#include <iostream>
10
11
[591]12#include "xios.hpp"
[325]13#include "oasis_cinterface.hpp"
14
[352]15#include "attribute_template.hpp"
16#include "object_template.hpp"
17#include "group_template.hpp"
[325]18
19#include "icutil.hpp"
20#include "cxios.hpp"
[342]21#include "client.hpp"
[325]22#include "field.hpp"
[352]23#include "context.hpp"
[403]24#include "context_client.hpp"
[382]25#include "mpi.hpp"
[347]26#include "timer.hpp"
[369]27#include "array_new.hpp"
[325]28
[403]29
[325]30extern "C"
31{
32// /////////////////////////////// Définitions ////////////////////////////// //
33
34   // ----------------------- Redéfinition de types ----------------------------
[489]35
[325]36   typedef enum { NETCDF4 = 0 } XFileType;
[489]37
[593]38   typedef xios::CContext* XContextPtr;
[325]39
40   // -------------------- Traitement des données ------------------------------
[576]41
42   // This function is not exported to the public Fortran interface,
43   // it is only used from the parse_xml.exe standalone test tool.
44   void cxios_init(void)
[1622]45   TRY
[576]46   {
47     CXios::initialize();
48   }
[1622]49   CATCH_DUMP_STACK
[576]50
[1054]51   void cxios_init_server(void)
[1622]52   TRY
[325]53   {
[1054]54     CXios::initServerSide();
[325]55   }
[1622]56   CATCH_DUMP_STACK
[325]57
[593]58   void cxios_init_client(const char* client_id , int len_client_id, MPI_Fint* f_local_comm, MPI_Fint* f_return_comm )
[1622]59   TRY
[325]60   {
[489]61      std::string str;
[1639]62      MPI_Comm local_comm;
63      MPI_Comm return_comm;
[489]64
[325]65      if (!cstr2string(client_id, len_client_id, str)) return;
[347]66
[1753]67      CTimer::get("XIOS").resume();
68      CTimer::get("XIOS init").resume();
[593]69      int initialized;
[1639]70      MPI_Initialized(&initialized);
[593]71      if (initialized) local_comm=MPI_Comm_f2c(*f_local_comm);
72      else local_comm=MPI_COMM_NULL;
73      CXios::initClientSide(str, local_comm, return_comm);
74      *f_return_comm=MPI_Comm_c2f(return_comm);
75      CTimer::get("XIOS init").suspend();
76      CTimer::get("XIOS").suspend();
[325]77   }
[1622]78   CATCH_DUMP_STACK
[325]79
[593]80   void cxios_context_initialize(const char* context_id , int len_context_id, MPI_Fint* f_comm)
[1622]81   TRY
[325]82   {
[489]83     std::string str;
[1639]84     MPI_Comm comm;
[489]85
[325]86     if (!cstr2string(context_id, len_context_id, str)) return;
[593]87     CTimer::get("XIOS").resume();
88     CTimer::get("XIOS init context").resume();
89     comm=MPI_Comm_f2c(*f_comm);
90     CClient::registerContext(str, comm);
91     CTimer::get("XIOS init context").suspend();
92     CTimer::get("XIOS").suspend();
[325]93   }
[1622]94   CATCH_DUMP_STACK
[489]95
[1587]96   void cxios_oasis_enddef()
[1622]97   TRY
[1587]98   {
99     CTimer::get("XIOS").resume();
100     CClient::callOasisEnddef();
101     CTimer::get("XIOS").suspend();
102   }
[1622]103   CATCH_DUMP_STACK
[1587]104
[593]105   void cxios_context_is_initialized(const char* context_id , int len_context_id, bool* initialized)
[1622]106   TRY
[461]107   {
[489]108     std::string str;
109
[461]110     if (!cstr2string(context_id, len_context_id, str)) return;
[593]111     CTimer::get("XIOS").resume();
112     CContext* context = CContext::get(str, str);
113     *initialized=context->isInitialized();
114     CTimer::get("XIOS").suspend();
[489]115   }
[1622]116   CATCH_DUMP_STACK
[489]117
[1622]118   void cxios_context_close_definition()
119   TRY
[325]120   {
[593]121     CTimer::get("XIOS").resume();
122     CTimer::get("XIOS close definition").resume();
123     CContext* context = CContext::getCurrent();
124     context->closeDefinition();
125     CTimer::get("XIOS close definition").suspend();
126     CTimer::get("XIOS").suspend();
[489]127   }
[1622]128   CATCH_DUMP_STACK
[325]129
130   void cxios_context_finalize()
[1622]131   TRY
[325]132   {
[593]133     CTimer::get("XIOS").resume();
134     CTimer::get("XIOS context finalize").resume();
135     CContext* context = CContext::getCurrent();
136     context->finalize();
137     CTimer::get("XIOS context finalize").suspend();
138     CTimer::get("XIOS").suspend();
[325]139   }
[1622]140   CATCH_DUMP_STACK
[489]141
[325]142   void cxios_finalize()
[1622]143   TRY
[325]144   {
[593]145     CTimer::get("XIOS").resume();
146     CTimer::get("XIOS finalize").resume();
147     CXios::clientFinalize();
[325]148   }
[1622]149   CATCH_DUMP_STACK
[325]150
[445]151   void cxios_solve_inheritance()
[1622]152   TRY
[445]153   {
[593]154     CTimer::get("XIOS").resume();
155     CContext* context = CContext::getCurrent();
156     context->solveAllInheritance(false);
157     CTimer::get("XIOS").suspend();
[489]158   }
[1622]159   CATCH_DUMP_STACK
[489]160
161   /*! \brief This group of functions retrieve variable information from the configuration file (.xml)
162    *
163    * These functions provide intermediate C interfaces to get variable information of the configuration file (e.x iodef.xml),
164    * from a Fortran one, for example the value of a variable with id = "using_server".
165    * Each function corresponds to each basic type.
166    * \param varId        [in] id of the variable that we'd like to get
167    * \param varIdSize    [in] size of the variable type (integer, float, double, string)
168    * \param dataInt      [in/out] the retrieved data
169    * \param isVarExisted [in/out] Verify whether variable with varId exists
170   */
[593]171   void cxios_get_variable_data_k8(const char* varId, int varIdSize, double* data, bool* isVarExisted)
[1622]172   TRY
[489]173   {
174      std::string varIdStr;
175      if (!cstr2string(varId, varIdSize, varIdStr)) return;
176
177      CTimer::get("XIOS").resume();
178      CTimer::get("XIOS get variable data").resume();
179
180      CContext* context = CContext::getCurrent();
181      *isVarExisted = CVariable::has(context->getId(), varIdStr);
182
183      if (*isVarExisted)
184      {
[593]185        *data = CVariable::get(context->getId(), varIdStr)->getData<double>();
[489]186      }
187
[593]188      CTimer::get("XIOS get variable data").suspend();
189      CTimer::get("XIOS").suspend();
[489]190   }
[1622]191   CATCH_DUMP_STACK
[489]192
[593]193   void cxios_get_variable_data_k4(const char* varId, int varIdSize, float* data, bool* isVarExisted)
[1622]194   TRY
[489]195   {
196      std::string varIdStr;
197      if (!cstr2string(varId, varIdSize, varIdStr)) return;
198
199      CTimer::get("XIOS").resume();
200      CTimer::get("XIOS get variable data").resume();
201
202      CContext* context = CContext::getCurrent();
203      *isVarExisted = CVariable::has(context->getId(), varIdStr);
204
205      if (*isVarExisted)
206      {
[593]207        *data = CVariable::get(context->getId(), varIdStr)->getData<float>();
[489]208      }
209
[593]210      CTimer::get("XIOS get variable data").suspend();
211      CTimer::get("XIOS").suspend();
[489]212   }
[1622]213   CATCH_DUMP_STACK
[489]214
[593]215   void cxios_get_variable_data_int(const char* varId, int varIdSize, int* data, bool* isVarExisted)
[1622]216   TRY
[489]217   {
218      std::string varIdStr;
219      if (!cstr2string(varId, varIdSize, varIdStr)) return;
220
221      CTimer::get("XIOS").resume();
222      CTimer::get("XIOS get variable data").resume();
223
224      CContext* context = CContext::getCurrent();
225      *isVarExisted = CVariable::has(context->getId(), varIdStr);
226
227      if (*isVarExisted)
228      {
[593]229        *data = CVariable::get(context->getId(), varIdStr)->getData<int>();
[489]230      }
231
[593]232      CTimer::get("XIOS get variable data").suspend();
233      CTimer::get("XIOS").suspend();
[489]234   }
[1622]235   CATCH_DUMP_STACK
[489]236
[593]237   void cxios_get_variable_data_logic(const char* varId, int varIdSize, bool* data, bool* isVarExisted)
[1622]238   TRY
[489]239   {
240      std::string varIdStr;
241      if (!cstr2string(varId, varIdSize, varIdStr)) return;
242
243      CTimer::get("XIOS").resume();
244      CTimer::get("XIOS get variable data").resume();
245
246      CContext* context = CContext::getCurrent();
247      *isVarExisted = CVariable::has(context->getId(), varIdStr);
248
249      if (*isVarExisted)
250      {
[593]251        *data = CVariable::get(context->getId(), varIdStr)->getData<bool>();
[489]252      }
253
[593]254      CTimer::get("XIOS get variable data").suspend();
255      CTimer::get("XIOS").suspend();
[489]256   }
[1622]257   CATCH_DUMP_STACK
[489]258
[593]259   void cxios_get_variable_data_char(const char* varId, int varIdSize, char* data, int dataSizeIn, bool* isVarExisted)
[1622]260   TRY
[489]261   {
262      std::string varIdStr;
263      if (!cstr2string(varId, varIdSize, varIdStr)) return;
264
265      CTimer::get("XIOS").resume();
266      CTimer::get("XIOS get variable data").resume();
267
268      CContext* context = CContext::getCurrent();
269      *isVarExisted = CVariable::has(context->getId(), varIdStr);
270
271      if (*isVarExisted)
272      {
[593]273        int dataSizeOut = CVariable::get(context->getId(), varIdStr)->getData<string>().length();
274        strncpy(data, CVariable::get(context->getId(), varIdStr)->getData<string>().c_str(), std::min(dataSizeIn, dataSizeOut));
[489]275      }
276
[593]277      CTimer::get("XIOS get variable data").suspend();
278      CTimer::get("XIOS").suspend();
[489]279   }
[1622]280   CATCH_DUMP_STACK
[489]281
282   /*! \brief This group of functions write information into existing variable in the configuration file (.xml)
283    *
284    *  These functions provide intermediate C interfaces to get variable information of the configuration file (e.x iodef.xml),
285    * from a Fortran one, for example the value of a variable with id = "using_server".
286    * Each function corresponds to each basic type.
287    * \param varId        [in] id of the variable that we'd like to get
288    * \param varIdSize    [in] size of the variable type (integer, float, double, string)
289    * \param data         [in] the input data
290    * \param isVarExisted [in/out] Verify whether variable with varId exists
291   */
[593]292   void cxios_set_variable_data_k8(const char* varId, int varIdSize, double data, bool* isVarExisted)
[1622]293   TRY
294  {
[489]295      std::string varIdStr;
296      if (!cstr2string(varId, varIdSize, varIdStr)) return;
297
298      CTimer::get("XIOS").resume();
299      CTimer::get("XIOS set variable data").resume();
300
[593]301      CContext* context = CContext::getCurrent();
[489]302      *isVarExisted = CVariable::has(context->getId(), varIdStr);
303
304      if (*isVarExisted)
305      {
[593]306        CVariable::get(context->getId(), varIdStr)->setData<double>(data);
307        //CVariable::get(context->getId(), varIdStr)->sendValue();
[489]308      }
309
[593]310      CTimer::get("XIOS set variable data").suspend();
311      CTimer::get("XIOS").suspend();
[489]312   }
[1622]313   CATCH_DUMP_STACK
[489]314
[593]315   void cxios_set_variable_data_k4(const char* varId, int varIdSize, float data, bool* isVarExisted)
[1622]316   TRY
[489]317   {
318      std::string varIdStr;
319      if (!cstr2string(varId, varIdSize, varIdStr)) return;
320
321      CTimer::get("XIOS").resume();
322      CTimer::get("XIOS set variable data").resume();
323
[593]324      CContext* context = CContext::getCurrent();
[489]325      *isVarExisted = CVariable::has(context->getId(), varIdStr);
326
327      if (*isVarExisted)
328      {
[593]329        CVariable::get(context->getId(), varIdStr)->setData<float>(data);
330        //CVariable::get(context->getId(), varIdStr)->sendValue();
[489]331      }
332
[593]333      CTimer::get("XIOS set variable data").suspend();
334      CTimer::get("XIOS").suspend();
[489]335   }
[1622]336   CATCH_DUMP_STACK
[489]337
[593]338   void cxios_set_variable_data_int(const char* varId, int varIdSize, int data, bool* isVarExisted)
[1622]339   TRY
[489]340   {
341      std::string varIdStr;
342      if (!cstr2string(varId, varIdSize, varIdStr)) return;
343
344      CTimer::get("XIOS").resume();
345      CTimer::get("XIOS set variable data").resume();
346
[593]347      CContext* context = CContext::getCurrent();
[489]348      *isVarExisted = CVariable::has(context->getId(), varIdStr);
349
350      if (*isVarExisted)
351      {
[593]352        CVariable::get(context->getId(), varIdStr)->setData<int>(data);
353        //CVariable::get(context->getId(), varIdStr)->sendValue();
[489]354      }
355
356
[593]357      CTimer::get("XIOS set variable data").suspend();
358      CTimer::get("XIOS").suspend();
[489]359   }
[1622]360   CATCH_DUMP_STACK
[489]361
[593]362   void cxios_set_variable_data_logic(const char* varId, int varIdSize, bool data, bool* isVarExisted)
[1622]363   TRY
[489]364   {
365      std::string varIdStr;
366      if (!cstr2string(varId, varIdSize, varIdStr)) return;
367
368      CTimer::get("XIOS").resume();
369      CTimer::get("XIOS set variable data").resume();
370
[593]371      CContext* context = CContext::getCurrent();
[489]372      *isVarExisted = CVariable::has(context->getId(), varIdStr);
373
374      if (*isVarExisted)
375      {
[593]376        CVariable::get(context->getId(), varIdStr)->setData<bool>(data);
377        //CVariable::get(context->getId(), varIdStr)->sendValue();
[489]378      }
379
[593]380      CTimer::get("XIOS set variable data").suspend();
381      CTimer::get("XIOS").suspend();
[489]382   }
[1622]383   CATCH_DUMP_STACK
[489]384
[593]385   void cxios_set_variable_data_char(const char* varId, int varIdSize, const char* data, int dataSizeIn, bool* isVarExisted)
[1622]386   TRY
387  {
[489]388      std::string varIdStr, dataStr;
389      if (!cstr2string(varId, varIdSize, varIdStr)) return;
390      if (!cstr2string(data, dataSizeIn, dataStr))
391      {
392        *isVarExisted = false;
393        return;
394      }
395
396      CTimer::get("XIOS").resume();
397      CTimer::get("XIOS set variable data").resume();
398
[593]399      CContext* context = CContext::getCurrent();
[489]400      *isVarExisted = CVariable::has(context->getId(), varIdStr);
401
402      if (*isVarExisted)
403      {
[593]404        CVariable::get(context->getId(), varIdStr)->setData<string>(dataStr);
405        //CVariable::get(context->getId(), varIdStr)->sendValue();
[489]406      }
407
[593]408      CTimer::get("XIOS set variable data").suspend();
409      CTimer::get("XIOS").suspend();
[489]410   }
[1622]411   CATCH_DUMP_STACK
[489]412
[325]413   // ---------------------- Ecriture des données ------------------------------
[2121]414   
415   void cxios_write_data_k80_hdl(CField* field, double* data_k8, int data_Xsize)
[1622]416   TRY
[586]417   {
[593]418      CTimer::get("XIOS").resume();
419      CTimer::get("XIOS send field").resume();
420      CContext* context = CContext::getCurrent();
[704]421      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]422        context->eventLoop();
[593]423      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
[2121]424      field->setData(data);
[593]425      CTimer::get("XIOS send field").suspend();
426      CTimer::get("XIOS").suspend();
[586]427   }
[1622]428   CATCH_DUMP_STACK
[586]429
[2121]430   void cxios_write_data_k80(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize)
[1622]431   TRY
[586]432   {
433      std::string fieldid_str;
[593]434      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]435      cxios_write_data_k80_hdl(CField::get(fieldid_str), data_k8, data_Xsize) ;
436   }
437   CATCH_DUMP_STACK
[586]438
[2121]439
440
441 
442   void cxios_write_data_k81_hdl(CField* field, double* data_k8, int data_Xsize)
443   TRY
444   {
[593]445      CTimer::get("XIOS").resume();
446      CTimer::get("XIOS send field").resume();
[586]447
[593]448      CContext* context = CContext::getCurrent();
[704]449      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]450        context->eventLoop();
[593]451
452      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
[2121]453      field->setData(data);
[593]454
455      CTimer::get("XIOS send field").suspend();
456      CTimer::get("XIOS").suspend();
[586]457   }
[1622]458   CATCH_DUMP_STACK
[2121]459   
460   void cxios_write_data_k81(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize)
[1622]461   TRY
[325]462   {
463      std::string fieldid_str;
[489]464      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]465      cxios_write_data_k81_hdl(CField::get(fieldid_str), data_k8, data_Xsize) ;
466   
467   }
468   CATCH_DUMP_STACK
[489]469
[2121]470
471
472   void cxios_write_data_k82_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize)
473   TRY
474   {
[593]475      CTimer::get("XIOS").resume();
476      CTimer::get("XIOS send field").resume();
477
478      CContext* context = CContext::getCurrent();
[704]479      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]480        context->eventLoop();
[593]481
482      CArray<double, 2>data(data_k8, shape(data_Xsize, data_Ysize), neverDeleteData);
[2121]483      field->setData(data);
[593]484
485      CTimer::get("XIOS send field").suspend();
486      CTimer::get("XIOS").suspend();
[325]487   }
[1622]488   CATCH_DUMP_STACK
[489]489
[2121]490   void cxios_write_data_k82(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize)
[1622]491   TRY
[325]492   {
493      std::string fieldid_str;
494      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]495      cxios_write_data_k82_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize) ;
496   }
497   CATCH_DUMP_STACK
[489]498
[2121]499
500
501
502
503
504   void cxios_write_data_k83_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
505   TRY
506   {
[593]507      CTimer::get("XIOS").resume();
508      CTimer::get("XIOS send field").resume();
[489]509
[593]510      CContext* context = CContext::getCurrent();
[704]511      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]512        context->eventLoop();
[593]513
514      CArray<double, 3>data(data_k8, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
[2121]515      field->setData(data);
[593]516
517      CTimer::get("XIOS send field").suspend();
518      CTimer::get("XIOS").suspend();
[325]519   }
[1622]520   CATCH_DUMP_STACK
[2121]521   
522   void cxios_write_data_k83(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
[1622]523   TRY
[932]524   {
525      std::string fieldid_str;
526      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]527      cxios_write_data_k83_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize, data_Zsize) ;
[932]528
[2121]529
530   }
531   CATCH_DUMP_STACK
532
533
534
535
536
537
538   void cxios_write_data_k84_hdl(CField* field, double* data_k8, int data_0size, int data_1size, int data_2size, int data_3size)
539   TRY
540   {
[932]541      CTimer::get("XIOS").resume();
542      CTimer::get("XIOS send field").resume();
543
544      CContext* context = CContext::getCurrent();
545      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]546        context->eventLoop();
[932]547
548      CArray<double, 4>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
[2121]549      field->setData(data);
[932]550
551      CTimer::get("XIOS send field").suspend();
552      CTimer::get("XIOS").suspend();
553   }
[1622]554   CATCH_DUMP_STACK
[932]555
[2121]556   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)
[1622]557   TRY
[932]558   {
559      std::string fieldid_str;
560      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
561
562      CTimer::get("XIOS").resume();
563      CTimer::get("XIOS send field").resume();
[2121]564      cxios_write_data_k84_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size) ;
565   }
566   CATCH_DUMP_STACK
[932]567
[2121]568
569
570   
571
572   void cxios_write_data_k85_hdl(CField* field, double* data_k8,
573                             int data_0size, int data_1size, int data_2size,
574                             int data_3size, int data_4size)
575   TRY
576   {
577      CTimer::get("XIOS").resume();
578      CTimer::get("XIOS send field").resume();
579
[932]580      CContext* context = CContext::getCurrent();
[2121]581      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]582        context->eventLoop();
[932]583
584      CArray<double, 5>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
[2121]585      field->setData(data);
[932]586
587      CTimer::get("XIOS send field").suspend();
588      CTimer::get("XIOS").suspend();
589   }
[1622]590   CATCH_DUMP_STACK
[932]591
[2121]592   void cxios_write_data_k85(const char* fieldid, int fieldid_size, double* data_k8,
[932]593                             int data_0size, int data_1size, int data_2size,
[2121]594                             int data_3size, int data_4size)
[1622]595   TRY
[932]596   {
597      std::string fieldid_str;
598      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]599      cxios_write_data_k85_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size) ;
[932]600
[2121]601   }
602   CATCH_DUMP_STACK
603
604
605
606   void cxios_write_data_k86_hdl(CField* field, double* data_k8,
607                             int data_0size, int data_1size, int data_2size,
608                             int data_3size, int data_4size, int data_5size)
609   TRY
610   {
611 
[932]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())
[1761]617        context->eventLoop();
[932]618
619      CArray<double, 6>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
[2121]620      field->setData(data);
[932]621
622      CTimer::get("XIOS send field").suspend();
623      CTimer::get("XIOS").suspend();
624   }
[1622]625   CATCH_DUMP_STACK
[2121]626   
627   void cxios_write_data_k86(const char* fieldid, int fieldid_size, double* data_k8,
628                             int data_0size, int data_1size, int data_2size,
629                             int data_3size, int data_4size, int data_5size)
630   TRY
631   {
632      std::string fieldid_str;
633      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
634      cxios_write_data_k86_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ;
[932]635
[2121]636  }
637   CATCH_DUMP_STACK
638   
639
640
641
642   void cxios_write_data_k87_hdl(CField* field, double* data_k8,
[932]643                             int data_0size, int data_1size, int data_2size,
644                             int data_3size, int data_4size, int data_5size,
645                             int data_6size)
[1622]646   TRY
[932]647   {
648      CTimer::get("XIOS").resume();
649      CTimer::get("XIOS send field").resume();
650
651      CContext* context = CContext::getCurrent();
652      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]653        context->eventLoop();
[932]654
655      CArray<double, 7>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData);
[2121]656      field->setData(data);
[932]657
658      CTimer::get("XIOS send field").suspend();
659      CTimer::get("XIOS").suspend();
660   }
[1622]661   CATCH_DUMP_STACK
[2121]662   
663   void cxios_write_data_k87(const char* fieldid, int fieldid_size, double* data_k8,
664                             int data_0size, int data_1size, int data_2size,
665                             int data_3size, int data_4size, int data_5size,
666                             int data_6size)
[1622]667   TRY
[325]668   {
669      std::string fieldid_str;
[489]670      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]671      cxios_write_data_k87_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ;
672   }
673   CATCH_DUMP_STACK
674   
[347]675
[2121]676
677
678
679   void cxios_write_data_k40_hdl(CField* field, float* data_k4, int data_Xsize)
680   TRY
681   {
[593]682      CTimer::get("XIOS").resume();
683      CTimer::get("XIOS send field").resume();
684      CContext* context = CContext::getCurrent();
[704]685      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]686        context->eventLoop();
[369]687
[593]688      CArray<float, 1> data_tmp(data_k4, shape(data_Xsize), neverDeleteData);
689      CArray<double, 1> data(data_Xsize) ;
690      data = data_tmp;
[2121]691      field->setData(data);
[593]692      CTimer::get("XIOS send field").suspend();
693      CTimer::get("XIOS").suspend();
[325]694   }
[1622]695   CATCH_DUMP_STACK
[489]696
[2121]697   void cxios_write_data_k40(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
[1622]698   TRY
[325]699   {
700      std::string fieldid_str;
[593]701      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]702      cxios_write_data_k40_hdl(CField::get(fieldid_str), data_k4, data_Xsize);
[347]703
[2121]704   }
705   CATCH_DUMP_STACK
706   
707   
708   void cxios_write_data_k41_hdl(CField* field, float* data_k4, int data_Xsize)
709   TRY
710   {
[593]711      CTimer::get("XIOS").resume();
712      CTimer::get("XIOS send field").resume();
[403]713
[593]714      CContext* context = CContext::getCurrent();
[704]715      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]716        context->eventLoop();
[593]717
718      CArray<float, 1> data_tmp(data_k4, shape(data_Xsize), neverDeleteData);
719      CArray<double, 1> data(data_Xsize);
720      data = data_tmp;
[2121]721      field->setData(data);
[593]722
723      CTimer::get("XIOS send field").suspend();
724      CTimer::get("XIOS").suspend();
[325]725   }
[1622]726   CATCH_DUMP_STACK
[489]727
[2121]728   void cxios_write_data_k41(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
[1622]729   TRY
[325]730   {
731      std::string fieldid_str;
[489]732      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]733      cxios_write_data_k41_hdl(CField::get(fieldid_str), data_k4, data_Xsize);
734   }
735   CATCH_DUMP_STACK
[347]736
[2121]737
738   void cxios_write_data_k42_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize)
739   TRY
740   {
[593]741      CTimer::get("XIOS").resume();
742      CTimer::get("XIOS send field").resume();
[403]743
[593]744      CContext* context = CContext::getCurrent();
[704]745      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]746        context->eventLoop();
[593]747
748      CArray<float, 2> data_tmp(data_k4, shape(data_Xsize, data_Ysize), neverDeleteData);
749      CArray<double, 2> data(data_Xsize, data_Ysize);
750      data = data_tmp;
[2121]751      field->setData(data);
[593]752
753      CTimer::get("XIOS send field").suspend();
754      CTimer::get("XIOS").suspend();
[325]755   }
[1622]756   CATCH_DUMP_STACK
[489]757
[2121]758   void cxios_write_data_k42(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize)
[1622]759   TRY
[325]760   {
761      std::string fieldid_str;
[593]762      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]763      cxios_write_data_k42_hdl(CField::get(fieldid_str), data_k4, data_Xsize,data_Ysize);
764   }
765   CATCH_DUMP_STACK
[489]766
[2121]767
768
769
770   void cxios_write_data_k43_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
771   TRY
772   {
[593]773      CTimer::get("XIOS").resume();
774      CTimer::get("XIOS send field").resume();
775
776      CContext* context = CContext::getCurrent();
[704]777      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]778        context->eventLoop();
[593]779
780      CArray<float, 3> data_tmp(data_k4, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
781      CArray<double, 3> data(data_Xsize, data_Ysize, data_Zsize);
782      data = data_tmp;
[2121]783      field->setData(data);
[593]784
785      CTimer::get("XIOS send field").suspend();
786      CTimer::get("XIOS").suspend();
787    }
[1622]788   CATCH_DUMP_STACK
[2121]789   
790   void cxios_write_data_k43(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
791   TRY
792   {
793      std::string fieldid_str;
794      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
795      cxios_write_data_k43_hdl(CField::get(fieldid_str), data_k4, data_Xsize,data_Ysize, data_Zsize);
796    }
797   CATCH_DUMP_STACK
798   
[593]799
[2121]800   
801   void cxios_write_data_k44_hdl(CField* field, float* data_k4,
[932]802                             int data_0size, int data_1size, int data_2size,
803                             int data_3size)
[1622]804   TRY
[932]805   {
806      CTimer::get("XIOS").resume();
807      CTimer::get("XIOS send field").resume();
808
809      CContext* context = CContext::getCurrent();
810      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]811        context->eventLoop();
[932]812
813      CArray<float, 4> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
814      CArray<double, 4> data(data_0size, data_1size, data_2size, data_3size);
815      data = data_tmp;
[2121]816      field->setData(data);
[932]817
818      CTimer::get("XIOS send field").suspend();
819      CTimer::get("XIOS").suspend();
820    }
[1622]821   CATCH_DUMP_STACK
[932]822
[2121]823   void cxios_write_data_k44(const char* fieldid, int fieldid_size, float* data_k4,
[932]824                             int data_0size, int data_1size, int data_2size,
[2121]825                             int data_3size)
[1622]826   TRY
[932]827   {
828      std::string fieldid_str;
829      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]830      cxios_write_data_k44_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size) ;
831    }
832   CATCH_DUMP_STACK
[932]833
[2121]834
835
836
837   void cxios_write_data_k45_hdl(CField* field, float* data_k4,
838                             int data_0size, int data_1size, int data_2size,
839                             int data_3size, int data_4size)
840   TRY
841   {
[932]842      CTimer::get("XIOS").resume();
843      CTimer::get("XIOS send field").resume();
844
845      CContext* context = CContext::getCurrent();
846      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]847        context->eventLoop();
[932]848
849      CArray<float, 5> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
850      CArray<double, 5> data(data_0size, data_1size, data_2size, data_3size, data_4size);
851      data = data_tmp;
[2121]852      field->setData(data);
[932]853
854      CTimer::get("XIOS send field").suspend();
855      CTimer::get("XIOS").suspend();
856    }
[1622]857   CATCH_DUMP_STACK
[932]858
[2121]859   void cxios_write_data_k45(const char* fieldid, int fieldid_size, float* data_k4,
[932]860                             int data_0size, int data_1size, int data_2size,
[2121]861                             int data_3size, int data_4size)
[1622]862   TRY
[932]863   {
864      std::string fieldid_str;
865      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]866      cxios_write_data_k45_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size) ;
867    }
868   CATCH_DUMP_STACK
[932]869
[2121]870
871
872   void cxios_write_data_k46_hdl(CField* field, float* data_k4,
873                             int data_0size, int data_1size, int data_2size,
874                             int data_3size, int data_4size, int data_5size)
875   TRY
876   {
[932]877      CTimer::get("XIOS").resume();
878      CTimer::get("XIOS send field").resume();
879
880      CContext* context = CContext::getCurrent();
881      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]882        context->eventLoop();
[932]883
884      CArray<float, 6> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
885      CArray<double, 6> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size);
886      data = data_tmp;
[2121]887      field->setData(data);
[932]888
889      CTimer::get("XIOS send field").suspend();
890      CTimer::get("XIOS").suspend();
891    }
[1622]892   CATCH_DUMP_STACK
[932]893
[2121]894   void cxios_write_data_k46(const char* fieldid, int fieldid_size, float* data_k4,
[932]895                             int data_0size, int data_1size, int data_2size,
[2121]896                             int data_3size, int data_4size, int data_5size)
[1622]897   TRY
[932]898   {
899      std::string fieldid_str;
900      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]901      cxios_write_data_k46_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ;
902    }
903   CATCH_DUMP_STACK
[932]904
[2121]905
906   void cxios_write_data_k47_hdl(CField* field, float* data_k4,
907                             int data_0size, int data_1size, int data_2size,
908                             int data_3size, int data_4size, int data_5size,
909                             int data_6size)
910   TRY
911   {
[932]912      CTimer::get("XIOS").resume();
913      CTimer::get("XIOS send field").resume();
914
915      CContext* context = CContext::getCurrent();
916      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]917        context->eventLoop();
[932]918
919      CArray<float, 7> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData);
920      CArray<double, 7> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size);
921      data = data_tmp;
[2121]922      field->setData(data);
[932]923
924      CTimer::get("XIOS send field").suspend();
925      CTimer::get("XIOS").suspend();
926    }
[1622]927   CATCH_DUMP_STACK
[932]928
[2121]929  void cxios_write_data_k47(const char* fieldid, int fieldid_size, float* data_k4,
930                             int data_0size, int data_1size, int data_2size,
931                             int data_3size, int data_4size, int data_5size,
932                             int data_6size)
[1622]933   TRY
[961]934   {
935      std::string fieldid_str;
936      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]937      cxios_write_data_k47_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ;
938    }
939   CATCH_DUMP_STACK
[961]940
[2121]941
942   // ---------------------- Lecture des données ------------------------------
943
944   void cxios_read_data_k80_hdl(CField* field, double* data_k8, int data_Xsize)
945   TRY
946   {
[961]947      CTimer::get("XIOS").resume();
948      CTimer::get("XIOS recv field").resume();
949
950      CContext* context = CContext::getCurrent();
951      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]952        context->eventLoop();
[961]953
954      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
[2121]955      field->getData(data);
[961]956
957      CTimer::get("XIOS recv field").suspend();
958      CTimer::get("XIOS").suspend();
959   }
[1622]960   CATCH_DUMP_STACK
[961]961
[2121]962   void cxios_read_data_k80(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize)
[1622]963   TRY
[593]964   {
965      std::string fieldid_str;
[489]966      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]967      cxios_read_data_k80_hdl(CField::get(fieldid_str), data_k8, data_Xsize) ;
968   }
969   CATCH_DUMP_STACK
970   
971   
972   void cxios_read_data_k81_hdl(CField* field, double* data_k8, int data_Xsize)
973   TRY
974   {
[593]975      CTimer::get("XIOS").resume();
976      CTimer::get("XIOS recv field").resume();
[369]977
[593]978      CContext* context = CContext::getCurrent();
[704]979      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]980        context->eventLoop();
[489]981
[593]982      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
[2121]983      field->getData(data);
[347]984
[593]985      CTimer::get("XIOS recv field").suspend();
986      CTimer::get("XIOS").suspend();
987   }
[1622]988   CATCH_DUMP_STACK
[593]989
[2121]990   void cxios_read_data_k81(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize)
[1622]991   TRY
[593]992   {
993      std::string fieldid_str;
994      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]995      cxios_read_data_k81_hdl(CField::get(fieldid_str), data_k8, data_Xsize) ;
996   }
997   CATCH_DUMP_STACK
[593]998
[2121]999   void cxios_read_data_k82_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize)
1000   TRY
1001   {
[593]1002      CTimer::get("XIOS").resume();
1003      CTimer::get("XIOS recv field").resume();
1004
1005      CContext* context = CContext::getCurrent();
[704]1006      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1007        context->eventLoop();
[593]1008
1009      CArray<double, 2>data(data_k8, shape(data_Xsize, data_Ysize), neverDeleteData);
[2121]1010      field->getData(data);
[593]1011
1012      CTimer::get("XIOS recv field").suspend();
1013      CTimer::get("XIOS").suspend();
1014   }
[1622]1015   CATCH_DUMP_STACK
[593]1016
[2121]1017   void cxios_read_data_k82(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize)
[1622]1018   TRY
[593]1019   {
1020      std::string fieldid_str;
1021      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1022      cxios_read_data_k82_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize) ;
1023   }
1024   CATCH_DUMP_STACK
[593]1025
[2121]1026
1027   void cxios_read_data_k83_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
1028   TRY
1029   {
[593]1030      CTimer::get("XIOS").resume();
1031      CTimer::get("XIOS recv field").resume();
1032
1033      CContext* context = CContext::getCurrent();
[704]1034      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1035        context->eventLoop();
[593]1036
1037      CArray<double, 3>data(data_k8, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
[2121]1038      field->getData(data);
[593]1039
1040      CTimer::get("XIOS recv field").suspend();
1041      CTimer::get("XIOS").suspend();
1042   }
[1622]1043   CATCH_DUMP_STACK
[593]1044
[2121]1045
1046   void cxios_read_data_k83(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
[1622]1047   TRY
[932]1048   {
1049      std::string fieldid_str;
1050      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1051      cxios_read_data_k83_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize, data_Zsize) ;
1052   }
1053   CATCH_DUMP_STACK
[932]1054
[2121]1055   void cxios_read_data_k84_hdl(CField* field, double* data_k8,
1056                            int data_0size, int data_1size, int data_2size,
1057                            int data_3size)
1058   TRY
1059   {
[932]1060      CTimer::get("XIOS").resume();
1061      CTimer::get("XIOS recv field").resume();
1062
1063      CContext* context = CContext::getCurrent();
1064      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1065        context->eventLoop();
[932]1066
1067      CArray<double, 4>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
[2121]1068      field->getData(data);
[932]1069
1070      CTimer::get("XIOS recv field").suspend();
1071      CTimer::get("XIOS").suspend();
1072   }
[1622]1073   CATCH_DUMP_STACK
[932]1074
[2121]1075   void cxios_read_data_k84(const char* fieldid, int fieldid_size, double* data_k8,
[932]1076                            int data_0size, int data_1size, int data_2size,
[2121]1077                            int data_3size)
[1622]1078   TRY
[932]1079   {
1080      std::string fieldid_str;
1081      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1082      cxios_read_data_k84_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size) ;
1083   }
1084   CATCH_DUMP_STACK
[932]1085
[2121]1086   void cxios_read_data_k85_hdl(CField* field, double* data_k8,
1087                            int data_0size, int data_1size, int data_2size,
1088                            int data_3size, int data_4size)
1089   TRY
1090   {
[932]1091      CTimer::get("XIOS").resume();
1092      CTimer::get("XIOS recv field").resume();
1093
1094      CContext* context = CContext::getCurrent();
1095      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1096        context->eventLoop();
[932]1097
1098      CArray<double, 5>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
[2121]1099      field->getData(data);
[932]1100
1101      CTimer::get("XIOS recv field").suspend();
1102      CTimer::get("XIOS").suspend();
1103   }
[1622]1104   CATCH_DUMP_STACK
[932]1105
[2121]1106   void cxios_read_data_k85(const char* fieldid, int fieldid_size, double* data_k8,
[932]1107                            int data_0size, int data_1size, int data_2size,
[2121]1108                            int data_3size, int data_4size)
[1622]1109   TRY
[932]1110   {
1111      std::string fieldid_str;
1112      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1113      cxios_read_data_k85_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size) ;
1114   }
1115   CATCH_DUMP_STACK
[932]1116
[2121]1117   void cxios_read_data_k86_hdl(CField* field, double* data_k8,
1118                            int data_0size, int data_1size, int data_2size,
1119                            int data_3size, int data_4size, int data_5size)
1120   TRY
1121   {
[932]1122      CTimer::get("XIOS").resume();
1123      CTimer::get("XIOS recv field").resume();
1124
1125      CContext* context = CContext::getCurrent();
1126      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1127        context->eventLoop();
[932]1128
1129      CArray<double, 6>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
[2121]1130      field->getData(data);
[932]1131
1132      CTimer::get("XIOS recv field").suspend();
1133      CTimer::get("XIOS").suspend();
1134   }
[1622]1135   CATCH_DUMP_STACK
[932]1136
[2121]1137   void cxios_read_data_k86(const char* fieldid, int fieldid_size, double* data_k8,
[932]1138                            int data_0size, int data_1size, int data_2size,
[2121]1139                            int data_3size, int data_4size, int data_5size)
[1622]1140   TRY
[932]1141   {
1142      std::string fieldid_str;
1143      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1144      cxios_read_data_k86_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ;
1145   }
1146   CATCH_DUMP_STACK
[932]1147
[2121]1148   void cxios_read_data_k87_hdl(CField* field, double* data_k8,
1149                            int data_0size, int data_1size, int data_2size,
1150                            int data_3size, int data_4size, int data_5size,
1151                            int data_6size)
1152   TRY
1153   {
[932]1154      CTimer::get("XIOS").resume();
1155      CTimer::get("XIOS recv field").resume();
1156
1157      CContext* context = CContext::getCurrent();
1158      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1159        context->eventLoop();
[932]1160
1161      CArray<double, 7>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData);
[2121]1162      field->getData(data);
[932]1163
1164      CTimer::get("XIOS recv field").suspend();
1165      CTimer::get("XIOS").suspend();
1166   }
[1622]1167   CATCH_DUMP_STACK
[932]1168
[2121]1169   void cxios_read_data_k87(const char* fieldid, int fieldid_size, double* data_k8,
1170                            int data_0size, int data_1size, int data_2size,
1171                            int data_3size, int data_4size, int data_5size,
1172                            int data_6size)
[1622]1173   TRY
[961]1174   {
1175      std::string fieldid_str;
1176      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1177      cxios_read_data_k87_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ;
1178   }
1179   CATCH_DUMP_STACK
[961]1180
[2121]1181
1182
1183
1184
1185
1186   void cxios_read_data_k40_hdl(CField* field, float* data_k4, int data_Xsize)
1187   TRY
1188   {
[961]1189      CTimer::get("XIOS").resume();
1190      CTimer::get("XIOS recv field").resume();
1191
1192      CContext* context = CContext::getCurrent();
1193      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1194        context->eventLoop();
[961]1195
1196      CArray<double, 1> data(data_Xsize);
[2121]1197      field->getData(data);
[961]1198      CArray<float, 1> data_tmp(data_k4, shape(data_Xsize), neverDeleteData);
1199      data_tmp = data;
1200
1201      CTimer::get("XIOS recv field").suspend();
1202      CTimer::get("XIOS").suspend();
1203   }
[1622]1204   CATCH_DUMP_STACK
[961]1205
[2121]1206   void cxios_read_data_k40(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
[1622]1207   TRY
[593]1208   {
1209      std::string fieldid_str;
1210      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1211      cxios_read_data_k40_hdl(CField::get(fieldid_str), data_k4, data_Xsize) ;
1212   }
1213   CATCH_DUMP_STACK
[593]1214
[2121]1215
1216
1217   void cxios_read_data_k41_hdl(CField* field, float* data_k4, int data_Xsize)
1218   TRY
1219   {
[593]1220      CTimer::get("XIOS").resume();
1221      CTimer::get("XIOS recv field").resume();
1222
1223      CContext* context = CContext::getCurrent();
[704]1224      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1225        context->eventLoop();
[593]1226
1227      CArray<double, 1> data(data_Xsize);
[2121]1228      field->getData(data);
[593]1229      CArray<float, 1> data_tmp(data_k4, shape(data_Xsize), neverDeleteData);
1230      data_tmp = data;
1231
1232      CTimer::get("XIOS recv field").suspend();
1233      CTimer::get("XIOS").suspend();
1234   }
[1622]1235   CATCH_DUMP_STACK
[593]1236
[2121]1237   void cxios_read_data_k41(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
[1622]1238   TRY
[593]1239   {
1240      std::string fieldid_str;
1241      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1242      cxios_read_data_k41_hdl(CField::get(fieldid_str), data_k4, data_Xsize) ;
1243   }
1244   CATCH_DUMP_STACK
[593]1245
[2121]1246
1247
1248
1249   void cxios_read_data_k42_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize)
1250   TRY
1251   {
[593]1252      CTimer::get("XIOS").resume();
1253      CTimer::get("XIOS recv field").resume();
1254
1255      CContext* context = CContext::getCurrent();
[704]1256      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1257        context->eventLoop();
[593]1258
1259      CArray<double, 2> data(data_Xsize, data_Ysize);
[2121]1260      field->getData(data);
[593]1261      CArray<float, 2> data_tmp(data_k4, shape(data_Xsize, data_Ysize), neverDeleteData);
1262      data_tmp = data;
1263
1264      CTimer::get("XIOS recv field").suspend();
1265      CTimer::get("XIOS").suspend();
1266   }
[1622]1267   CATCH_DUMP_STACK
[593]1268
[2121]1269   void cxios_read_data_k42(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize)
[1622]1270   TRY
[593]1271   {
1272      std::string fieldid_str;
1273      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1274      cxios_read_data_k42_hdl(CField::get(fieldid_str), data_k4, data_Xsize, data_Ysize) ;
1275   }
1276   CATCH_DUMP_STACK
[593]1277
[2121]1278
1279
1280   void cxios_read_data_k43_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
1281   TRY
1282   {
[593]1283      CTimer::get("XIOS").resume();
1284      CTimer::get("XIOS recv field").resume();
1285
1286      CContext* context = CContext::getCurrent();
[704]1287      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1288        context->eventLoop();
[593]1289
1290      CArray<double, 3> data(data_Xsize, data_Ysize, data_Zsize);
[2121]1291      field->getData(data);
[593]1292      CArray<float, 3> data_tmp(data_k4, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
1293      data_tmp = data;
1294
1295      CTimer::get("XIOS recv field").suspend();
1296      CTimer::get("XIOS").suspend();
[489]1297    }
[1622]1298   CATCH_DUMP_STACK
[932]1299
[2121]1300   void cxios_read_data_k43(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
[1622]1301   TRY
[932]1302   {
1303      std::string fieldid_str;
1304      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1305      cxios_read_data_k43_hdl(CField::get(fieldid_str), data_k4,data_Xsize, data_Ysize, data_Zsize) ;
1306    }
1307   CATCH_DUMP_STACK
[932]1308
[2121]1309
1310   void cxios_read_data_k44_hdl(CField* field, float* data_k4,
1311                            int data_0size, int data_1size, int data_2size,
1312                            int data_3size)
1313   TRY
1314   {
[932]1315      CTimer::get("XIOS").resume();
1316      CTimer::get("XIOS recv field").resume();
1317
1318      CContext* context = CContext::getCurrent();
1319      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1320        context->eventLoop();
[932]1321
1322      CArray<double, 4> data(data_0size, data_1size, data_2size, data_3size);
[2121]1323      field->getData(data);
[932]1324      CArray<float, 4> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
1325      data_tmp = data;
1326
1327      CTimer::get("XIOS recv field").suspend();
1328      CTimer::get("XIOS").suspend();
1329    }
[1622]1330   CATCH_DUMP_STACK
[932]1331
[2121]1332   void cxios_read_data_k44(const char* fieldid, int fieldid_size, float* data_k4,
[932]1333                            int data_0size, int data_1size, int data_2size,
[2121]1334                            int data_3size)
[1622]1335   TRY
[932]1336   {
1337      std::string fieldid_str;
1338      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1339      cxios_read_data_k44_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size) ;
1340    }
1341   CATCH_DUMP_STACK
[932]1342
[2121]1343
1344
1345   void cxios_read_data_k45_hdl(CField* field, float* data_k4,
1346                            int data_0size, int data_1size, int data_2size,
1347                            int data_3size, int data_4size)
1348   TRY
1349   {
[932]1350      CTimer::get("XIOS").resume();
1351      CTimer::get("XIOS recv field").resume();
1352
1353      CContext* context = CContext::getCurrent();
1354      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1355        context->eventLoop();
[932]1356
1357      CArray<double, 5> data(data_0size, data_1size, data_2size, data_3size, data_4size);
[2121]1358      field->getData(data);
[932]1359      CArray<float, 5> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
1360      data_tmp = data;
1361
1362      CTimer::get("XIOS recv field").suspend();
1363      CTimer::get("XIOS").suspend();
1364    }
[1622]1365   CATCH_DUMP_STACK
[932]1366
[2121]1367   void cxios_read_data_k45(const char* fieldid, int fieldid_size, float* data_k4,
[932]1368                            int data_0size, int data_1size, int data_2size,
[2121]1369                            int data_3size, int data_4size)
[1622]1370   TRY
[932]1371   {
1372      std::string fieldid_str;
1373      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1374      cxios_read_data_k45_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size) ;
1375    }
1376   CATCH_DUMP_STACK
[932]1377
[2121]1378
1379   void cxios_read_data_k46_hdl(CField* field, float* data_k4,
1380                            int data_0size, int data_1size, int data_2size,
1381                            int data_3size, int data_4size, int data_5size)
1382   TRY
1383   {
[932]1384      CTimer::get("XIOS").resume();
1385      CTimer::get("XIOS recv field").resume();
1386
1387      CContext* context = CContext::getCurrent();
1388      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1389        context->eventLoop();
[932]1390
1391      CArray<double, 6> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size);
[2121]1392      field->getData(data);
[932]1393      CArray<float, 6> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
1394      data_tmp = data;
1395
1396      CTimer::get("XIOS recv field").suspend();
1397      CTimer::get("XIOS").suspend();
1398    }
[1622]1399   CATCH_DUMP_STACK
[932]1400
[2121]1401   void cxios_read_data_k46(const char* fieldid, int fieldid_size, float* data_k4,
[932]1402                            int data_0size, int data_1size, int data_2size,
[2121]1403                            int data_3size, int data_4size, int data_5size)
[1622]1404   TRY
[932]1405   {
1406      std::string fieldid_str;
1407      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
[2121]1408      cxios_read_data_k46_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ;
1409    }
1410   CATCH_DUMP_STACK
[932]1411
[2121]1412
1413
1414   void cxios_read_data_k47_hdl(CField* field, float* data_k4,
1415                            int data_0size, int data_1size, int data_2size,
1416                            int data_3size, int data_4size, int data_5size,
1417                            int data_6size)
1418   TRY
1419   {
[932]1420      CTimer::get("XIOS").resume();
1421      CTimer::get("XIOS recv field").resume();
1422
1423      CContext* context = CContext::getCurrent();
1424      if (!context->hasServer && !context->client->isAttachedModeEnabled())
[1761]1425        context->eventLoop();
[932]1426
1427      CArray<double, 7> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size);
[2121]1428      field->getData(data);
[932]1429      CArray<float, 7> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData);
1430      data_tmp = data;
1431
1432      CTimer::get("XIOS recv field").suspend();
1433      CTimer::get("XIOS").suspend();
1434    }
[1622]1435   CATCH_DUMP_STACK
[2121]1436 
1437   void cxios_read_data_k47(const char* fieldid, int fieldid_size, float* data_k4,
1438                            int data_0size, int data_1size, int data_2size,
1439                            int data_3size, int data_4size, int data_5size,
1440                            int data_6size)
1441   TRY
1442   {
1443      std::string fieldid_str;
1444      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
1445      cxios_read_data_k47_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ;
1446    }
1447   CATCH_DUMP_STACK
[325]1448} // extern "C"
Note: See TracBrowser for help on using the repository browser.