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

Last change on this file was 2629, checked in by jderouillat, 2 months ago

Delete boost dependencies, the few features used are replaced by functions stored in extern/boost_extraction

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