This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Hi Rajesh, > I have already mailed u regarding the redesigning of netCDF > interface. > Russ, could u please send me a documentation of the netCDF software > describing what are the purposes of each class and some description about > the functions. > I request u to please send some details as we have to submit our project by > the end of this month. I've appended the reply I sent on January 10, in case you didn't get that. I didn't realize you needed more information. The documentation of the current C++ interface, including the purpose of each class, is in the C++ documentation, which is available in the source release (in the cxx/ directory) from: ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf.tar.Z or ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-3.5.1.zip or from the Web: http://www.unidata.ucar.edu/packages/netcdf/cxxdoc_toc.html or http://www.unidata.ucar.edu/packages/netcdf/cxxdoc.ps Additional developer-level documentation is in the source code, available from the source distribution above. To rewrite the C++ interface, several approaches are possible, depending on how much time you have and your level of expertise. These are ordered from approximately the easiest to the most difficult, but the difficult approaches also provide more benefits, either to the C++ user or to the long-term maintainability and usefulness of netCDF. 0. Just update the current C++ implementation to use Templates and Exceptions, but keep the API the same. 1. Start over from the existing C interface and try to implement a thin layer on top of the C library, using Templates and Exceptions. Take this opportunity to improve the API also. 2. Start from Charlie Zender's libnco_c++ API and implementation, instead of our old C++ API and library. Charlie Zender's newer C++ library is here: http://sourceforge.net/mailarchive/message.php?msg_id=569730 but it's not very object-oriented, it just uses overloading to reduce the number of function names in the API. 3. Start from the netCDF Java version 2 API and implementation: http://www.unidata.ucar.edu/packages/netcdf-java/ and try to provide a "translation" to C++, using C++ Templates to improve the implementation where possible. The Java implementation of netCDF is the most advanced API, which includes functionality not available in the C, Fortran, or current C++ interfaces, including remote access to netCDF data on a Web server and access to data through NcML files (an XML representation of virtual netCDF datasets). 4. Start from scratch, after understanding the C and Java APIs and implementations, and implement a new netCDF API and library in C++ such that the current C interface could be provided efficiently as a thin layer on top of the C++ implementation. Try to support parallel netCDF (pnetcdf) from Argonne/Northwestern into the core package as well. You should also be cognizant of the netCDF-4 development effort, since a C++ interface will eventually be needed for that as well. However the API for netCDF-4 is not available yet, so that would have to wait another year. If you will be using a C interface, you should start from netCDF-3.6.0, currently available only as an alpha release, since that provides support for 64-bit offsets and huge data files. --Russ To: "rajesh manivannan" <address@hidden> Cc: support-netcdf, ed, address@hidden Subject: Re: 20040110: regarding netcdf-please reply Date: Sat, 10 Jan 2004 12:12:32 -0700 From: Russ Rew <address@hidden> >To: address@hidden >From: "rajesh manivannan" <address@hidden> >Subject: regarding netcdf-please reply >Organization: ? >Keywords: 200401101339.i0ADdLp2018589 netCDF C++ redesign Hi Rajesh, > I am a engineering student from Delhi,India.I have been assigned a > project of redesigning the netCDF C++ interface using OOP concepts and > template mechanism.Can you provide me with how to start and proceed with the > project.I will be very much pleased if you could respond. This would be very useful, since the C++ interface was designed before templates, exceptions, and namespaces were standardized or widely available. It would be most useful to us if you would base your interface on the version of the C++ interface in netCDF 3.5.1-beta13, currently available from ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-beta.tar.Z since this has some fixes for C++ problems in older versions. The ideal C++ interface would mimic the OOP design of the Java version 2 netCDF interface: http://www.unidata.ucar.edu/packages/netcdf-java/ But that's pretty ambitious. Nevertheless, the Java design and implementation, due to John Caron, has proved very useful. --Russ _____________________________________________________________________ Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu/staff/russ