[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: regarding netcdf- very urgent please reply



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