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

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

Fix problem from previous commit when deallocating context.
YM

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