source: XMLIO_V2/dev/dev_rv/src/xmlio/fortran/icdata.cpp @ 270

Last change on this file since 270 was 270, checked in by hozdoba, 13 years ago

Début nouvelle interface fortran

File size: 3.4 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 "xmlioserver.hpp"
9
10#include "attribute_template_impl.hpp"
11#include "object_template_impl.hpp"
12#include "group_template_impl.hpp"
13
14#include "icutil.hpp"
15
16extern "C"
17{
18// /////////////////////////////// Définitions ////////////////////////////// //
19
20   // ----------------------- Redéfinition de types ----------------------------
21   
22   typedef enum { NETCDF4 = 0 } XFileType;
23   
24   typedef xmlioserver::tree::CContext * XContextPtr;
25
26   // -------------------- Traitement des données ------------------------------
27   
28   void xios_dtreatment_start(XContextPtr * context_hdl, XFileType filetype, int comm_client_server, int comm_server)
29   {
30   
31   }
32   
33   void xios_dtreatment_end(void)
34   {
35   
36   }
37   
38   // ---------------------- Ecriture des données ------------------------------
39   
40   void xios_write_data_k81(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize)
41   {
42      std::string fieldid_str; 
43      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
44     
45      boost::const_multi_array_ref<double, 1> array_(data_k8, 
46          boost::extents [data_Xsize],
47          boost::fortran_storage_order());     
48   }
49   
50   void xios_write_data_k82(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize)
51   {
52      std::string fieldid_str; 
53      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
54     
55      boost::const_multi_array_ref<double, 2> array_(data_k8, 
56          boost::extents [data_Xsize][data_Ysize],
57          boost::fortran_storage_order());
58   }
59   
60   void xios_write_data_k83(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
61   {
62      std::string fieldid_str; 
63      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
64     
65      boost::const_multi_array_ref<double, 3> array_(data_k8, 
66          boost::extents [data_Xsize][data_Ysize][data_Zsize],
67          boost::fortran_storage_order());
68   }
69   
70   void xios_write_data_k41(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize)
71   {
72      std::string fieldid_str; 
73      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
74     
75      boost::const_multi_array_ref<float, 1> array_(data_k4, 
76          boost::extents [data_Xsize],
77          boost::fortran_storage_order());
78   }
79   
80   void xios_write_data_k42(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize)
81   {
82      std::string fieldid_str; 
83      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
84     
85      boost::const_multi_array_ref<float, 2> array_(data_k4, 
86          boost::extents [data_Xsize][data_Ysize],
87          boost::fortran_storage_order());
88   }
89   
90   void xios_write_data_k43(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
91   {
92      std::string fieldid_str; 
93      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return; 
94     
95      boost::const_multi_array_ref<float, 3> array_(data_k4, 
96          boost::extents [data_Xsize][data_Ysize][data_Zsize],
97          boost::fortran_storage_order());
98   } 
99
100} // extern "C"
Note: See TracBrowser for help on using the repository browser.