15 #include "oops/util/DateTime.h"
16 #include "oops/util/ObjectCounter.h"
18 #include "ioda/io/IodaIO.h"
39 private util::ObjectCounter<NetcdfIO> {
48 static const std::string
classname() {
return "ioda::NetcdfIO";}
50 NetcdfIO(
const std::string & FileName,
const std::string & FileMode,
51 const std::size_t MaxFrameSize);
56 void print(std::ostream & os)
const;
58 void NcReadVar(
const std::string & GroupName,
const std::string & VarName,
59 const std::vector<std::size_t> & Starts,
60 const std::vector<std::size_t> & Counts,
61 int & FillValue, std::vector<int> & VarData);
62 void NcReadVar(
const std::string & GroupName,
const std::string & VarName,
63 const std::vector<std::size_t> & Starts,
64 const std::vector<std::size_t> & Counts,
65 float & FillValue, std::vector<float> & VarData);
66 void NcReadVar(
const std::string & GroupName,
const std::string & VarName,
67 const std::vector<std::size_t> & Starts,
68 const std::vector<std::size_t> & Counts,
69 double & FillValue, std::vector<double> & VarData);
70 void NcReadVar(
const std::string & GroupName,
const std::string & VarName,
71 const std::vector<std::size_t> & Starts,
72 const std::vector<std::size_t> & Counts,
73 char & FillValue, std::vector<std::string> & VarData);
75 void NcWriteVar(
const std::string & GroupName,
const std::string & VarName,
76 const std::vector<std::size_t> & Starts,
77 const std::vector<std::size_t> & Counts,
78 const std::vector<int> & VarData);
79 void NcWriteVar(
const std::string & GroupName,
const std::string & VarName,
80 const std::vector<std::size_t> & Starts,
81 const std::vector<std::size_t> & Counts,
82 const std::vector<float> & VarData);
83 void NcWriteVar(
const std::string & GroupName,
const std::string & VarName,
84 const std::vector<std::size_t> & Starts,
85 const std::vector<std::size_t> & Counts,
86 const std::vector<std::string> & VarData);
88 void CheckNcCall(
int RetCode, std::string & ErrorMsg);
90 bool NcAttrExists(
const int & AttrOwnerId,
const std::string & AttrName);
92 std::string
FormNcVarName(
const std::string & GroupName,
const std::string & VarName);
97 const std::vector<std::size_t> & Starts,
98 const std::vector<std::size_t> & Counts,
99 std::vector<std::string> & VarData);
101 template <
typename DataType>
105 std::vector<int>
GetNcDimIds(
const std::string & GroupName,
106 const std::vector<std::size_t> & VarShape);
108 void DimInsert(
const std::string & Name,
const std::size_t Size);
115 void GrpVarInsert(
const std::string & GroupName,
const std::string & VarName,
116 const std::string & VarType,
const std::vector<std::size_t> & VarShape,
117 const std::string & FileVarName,
const std::string & FileType,
118 const std::size_t MaxStringSize);
149 #endif // IO_NETCDFIO_H_