Skip to content

Commit f8f4a62

Browse files
committed
add ncmpi_var_get/set_chunk and ncmpi_var_get/set_filter
1 parent 3c1a9e3 commit f8f4a62

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

src/dispatchers/variable.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,45 @@ ncmpi_def_var(int ncid, /* IN: file ID */
235235
return NC_NOERR;
236236
}
237237

238+
#ifdef ENABLE_COMPRESSION
239+
/*----< ncmpi_var_set_chunk() >----------------------------------------------------*/
240+
/* This is a collective subroutine. */
241+
int ncmpi_var_set_chunk (int ncid, /* IN: file ID */
242+
int varid,
243+
int *chunk_dim)
244+
{
245+
int err;
246+
int ndim;
247+
248+
err = ncmpi_inq_varndims(ncid,varid, &ndim);
249+
if (err != NC_NOERR) return err;
250+
251+
return ncmpi_put_att_int(ncid, varid, "_chunkdim", NC_INT, ndim, chunk_dim);
252+
}
253+
/*----< ncmpi_var_get_chunk() >----------------------------------------------------*/
254+
int ncmpi_var_get_chunk (int ncid, /* IN: file ID */
255+
int varid,
256+
int *chunk_dim)
257+
{
258+
return ncmpi_get_att_int(ncid, varid, "_chunkdim", chunk_dim);
259+
}
260+
/*----< ncmpi_var_set_filter() >----------------------------------------------------*/
261+
/* This is a collective subroutine. */
262+
int ncmpi_var_set_filter (int ncid, /* IN: file ID */
263+
int varid,
264+
int filter)
265+
{
266+
return ncmpi_put_att_int(ncid, varid, "_filter", NC_INT, 1, &filter);
267+
}
268+
/*----< ncmpi_var_get_filter() >----------------------------------------------------*/
269+
int ncmpi_var_get_filter (int ncid, /* IN: file ID */
270+
int varid,
271+
int *filter)
272+
{
273+
return ncmpi_get_att_int(ncid, varid, "_filter", filter);
274+
}
275+
#endif
276+
238277
/*----< ncmpi_def_var_fill() >-----------------------------------------------*/
239278
/* this API is collective, and must be called in define mode */
240279
int

src/include/pnetcdf.h.in

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -791,6 +791,20 @@ extern int
791791
ncmpi_def_var(int ncid, const char *name, nc_type xtype, int ndims,
792792
const int *dimidsp, int *varidp);
793793

794+
#ifdef ENABLE_COMPRESSION
795+
#define NC_FILTER_NONE 0
796+
#define NC_FILTER_DEFLATE 2
797+
#define NC_FILTER_SZ 3
798+
extern int
799+
ncmpi_var_set_chunk (int ncid, int varid, int *chunk_dim);
800+
extern int
801+
ncmpi_var_get_chunk (int ncid, int varid, int *chunk_dim);
802+
extern int
803+
ncmpi_var_set_filter (int ncid, int varid, int filter);
804+
extern int
805+
ncmpi_var_get_filter (int ncid, int varid, int *filter);
806+
#endif
807+
794808
extern int
795809
ncmpi_rename_dim(int ncid, int dimid, const char *name);
796810

0 commit comments

Comments
 (0)