REMORA
Energy Research and Forecasting: An Atmospheric Modeling Code
ncutils::NCVar Struct Reference

Representation of a NetCDF variable. More...

#include <NCInterface.H>

Collaboration diagram for ncutils::NCVar:

Public Member Functions

std::string name () const
 Name of this variable. More...
 
int ndim () const
 Number of array dimensions for this variable. More...
 
std::vector< size_t > shape () const
 Shape of the array (size in each array dimension) More...
 
void put (const double *) const
 Write out the entire variable. More...
 
void put (const float *) const
 
void put (const int *) const
 
void put (const double *, const std::vector< size_t > &, const std::vector< size_t > &) const
 Write out a slice of data. More...
 
void put (const double *, const std::vector< size_t > &, const std::vector< size_t > &, const std::vector< ptrdiff_t > &) const
 
void put (const float *, const std::vector< size_t > &, const std::vector< size_t > &) const
 Write out a slice of data. More...
 
void put (const float *, const std::vector< size_t > &, const std::vector< size_t > &, const std::vector< ptrdiff_t > &) const
 
void put (const int *, const std::vector< size_t > &, const std::vector< size_t > &) const
 
void put (const int *, const std::vector< size_t > &, const std::vector< size_t > &, const std::vector< ptrdiff_t > &) const
 
void put (const char **, const std::vector< size_t > &, const std::vector< size_t > &) const
 
void put (const char **dptr, const std::vector< size_t > &start, const std::vector< size_t > &count, const std::vector< ptrdiff_t > &stride) const
 
void get (double *) const
 Read the entire variable from file. More...
 
void get (float *) const
 
void get (int *) const
 
void get (double *, const std::vector< size_t > &, const std::vector< size_t > &) const
 Read a chunk of data from the file. More...
 
void get (double *, const std::vector< size_t > &, const std::vector< size_t > &, const std::vector< ptrdiff_t > &) const
 Read a chunk of data with strides. More...
 
void get (float *, const std::vector< size_t > &, const std::vector< size_t > &) const
 Read a chunk of data from the file. More...
 
void get (float *, const std::vector< size_t > &, const std::vector< size_t > &, const std::vector< ptrdiff_t > &) const
 Read a chunk of data with strides. More...
 
void get (int *, const std::vector< size_t > &, const std::vector< size_t > &) const
 
void get (int *, const std::vector< size_t > &, const std::vector< size_t > &, const std::vector< ptrdiff_t > &) const
 
void get (char *, const std::vector< size_t > &, const std::vector< size_t > &) const
 Read a chunk of data from the file. More...
 
void get (char *, const std::vector< size_t > &, const std::vector< size_t > &, const std::vector< ptrdiff_t > &) const
 Read a chunk of data with strides. More...
 
bool has_attr (const std::string &name) const
 
void put_attr (const std::string &name, const std::string &value) const
 
void put_attr (const std::string &name, const std::vector< double > &value) const
 
void put_attr (const std::string &name, const std::vector< float > &value) const
 
void put_attr (const std::string &name, const std::vector< int > &value) const
 
std::string get_attr (const std::string &name) const
 
void get_attr (const std::string &name, std::vector< double > &value) const
 
void get_attr (const std::string &name, std::vector< float > &value) const
 
void get_attr (const std::string &name, std::vector< int > &value) const
 
void par_access (const int cmode) const
 

Public Attributes

const int ncid
 File/Group identifier. More...
 
const int varid
 Variable ID used with NetCDF API. More...
 

Detailed Description

Representation of a NetCDF variable.

Member Function Documentation

◆ get() [1/11]

void ncutils::NCVar::get ( char *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count 
) const

Read a chunk of data from the file.

232 {
233  check_nc_error(
234  nc_get_vara_text(ncid, varid, start.data(), count.data(), dptr));
235 }
const int ncid
File/Group identifier.
Definition: NCInterface.H:55
const int varid
Variable ID used with NetCDF API.
Definition: NCInterface.H:58

◆ get() [2/11]

void ncutils::NCVar::get ( char *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count,
const std::vector< ptrdiff_t > &  stride 
) const

Read a chunk of data with strides.

242 {
243  check_nc_error(nc_get_vars_text(
244  ncid, varid, start.data(), count.data(), stride.data(), dptr));
245 }

◆ get() [3/11]

void ncutils::NCVar::get ( double *  ptr) const

Read the entire variable from file.

157 {
158  check_nc_error(nc_get_var_double(ncid, varid, ptr));
159 }

◆ get() [4/11]

void ncutils::NCVar::get ( double *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count 
) const

Read a chunk of data from the file.

175 {
176  check_nc_error(
177  nc_get_vara_double(ncid, varid, start.data(), count.data(), dptr));
178 }

◆ get() [5/11]

void ncutils::NCVar::get ( double *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count,
const std::vector< ptrdiff_t > &  stride 
) const

Read a chunk of data with strides.

185 {
186  check_nc_error(nc_get_vars_double(
187  ncid, varid, start.data(), count.data(), stride.data(), dptr));
188 }

◆ get() [6/11]

void ncutils::NCVar::get ( float *  ptr) const
162 {
163  check_nc_error(nc_get_var_float(ncid, varid, ptr));
164 }

◆ get() [7/11]

void ncutils::NCVar::get ( float *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count 
) const

Read a chunk of data from the file.

194 {
195  check_nc_error(
196  nc_get_vara_float(ncid, varid, start.data(), count.data(), dptr));
197 }

◆ get() [8/11]

void ncutils::NCVar::get ( float *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count,
const std::vector< ptrdiff_t > &  stride 
) const

Read a chunk of data with strides.

204 {
205  check_nc_error(nc_get_vars_float(
206  ncid, varid, start.data(), count.data(), stride.data(), dptr));
207 }

◆ get() [9/11]

void ncutils::NCVar::get ( int *  ptr) const
167 {
168  check_nc_error(nc_get_var_int(ncid, varid, ptr));
169 }

◆ get() [10/11]

void ncutils::NCVar::get ( int *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count 
) const
213 {
214  check_nc_error(
215  nc_get_vara_int(ncid, varid, start.data(), count.data(), dptr));
216 }

◆ get() [11/11]

void ncutils::NCVar::get ( int *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count,
const std::vector< ptrdiff_t > &  stride 
) const
223 {
224  check_nc_error(nc_get_vars_int(
225  ncid, varid, start.data(), count.data(), stride.data(), dptr));
226 }

◆ get_attr() [1/4]

std::string ncutils::NCVar::get_attr ( const std::string &  name) const
283 {
284  size_t lenp;
285  std::vector<char> aval;
286  check_nc_error(nc_inq_attlen(ncid, varid, name.data(), &lenp));
287  aval.resize(lenp);
288  check_nc_error(nc_get_att_text(ncid, varid, name.data(), aval.data()));
289  return std::string{aval.begin(), aval.end()};
290 }
std::string name() const
Name of this variable.
Definition: NCInterface.cpp:37
Here is the call graph for this function:

◆ get_attr() [2/4]

void ncutils::NCVar::get_attr ( const std::string &  name,
std::vector< double > &  value 
) const
293 {
294  size_t lenp;
295  check_nc_error(nc_inq_attlen(ncid, varid, name.data(), &lenp));
296  values.resize(lenp);
297  check_nc_error(nc_get_att_double(ncid, varid, name.data(), values.data()));
298 }
Here is the call graph for this function:

◆ get_attr() [3/4]

void ncutils::NCVar::get_attr ( const std::string &  name,
std::vector< float > &  value 
) const
301 {
302  size_t lenp;
303  check_nc_error(nc_inq_attlen(ncid, varid, name.data(), &lenp));
304  values.resize(lenp);
305  check_nc_error(nc_get_att_float(ncid, varid, name.data(), values.data()));
306 }
Here is the call graph for this function:

◆ get_attr() [4/4]

void ncutils::NCVar::get_attr ( const std::string &  name,
std::vector< int > &  value 
) const
309 {
310  size_t lenp;
311  check_nc_error(nc_inq_attlen(ncid, varid, name.data(), &lenp));
312  values.resize(lenp);
313  check_nc_error(nc_get_att_int(ncid, varid, name.data(), values.data()));
314 }
Here is the call graph for this function:

◆ has_attr()

bool ncutils::NCVar::has_attr ( const std::string &  name) const
248 {
249  int ierr;
250  size_t lenp;
251  ierr = nc_inq_att(ncid, varid, name.data(), NULL, &lenp);
252  return (ierr == NC_NOERR);
253 }
Here is the call graph for this function:

◆ name()

std::string ncutils::NCVar::name ( ) const

Name of this variable.

38 {
39  check_nc_error(nc_inq_varname(ncid, varid, recname));
40  return std::string(recname);
41 }

Referenced by get_attr(), has_attr(), and put_attr().

Here is the caller graph for this function:

◆ ndim()

int ncutils::NCVar::ndim ( ) const

Number of array dimensions for this variable.

44 {
45  int ndims;
46  check_nc_error(nc_inq_varndims(ncid, varid, &ndims));
47  return ndims;
48 }

Referenced by shape().

Here is the caller graph for this function:

◆ par_access()

void ncutils::NCVar::par_access ( const int  cmode) const
318 {
319  check_nc_error(nc_var_par_access(ncid, varid, cmode));
320 }

◆ put() [1/11]

void ncutils::NCVar::put ( const char **  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count 
) const
141 {
142  check_nc_error(
143  nc_put_vara_string(ncid, varid, start.data(), count.data(), dptr));
144 }

◆ put() [2/11]

void ncutils::NCVar::put ( const char **  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count,
const std::vector< ptrdiff_t > &  stride 
) const
151 {
152  check_nc_error(nc_put_vars_string(
153  ncid, varid, start.data(), count.data(), stride.data(), dptr));
154 }

◆ put() [3/11]

void ncutils::NCVar::put ( const double *  ptr) const

Write out the entire variable.

66 {
67  check_nc_error(nc_put_var_double(ncid, varid, ptr));
68 }

◆ put() [4/11]

void ncutils::NCVar::put ( const double *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count 
) const

Write out a slice of data.

84 {
85  check_nc_error(
86  nc_put_vara_double(ncid, varid, start.data(), count.data(), dptr));
87 }

◆ put() [5/11]

void ncutils::NCVar::put ( const double *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count,
const std::vector< ptrdiff_t > &  stride 
) const

Write out a slice of data with with strides (see hyperslab definition in NetCDF)

94 {
95  check_nc_error(nc_put_vars_double(
96  ncid, varid, start.data(), count.data(), stride.data(), dptr));
97 }

◆ put() [6/11]

void ncutils::NCVar::put ( const float *  ptr) const
71 {
72  check_nc_error(nc_put_var_float(ncid, varid, ptr));
73 }

◆ put() [7/11]

void ncutils::NCVar::put ( const float *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count 
) const

Write out a slice of data.

103 {
104  check_nc_error(
105  nc_put_vara_float(ncid, varid, start.data(), count.data(), dptr));
106 }

◆ put() [8/11]

void ncutils::NCVar::put ( const float *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count,
const std::vector< ptrdiff_t > &  stride 
) const

Write out a slice of data with with strides (see hyperslab definition in NetCDF)

113 {
114  check_nc_error(nc_put_vars_float(
115  ncid, varid, start.data(), count.data(), stride.data(), dptr));
116 }

◆ put() [9/11]

void ncutils::NCVar::put ( const int *  ptr) const
76 {
77  check_nc_error(nc_put_var_int(ncid, varid, ptr));
78 }

◆ put() [10/11]

void ncutils::NCVar::put ( const int *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count 
) const
122 {
123  check_nc_error(
124  nc_put_vara_int(ncid, varid, start.data(), count.data(), dptr));
125 }

◆ put() [11/11]

void ncutils::NCVar::put ( const int *  dptr,
const std::vector< size_t > &  start,
const std::vector< size_t > &  count,
const std::vector< ptrdiff_t > &  stride 
) const
132 {
133  check_nc_error(nc_put_vars_int(
134  ncid, varid, start.data(), count.data(), stride.data(), dptr));
135 }

◆ put_attr() [1/4]

void ncutils::NCVar::put_attr ( const std::string &  name,
const std::string &  value 
) const
256 {
257  check_nc_error(
258  nc_put_att_text(ncid, varid, name.data(), value.size(), value.data()));
259 }
Here is the call graph for this function:

◆ put_attr() [2/4]

void ncutils::NCVar::put_attr ( const std::string &  name,
const std::vector< double > &  value 
) const
263 {
264  check_nc_error(nc_put_att_double(
265  ncid, varid, name.data(), NC_DOUBLE, value.size(), value.data()));
266 }
Here is the call graph for this function:

◆ put_attr() [3/4]

void ncutils::NCVar::put_attr ( const std::string &  name,
const std::vector< float > &  value 
) const
270 {
271  check_nc_error(nc_put_att_float(
272  ncid, varid, name.data(), NC_FLOAT, value.size(), value.data()));
273 }
Here is the call graph for this function:

◆ put_attr() [4/4]

void ncutils::NCVar::put_attr ( const std::string &  name,
const std::vector< int > &  value 
) const
277 {
278  check_nc_error(nc_put_att_int(
279  ncid, varid, name.data(), NC_INT, value.size(), value.data()));
280 }
Here is the call graph for this function:

◆ shape()

std::vector< size_t > ncutils::NCVar::shape ( ) const

Shape of the array (size in each array dimension)

51 {
52  int ndims = ndim();
53  std::vector<int> dimids(ndims);
54  std::vector<size_t> vshape(ndims);
55 
56  for (int i = 0; i < ndims; ++i)
57  check_nc_error(nc_inq_vardimid(ncid, varid, dimids.data()));
58 
59  for (int i = 0; i < ndims; ++i)
60  check_nc_error(nc_inq_dimlen(ncid, dimids[i], &vshape[i]));
61 
62  return vshape;
63 }
int ndim() const
Number of array dimensions for this variable.
Definition: NCInterface.cpp:43
Here is the call graph for this function:

Member Data Documentation

◆ ncid

const int ncutils::NCVar::ncid

File/Group identifier.

Referenced by get(), get_attr(), has_attr(), name(), ndim(), par_access(), put(), put_attr(), and shape().

◆ varid

const int ncutils::NCVar::varid

Variable ID used with NetCDF API.

Referenced by get(), get_attr(), has_attr(), name(), ndim(), par_access(), put(), put_attr(), and shape().


The documentation for this struct was generated from the following files: