source: XIOS3/branches/xios-3.0-beta/src/interface/c/icdata.cpp @ 2427

Last change on this file since 2427 was 2427, checked in by jderouillat, 19 months ago

Backport the system to log the memory consumption (commit ID [2418-2420,2425-2426])

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