Presentation is loading. Please wait.

Presentation is loading. Please wait.

Libcf – A CF Convention Library for NetCDF

Similar presentations


Presentation on theme: "Libcf – A CF Convention Library for NetCDF"— Presentation transcript:

1 Libcf – A CF Convention Library for NetCDF
Ed Hartnett Unidata Program Center Boulder Colorado June 11, 2007

2 Unidata Mission : To provide data, tools, and community leadership for enhanced Earth-system education and research.

3 NetCDF/libcf Development in C/C++/Fortran at Unidata
NetCDF released March, 2007 NetCDF 4.0 beta1 released April 2007 Libcf alpha4 released November 2006

4 The NetCDF Classic Model
The netCDF classic data model: files, dimensions, variables, attributes, 6 data types. The expanded netCDF-4 data model adds: groups, additional atomic and user-defined data types, additional unlimited dimensions. Create netCDF-4/HDF5 files which conform to the classic model with a flag at create time.

5 Goals for libcf Make using CF Convetions easier for readers and writers of data. Reduce duplication of effort. Ensure CF conforming files. Provide a geo-science API for netCDF. Provide some of the advanced features developed for netCDF-Java. Work with both netCDF-3 and netCDF-4/HDF5 files.

6 Limitations of libcf Handles classic model netCDF only.
Lightly tested. Doesn't handle indirect coordinates. Does not check standard name table. Alpha release - Functions in the API may change a little.

7 Current Status of libcf
Available in alpha release from libcf web page at Unidata: Nightly build/test cycle. C and F77 APIs are provided. Seeking feedback and test cases from CF users.

8 Other Software Efforts
Climate Model Output Rewritter (CMOR). CFIO from NASA/GMAO. Brian Ermold (ACRF Development) DOD project (just discovered).

9

10 Libcf and NetCDF-4

11 File Level Functions Mark file as CF-1.0 Does file follow CF- 1.0
Write or read CF recommended global attributes (title, history, institution, source, etc.)‏ nccf_def_convention nccf_inq_convention nccf_def_file nccf_add_history

12 Variable Functions Define or read CF recommended variable attributes (units, fill_value, institution, etc.)‏ nccf_def_var nc_inq_var nccf_def_var_missing nc_inq_var_missing nccf_def_notes nccf_inq_notes

13 Lat/Lon Functions Write and read simple latitude and longitude coordinate variables. Currently handles simple situations only. nc_def_latitude nc_inq_latitude nc_def_longitude nc_inq_longitude

14 Vertical Dimensions, First Try
A vertical coordinate API, done like the lat/long API, proves more complex. int nccf_def_lvl(int ncid, const char *name, size_t len, nc_type xtype, const char *units, int positive_up, const char *standard_name, const char *formula_terms, int cdm_axis_type, int *lvl_dimidp, int *lvl_varidp); int nccf_inq_lvl(int ncid, char *name, size_t *lenp, nc_type *xtypep, size_t *ft_lenp, char *formula_terms, int *positive_upp, int *lvl_dimidp, int *lvl_varidp);

15 Vertical Dimensions, Second Try
Functions to handle the vertical coordinates in appendix D of the CF 1.0 document. NetCDF define mode considerations make the situation more complex. nccf_def_lvl_sigma/nccf_def_ft_sigma nccf_inq_sigma Similarly for atmosphere_ln_pressure_coordinate, atmosphere_hybrid_height_coordinate, atmosphere_sleve_coordinate, etc.

16 Time Dimension Write and read time coordinate variable information.
nc_def_time nc_inq_time

17 Geographic Subsetting
Recent addition to libcf. Does not yet handle complex cases. int nccf_get_vara(int ncid, int varid, float *lat_range, int *nlat, float *lon_range, int *nlon, int lvl_index, int timestep, void *data);

18 An Example if (nc_create(FILE_NAME_SIMPLE_SIGMA, 0, &ncid)) ERR;
if (nccf_def_file(ncid, TITLE, HISTORY)) ERR; /* Create coordinates. */ if (nccf_def_latitude(ncid, NLATS, NC_INT, &lat_did, &lat_vid)) ERR; if (nccf_def_longitude(ncid, NLONS, NC_INT, &lon_did, &lon_vid)) ERR; if (nccf_def_lvl_sigma(ncid, "sigma", NC_FLOAT, NLVLS, &lvl_did, &lvl_vid)) ERR; if (nccf_def_time(ncid, "time", NC_UNLIMITED, NC_FLOAT, TIME_UNITS, "time", &time_did, &time_vid)) ERR; <snip> /* Save the ps and ptop info in formula terms attribute. */ if (nccf_def_ft_sigma(ncid, lvl_vid, ps_vid, ptop_vid)) ERR;

19 Website and Documentation

20 Daily Snapshots and Testing

21 Future of libcf Better geographic subsetting.
More testing on more sample files. Continued integration and borrowing of functionality from other CF efforts. More convenience functions. Optional standard name table checking. Optional UDUNITS checking. CF Conventions 2.0 and beyond. F90 and C++ APIs.

22 How to Contribute Send CF example data files to ed@unidata.ucar.edu
Download and try the libcf library. Let us know of any additional parallel efforts.

23 Annual NetCDF Bike Rides
Celebrate your favorite data format with a bike ride! Wednesday afternoon, rain or shine. Route to be determined – bike paths if possible!


Download ppt "Libcf – A CF Convention Library for NetCDF"

Similar presentations


Ads by Google