source: XIOS/dev/dev_rv/src4/xmlio/fortran/icdata.cpp @ 302

Last change on this file since 302 was 269, checked in by hozdoba, 13 years ago
File size: 3.3 KB
Line 
1/* ************************************************************************** *
2 *      Copyright © IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
3 * ************************************************************************** */
4
5#include <boost/multi_array.hpp>
6#include <boost/shared_ptr.hpp>
7
8#include "icutil.hpp"
9
10extern "C"
11{
12// /////////////////////////////// Définitions ////////////////////////////// //
13
14   // ----------------------- Redéfinition de types ----------------------------
15   
16   typedef enum { NETCDF4 = 0 } XFileType;
17   
18   typedef void * XContextPtr;
19
20   // -------------------- Traitement des données ------------------------------
21   
22   void xios_dtreatment_start(XContextPtr * context_hdl, XFileType filetype, int comm_client_server, int comm_server)
23   {
24   
25   }
26   
27   void xios_dtreatment_end(void)
28   {
29   
30   }
31   
32   // ---------------------- Ecriture des données ------------------------------
33   
34   void xios_write_data_k81(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize)
35   {
36      std::string fieldid_str; 
37      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
38     
39      boost::const_multi_array_ref<double, 1> array_(data_k8, 
40          boost::extents [data_Xsize],
41          boost::fortran_storage_order());     
42   }
43   
44   void xios_write_data_k82(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize)
45   {
46      std::string fieldid_str; 
47      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
48     
49      boost::const_multi_array_ref<double, 2> array_(data_k8, 
50          boost::extents [data_Xsize][data_Ysize],
51          boost::fortran_storage_order());
52   }
53   
54   void xios_write_data_k83(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
55   {
56      std::string fieldid_str; 
57      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
58     
59      boost::const_multi_array_ref<double, 3> array_(data_k8, 
60          boost::extents [data_Xsize][data_Ysize][data_Zsize],
61          boost::fortran_storage_order());
62   }
63   
64   void xios_write_data_k41(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize)
65   {
66      std::string fieldid_str; 
67      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
68     
69      boost::const_multi_array_ref<float, 1> array_(data_k4, 
70          boost::extents [data_Xsize],
71          boost::fortran_storage_order());
72   }
73   
74   void xios_write_data_k42(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize)
75   {
76      std::string fieldid_str; 
77      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
78     
79      boost::const_multi_array_ref<float, 2> array_(data_k4, 
80          boost::extents [data_Xsize][data_Ysize],
81          boost::fortran_storage_order());
82   }
83   
84   void xios_write_data_k43(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
85   {
86      std::string fieldid_str; 
87      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
88     
89      boost::const_multi_array_ref<float, 3> array_(data_k4, 
90          boost::extents [data_Xsize][data_Ysize][data_Zsize],
91          boost::fortran_storage_order());
92   } 
93
94} // extern "C"
Note: See TracBrowser for help on using the repository browser.