diff --git a/.gitattributes b/.gitattributes index 2ba40eee28cf5339b1710d6c13f1be1e24c3a83c..c60516eb7c967e583282541c291b2a38cd573a51 100644 --- a/.gitattributes +++ b/.gitattributes @@ -20,6 +20,7 @@ config/mkinstalldirs -text /configure.ac -text doc/tex/FUNCTIONS -text doc/tex/Modules -text +doc/tex/c_examples.tex -text doc/tex/c_grid.tex -text doc/tex/c_link.tex -text doc/tex/c_quick_ref.tex -text @@ -51,6 +52,11 @@ doc/tex/makeps_c -text doc/tex/makeps_f -text doc/tex/test.tex -text doc/tex/usage.tex -text +examples/Makefile.am -text +examples/Makefile.in -text +examples/cdi_copy.c -text +examples/cdi_read.c -text +examples/cdi_write.c -text prog/Makefile.am -text prog/Makefile.in -text prog/cdi.c -text diff --git a/ChangeLog b/ChangeLog index 132a78b6e9901e2b303327cda8252c678bd6118b..a026c9f2182ad9b0648598b971979692e17ee540 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * using GRIB library version 1.0.0 * rename *New functions to *Create + * add dummy functions gridDestroy, zaxisDestroy, taxisDestroy * Version 1.0.0 released 2006-05-04 Uwe Schulzweida <schulzweida@dkrz.de> diff --git a/Makefile.am b/Makefile.am index a0a7620416dbe7ed6513a11b624465ffcb455375..d8be992feba6b9a17e1b7bfe6c1854bd7b69ca15 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in # -SUBDIRS = src prog tests +SUBDIRS = src prog examples tests # EXTRA_DIST=config/default # diff --git a/Makefile.in b/Makefile.in index 6b28c90f3a1ac11d4d3f3a0e82e01613b2cf1ab9..267b2fea05613862da85d58f53fe8cc04024aba4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -82,7 +82,7 @@ am__quote = @am__quote@ install_sh = @install_sh@ # -SUBDIRS = src prog tests +SUBDIRS = src prog examples tests # EXTRA_DIST = config/default # diff --git a/configure b/configure index 2877afe84ccd7c81c62842098f4a745cb71f9d8c..245ab16fe10548c54eba1c0a37a8a1e5c4ebd632 100755 --- a/configure +++ b/configure @@ -6030,7 +6030,7 @@ FC=$F77 - ac_config_files="$ac_config_files Makefile src/Makefile prog/Makefile tests/Makefile" + ac_config_files="$ac_config_files Makefile src/Makefile prog/Makefile tests/Makefile examples/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -6577,6 +6577,7 @@ do "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "prog/Makefile" ) CONFIG_FILES="$CONFIG_FILES prog/Makefile" ;; "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "src/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 diff --git a/configure.ac b/configure.ac index 5ec06318954ff91dbfb72e4c53a5c86632da63bb..13a42a2abc3ede3e3d7ed9c11c1f8c81c027ff0f 100644 --- a/configure.ac +++ b/configure.ac @@ -292,4 +292,4 @@ AC_SUBST([FC],$F77) AC_SUBST([CFINT]) AC_SUBST([AR]) -AC_OUTPUT(Makefile src/Makefile prog/Makefile tests/Makefile) +AC_OUTPUT(Makefile src/Makefile prog/Makefile tests/Makefile examples/Makefile) diff --git a/doc/tex/FUNCTIONS b/doc/tex/FUNCTIONS index 5edaf267b98392cfb005dcc02a80265218e8c843..f2a9b68f8aed50d5e5d5e9adc494d7f318931aa8 100644 --- a/doc/tex/FUNCTIONS +++ b/doc/tex/FUNCTIONS @@ -13,8 +13,8 @@ Function catalog: streamInqFiletype Get the filetype streamDefVlist Define the variable list streamInqVlist Get the variable list - streamDefTimestep Define timestep - streamInqTimestep Get timestep + streamDefTimestep Define time step + streamInqTimestep Get time step streamWriteVar Write a variable streamReadVar Read a variable streamWriteVarSlice Write a horizontal slice of a variable @@ -22,8 +22,8 @@ Function catalog: ------------------------------------------------------------- vlist ------------------------------------------------------------- - vlistNew Create a variable list - vlistFree Delete a variable list + vlistCreate Create a variable list + vlistDestroy Destroy a variable list vlistCopy Copy a variable list vlistDuplicate Duplicate a variable list vlistCat Concatenate two variable lists @@ -50,8 +50,9 @@ Function catalog: ------------------------------------------------------------- grid ------------------------------------------------------------- - gridNew Create a new Grid - gridDuplicate Duplicate a grid + gridCreate Create a horizontal Grid + gridDestroy Destroy a horizontal Grid + gridDuplicate Duplicate a horizontal Grid gridInqType Get the type of a Grid gridInqSize Get the size of a Grid gridDefXsize Define the number of values of a X-axis @@ -81,7 +82,8 @@ Function catalog: ------------------------------------------------------------- zaxis ------------------------------------------------------------- - zaxisNew Create a new Z-axis + zaxisCreate Create a vertical Z-axis + zaxisDestroy Destroy a vertical Z-axis zaxisInqType Get the type of a Z-axis zaxisInqSize Get the size of a Z-axis zaxisDefLevels Define the levels of a Z-axis @@ -96,7 +98,8 @@ Function catalog: ------------------------------------------------------------- taxis ------------------------------------------------------------- - taxisNew Create a new T-axis + taxisCreate Create a Time axis + taxisDestroy Destroy a Time axis taxisDefRdate Define the reference date taxisInqRdate Get the reference date taxisDefRtime Define the reference time diff --git a/doc/tex/Modules b/doc/tex/Modules index 899d1fe70071b30739c489a2bf55d46020dd9958..f78e9aac647939690cd18ea5eea01893c4619925 100644 --- a/doc/tex/Modules +++ b/doc/tex/Modules @@ -10,8 +10,8 @@ streamWriteVar stream streamReadVar stream streamWriteVarSlice stream streamReadVarSlice stream -vlistNew vlist -vlistFree vlist +vlistCreate vlist +vlistDestroy vlist vlistCopy vlist vlistDuplicate vlist vlistCat vlist @@ -37,7 +37,8 @@ vlistDefVarDatatype vlist_var vlistInqVarDatatype vlist_var vlistDefVarMissval vlist_var vlistInqVarMissval vlist_var -gridNew grid +gridCreate grid +gridDestroy grid gridDuplicate grid gridInqType grid gridInqSize grid @@ -65,7 +66,8 @@ gridDefYlongname grid gridInqYlongname grid gridDefYunits grid gridInqYunits grid -zaxisNew zaxis +zaxisCreate zaxis +zaxisDestroy zaxis zaxisInqType zaxis zaxisInqSize zaxis zaxisDefLevels zaxis @@ -77,7 +79,8 @@ zaxisDefLongname zaxis zaxisInqLongname zaxis zaxisDefUnits zaxis zaxisInqUnits zaxis -taxisNew taxis +taxisCreate taxis +taxisDestroy taxis taxisDefRdate taxis taxisInqRdate taxis taxisDefRtime taxis diff --git a/doc/tex/c_examples.tex b/doc/tex/c_examples.tex new file mode 100644 index 0000000000000000000000000000000000000000..c0da7de160f6110e729fb41ee21656aa7a6a6ab0 --- /dev/null +++ b/doc/tex/c_examples.tex @@ -0,0 +1,148 @@ +\appendix + +\chapter{\label{appendixa}Examples} + +\section{Write variables to a dataset} + +\begin{lstlisting}[frame=single, backgroundcolor=\color{zebg}, basicstyle=\footnotesize] +#include "cdi.h" + +#define NLON 12 /* Number of longitudes */ +#define NLAT 6 /* Number of latitudes */ +#define NLEV 5 /* Number of levels */ +#define NTIME 3 /* Number of time steps */ + +int main(void) +{ + int gridID, zaxisID1, zaxisID2, taxisID; + int vlistID, varID1, varID2, streamID; + int tsID; + int i, nmiss = 0; + double lons[NLON] = {0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330}; + double lats[NLAT] = {-75, -45, -15, 15, 45, 75}; + double levs[NLEV] = {101300, 92500, 85000, 50000, 20000}; + double var1[NLON*NLAT]; + double var2[NLON*NLAT*NLEV]; + + /* Create a LONLAT grid */ + gridID = gridCreate(GRID_LONLAT, NLON*NLAT); + gridDefXsize(gridID, NLON); + gridDefYsize(gridID, NLAT); + gridDefXvals(gridID, lons); + gridDefYvals(gridID, lats); + + /* Create a surface Z-axis */ + zaxisID1 = zaxisCreate(ZAXIS_SURFACE, 1); + + /* Create a pressure level Z-axis */ + zaxisID2 = zaxisCreate(ZAXIS_PRESSURE, NLEV); + zaxisDefLevels(zaxisID2, levs); + + /* Create a variable list */ + vlistID = vlistCreate(); + + /* Define the variables */ + varID1 = vlistDefVar(vlistID, gridID, zaxisID1, TIME_VARIABLE); + varID2 = vlistDefVar(vlistID, gridID, zaxisID2, TIME_VARIABLE); + + /* Define variable name */ + vlistDefVarName(vlistID, varID1, "varname1"); + vlistDefVarName(vlistID, varID2, "varname2"); + + /* Create a Time axis */ + taxisID = taxisCreate(TAXIS_ABSOLUTE); + + /* Assign the Time axis to the variable list */ + vlistDefTaxis(vlistID, taxisID); + + /* Create a dataset */ + streamID = streamOpenWrite("example.nc", FILETYPE_NC); + + /* Assign the variable list to the dataset */ + streamDefVlist(streamID, vlistID); + + /* Loop over the number of time steps */ + for ( tsID = 0; tsID < NTIME; tsID++ ) + { + /* Set the verification date to 1985-01-01 + tsID */ + taxisDefVdate(taxisID, 19850101+tsID); + /* Set the verification time to 12:00 */ + taxisDefVtime(taxisID, 1200); + /* Define the time step */ + streamDefTimestep(streamID, tsID); + + /* Write var1 */ + for ( i = 0; i < NLON*NLAT; i++ ) var1[i] = 1; + streamWriteVar(streamID, varID1, var1, nmiss); + /* Write var2 */ + for ( i = 0; i < NLON*NLAT*NLEV; i++ ) var2[i] = 2; + streamWriteVar(streamID, varID2, var2, nmiss); + } + + /* Close the output stream */ + streamClose(streamID); + + /* Destroy the created objects */ + vlistDestroy(vlistID); + taxisDestroy(taxisID); + zaxisDestroy(zaxisID1); + zaxisDestroy(zaxisID2); + gridDestroy(gridID); + + return 0; +} +\end{lstlisting} + +\subsection{Result} +\begin{lstlisting}[frame=single, backgroundcolor=\color{zebg}, basicstyle=\footnotesize] +netcdf example { +dimensions: + lon = 12 ; + lat = 6 ; + lev = 5 ; + time = UNLIMITED ; // (3 currently) +variables: + double lon(lon) ; + lon:long_name = "longitude" ; + lon:units = "degrees_east" ; + lon:standard_name = "longitude" ; + double lat(lat) ; + lat:long_name = "latitude" ; + lat:units = "degrees_north" ; + lat:standard_name = "latitude" ; + double lev(lev) ; + lev:long_name = "pressure" ; + lev:units = "Pa" ; + double time(time) ; + time:units = "day as %Y%m%d.%f" ; + float varname1(time, lat, lon) ; + float varname2(time, lev, lat, lon) ; + +// global attributes: + :CDI = "Climate Data Interface version 1.0.0" ; + :Conventions = "CF-1.0" ; +data: + + lon = 0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330 ; + + lat = -75, -45, -15, 15, 45, 75 ; + + lev = 101300, 92500, 85000, 50000, 20000 ; + + time = 19850101.5, 19850102.5, 19850103.5 ; +} +\end{lstlisting} + + +\section{Read a dataset} + +\begin{lstlisting}[frame=single, backgroundcolor=\color{zebg}, basicstyle=\footnotesize] +\end{lstlisting} + + +\section{Write variables to a dataset} + +\begin{lstlisting}[frame=single, backgroundcolor=\color{zebg}, basicstyle=\footnotesize] +\end{lstlisting} + +\section{Copy a dataset} diff --git a/doc/tex/c_grid.tex b/doc/tex/c_grid.tex index 7a8ee75d7140c3be62aa7eae201604dabf14d364..b84a3aa7125f09c88bc1b7151a544c9f7b545b73 100644 --- a/doc/tex/c_grid.tex +++ b/doc/tex/c_grid.tex @@ -1,15 +1,15 @@ -\section{Create a new Grid: {\tt gridNew}} -\index{gridNew} -\label{gridNew} +\section{Create a horizontal Grid: {\tt gridCreate}} +\index{gridCreate} +\label{gridCreate} -The function {\tt gridNew} creates a new Grid. +The function {\tt gridCreate} creates a horizontal Grid. \subsection*{Usage} \begin{verbatim} - int gridNew(int gridtype, int size); + int gridCreate(int gridtype, int size); \end{verbatim} \hspace*{4mm}\begin{minipage}[]{15cm} @@ -26,12 +26,14 @@ Number of gridpoints. \subsection*{Result} -{\tt gridNew} returns an identifier to the new Grid. +{\tt gridCreate} returns an identifier to the Grid. \subsection*{Example} -Here is an example using {\tt gridNew} to create a new {\tt LONLAT} Grid:\begin{verbatim} +Here is an example using {\tt gridCreate} to create a {\tt LONLAT} Grid: + +\begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] #include <cdi.h> ... int gridID; @@ -40,20 +42,38 @@ Here is an example using {\tt gridNew} to create a new {\tt LONLAT} Grid:\begin{ double lons[nlon] = {0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330}; double lats[nlat] = {-75, -45, -15, 15, 45, 75}; ... - gridID = gridNew(GRID_LONLAT, nlon*nlat); + gridID = gridCreate(GRID_LONLAT, nlon*nlat); gridDefXsize(gridID, nlon); gridDefYsize(gridID, nlat); gridDefXvals(gridID, lons); gridDefYvals(gridID, lats); ... +\end{lstlisting} + + +\section{Destroy a horizontal Grid: {\tt gridDestroy}} +\index{gridDestroy} +\label{gridDestroy} +\subsection*{Usage} + +\begin{verbatim} + void gridDestroy(int gridID); \end{verbatim} +\hspace*{4mm}\begin{minipage}[]{15cm} +\begin{deflist}{\tt gridID\ } +\item[{\tt gridID}] +Identifier, from a previous call to {\tt gridCreate} + +\end{deflist} +\end{minipage} + -\section{Duplicate a grid: {\tt gridDuplicate}} +\section{Duplicate a horizontal Grid: {\tt gridDuplicate}} \index{gridDuplicate} \label{gridDuplicate} -The function {\tt gridDuplicate} duplicates a grid. +The function {\tt gridDuplicate} duplicates a horizontal Grid. \subsection*{Usage} @@ -64,7 +84,7 @@ The function {\tt gridDuplicate} duplicates a grid. \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt gridID\ } \item[{\tt gridID}] -Identifier, from a previous call to {\tt gridNew}, +Identifier, from a previous call to {\tt gridCreate}, {\tt gridDuplicate} or {\tt vlistInqVarGrid}. \end{deflist} @@ -72,7 +92,7 @@ Identifier, from a previous call to {\tt gridNew}, \subsection*{Result} -{\tt gridDuplicate} returns an identifier to the duplicated grid. +{\tt gridDuplicate} returns an identifier to the duplicated Grid. diff --git a/doc/tex/c_ref.tex b/doc/tex/c_ref.tex index b543306c915e4c7e7456d7bd1e4f954187a1b1cd..f5b300d1b84aae2dc6f30b1192b1187344124a3f 100644 --- a/doc/tex/c_ref.tex +++ b/doc/tex/c_ref.tex @@ -1,5 +1,14 @@ +\section*{\tt \htmlref{gridCreate}{gridCreate}} + +\begin{verbatim} + int gridCreate(int gridtype, int size); +\end{verbatim} + +Create a horizontal Grid + + \section*{\tt \htmlref{gridDefXbounds}{gridDefXbounds}} \begin{verbatim} @@ -108,13 +117,22 @@ Define the units of a Y-axis Define the values of a Y-axis +\section*{\tt \htmlref{gridDestroy}{gridDestroy}} + +\begin{verbatim} + void gridDestroy(int gridID); +\end{verbatim} + +Destroy a horizontal Grid + + \section*{\tt \htmlref{gridDuplicate}{gridDuplicate}} \begin{verbatim} int gridDuplicate(int gridID); \end{verbatim} -Duplicate a grid +Duplicate a horizontal Grid \section*{\tt \htmlref{gridInqSize}{gridInqSize}} @@ -243,15 +261,6 @@ Get the units of a Y-axis Get all values of a Y-axis -\section*{\tt \htmlref{gridNew}{gridNew}} - -\begin{verbatim} - int gridNew(int gridtype, int size); -\end{verbatim} - -Create a new Grid - - \section*{\tt \htmlref{streamClose}{streamClose}} \begin{verbatim} @@ -267,7 +276,7 @@ Close an open dataset int streamDefTimestep(int streamID, int tsID); \end{verbatim} -Define timestep +Define time step \section*{\tt \htmlref{streamDefVlist}{streamDefVlist}} @@ -294,7 +303,7 @@ Get the filetype int streamInqTimestep(int streamID, int tsID); \end{verbatim} -Get timestep +Get time step \section*{\tt \htmlref{streamInqVlist}{streamInqVlist}} @@ -362,6 +371,15 @@ Write a variable Write a horizontal slice of a variable +\section*{\tt \htmlref{taxisCreate}{taxisCreate}} + +\begin{verbatim} + int taxisCreate(int taxistype); +\end{verbatim} + +Create a Time axis + + \section*{\tt \htmlref{taxisDefCalendar}{taxisDefCalendar}} \begin{verbatim} @@ -407,6 +425,15 @@ Define the verification date Define the verification time +\section*{\tt \htmlref{taxisDestroy}{taxisDestroy}} + +\begin{verbatim} + void taxisDestroy(int taxisID); +\end{verbatim} + +Destroy a Time axis + + \section*{\tt \htmlref{taxisInqCalendar}{taxisInqCalendar}} \begin{verbatim} @@ -452,15 +479,6 @@ Get the verification date Get the verification time -\section*{\tt \htmlref{taxisNew}{taxisNew}} - -\begin{verbatim} - int taxisNew(int taxistype); -\end{verbatim} - -Create a new T-axis - - \section*{\tt \htmlref{vlistCat}{vlistCat}} \begin{verbatim} @@ -488,6 +506,15 @@ Copy a variable list Copy some entries of a variable list +\section*{\tt \htmlref{vlistCreate}{vlistCreate}} + +\begin{verbatim} + int vlistCreate(void); +\end{verbatim} + +Create a variable list + + \section*{\tt \htmlref{vlistDefVar}{vlistDefVar}} \begin{verbatim} @@ -551,22 +578,22 @@ Define the name of a Variable Define the units of a Variable -\section*{\tt \htmlref{vlistDuplicate}{vlistDuplicate}} +\section*{\tt \htmlref{vlistDestroy}{vlistDestroy}} \begin{verbatim} - int vlistDuplicate(int vlistID); + void vlistDestroy(int vlistID); \end{verbatim} -Duplicate a variable list +Destroy a variable list -\section*{\tt \htmlref{vlistFree}{vlistFree}} +\section*{\tt \htmlref{vlistDuplicate}{vlistDuplicate}} \begin{verbatim} - void vlistFree(int vlistID); + int vlistDuplicate(int vlistID); \end{verbatim} -Delete a variable list +Duplicate a variable list \section*{\tt \htmlref{vlistInqVarCode}{vlistInqVarCode}} @@ -623,15 +650,6 @@ Get the name of a Variable Get the units of a Variable -\section*{\tt \htmlref{vlistNew}{vlistNew}} - -\begin{verbatim} - int vlistNew(void); -\end{verbatim} - -Create a variable list - - \section*{\tt \htmlref{vlistNgrids}{vlistNgrids}} \begin{verbatim} @@ -659,6 +677,15 @@ Number of variables in a variable list Number of zaxis in a variable list +\section*{\tt \htmlref{zaxisCreate}{zaxisCreate}} + +\begin{verbatim} + int zaxisCreate(int zaxistype, int size); +\end{verbatim} + +Create a vertical Z-axis + + \section*{\tt \htmlref{zaxisDefLevels}{zaxisDefLevels}} \begin{verbatim} @@ -695,6 +722,15 @@ Define the name of a Z-axis Define the units of a Z-axis +\section*{\tt \htmlref{zaxisDestroy}{zaxisDestroy}} + +\begin{verbatim} + void zaxisDestroy(int zaxisID); +\end{verbatim} + +Destroy a vertical Z-axis + + \section*{\tt \htmlref{zaxisInqLevel}{zaxisInqLevel}} \begin{verbatim} @@ -756,12 +792,3 @@ Get the type of a Z-axis \end{verbatim} Get the units of a Z-axis - - -\section*{\tt \htmlref{zaxisNew}{zaxisNew}} - -\begin{verbatim} - int zaxisNew(int zaxistype, int size); -\end{verbatim} - -Create a new Z-axis diff --git a/doc/tex/c_stream.tex b/doc/tex/c_stream.tex index 77f49f26c6feed37eb250ae7110998779eb19bd2..a8266109becfb410a949c7629b24dbfcfc0b8327 100644 --- a/doc/tex/c_stream.tex +++ b/doc/tex/c_stream.tex @@ -18,7 +18,7 @@ The name of the new dataset \item[{\tt filetype}] The type of the file format, one of the set of predefined CDI file format types. The valid CDI file format types are {\tt FILETYPE\_GRB}, {\tt FILETYPE\_NC}, - {\tt FILETYPE\_NC2}, {\tt FILETYPE\_SRV}, and {\tt FILETYPE\_EXT}. + {\tt FILETYPE\_NC2}, {\tt FILETYPE\_SRV}, {\tt FILETYPE\_EXT} and {\tt FILETYPE\_IEG}. \end{deflist} \end{minipage} @@ -48,7 +48,10 @@ Library not available \subsection*{Example} -Here is an example using {\tt streamOpenWrite} to create a new netCDF file named {\tt foo.nc} for writing:\begin{verbatim} +Here is an example using {\tt streamOpenWrite} to create a new netCDF file +named {\tt foo.nc} for writing: + +\begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] #include <cdi.h> ... int streamID; @@ -56,7 +59,7 @@ Here is an example using {\tt streamOpenWrite} to create a new netCDF file named streamID = streamOpenWrite("foo.nc", FILETYPE_NC); if ( streamID < 0 ) handle_error(streamID); ... -\end{verbatim} +\end{lstlisting} \section{Open a dataset for reading: {\tt streamOpenRead}} @@ -104,7 +107,10 @@ Library not available \subsection*{Example} -Here is an example using {\tt streamOpenRead} to open an existing netCDFfile named {\tt foo.nc} for reading:\begin{verbatim} +Here is an example using {\tt streamOpenRead} to open an existing netCDF +file named {\tt foo.nc} for reading: + +\begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] #include <cdi.h> ... int streamID; @@ -112,7 +118,7 @@ Here is an example using {\tt streamOpenRead} to open an existing netCDFfile nam streamID = streamOpenRead("foo.nc"); if ( streamID < 0 ) handle_error(streamID); ... -\end{verbatim} +\end{lstlisting} \section{Close an open dataset: {\tt streamClose}} @@ -162,7 +168,7 @@ Stream identifier {\tt streamInqFiletype} returns the type of the file format, one of the set of predefined CDI file format types. The valid CDI file format types are {\tt FILETYPE\_GRB}, {\tt FILETYPE\_NC}, -{\tt FILETYPE\_NC2}, {\tt FILETYPE\_SRV}, and {\tt FILETYPE\_EXT}. +{\tt FILETYPE\_NC2}, {\tt FILETYPE\_SRV}, {\tt FILETYPE\_EXT} and {\tt FILETYPE\_IEG}. @@ -215,11 +221,11 @@ Stream identifier -\section{Define timestep: {\tt streamDefTimestep}} +\section{Define time step: {\tt streamDefTimestep}} \index{streamDefTimestep} \label{streamDefTimestep} -The function {\tt streamDefTimestep} defines the timestep of a stream. +The function {\tt streamDefTimestep} defines the time step of a stream. \subsection*{Usage} @@ -239,15 +245,15 @@ Timestep identifier \subsection*{Result} -{\tt streamDefTimestep} returns the number of records of the timestep. +{\tt streamDefTimestep} returns the number of records of the time step. -\section{Get timestep: {\tt streamInqTimestep}} +\section{Get time step: {\tt streamInqTimestep}} \index{streamInqTimestep} \label{streamInqTimestep} -The function {\tt streamInqTimestep} returns the timestep of a stream. +The function {\tt streamInqTimestep} returns the time step of a stream. \subsection*{Usage} @@ -267,13 +273,16 @@ Timestep identifier \subsection*{Result} -{\tt streamInqTimestep} returns the number of records of the timestep. +{\tt streamInqTimestep} returns the number of records of the time step. \section{Write a variable: {\tt streamWriteVar}} \index{streamWriteVar} \label{streamWriteVar} + +The function streamWriteVar writes the values of one time step of a variable +to an open dataset. \subsection*{Usage} \begin{verbatim} @@ -283,11 +292,11 @@ Timestep identifier \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt streamID\ } \item[{\tt streamID}] -Stream identifier +Stream identifier, from a previous call to streamOpenWrite \item[{\tt varID}] Variable identifier \item[{\tt data}] -Data +Pointer to a block of data values to be written \item[{\tt nmiss}] Number of missing values @@ -298,6 +307,9 @@ Number of missing values \section{Read a variable: {\tt streamReadVar}} \index{streamReadVar} \label{streamReadVar} + +The function streamReadVar reads all the values of one time step of a variable +from an open dataset. \subsection*{Usage} \begin{verbatim} @@ -307,11 +319,11 @@ Number of missing values \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt streamID\ } \item[{\tt streamID}] -Stream identifier +Stream identifier, from a previous call to streamOpenRead \item[{\tt varID}] Variable identifier \item[{\tt data}] -Data +Pointer to the location into which the data value is read \item[{\tt nmiss}] Number of missing values @@ -322,6 +334,9 @@ Number of missing values \section{Write a horizontal slice of a variable: {\tt streamWriteVarSlice}} \index{streamWriteVarSlice} \label{streamWriteVarSlice} + +The function streamWriteVarSlice writes the values of a horizontal slice of a +variable to an open dataset. \subsection*{Usage} \begin{verbatim} @@ -332,13 +347,13 @@ Number of missing values \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt streamID\ } \item[{\tt streamID}] -Stream identifier +Stream identifier, from a previous call to streamOpenWrite \item[{\tt varID}] Variable identifier \item[{\tt levelID}] Level identifier \item[{\tt data}] -Data +Pointer to a block of data values to be written \item[{\tt nmiss}] Number of missing values @@ -349,6 +364,9 @@ Number of missing values \section{Read a horizontal slice of a variable: {\tt streamReadVarSlice}} \index{streamReadVarSlice} \label{streamReadVarSlice} + +The function streamReadVar reads all the values of a horizontal slice of a variable +from an open dataset. \subsection*{Usage} \begin{verbatim} @@ -359,13 +377,13 @@ Number of missing values \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt streamID\ } \item[{\tt streamID}] -Stream identifier +Stream identifier, from a previous call to streamOpenRead \item[{\tt varID}] Variable identifier \item[{\tt levelID}] Level identifier \item[{\tt data}] -Data +Pointer to the location into which the data value is read \item[{\tt nmiss}] Number of missing values diff --git a/doc/tex/c_taxis.tex b/doc/tex/c_taxis.tex index 872691eae20e6c50bc1320c12c1863bd7749a84a..2822f806a43bb7a6f38f17e3e74c4336b41cb5f4 100644 --- a/doc/tex/c_taxis.tex +++ b/doc/tex/c_taxis.tex @@ -1,15 +1,15 @@ -\section{Create a new T-axis: {\tt taxisNew}} -\index{taxisNew} -\label{taxisNew} +\section{Create a Time axis: {\tt taxisCreate}} +\index{taxisCreate} +\label{taxisCreate} -The function {\tt taxisNew} creates a new Time axis. +The function {\tt taxisCreate} creates a Time axis. \subsection*{Usage} \begin{verbatim} - int taxisNew(int taxistype); + int taxisCreate(int taxistype); \end{verbatim} \hspace*{4mm}\begin{minipage}[]{15cm} @@ -23,10 +23,28 @@ The type of the time axis, one of the set of predefined CDI time types. \subsection*{Result} -{\tt taxisNew} returns an identifier to the new T-axis. +{\tt taxisCreate} returns an identifier to the Time axis. +\section{Destroy a Time axis: {\tt taxisDestroy}} +\index{taxisDestroy} +\label{taxisDestroy} +\subsection*{Usage} + +\begin{verbatim} + void taxisDestroy(int taxisID); +\end{verbatim} + +\hspace*{4mm}\begin{minipage}[]{15cm} +\begin{deflist}{\tt taxisID\ } +\item[{\tt taxisID}] +Identifier, from a previous call to {\tt taxisCreate} + +\end{deflist} +\end{minipage} + + \section{Define the reference date: {\tt taxisDefRdate}} \index{taxisDefRdate} \label{taxisDefRdate} diff --git a/doc/tex/c_vlist.tex b/doc/tex/c_vlist.tex index 47433839237c1615a48647ab0596e7718ce8cb1e..4b6492cc0ea24cb0ed3f6f4045154a8342dca810 100644 --- a/doc/tex/c_vlist.tex +++ b/doc/tex/c_vlist.tex @@ -1,28 +1,28 @@ -\section{Create a variable list: {\tt vlistNew}} -\index{vlistNew} -\label{vlistNew} +\section{Create a variable list: {\tt vlistCreate}} +\index{vlistCreate} +\label{vlistCreate} \subsection*{Usage} \begin{verbatim} - int vlistNew(void); + int vlistCreate(void); \end{verbatim} -\section{Delete a variable list: {\tt vlistFree}} -\index{vlistFree} -\label{vlistFree} +\section{Destroy a variable list: {\tt vlistDestroy}} +\index{vlistDestroy} +\label{vlistDestroy} \subsection*{Usage} \begin{verbatim} - void vlistFree(int vlistID); + void vlistDestroy(int vlistID); \end{verbatim} \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt vlistID\ } \item[{\tt vlistID}] -Identifier, from a previous call to {\tt vlistNew} +Identifier, from a previous call to {\tt vlistCreate} \end{deflist} \end{minipage} diff --git a/doc/tex/c_vlist_var.tex b/doc/tex/c_vlist_var.tex index b06571975275ac8a74de2f5645644641ed9aaaf7..289b5f5eb4bf8cabb8c164c25817510a602c93a7 100644 --- a/doc/tex/c_vlist_var.tex +++ b/doc/tex/c_vlist_var.tex @@ -15,11 +15,11 @@ The function {\tt vlistDefVar} adds a new variable to vlistID. \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt vlistID\ } \item[{\tt vlistID}] -Variable list ID, from a previous call to vlistNew or vlistCopy +Variable list ID, from a previous call to vlistCreate or vlistCopy \item[{\tt gridID}] -Grid ID, from a previous call to gridNew +Grid ID, from a previous call to gridCreate \item[{\tt zaxisID}] -Z-axis ID, from a previous call to zaxisNew +Z-axis ID, from a previous call to zaxisCreate \item[{\tt timeID}] One of the set of predefined CDI time identifiers. The valid CDI time identifiers are TIME\_CONSTANT and TIME\_VARIABLE. diff --git a/doc/tex/c_zaxis.tex b/doc/tex/c_zaxis.tex index 2269cdea06ac1bf4d31157047628d67b77cc0d81..b0091e310339ff7aaa9b7d26456fa1418b4046a2 100644 --- a/doc/tex/c_zaxis.tex +++ b/doc/tex/c_zaxis.tex @@ -1,15 +1,15 @@ -\section{Create a new Z-axis: {\tt zaxisNew}} -\index{zaxisNew} -\label{zaxisNew} +\section{Create a vertical Z-axis: {\tt zaxisCreate}} +\index{zaxisCreate} +\label{zaxisCreate} -The function {\tt zaxisNew} creates a new Z-axis. +The function {\tt zaxisCreate} creates a vertical Z-axis. \subsection*{Usage} \begin{verbatim} - int zaxisNew(int zaxistype, int size); + int zaxisCreate(int zaxistype, int size); \end{verbatim} \hspace*{4mm}\begin{minipage}[]{15cm} @@ -27,10 +27,28 @@ Number of levels \subsection*{Result} -{\tt zaxisNew} returns an identifier to the new Z-axis. +{\tt zaxisCreate} returns an identifier to the vertical Z-axis. +\section{Destroy a vertical Z-axis: {\tt zaxisDestroy}} +\index{zaxisDestroy} +\label{zaxisDestroy} +\subsection*{Usage} + +\begin{verbatim} + void zaxisDestroy(int zaxisID); +\end{verbatim} + +\hspace*{4mm}\begin{minipage}[]{15cm} +\begin{deflist}{\tt zaxisID\ } +\item[{\tt zaxisID}] +Identifier, from a previous call to {\tt zaxisCreate} + +\end{deflist} +\end{minipage} + + \section{Get the type of a Z-axis: {\tt zaxisInqType}} \index{zaxisInqType} \label{zaxisInqType} diff --git a/doc/tex/cdi_cman.tex b/doc/tex/cdi_cman.tex index 84db85b2f893437dd9aa76489a78f488ed478651..a7d2cc38bafdda685da4e178c0bcdaac795c0ecc 100644 --- a/doc/tex/cdi_cman.tex +++ b/doc/tex/cdi_cman.tex @@ -193,6 +193,9 @@ \input{bib} +\input{c_examples} + + \chapter*{Quick Reference\markboth{Quick Reference}{}} \addcontentsline{toc}{chapter}{Quick Reference} diff --git a/doc/tex/f_grid.tex b/doc/tex/f_grid.tex index 2478f233528c7feccb28654a74c2a37046e11055..1c0be1f9593c037029189bd957c5b338afaa7054 100644 --- a/doc/tex/f_grid.tex +++ b/doc/tex/f_grid.tex @@ -1,15 +1,15 @@ -\section{Create a new Grid: {\tt gridNew}} -\index{gridNew} -\label{gridNew} +\section{Create a horizontal Grid: {\tt gridCreate}} +\index{gridCreate} +\label{gridCreate} -The function {\tt gridNew} creates a new Grid. +The function {\tt gridCreate} creates a horizontal Grid. \subsection*{Usage} \begin{verbatim} - INTEGER FUNCTION gridNew(INTEGER gridtype, INTEGER size) + INTEGER FUNCTION gridCreate(INTEGER gridtype, INTEGER size) \end{verbatim} \hspace*{4mm}\begin{minipage}[]{15cm} @@ -26,12 +26,14 @@ Number of gridpoints. \subsection*{Result} -{\tt gridNew} returns an identifier to the new Grid. +{\tt gridCreate} returns an identifier to the Grid. \subsection*{Example} -Here is an example using {\tt gridNew} to create a new {\tt LONLAT} Grid:\begin{verbatim} +Here is an example using {\tt gridCreate} to create a {\tt LONLAT} Grid: + +\begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] INCLUDE 'cdi.h' ... INTEGER gridID @@ -40,20 +42,38 @@ Here is an example using {\tt gridNew} to create a new {\tt LONLAT} Grid:\begin{ REAL*8 lons(nlon) = (/0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330/) REAL*8 lats(nlat) = (/-75, -45, -15, 15, 45, 75/) ... - gridID = gridNew(GRID_LONLAT, nlon*nlat) + gridID = gridCreate(GRID_LONLAT, nlon*nlat) CALL gridDefXsize(gridID, nlon) CALL gridDefYsize(gridID, nlat) CALL gridDefXvals(gridID, lons) CALL gridDefYvals(gridID, lats) ... +\end{lstlisting} + + +\section{Destroy a horizontal Grid: {\tt gridDestroy}} +\index{gridDestroy} +\label{gridDestroy} +\subsection*{Usage} + +\begin{verbatim} + SUBROUTINE gridDestroy(INTEGER gridID) \end{verbatim} +\hspace*{4mm}\begin{minipage}[]{15cm} +\begin{deflist}{\tt gridID\ } +\item[{\tt gridID}] +Identifier, from a previous call to {\tt gridCreate} + +\end{deflist} +\end{minipage} + -\section{Duplicate a grid: {\tt gridDuplicate}} +\section{Duplicate a horizontal Grid: {\tt gridDuplicate}} \index{gridDuplicate} \label{gridDuplicate} -The function {\tt gridDuplicate} duplicates a grid. +The function {\tt gridDuplicate} duplicates a horizontal Grid. \subsection*{Usage} @@ -64,7 +84,7 @@ The function {\tt gridDuplicate} duplicates a grid. \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt gridID\ } \item[{\tt gridID}] -Identifier, from a previous call to {\tt gridNew}, +Identifier, from a previous call to {\tt gridCreate}, {\tt gridDuplicate} or {\tt vlistInqVarGrid}. \end{deflist} @@ -72,7 +92,7 @@ Identifier, from a previous call to {\tt gridNew}, \subsection*{Result} -{\tt gridDuplicate} returns an identifier to the duplicated grid. +{\tt gridDuplicate} returns an identifier to the duplicated Grid. diff --git a/doc/tex/f_ref.tex b/doc/tex/f_ref.tex index 1a997eacd6788c0eca22a43f7dcd57551d0bda36..01af3d217f98f863e6ec972d7ea8ceef366ed399 100644 --- a/doc/tex/f_ref.tex +++ b/doc/tex/f_ref.tex @@ -1,5 +1,14 @@ +\section*{\tt \htmlref{gridCreate}{gridCreate}} + +\begin{verbatim} + INTEGER FUNCTION gridCreate(INTEGER gridtype, INTEGER size) +\end{verbatim} + +Create a horizontal Grid + + \section*{\tt \htmlref{gridDefXbounds}{gridDefXbounds}} \begin{verbatim} @@ -108,13 +117,22 @@ Define the units of a Y-axis Define the values of a Y-axis +\section*{\tt \htmlref{gridDestroy}{gridDestroy}} + +\begin{verbatim} + SUBROUTINE gridDestroy(INTEGER gridID) +\end{verbatim} + +Destroy a horizontal Grid + + \section*{\tt \htmlref{gridDuplicate}{gridDuplicate}} \begin{verbatim} INTEGER FUNCTION gridDuplicate(INTEGER gridID) \end{verbatim} -Duplicate a grid +Duplicate a horizontal Grid \section*{\tt \htmlref{gridInqSize}{gridInqSize}} @@ -243,15 +261,6 @@ Get the units of a Y-axis Get all values of a Y-axis -\section*{\tt \htmlref{gridNew}{gridNew}} - -\begin{verbatim} - INTEGER FUNCTION gridNew(INTEGER gridtype, INTEGER size) -\end{verbatim} - -Create a new Grid - - \section*{\tt \htmlref{streamClose}{streamClose}} \begin{verbatim} @@ -267,7 +276,7 @@ Close an open dataset INTEGER FUNCTION streamDefTimestep(INTEGER streamID, INTEGER tsID) \end{verbatim} -Define timestep +Define time step \section*{\tt \htmlref{streamDefVlist}{streamDefVlist}} @@ -294,7 +303,7 @@ Get the filetype INTEGER FUNCTION streamInqTimestep(INTEGER streamID, INTEGER tsID) \end{verbatim} -Get timestep +Get time step \section*{\tt \htmlref{streamInqVlist}{streamInqVlist}} @@ -364,6 +373,15 @@ Write a variable Write a horizontal slice of a variable +\section*{\tt \htmlref{taxisCreate}{taxisCreate}} + +\begin{verbatim} + INTEGER FUNCTION taxisCreate(INTEGER taxistype) +\end{verbatim} + +Create a Time axis + + \section*{\tt \htmlref{taxisDefCalendar}{taxisDefCalendar}} \begin{verbatim} @@ -409,6 +427,15 @@ Define the verification date Define the verification time +\section*{\tt \htmlref{taxisDestroy}{taxisDestroy}} + +\begin{verbatim} + SUBROUTINE taxisDestroy(INTEGER taxisID) +\end{verbatim} + +Destroy a Time axis + + \section*{\tt \htmlref{taxisInqCalendar}{taxisInqCalendar}} \begin{verbatim} @@ -454,15 +481,6 @@ Get the verification date Get the verification time -\section*{\tt \htmlref{taxisNew}{taxisNew}} - -\begin{verbatim} - INTEGER FUNCTION taxisNew(INTEGER taxistype) -\end{verbatim} - -Create a new T-axis - - \section*{\tt \htmlref{vlistCat}{vlistCat}} \begin{verbatim} @@ -490,6 +508,15 @@ Copy a variable list Copy some entries of a variable list +\section*{\tt \htmlref{vlistCreate}{vlistCreate}} + +\begin{verbatim} + INTEGER FUNCTION vlistCreate() +\end{verbatim} + +Create a variable list + + \section*{\tt \htmlref{vlistDefVar}{vlistDefVar}} \begin{verbatim} @@ -555,22 +582,22 @@ Define the name of a Variable Define the units of a Variable -\section*{\tt \htmlref{vlistDuplicate}{vlistDuplicate}} +\section*{\tt \htmlref{vlistDestroy}{vlistDestroy}} \begin{verbatim} - INTEGER FUNCTION vlistDuplicate(INTEGER vlistID) + SUBROUTINE vlistDestroy(INTEGER vlistID) \end{verbatim} -Duplicate a variable list +Destroy a variable list -\section*{\tt \htmlref{vlistFree}{vlistFree}} +\section*{\tt \htmlref{vlistDuplicate}{vlistDuplicate}} \begin{verbatim} - SUBROUTINE vlistFree(INTEGER vlistID) + INTEGER FUNCTION vlistDuplicate(INTEGER vlistID) \end{verbatim} -Delete a variable list +Duplicate a variable list \section*{\tt \htmlref{vlistInqVarCode}{vlistInqVarCode}} @@ -628,15 +655,6 @@ Get the name of a Variable Get the units of a Variable -\section*{\tt \htmlref{vlistNew}{vlistNew}} - -\begin{verbatim} - INTEGER FUNCTION vlistNew() -\end{verbatim} - -Create a variable list - - \section*{\tt \htmlref{vlistNgrids}{vlistNgrids}} \begin{verbatim} @@ -664,6 +682,15 @@ Number of variables in a variable list Number of zaxis in a variable list +\section*{\tt \htmlref{zaxisCreate}{zaxisCreate}} + +\begin{verbatim} + INTEGER FUNCTION zaxisCreate(INTEGER zaxistype, INTEGER size) +\end{verbatim} + +Create a vertical Z-axis + + \section*{\tt \htmlref{zaxisDefLevels}{zaxisDefLevels}} \begin{verbatim} @@ -700,6 +727,15 @@ Define the name of a Z-axis Define the units of a Z-axis +\section*{\tt \htmlref{zaxisDestroy}{zaxisDestroy}} + +\begin{verbatim} + SUBROUTINE zaxisDestroy(INTEGER zaxisID) +\end{verbatim} + +Destroy a vertical Z-axis + + \section*{\tt \htmlref{zaxisInqLevel}{zaxisInqLevel}} \begin{verbatim} @@ -761,12 +797,3 @@ Get the type of a Z-axis \end{verbatim} Get the units of a Z-axis - - -\section*{\tt \htmlref{zaxisNew}{zaxisNew}} - -\begin{verbatim} - INTEGER FUNCTION zaxisNew(INTEGER zaxistype, INTEGER size) -\end{verbatim} - -Create a new Z-axis diff --git a/doc/tex/f_stream.tex b/doc/tex/f_stream.tex index 24efa65a02bed9cf6f7971fc9918c2c0bffcf181..b9141239acd1e10a2a45e15bc31cb62db0b1728c 100644 --- a/doc/tex/f_stream.tex +++ b/doc/tex/f_stream.tex @@ -18,7 +18,7 @@ The name of the new dataset \item[{\tt filetype}] The type of the file format, one of the set of predefined CDI file format types. The valid CDI file format types are {\tt FILETYPE\_GRB}, {\tt FILETYPE\_NC}, - {\tt FILETYPE\_NC2}, {\tt FILETYPE\_SRV}, and {\tt FILETYPE\_EXT}. + {\tt FILETYPE\_NC2}, {\tt FILETYPE\_SRV}, {\tt FILETYPE\_EXT} and {\tt FILETYPE\_IEG}. \end{deflist} \end{minipage} @@ -48,7 +48,10 @@ Library not available \subsection*{Example} -Here is an example using {\tt streamOpenWrite} to create a new netCDF file named {\tt foo.nc} for writing:\begin{verbatim} +Here is an example using {\tt streamOpenWrite} to create a new netCDF file +named {\tt foo.nc} for writing: + +\begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] INCLUDE 'cdi.h' ... INTEGER streamID @@ -56,7 +59,7 @@ Here is an example using {\tt streamOpenWrite} to create a new netCDF file named streamID = streamOpenWrite("foo.nc", FILETYPE_NC) IF ( streamID .LT. 0 ) CALL handle_error(streamID) ... -\end{verbatim} +\end{lstlisting} \section{Open a dataset for reading: {\tt streamOpenRead}} @@ -104,7 +107,10 @@ Library not available \subsection*{Example} -Here is an example using {\tt streamOpenRead} to open an existing netCDFfile named {\tt foo.nc} for reading:\begin{verbatim} +Here is an example using {\tt streamOpenRead} to open an existing netCDF +file named {\tt foo.nc} for reading: + +\begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] INCLUDE 'cdi.h' ... INTEGER streamID @@ -112,7 +118,7 @@ Here is an example using {\tt streamOpenRead} to open an existing netCDFfile nam streamID = streamOpenRead("foo.nc") IF ( streamID .LT. 0 ) CALL handle_error(streamID) ... -\end{verbatim} +\end{lstlisting} \section{Close an open dataset: {\tt streamClose}} @@ -162,7 +168,7 @@ Stream identifier {\tt streamInqFiletype} returns the type of the file format, one of the set of predefined CDI file format types. The valid CDI file format types are {\tt FILETYPE\_GRB}, {\tt FILETYPE\_NC}, -{\tt FILETYPE\_NC2}, {\tt FILETYPE\_SRV}, and {\tt FILETYPE\_EXT}. +{\tt FILETYPE\_NC2}, {\tt FILETYPE\_SRV}, {\tt FILETYPE\_EXT} and {\tt FILETYPE\_IEG}. @@ -215,11 +221,11 @@ Stream identifier -\section{Define timestep: {\tt streamDefTimestep}} +\section{Define time step: {\tt streamDefTimestep}} \index{streamDefTimestep} \label{streamDefTimestep} -The function {\tt streamDefTimestep} defines the timestep of a stream. +The function {\tt streamDefTimestep} defines the time step of a stream. \subsection*{Usage} @@ -239,15 +245,15 @@ Timestep identifier \subsection*{Result} -{\tt streamDefTimestep} returns the number of records of the timestep. +{\tt streamDefTimestep} returns the number of records of the time step. -\section{Get timestep: {\tt streamInqTimestep}} +\section{Get time step: {\tt streamInqTimestep}} \index{streamInqTimestep} \label{streamInqTimestep} -The function {\tt streamInqTimestep} returns the timestep of a stream. +The function {\tt streamInqTimestep} returns the time step of a stream. \subsection*{Usage} @@ -267,13 +273,16 @@ Timestep identifier \subsection*{Result} -{\tt streamInqTimestep} returns the number of records of the timestep. +{\tt streamInqTimestep} returns the number of records of the time step. \section{Write a variable: {\tt streamWriteVar}} \index{streamWriteVar} \label{streamWriteVar} + +The function streamWriteVar writes the values of one time step of a variable +to an open dataset. \subsection*{Usage} \begin{verbatim} @@ -284,11 +293,11 @@ Timestep identifier \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt streamID\ } \item[{\tt streamID}] -Stream identifier +Stream identifier, from a previous call to streamOpenWrite \item[{\tt varID}] Variable identifier \item[{\tt data}] -Data +Pointer to a block of data values to be written \item[{\tt nmiss}] Number of missing values @@ -299,6 +308,9 @@ Number of missing values \section{Read a variable: {\tt streamReadVar}} \index{streamReadVar} \label{streamReadVar} + +The function streamReadVar reads all the values of one time step of a variable +from an open dataset. \subsection*{Usage} \begin{verbatim} @@ -309,11 +321,11 @@ Number of missing values \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt streamID\ } \item[{\tt streamID}] -Stream identifier +Stream identifier, from a previous call to streamOpenRead \item[{\tt varID}] Variable identifier \item[{\tt data}] -Data +Pointer to the location into which the data value is read \item[{\tt nmiss}] Number of missing values @@ -324,6 +336,9 @@ Number of missing values \section{Write a horizontal slice of a variable: {\tt streamWriteVarSlice}} \index{streamWriteVarSlice} \label{streamWriteVarSlice} + +The function streamWriteVarSlice writes the values of a horizontal slice of a +variable to an open dataset. \subsection*{Usage} \begin{verbatim} @@ -334,13 +349,13 @@ Number of missing values \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt streamID\ } \item[{\tt streamID}] -Stream identifier +Stream identifier, from a previous call to streamOpenWrite \item[{\tt varID}] Variable identifier \item[{\tt levelID}] Level identifier \item[{\tt data}] -Data +Pointer to a block of data values to be written \item[{\tt nmiss}] Number of missing values @@ -351,6 +366,9 @@ Number of missing values \section{Read a horizontal slice of a variable: {\tt streamReadVarSlice}} \index{streamReadVarSlice} \label{streamReadVarSlice} + +The function streamReadVar reads all the values of a horizontal slice of a variable +from an open dataset. \subsection*{Usage} \begin{verbatim} @@ -361,13 +379,13 @@ Number of missing values \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt streamID\ } \item[{\tt streamID}] -Stream identifier +Stream identifier, from a previous call to streamOpenRead \item[{\tt varID}] Variable identifier \item[{\tt levelID}] Level identifier \item[{\tt data}] -Data +Pointer to the location into which the data value is read \item[{\tt nmiss}] Number of missing values diff --git a/doc/tex/f_taxis.tex b/doc/tex/f_taxis.tex index 5f2ff32920517cc9095d727f1d71b31fb5da6d69..a5e11bce802fec28c1c0961478676ea49970b074 100644 --- a/doc/tex/f_taxis.tex +++ b/doc/tex/f_taxis.tex @@ -1,15 +1,15 @@ -\section{Create a new T-axis: {\tt taxisNew}} -\index{taxisNew} -\label{taxisNew} +\section{Create a Time axis: {\tt taxisCreate}} +\index{taxisCreate} +\label{taxisCreate} -The function {\tt taxisNew} creates a new Time axis. +The function {\tt taxisCreate} creates a Time axis. \subsection*{Usage} \begin{verbatim} - INTEGER FUNCTION taxisNew(INTEGER taxistype) + INTEGER FUNCTION taxisCreate(INTEGER taxistype) \end{verbatim} \hspace*{4mm}\begin{minipage}[]{15cm} @@ -23,10 +23,28 @@ The type of the time axis, one of the set of predefined CDI time types. \subsection*{Result} -{\tt taxisNew} returns an identifier to the new T-axis. +{\tt taxisCreate} returns an identifier to the Time axis. +\section{Destroy a Time axis: {\tt taxisDestroy}} +\index{taxisDestroy} +\label{taxisDestroy} +\subsection*{Usage} + +\begin{verbatim} + SUBROUTINE taxisDestroy(INTEGER taxisID) +\end{verbatim} + +\hspace*{4mm}\begin{minipage}[]{15cm} +\begin{deflist}{\tt taxisID\ } +\item[{\tt taxisID}] +Identifier, from a previous call to {\tt taxisCreate} + +\end{deflist} +\end{minipage} + + \section{Define the reference date: {\tt taxisDefRdate}} \index{taxisDefRdate} \label{taxisDefRdate} diff --git a/doc/tex/f_vlist.tex b/doc/tex/f_vlist.tex index 158f6adafe8526c02757b71ad5d7fc8368f2344b..4fcf085ca2fc7ba07e13048cd79a6c944ec22f5c 100644 --- a/doc/tex/f_vlist.tex +++ b/doc/tex/f_vlist.tex @@ -1,28 +1,28 @@ -\section{Create a variable list: {\tt vlistNew}} -\index{vlistNew} -\label{vlistNew} +\section{Create a variable list: {\tt vlistCreate}} +\index{vlistCreate} +\label{vlistCreate} \subsection*{Usage} \begin{verbatim} - INTEGER FUNCTION vlistNew() + INTEGER FUNCTION vlistCreate() \end{verbatim} -\section{Delete a variable list: {\tt vlistFree}} -\index{vlistFree} -\label{vlistFree} +\section{Destroy a variable list: {\tt vlistDestroy}} +\index{vlistDestroy} +\label{vlistDestroy} \subsection*{Usage} \begin{verbatim} - SUBROUTINE vlistFree(INTEGER vlistID) + SUBROUTINE vlistDestroy(INTEGER vlistID) \end{verbatim} \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt vlistID\ } \item[{\tt vlistID}] -Identifier, from a previous call to {\tt vlistNew} +Identifier, from a previous call to {\tt vlistCreate} \end{deflist} \end{minipage} diff --git a/doc/tex/f_vlist_var.tex b/doc/tex/f_vlist_var.tex index 4f82b56d5f3ad682d553b22f5b0ab2d5c42a61cf..5f228b7ac3f1c972fc64addf19d332fb073ba3a5 100644 --- a/doc/tex/f_vlist_var.tex +++ b/doc/tex/f_vlist_var.tex @@ -16,11 +16,11 @@ The function {\tt vlistDefVar} adds a new variable to vlistID. \hspace*{4mm}\begin{minipage}[]{15cm} \begin{deflist}{\tt vlistID\ } \item[{\tt vlistID}] -Variable list ID, from a previous call to vlistNew or vlistCopy +Variable list ID, from a previous call to vlistCreate or vlistCopy \item[{\tt gridID}] -Grid ID, from a previous call to gridNew +Grid ID, from a previous call to gridCreate \item[{\tt zaxisID}] -Z-axis ID, from a previous call to zaxisNew +Z-axis ID, from a previous call to zaxisCreate \item[{\tt timeID}] One of the set of predefined CDI time identifiers. The valid CDI time identifiers are TIME\_CONSTANT and TIME\_VARIABLE. diff --git a/doc/tex/f_zaxis.tex b/doc/tex/f_zaxis.tex index 52f554c257e9c9676c5d8035f25625389c52749d..71b10f5b7f04d128955bb7e97a2a30980e14440e 100644 --- a/doc/tex/f_zaxis.tex +++ b/doc/tex/f_zaxis.tex @@ -1,15 +1,15 @@ -\section{Create a new Z-axis: {\tt zaxisNew}} -\index{zaxisNew} -\label{zaxisNew} +\section{Create a vertical Z-axis: {\tt zaxisCreate}} +\index{zaxisCreate} +\label{zaxisCreate} -The function {\tt zaxisNew} creates a new Z-axis. +The function {\tt zaxisCreate} creates a vertical Z-axis. \subsection*{Usage} \begin{verbatim} - INTEGER FUNCTION zaxisNew(INTEGER zaxistype, INTEGER size) + INTEGER FUNCTION zaxisCreate(INTEGER zaxistype, INTEGER size) \end{verbatim} \hspace*{4mm}\begin{minipage}[]{15cm} @@ -27,10 +27,28 @@ Number of levels \subsection*{Result} -{\tt zaxisNew} returns an identifier to the new Z-axis. +{\tt zaxisCreate} returns an identifier to the vertical Z-axis. +\section{Destroy a vertical Z-axis: {\tt zaxisDestroy}} +\index{zaxisDestroy} +\label{zaxisDestroy} +\subsection*{Usage} + +\begin{verbatim} + SUBROUTINE zaxisDestroy(INTEGER zaxisID) +\end{verbatim} + +\hspace*{4mm}\begin{minipage}[]{15cm} +\begin{deflist}{\tt zaxisID\ } +\item[{\tt zaxisID}] +Identifier, from a previous call to {\tt zaxisCreate} + +\end{deflist} +\end{minipage} + + \section{Get the type of a Z-axis: {\tt zaxisInqType}} \index{zaxisInqType} \label{zaxisInqType} diff --git a/doc/tex/formats.tex b/doc/tex/formats.tex index 3b2790e453ca7b5a49d2c8948f4d52fce7a08da6..0ee69da1e43a2d531793694db2845cecc5fc8dba 100644 --- a/doc/tex/formats.tex +++ b/doc/tex/formats.tex @@ -6,16 +6,20 @@ over an unlimited number of time steps. \section{netCDF} -NetCDF (network Common Data Form) is an interface for array-oriented data +\htmlref{NetCDF}{NetCDF} (network Common Data Form) is an interface for array-oriented data access and a library that provides an implementation of the interface. The netCDF library also defines a machine-independent format for representing scientific data. Together, the interface, library, and format support the creation, access, and sharing of scientific data. + CDI supports only 2D, 3D and 4D arrays and the attributes must follow the \href{http://ftp.unidata.ucar.edu/software/netcdf/docs/conventions.html} {GDT, COARDS or CF Conventions}. +NetCDF is an external library and not part of CDI. To use netCDF with +CDI the netCDF library must be installed before the configuration +of the CDI library (see \htmlref{Build}{Build}). -%ncdap +\subsection{ncdap} \section{SERVICE} @@ -31,10 +35,10 @@ The following Fortran code example can be used to read a SERVICE record with an accuarcy of 4 bytes: \begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] - INTEGER*4 icode, ilevel, idate, itime, nlon, nlat, idispo1, idispo2 + INTEGER*4 icode,ilevel,idate,itime,nlon,nlat,idispo1,idispo2 REAL*4 field(mlon,mlat) - - READ(unit) icode, ilevel, idate, itime, nlon, nlat, idispo1, idispo2 + ... + READ(unit) icode,ilevel,idate,itime,nlon,nlat,idispo1,idispo2 READ(unit) ((field(ilon,ilat), ilon=1,nlon), ilat=1,nlat) \end{lstlisting} @@ -68,10 +72,10 @@ The following Fortran code example can be used to read an EXTRA record with an accuarcy of 4 bytes: \begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] - INTEGER*4 idate, icode, ilevel, nsize + INTEGER*4 idate,icode,ilevel,nsize REAL*4 field(msize) - - READ(unit) idate, icode, ilevel, nsize + ... + READ(unit) idate,icode,ilevel,nsize READ(unit) (field(isize),isize=1,nsize) \end{lstlisting} @@ -91,10 +95,10 @@ The meaning of the variables are: \section{IEG} -IEG is the standard output format of the regional model \htmlref{REMO}{REMO}. +IEG is the standard binary output format of the regional model \htmlref{REMO}{REMO}. It is simple an unpacked GRIB format. The product and grid -description section are coded with 32 bit integer values and the -data section can have 32 or 64 bit IEEE floating point values. +description section are coded with 4 byte integer values and the +data section can have 4 or 8 byte IEEE floating point values. The header and the data section have the standard Fortran blocking for binary data records. CDI supports only data on an rotated grid for the IEG format. diff --git a/doc/tex/makedoc b/doc/tex/makedoc index 90638dc7c30054c93bfff327aae4746b151a1aac..49458ae5ac23a99c0b43ab38ef6115725bf781e4 100755 --- a/doc/tex/makedoc +++ b/doc/tex/makedoc @@ -236,12 +236,14 @@ while (<MOFILE>) { ($kword) = split(" ", $tag, 1); $kword = uc($kword); if ( "$kword" eq "\@SOURCE" ) { - printcfdoc ("\\begin{verbatim}\n"); +# printcfdoc ("\\begin{verbatim}\n"); + printcfdoc ("\\begin{lstlisting}[backgroundcolor=\\color{zebg}, basicstyle=\\footnotesize]\n"); $source = 1; next; } if ( "$kword" eq "\@ENDSOURCE" ) { - printcfdoc ("\\end{verbatim}\n"); +# printcfdoc ("\\end{verbatim}\n"); + printcfdoc ("\\end{lstlisting}\n"); $source = 0; next; } @@ -399,9 +401,10 @@ sub printcfdoc { @list = @_; if ( $#list >= 0 ) { foreach $tag (@list) { + chomp $tag; $tag =~ s/_/\\_/og; - print CDOCFILE "$tag"; - print FDOCFILE "$tag"; + print CDOCFILE "$tag\n"; + print FDOCFILE "$tag\n"; } } } diff --git a/doc/tex/usage.tex b/doc/tex/usage.tex index b88934998f66557d4de566c1306f563210bbb927..f6fdcc3fc30b8d2c531db58c03ed7c2aab1a68ce 100644 --- a/doc/tex/usage.tex +++ b/doc/tex/usage.tex @@ -2,16 +2,16 @@ Here is a typical sequence of CDI calls used to create a new dataset: -\begin{verbatim} - gridNew ! define a grid: from type and size +\begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] + gridCreate ! create a horizontal Grid: from type and size ... - zaxisNew ! define a Z-axis: from type and size + zaxisCreate ! create a vertical Z-axis: from type and size ... - taxisNew ! define a T-axis: from type + taxisCreate ! create a Time axis: from type ... - vlistNew ! create a variable list + vlistCreate ! create a variable list ... - vlistDefVar ! define variables: from grid and Z-axis + vlistDefVar ! define variables: from Grid and Z-axis ... streamOpenWrite ! create a dataset: from name and file type ... @@ -22,28 +22,36 @@ Here is a typical sequence of CDI calls used to create a new dataset: streamWriteVar ! write variable ... streamClose ! close the dataset -\end{verbatim} + ... + vlistDestroy ! destroy the variable list + ... + taxisDestroy ! destroy the Time axis + ... + zaxisDestroy ! destroy the Z-axis + ... + gridDestroy ! destroy the Grid +\end{lstlisting} \section{Reading a dataset} -\begin{verbatim} +\begin{lstlisting}[backgroundcolor=\color{zebg}, basicstyle=\footnotesize] streamOpenRead ! open existing dataset ... streamInqVlist ! find out what is in it ... - vlistInqVarGrid ! get grid + vlistInqVarGrid ! get an identifier to the Grid ... - vlistInqVarZaxis ! get Z-axis + vlistInqVarZaxis ! get an identifier to the Z-axis ... - vlistInqTaxis ! get T-axis + vlistInqTaxis ! get an identifier to the T-axis ... streamInqTimestep ! get time step ... streamReadVar ! read varible ... streamClose ! close the dataset -\end{verbatim} +\end{lstlisting} \section{Compiling and Linking with the CDI library} diff --git a/examples/Makefile.am b/examples/Makefile.am new file mode 100644 index 0000000000000000000000000000000000000000..725767ab9cacc62149b75960c69404037d2863c2 --- /dev/null +++ b/examples/Makefile.am @@ -0,0 +1,16 @@ +## Process this file with automake to produce Makefile.in +# +bin_PROGRAMS = cdi_write cdi_read cdi_copy +# +cdi_write_SOURCES = cdi_write.c +cdi_write_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm +# +cdi_read_SOURCES = cdi_read.c +cdi_read_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm +# +cdi_copy_SOURCES = cdi_copy.c +cdi_copy_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm +# +CPPFLAGS = -I$(top_srcdir)/src +# +CLEANFILES = `ls *~` diff --git a/examples/Makefile.in b/examples/Makefile.in new file mode 100644 index 0000000000000000000000000000000000000000..1690b78ff4212022b5ae8b1accc0df7f1f783429 --- /dev/null +++ b/examples/Makefile.in @@ -0,0 +1,349 @@ +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AR = @AR@ +AWK = @AWK@ +CC = @CC@ +CFINT = @CFINT@ +# +CPPFLAGS = -I$(top_srcdir)/src +DEPDIR = @DEPDIR@ +F77 = @F77@ +FC = @FC@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +PACKAGE = @PACKAGE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +# +bin_PROGRAMS = cdi_write cdi_read cdi_copy +# +cdi_write_SOURCES = cdi_write.c +cdi_write_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm +# +cdi_read_SOURCES = cdi_read.c +cdi_read_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm +# +cdi_copy_SOURCES = cdi_copy.c +cdi_copy_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm +# +CLEANFILES = `ls *~` +subdir = examples +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = cdi_write$(EXEEXT) cdi_read$(EXEEXT) cdi_copy$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_cdi_copy_OBJECTS = cdi_copy.$(OBJEXT) +cdi_copy_OBJECTS = $(am_cdi_copy_OBJECTS) +cdi_copy_DEPENDENCIES = $(top_srcdir)/src/libcdi.a +cdi_copy_LDFLAGS = +am_cdi_read_OBJECTS = cdi_read.$(OBJEXT) +cdi_read_OBJECTS = $(am_cdi_read_OBJECTS) +cdi_read_DEPENDENCIES = $(top_srcdir)/src/libcdi.a +cdi_read_LDFLAGS = +am_cdi_write_OBJECTS = cdi_write.$(OBJEXT) +cdi_write_OBJECTS = $(am_cdi_write_OBJECTS) +cdi_write_DEPENDENCIES = $(top_srcdir)/src/libcdi.a +cdi_write_LDFLAGS = + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/src +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/cdi_copy.Po ./$(DEPDIR)/cdi_read.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/cdi_write.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CFLAGS = @CFLAGS@ +DIST_SOURCES = $(cdi_copy_SOURCES) $(cdi_read_SOURCES) \ + $(cdi_write_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(cdi_copy_SOURCES) $(cdi_read_SOURCES) $(cdi_write_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +cdi_copy$(EXEEXT): $(cdi_copy_OBJECTS) $(cdi_copy_DEPENDENCIES) + @rm -f cdi_copy$(EXEEXT) + $(LINK) $(cdi_copy_LDFLAGS) $(cdi_copy_OBJECTS) $(cdi_copy_LDADD) $(LIBS) +cdi_read$(EXEEXT): $(cdi_read_OBJECTS) $(cdi_read_DEPENDENCIES) + @rm -f cdi_read$(EXEEXT) + $(LINK) $(cdi_read_LDFLAGS) $(cdi_read_OBJECTS) $(cdi_read_LDADD) $(LIBS) +cdi_write$(EXEEXT): $(cdi_write_OBJECTS) $(cdi_write_DEPENDENCIES) + @rm -f cdi_write$(EXEEXT) + $(LINK) $(cdi_write_LDFLAGS) $(cdi_write_OBJECTS) $(cdi_write_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdi_copy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdi_read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdi_write.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.c.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + +.c.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `cygpath -w $<` +CCDEPMODE = @CCDEPMODE@ +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic distclean distclean-compile distclean-depend \ + distclean-generic distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-binPROGRAMS install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic tags uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/examples/cdi_copy.c b/examples/cdi_copy.c new file mode 100644 index 0000000000000000000000000000000000000000..a797aa1e4417c9cff64e5d9f209b85a0b76660f0 --- /dev/null +++ b/examples/cdi_copy.c @@ -0,0 +1,86 @@ +#include "cdi.h" + +#define NLON 12 /* Number of longitudes */ +#define NLAT 6 /* Number of latitudes */ +#define NLEV 5 /* Number of levels */ +#define NTIME 3 /* Number of time steps */ + +int main(void) +{ + int gridID, zaxisID1, zaxisID2, taxisID; + int vlistID, varID1, varID2, streamID; + int tsID; + int i, nmiss = 0; + double lons[NLON] = {0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330}; + double lats[NLAT] = {-75, -45, -15, 15, 45, 75}; + double levs[NLEV] = {101300, 92500, 85000, 50000, 20000}; + double var1[NLON*NLAT]; + double var2[NLON*NLAT*NLEV]; + + /* Create a LONLAT grid */ + gridID = gridCreate(GRID_LONLAT, NLON*NLAT); + gridDefXsize(gridID, NLON); + gridDefYsize(gridID, NLAT); + gridDefXvals(gridID, lons); + gridDefYvals(gridID, lats); + + /* Create a surface Z-axis */ + zaxisID1 = zaxisCreate(ZAXIS_SURFACE, 1); + + /* Create a pressure level Z-axis */ + zaxisID2 = zaxisCreate(ZAXIS_PRESSURE, NLEV); + zaxisDefLevels(zaxisID2, levs); + + /* Create a variable list */ + vlistID = vlistCreate(); + + /* Define the variables */ + varID1 = vlistDefVar(vlistID, gridID, zaxisID1, TIME_VARIABLE); + varID2 = vlistDefVar(vlistID, gridID, zaxisID2, TIME_VARIABLE); + + /* Define variable name */ + vlistDefVarName(vlistID, varID1, "varname1"); + vlistDefVarName(vlistID, varID2, "varname2"); + + /* Create a Time axis */ + taxisID = taxisCreate(TAXIS_ABSOLUTE); + + /* Assign the Time axis to the variable list */ + vlistDefTaxis(vlistID, taxisID); + + /* Create a dataset */ + streamID = streamOpenWrite("example.nc", FILETYPE_NC); + + /* Assign the variable list to the dataset */ + streamDefVlist(streamID, vlistID); + + /* Loop over the number of time steps */ + for ( tsID = 0; tsID < NTIME; tsID++ ) + { + /* Set the verification date to 1985-01-01 + tsID */ + taxisDefVdate(taxisID, 19850101+tsID); + /* Set the verification time to 12:00 */ + taxisDefVtime(taxisID, 1200); + /* Define the time step */ + streamDefTimestep(streamID, tsID); + + /* Write var1 */ + for ( i = 0; i < NLON*NLAT; i++ ) var1[i] = 1; + streamWriteVar(streamID, varID1, var1, nmiss); + /* Write var2 */ + for ( i = 0; i < NLON*NLAT*NLEV; i++ ) var2[i] = 2; + streamWriteVar(streamID, varID2, var2, nmiss); + } + + /* Close the output stream */ + streamClose(streamID); + + /* Destroy the created objects */ + vlistDestroy(vlistID); + taxisDestroy(taxisID); + zaxisDestroy(zaxisID1); + zaxisDestroy(zaxisID2); + gridDestroy(gridID); + + return 0; +} diff --git a/examples/cdi_read.c b/examples/cdi_read.c new file mode 100644 index 0000000000000000000000000000000000000000..a797aa1e4417c9cff64e5d9f209b85a0b76660f0 --- /dev/null +++ b/examples/cdi_read.c @@ -0,0 +1,86 @@ +#include "cdi.h" + +#define NLON 12 /* Number of longitudes */ +#define NLAT 6 /* Number of latitudes */ +#define NLEV 5 /* Number of levels */ +#define NTIME 3 /* Number of time steps */ + +int main(void) +{ + int gridID, zaxisID1, zaxisID2, taxisID; + int vlistID, varID1, varID2, streamID; + int tsID; + int i, nmiss = 0; + double lons[NLON] = {0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330}; + double lats[NLAT] = {-75, -45, -15, 15, 45, 75}; + double levs[NLEV] = {101300, 92500, 85000, 50000, 20000}; + double var1[NLON*NLAT]; + double var2[NLON*NLAT*NLEV]; + + /* Create a LONLAT grid */ + gridID = gridCreate(GRID_LONLAT, NLON*NLAT); + gridDefXsize(gridID, NLON); + gridDefYsize(gridID, NLAT); + gridDefXvals(gridID, lons); + gridDefYvals(gridID, lats); + + /* Create a surface Z-axis */ + zaxisID1 = zaxisCreate(ZAXIS_SURFACE, 1); + + /* Create a pressure level Z-axis */ + zaxisID2 = zaxisCreate(ZAXIS_PRESSURE, NLEV); + zaxisDefLevels(zaxisID2, levs); + + /* Create a variable list */ + vlistID = vlistCreate(); + + /* Define the variables */ + varID1 = vlistDefVar(vlistID, gridID, zaxisID1, TIME_VARIABLE); + varID2 = vlistDefVar(vlistID, gridID, zaxisID2, TIME_VARIABLE); + + /* Define variable name */ + vlistDefVarName(vlistID, varID1, "varname1"); + vlistDefVarName(vlistID, varID2, "varname2"); + + /* Create a Time axis */ + taxisID = taxisCreate(TAXIS_ABSOLUTE); + + /* Assign the Time axis to the variable list */ + vlistDefTaxis(vlistID, taxisID); + + /* Create a dataset */ + streamID = streamOpenWrite("example.nc", FILETYPE_NC); + + /* Assign the variable list to the dataset */ + streamDefVlist(streamID, vlistID); + + /* Loop over the number of time steps */ + for ( tsID = 0; tsID < NTIME; tsID++ ) + { + /* Set the verification date to 1985-01-01 + tsID */ + taxisDefVdate(taxisID, 19850101+tsID); + /* Set the verification time to 12:00 */ + taxisDefVtime(taxisID, 1200); + /* Define the time step */ + streamDefTimestep(streamID, tsID); + + /* Write var1 */ + for ( i = 0; i < NLON*NLAT; i++ ) var1[i] = 1; + streamWriteVar(streamID, varID1, var1, nmiss); + /* Write var2 */ + for ( i = 0; i < NLON*NLAT*NLEV; i++ ) var2[i] = 2; + streamWriteVar(streamID, varID2, var2, nmiss); + } + + /* Close the output stream */ + streamClose(streamID); + + /* Destroy the created objects */ + vlistDestroy(vlistID); + taxisDestroy(taxisID); + zaxisDestroy(zaxisID1); + zaxisDestroy(zaxisID2); + gridDestroy(gridID); + + return 0; +} diff --git a/examples/cdi_write.c b/examples/cdi_write.c new file mode 100644 index 0000000000000000000000000000000000000000..a797aa1e4417c9cff64e5d9f209b85a0b76660f0 --- /dev/null +++ b/examples/cdi_write.c @@ -0,0 +1,86 @@ +#include "cdi.h" + +#define NLON 12 /* Number of longitudes */ +#define NLAT 6 /* Number of latitudes */ +#define NLEV 5 /* Number of levels */ +#define NTIME 3 /* Number of time steps */ + +int main(void) +{ + int gridID, zaxisID1, zaxisID2, taxisID; + int vlistID, varID1, varID2, streamID; + int tsID; + int i, nmiss = 0; + double lons[NLON] = {0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330}; + double lats[NLAT] = {-75, -45, -15, 15, 45, 75}; + double levs[NLEV] = {101300, 92500, 85000, 50000, 20000}; + double var1[NLON*NLAT]; + double var2[NLON*NLAT*NLEV]; + + /* Create a LONLAT grid */ + gridID = gridCreate(GRID_LONLAT, NLON*NLAT); + gridDefXsize(gridID, NLON); + gridDefYsize(gridID, NLAT); + gridDefXvals(gridID, lons); + gridDefYvals(gridID, lats); + + /* Create a surface Z-axis */ + zaxisID1 = zaxisCreate(ZAXIS_SURFACE, 1); + + /* Create a pressure level Z-axis */ + zaxisID2 = zaxisCreate(ZAXIS_PRESSURE, NLEV); + zaxisDefLevels(zaxisID2, levs); + + /* Create a variable list */ + vlistID = vlistCreate(); + + /* Define the variables */ + varID1 = vlistDefVar(vlistID, gridID, zaxisID1, TIME_VARIABLE); + varID2 = vlistDefVar(vlistID, gridID, zaxisID2, TIME_VARIABLE); + + /* Define variable name */ + vlistDefVarName(vlistID, varID1, "varname1"); + vlistDefVarName(vlistID, varID2, "varname2"); + + /* Create a Time axis */ + taxisID = taxisCreate(TAXIS_ABSOLUTE); + + /* Assign the Time axis to the variable list */ + vlistDefTaxis(vlistID, taxisID); + + /* Create a dataset */ + streamID = streamOpenWrite("example.nc", FILETYPE_NC); + + /* Assign the variable list to the dataset */ + streamDefVlist(streamID, vlistID); + + /* Loop over the number of time steps */ + for ( tsID = 0; tsID < NTIME; tsID++ ) + { + /* Set the verification date to 1985-01-01 + tsID */ + taxisDefVdate(taxisID, 19850101+tsID); + /* Set the verification time to 12:00 */ + taxisDefVtime(taxisID, 1200); + /* Define the time step */ + streamDefTimestep(streamID, tsID); + + /* Write var1 */ + for ( i = 0; i < NLON*NLAT; i++ ) var1[i] = 1; + streamWriteVar(streamID, varID1, var1, nmiss); + /* Write var2 */ + for ( i = 0; i < NLON*NLAT*NLEV; i++ ) var2[i] = 2; + streamWriteVar(streamID, varID2, var2, nmiss); + } + + /* Close the output stream */ + streamClose(streamID); + + /* Destroy the created objects */ + vlistDestroy(vlistID); + taxisDestroy(taxisID); + zaxisDestroy(zaxisID1); + zaxisDestroy(zaxisID2); + gridDestroy(gridID); + + return 0; +} diff --git a/prog/Makefile.am b/prog/Makefile.am index 66c48ef68885ced058af5214ef3843ae62d8fa6d..1774a8d9d216e5b3b6bf797ce552fac874409a55 100644 --- a/prog/Makefile.am +++ b/prog/Makefile.am @@ -4,11 +4,11 @@ bin_PROGRAMS = cdi createtable # cdi_SOURCES = cdi.c # -cdi_LDADD = ../src/libcdi.a $(LDFLAGS) -lm +cdi_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm # createtable_SOURCES = createtable.c # -createtable_LDADD = ../src/libcdi.a $(LDFLAGS) -lm +createtable_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm # CPPFLAGS = -I$(top_srcdir)/src # diff --git a/prog/Makefile.in b/prog/Makefile.in index d86db015578b46ca125856b14815eec66f524251..494c041554aa7f8ef22b3865eb0421394ff1ca7b 100644 --- a/prog/Makefile.in +++ b/prog/Makefile.in @@ -87,11 +87,11 @@ bin_PROGRAMS = cdi createtable # cdi_SOURCES = cdi.c # -cdi_LDADD = ../src/libcdi.a $(LDFLAGS) -lm +cdi_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm # createtable_SOURCES = createtable.c # -createtable_LDADD = ../src/libcdi.a $(LDFLAGS) -lm +createtable_LDADD = $(top_srcdir)/src/libcdi.a $(LDFLAGS) -lm # CLEANFILES = `ls *~` subdir = prog @@ -103,11 +103,11 @@ PROGRAMS = $(bin_PROGRAMS) am_cdi_OBJECTS = cdi.$(OBJEXT) cdi_OBJECTS = $(am_cdi_OBJECTS) -cdi_DEPENDENCIES = ../src/libcdi.a +cdi_DEPENDENCIES = $(top_srcdir)/src/libcdi.a cdi_LDFLAGS = am_createtable_OBJECTS = createtable.$(OBJEXT) createtable_OBJECTS = $(am_createtable_OBJECTS) -createtable_DEPENDENCIES = ../src/libcdi.a +createtable_DEPENDENCIES = $(top_srcdir)/src/libcdi.a createtable_LDFLAGS = DEFS = @DEFS@ diff --git a/src/cdi.h b/src/cdi.h index acdc4d3aacfc415979641f55ea8126c987994e43..a14f2cb98743d75b0f7bcb3e33e4af3feb476f8d 100644 --- a/src/cdi.h +++ b/src/cdi.h @@ -127,11 +127,16 @@ void streamDefVlist(int streamID, int vlistID); /* streamInqVlist: Get the Vlist of a stream */ int streamInqVlist(int streamID); +/* streamInqFiletype: Get the filetype */ int streamInqFiletype(int streamID); + void streamDefByteorder(int streamID, int byteorder); int streamInqByteorder(int streamID); +/* streamDefTimestep: Define time step */ int streamDefTimestep(int streamID, int tsID); + +/* streamInqTimestep: Get time step */ int streamInqTimestep(int streamID, int tsID); char *streamFilename(int streamID); @@ -169,7 +174,7 @@ void streamInqGinfo(int streamID, int *intnum, float *fltnum); /* vlistCreate: Create a variable list */ int vlistCreate(void); -/* vlistDestroy: Delete a variable list */ +/* vlistDestroy: Destroy a variable list */ void vlistDestroy(int vlistID); /* vlistDuplicate: Duplicate a variable list */ @@ -308,9 +313,12 @@ int gridInqMask(int gridID, int *mask); void gridPrint(int gridID); int gridSize(void); -/* gridCreate: Create a new Grid */ +/* gridCreate: Create a horizontal Grid */ int gridCreate(int gridtype, int size); +/* gridDestroy: Destroy a horizontal Grid */ +void gridDestroy(int gridID); + /* gridDuplicate: Duplicate a Grid */ int gridDuplicate(int gridID); @@ -453,9 +461,12 @@ int gridToCurvilinear(int gridID); void zaxisName(int zaxistype, char *gridname); -/* zaxisCreate: Create a new Z-axis */ +/* zaxisCreate: Create a vertical Z-axis */ int zaxisCreate(int leveltype, int size); +/* zaxisDestroy: Destroy a vertical Z-axis */ +void zaxisDestroy(int zaxisID); + /* zaxisInqType: Get the type of a Z-axis */ int zaxisInqType(int zaxisID); @@ -519,9 +530,12 @@ void zaxisChangeType(int zaxisID, int leveltype); /* TAXIS routines */ -/* taxisCreate: Create a new T-axis */ +/* taxisCreate: Create a Time axis */ int taxisCreate(int timetype); +/* taxisDestroy: Destroy a Time axis */ +void taxisDestroy(int taxisID); + int taxisDuplicate(int taxisID); void taxisCopyTimestep(int taxisIDdes, int taxisIDsrc); diff --git a/src/grid.c b/src/grid.c index 5fe188cb583b266cd88b39a3c8be4ad8f42d4150..716e8eb85378ebfb9b3cefe42dd73f7e9684a2dd 100644 --- a/src/grid.c +++ b/src/grid.c @@ -557,7 +557,7 @@ static void defineYvals(int gridID) /* @Function gridCreate -@Title Create a new Grid +@Title Create a horizontal Grid @Prototype int gridCreate(int gridtype, int size) @Parameter @@ -567,13 +567,13 @@ static void defineYvals(int gridID) @Item size Number of gridpoints. @Description -The function {\tt gridCreate} creates a new Grid. +The function {\tt gridCreate} creates a horizontal Grid. @Result -{\tt gridCreate} returns an identifier to the new Grid. +{\tt gridCreate} returns an identifier to the Grid. @Example -Here is an example using {\tt gridCreate} to create a new {\tt LONLAT} Grid: +Here is an example using {\tt gridCreate} to create a {\tt LONLAT} Grid: @Source #include <cdi.h> @@ -669,6 +669,21 @@ int gridCreate(int gridtype, int size) } +/* +@Function gridDestroy +@Title Destroy a horizontal Grid + +@Prototype void gridDestroy(int gridID) +@Parameter + @Item gridID Identifier, from a previous call to {\tt gridCreate} + +@EndFunction +*/ +void gridDestroy(int gridID) +{ +} + + char *gridNamePtr(int gridtype) { char *name; @@ -2313,7 +2328,7 @@ int gridGenerate(GRID grid) /* @Function gridDuplicate -@Title Duplicate a grid +@Title Duplicate a horizontal Grid @Prototype int gridDuplicate(int gridID) @Parameter @@ -2321,10 +2336,10 @@ int gridGenerate(GRID grid) {\tt gridDuplicate} or {\tt vlistInqVarGrid}. @Description -The function {\tt gridDuplicate} duplicates a grid. +The function {\tt gridDuplicate} duplicates a horizontal Grid. @Result -{\tt gridDuplicate} returns an identifier to the duplicated grid. +{\tt gridDuplicate} returns an identifier to the duplicated Grid. @EndFunction */ diff --git a/src/stream.c b/src/stream.c index 691baf5571973b460f2c55f5627c8770d8408a7d..c0d4ce3c22bd812a8e486498a2408fb5ee5257d0 100644 --- a/src/stream.c +++ b/src/stream.c @@ -195,7 +195,7 @@ The function {\tt streamInqFiletype} returns the filetype of a stream. {\tt streamInqFiletype} returns the type of the file format, one of the set of predefined CDI file format types. The valid CDI file format types are {\tt FILETYPE_GRB}, {\tt FILETYPE_NC}, -{\tt FILETYPE_NC2}, {\tt FILETYPE_SRV}, and {\tt FILETYPE_EXT}. +{\tt FILETYPE_NC2}, {\tt FILETYPE_SRV}, {\tt FILETYPE_EXT} and {\tt FILETYPE_IEG}. @EndFunction */ @@ -817,7 +817,7 @@ int streamOpenAppend(const char *filename) @Item path The name of the new dataset @Item filetype The type of the file format, one of the set of predefined CDI file format types. The valid CDI file format types are {\tt FILETYPE_GRB}, {\tt FILETYPE_NC}, - {\tt FILETYPE_NC2}, {\tt FILETYPE_SRV}, and {\tt FILETYPE_EXT}. + {\tt FILETYPE_NC2}, {\tt FILETYPE_SRV}, {\tt FILETYPE_EXT} and {\tt FILETYPE_IEG}. @Description The function {\tt streamOpenWrite} creates a new datset. @@ -984,7 +984,7 @@ void streamClose(int streamID) /* @Function streamDefTimestep -@Title Define timestep +@Title Define time step @Prototype int streamDefTimestep(int streamID, int tsID) @Parameter @@ -992,10 +992,10 @@ void streamClose(int streamID) @Item tsID Timestep identifier @Description -The function {\tt streamDefTimestep} defines the timestep of a stream. +The function {\tt streamDefTimestep} defines the time step of a stream. @Result -{\tt streamDefTimestep} returns the number of records of the timestep. +{\tt streamDefTimestep} returns the number of records of the time step. @EndFunction */ @@ -1046,7 +1046,7 @@ int streamDefTimestep(int streamID, int tsID) /* @Function streamInqTimestep -@Title Get timestep +@Title Get time step @Prototype int streamInqTimestep(int streamID, int tsID) @Parameter @@ -1054,10 +1054,10 @@ int streamDefTimestep(int streamID, int tsID) @Item tsID Timestep identifier @Description -The function {\tt streamInqTimestep} returns the timestep of a stream. +The function {\tt streamInqTimestep} returns the time step of a stream. @Result -{\tt streamInqTimestep} returns the number of records of the timestep. +{\tt streamInqTimestep} returns the number of records of the time step. @EndFunction */ @@ -1157,11 +1157,14 @@ int streamInqTimestep(int streamID, int tsID) @Prototype void streamReadVar(int streamID, int varID, double *data, int *nmiss) @Parameter - @Item streamID Stream identifier + @Item streamID Stream identifier, from a previous call to streamOpenRead @Item varID Variable identifier - @Item data Data + @Item data Pointer to the location into which the data value is read @Item nmiss Number of missing values +@Description +The function streamReadVar reads all the values of one time step of a variable +from an open dataset. @EndFunction */ void streamReadVar(int streamID, int varID, double *data, int *nmiss) @@ -1231,11 +1234,14 @@ void streamReadVar(int streamID, int varID, double *data, int *nmiss) @Prototype void streamWriteVar(int streamID, int varID, double *data, int nmiss) @Parameter - @Item streamID Stream identifier + @Item streamID Stream identifier, from a previous call to streamOpenWrite @Item varID Variable identifier - @Item data Data + @Item data Pointer to a block of data values to be written @Item nmiss Number of missing values +@Description +The function streamWriteVar writes the values of one time step of a variable +to an open dataset. @EndFunction */ void streamWriteVar(int streamID, int varID, double *data, int nmiss) @@ -1306,12 +1312,15 @@ void streamWriteVar(int streamID, int varID, double *data, int nmiss) @Prototype void streamReadVarSlice(int streamID, int varID, int levelID, double *data, int *nmiss) @Parameter - @Item streamID Stream identifier + @Item streamID Stream identifier, from a previous call to streamOpenRead @Item varID Variable identifier @Item levelID Level identifier - @Item data Data + @Item data Pointer to the location into which the data value is read @Item nmiss Number of missing values +@Description +The function streamReadVar reads all the values of a horizontal slice of a variable +from an open dataset. @EndFunction */ void streamReadVarSlice(int streamID, int varID, int levelID, double *data, int *nmiss) @@ -1379,12 +1388,15 @@ void streamReadVarSlice(int streamID, int varID, int levelID, double *data, int @Prototype void streamWriteVarSlice(int streamID, int varID, int levelID, double *data, int nmiss) @Parameter - @Item streamID Stream identifier + @Item streamID Stream identifier, from a previous call to streamOpenWrite @Item varID Variable identifier @Item levelID Level identifier - @Item data Data + @Item data Pointer to a block of data values to be written @Item nmiss Number of missing values +@Description +The function streamWriteVarSlice writes the values of a horizontal slice of a +variable to an open dataset. @EndFunction */ void streamWriteVarSlice(int streamID, int varID, int levelID, double *data, int nmiss) diff --git a/src/taxis.c b/src/taxis.c index 91e4029bbe176cbd8ac753418f25e7699717a267..f9f216f64e5445e3950937950e5198831e0d0c77 100644 --- a/src/taxis.c +++ b/src/taxis.c @@ -179,7 +179,7 @@ static void taxisCheckID(const char *func, int taxisID) /* @Function taxisCreate -@Title Create a new T-axis +@Title Create a Time axis @Prototype int taxisCreate(int taxistype) @Parameter @@ -187,10 +187,10 @@ static void taxisCheckID(const char *func, int taxisID) The valid CDI time types are {\tt TAXIS_ABSOLUTE} and {\tt TAXIS_RELATIVE}. @Description -The function {\tt taxisCreate} creates a new Time axis. +The function {\tt taxisCreate} creates a Time axis. @Result -{\tt taxisCreate} returns an identifier to the new T-axis. +{\tt taxisCreate} returns an identifier to the Time axis. @EndFunction */ @@ -212,6 +212,21 @@ int taxisCreate(int taxistype) } +/* +@Function taxisDestroy +@Title Destroy a Time axis + +@Prototype void taxisDestroy(int taxisID) +@Parameter + @Item taxisID Identifier, from a previous call to {\tt taxisCreate} + +@EndFunction +*/ +void taxisDestroy(int taxisID) +{ +} + + int taxisDuplicate(int taxisID1) { static char func[] = "taxisDuplicate"; diff --git a/src/vlist.c b/src/vlist.c index d0b820fb30a839469f672a50c2bc1159441df414..c94f4a7674f37d72831fc4e27b1d537027125cc0 100644 --- a/src/vlist.c +++ b/src/vlist.c @@ -260,7 +260,7 @@ int vlistCreate(void) /* @Function vlistDestroy -@Title Delete a variable list +@Title Destroy a variable list @Prototype void vlistDestroy(int vlistID) @Parameter diff --git a/src/zaxis.c b/src/zaxis.c index bbeac3d5be7c427db27db6dcbc5707555b655bf4..4a707569caf7c7b4c92ccc58c635b07ea5554f3b 100644 --- a/src/zaxis.c +++ b/src/zaxis.c @@ -148,7 +148,7 @@ void zaxisCheckID(const char *func, int zaxisID) /* @Function zaxisCreate -@Title Create a new Z-axis +@Title Create a vertical Z-axis @Prototype int zaxisCreate(int zaxistype, int size) @Parameter @@ -159,10 +159,10 @@ void zaxisCheckID(const char *func, int zaxisID) @Item size Number of levels @Description -The function {\tt zaxisCreate} creates a new Z-axis. +The function {\tt zaxisCreate} creates a vertical Z-axis. @Result -{\tt zaxisCreate} returns an identifier to the new Z-axis. +{\tt zaxisCreate} returns an identifier to the vertical Z-axis. @EndFunction */ @@ -199,6 +199,21 @@ int zaxisCreate(int zaxistype, int size) } +/* +@Function zaxisDestroy +@Title Destroy a vertical Z-axis + +@Prototype void zaxisDestroy(int zaxisID) +@Parameter + @Item zaxisID Identifier, from a previous call to {\tt zaxisCreate} + +@EndFunction +*/ +void zaxisDestroy(int zaxisID) +{ +} + + char *zaxisNamePtr(int leveltype) { char *name;