source: XIOS2/trunk/src/interface/c/icdata.cpp

Last change on this file was 2428, checked in by jderouillat, 20 months ago

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