source: XIOS/dev/common/src/output/nc4_data_output.hpp @ 1511

Last change on this file since 1511 was 286, checked in by ymipsl, 13 years ago

reprise en main de la version de H. Ozdoba. Correction de différentes erreurs de conception et bug.
Version NEMO operationnel en client/server, interoperabilita avec OASIS, reconstition de fichiers via netcdf4/HDF5

YM

File size: 4.2 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
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.