source: XIOS/trunk/src/output/nc4_data_output.hpp @ 318

Last change on this file since 318 was 318, checked in by ymipsl, 12 years ago
  • Adding new file attribut : sync_freq : flush file for a given frequency
  • Now, when a file has a single domain, domain id is not anymore appended to the coordinate name.

YM

File size: 4.3 KB
Line 
1#ifndef __XMLIO_NC4_DATA_OUTPUT__
2#define __XMLIO_NC4_DATA_OUTPUT__
3
4/// xmlioserver headers ///
5#include "xmlioserver_spl.hpp"
6#include "onetcdf4.hpp"
7#include "data_output.hpp"
8
9namespace xmlioserver
10{
11   namespace io
12   {
13      /// ////////////////////// Déclarations ////////////////////// ///
14
15      class CNc4DataOutput
16         : protected CONetCDF4
17         , public virtual CDataOutput
18      {
19         public :
20
21            /// Définition de type ///
22            typedef CONetCDF4   SuperClassWriter;
23            typedef CDataOutput SuperClass;
24
25            /// Constructeurs ///
26            CNc4DataOutput
27               (const StdString & filename, bool exist);
28            CNc4DataOutput
29               (const StdString & filename, bool exist, MPI_Comm comm_server, bool multifile);
30
31            CNc4DataOutput(const CNc4DataOutput & dataoutput);       // Not implemented.
32            CNc4DataOutput(const CNc4DataOutput * const dataoutput); // Not implemented.
33
34            /// Accesseur ///
35            const StdString & getFileName(void) const;
36
37            /// Destructeur ///
38            virtual ~CNc4DataOutput(void);
39            bool singleDomain ;
40         protected :
41
42            /// Ecriture ///
43            virtual void writeDomain_    (const boost::shared_ptr<tree::CDomain>   domain);
44            virtual void writeAxis_      (const boost::shared_ptr<tree::CAxis>     axis);
45            virtual void writeField_     (const boost::shared_ptr<tree::CField>    field);
46            virtual void writeFieldData_ (const boost::shared_ptr<tree::CField>    field);
47            virtual void writeFile_      (const boost::shared_ptr<tree::CFile>     file);
48            virtual void closeFile_      (void);
49            virtual void writeTimeAxis_  (const boost::shared_ptr<tree::CField>    field,
50                                          const boost::shared_ptr<date::CCalendar> cal);
51
52         protected :
53         
54            void writeLocalAttributes(int ibegin, int ni, int jbegin, int nj, StdString domid);
55
56            void writeTimeAxisAttributes(const StdString & axis_name,
57                                         const StdString & calendar,
58                                         const StdString & units,
59                                         const StdString & time_origin,
60                                         const StdString & standard_name = StdString("time"),
61                                         const StdString & long_name     = StdString("Time axis"),
62                                         const StdString & title         = StdString("Time"));
63
64            void writeFileAttributes(const StdString & name,
65                                     const StdString & description,
66                                     const StdString & conventions,
67                                     const StdString & production,
68                                     const StdString & timeStamp);
69
70            void writeMaskAttributes(const StdString & mask_name,
71                                     int data_dim,
72                                     int data_ni     = 0,
73                                     int data_nj     = 0,
74                                     int data_ibegin = 0,
75                                     int data_jbegin = 0);
76
77            void writeAxisAttributes(const StdString & axis_name,
78                                     const StdString & axis,
79                                     const StdString & standard_name,
80                                     const StdString & long_name,
81                                     const StdString & units,
82                                     const StdString & nav_model);
83            template <class T>
84               void writeAxisData(const StdString & axis_name,
85                                  const ARRAY(T, 1) data,
86                                  bool collective, StdSize record,
87                                  const std::vector<StdSize> * start = NULL,
88                                  const std::vector<StdSize> * count = NULL);
89
90         private :
91
92            /// Traitement ///
93            StdString getTimeStamp(void) const;
94
95            /// Propriétés privées ///
96            MPI_Comm comm_server;
97            const StdString filename;
98
99      }; // class CNc4DataOutput
100
101   } // namespace io
102} // namespace xmlioserver
103
104#endif //__XMLIO_NC4_DATA_OUTPUT__
Note: See TracBrowser for help on using the repository browser.