Commit 6256c04a authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

Docu update

parent d9e71bcf
......@@ -159,7 +159,7 @@
\end{picture}
\begin{flushright}
\large\bf{Climate Data Operators \\ Version 1.4.5 \\ June 2010}
\large\bf{Climate Data Operators \\ Version 1.4.6 \\ September 2010}
\end{flushright}
\vfill
......
......@@ -10,7 +10,7 @@
\put(0,0.0){\line(1,0){3.95}}
\end{picture}
\begin{flushright}
{\small{Climate Data Operators \\ Version 1.4.5 \\ June 2010}}
{\small{Climate Data Operators \\ Version 1.4.6 \\ September 2010}}
\end{flushright}
\vspace*{0mm}
......@@ -40,8 +40,8 @@
& F32/F64 for srv,ext,ieg; 1-32 for grb) \\
& Add L or B for Little or Big endian byteorder\\ \hline
\makebox[0.85in][l]{{\bf{-f}} $<\!format\!>$ } & \makebox[2.76in][l]{Output file format (grb,nc,nc2,nc4,srv,ext,ieg)} \\ \hline
\makebox[0.85in][l]{{\bf{-g}} $<\!grid\!>$ } & \makebox[2.76in][l]{Grid name or file} \\
& Available grids: t$<$RES$>$grid, r$<$NX$>$x$<$NY$>$ \\ \hline
\makebox[0.85in][l]{{\bf{-g}} $<\!grid\!>$ } & \makebox[2.76in][l]{Grid or file name} \\
& Grid names: {\tt r<NX>x<NY>}, {\tt n<N>}, {\tt gme<NI>} \\ \hline
\makebox[0.85in][l]{{\bf{-h}} } & \makebox[2.76in][l]{Help information for the operators} \\ \hline
\makebox[0.85in][l]{{\bf{-M}} } & \makebox[2.76in][l]{Indicate that the I/O streams have missing values} \\ \hline
\makebox[0.85in][l]{{\bf{-m}} $<\!missval\!>$ } & \makebox[2.76in][l]{Set the default missing value (default: {\tt-9e+33})} \\ \hline
......
......@@ -6,7 +6,7 @@ In the following situations it is necessary to give a description of a horizonta
\begin{itemize}
\item Changing the grid description (operator: \htmlref{setgrid}{setgrid})
\item Horizontal interpolation (operator: \htmlref{interpolate}{interpolate}, \htmlref{remapXXX}{REMAPGRID} and \htmlref{genXXX}{GENWEIGHTS})
\item Generating variables (operator: \htmlref{const}{const}, \htmlref{random}{random})
\item Generating of variables (operator: \htmlref{const}{const}, \htmlref{random}{random})
\end{itemize}
As now described, there are several possibilities to define a horizontal grid.
......@@ -16,7 +16,7 @@ Predefined grids are available for global regular, gaussian or icosahedral-hexag
\subsection{Predefined grids}
The following pre-defined grid names are available:
{\tt r<NX>x<NY>}, {\tt lon=<LON>\_lat<LAT>}, {\tt t<RES>grid} and {\tt gme<NI>}
{\tt r<NX>x<NY>}, {\tt lon=<LON>\_lat=<LAT>}, {\tt n<N>} and {\tt gme<NI>}
\subsection*{Global regular grid: {\tt r<NX>x<NY>}}
{\tt r<NX>x<NY>} defines a global regular lon/lat grid.
......@@ -26,11 +26,11 @@ The following pre-defined grid names are available:
The latitudes go from south to north with an increment of (180/{\tt <NY>})$^\circ$.
\subsection*{One grid point: {\tt lon=<LON>\_lat=<LAT>}}
{\tt lon=<LON>\_lat=<LAT>} defines one grid point of a lon/lat grid.
{\tt lon=<LON>\_lat=<LAT>} defines a lon/lat grid with only one grid point.
\subsection*{Global gaussian grid: {\tt t<RES>grid}}
{\tt t<RES>grid} defines a global gaussian grid.
Each valid triangular resolution can be used for {\tt <RES>}.
\subsection*{Global Gaussian grid: {\tt n<N>}}
{\tt n<N>} defines a global Gaussian grid. {\tt N} specifies the number of
latitudes lines between the Pole and the Equator.
The longitudes start at 0$^\circ$ with an increment of (360/nlon)$^\circ$.
The gaussian latitudes go from north to south.
......@@ -40,7 +40,7 @@ The following pre-defined grid names are available:
\subsection*{Global icosahedral-hexagonal GME grid: {\tt gme<NI>}}
{\tt gme<NI>} defines a global icosahedral-hexagonal GME grid.
{\tt NI} is the number of intervals on a main triangle side.
{\tt NI} specifies the number of intervals on a main triangle side.
\subsection{Grids from data files}
......
......@@ -54,7 +54,7 @@ The following options are available for all operators:
} \\
\makebox[1.5in][l]{\hspace*{1cm}\sl -g $<$grid$>$}
\> Define the default grid description by name or from file (see chapter 1.3 on page \pageref{GRID_DESCRIPTION}). \\
\> Available grid names are: {\tt t}$<$RES$>${\tt grid}, {\tt r}$<$NX$>${\tt x}$<$NY$>$, {\tt gme}$<$NI$>$ \\
\> Available grid names are: {\tt r<NX>x<NY>}, {\tt lon=<LON>\_lat=<LAT>}, {\tt n<N>}, {\tt gme<NI>} \\
\makebox[1.5in][l]{\hspace*{1cm}\sl -h}
\> Help information for the operators. \\
\makebox[1.5in][l]{\hspace*{1cm}\sl -M}
......
......@@ -340,13 +340,15 @@ void *Specinfo(void *argument)
nout1 = TRUE;
nout2 = TRUE;
}
else if ( arg[0] == 'N' && arg[1] == 'L' && arg[2] == 'A' && arg[3] == 'T' )
else if ( arg[0] == 'N' && arg[1] == 'L' && arg[2] == 'O' && arg[3] == 'N' )
{
parg = &arg[4];
if ( *parg == '=' ) parg++;
if ( ! isdigit((int) *parg) ) cdoAbort("Wrong parameter: %s", arg);
nlat1 = atoi(parg);
nlat2 = nlat1;
nlon1 = atoi(parg);
nlon2 = nlon1;
nlat1 = nlon1 / 2;
nlat2 = nlon2 / 2;
nlon1 = nlat2nlon(nlat1);
nlon2 = nlat2nlon(nlat2);
nlat1 = nlon1 / 2;
......@@ -368,15 +370,41 @@ void *Specinfo(void *argument)
nout1 = TRUE;
nout2 = TRUE;
}
else if ( arg[0] == 'N' && arg[1] == 'L' && arg[2] == 'O' && arg[3] == 'N' )
else if ( arg[0] == 'N' && arg[1] == 'L' && arg[2] == 'A' && arg[3] == 'T' )
{
parg = &arg[4];
if ( *parg == '=' ) parg++;
if ( ! isdigit((int) *parg) ) cdoAbort("Wrong parameter: %s", arg);
nlon1 = atoi(parg);
nlon2 = nlon1;
nlat1 = atoi(parg);
nlat2 = nlat1;
nlon1 = nlat2nlon(nlat1);
nlon2 = nlat2nlon(nlat2);
nlat1 = nlon1 / 2;
nlat2 = nlon2 / 2;
ntr1 = (nlat1*2-1)/3;
ntr2 = (nlat2*2-1)/2;
ngp1 = nlon1*nlat1;
ngp2 = nlon2*nlat2;
nsp1 = NTR2NSP(ntr1);
nsp2 = NTR2NSP(ntr2);
lookup_ni(nsp1, &nrootg1, &ni1);
lookup_rl(nsp1, &nrooti1, &nlevel1);
lookup_ni(nsp2, &nrootg2, &ni2);
lookup_rl(nsp2, &nrooti2, &nlevel2);
nout1 = TRUE;
nout2 = TRUE;
}
else if ( arg[0] == 'N' )
{
parg = &arg[1];
if ( *parg == '=' ) parg++;
if ( ! isdigit((int) *parg) ) cdoAbort("Wrong parameter: %s", arg);
nlat1 = 2*atoi(parg);
nlat2 = nlat1;
nlon1 = nlat2nlon(nlat1);
nlon2 = nlat2nlon(nlat2);
nlat1 = nlon1 / 2;
......
......@@ -1467,15 +1467,16 @@ int gridFromName(const char *gridname)
if ( cmpstr(pline, "grid", len) == 0 ) grid.type = GRID_GAUSSIAN;
else if ( cmpstr(pline, "zon", len) == 0 ) grid.type = GRID_GAUSSIAN;
else if ( cmpstr(pline, "spec", len) == 0 ) grid.type = GRID_SPECTRAL;
else grid.type = GRID_SPECTRAL;
grid.ysize = ntr2nlat_linear(grid.ntr);
if ( cmpstr(pline, "zon", len) == 0 )
grid.xsize = 1;
else
grid.xsize = compNlon(grid.ysize);
if ( grid.type == GRID_GAUSSIAN )
{
grid.ysize = ntr2nlat_linear(grid.ntr);
if ( cmpstr(pline, "zon", len) == 0 )
grid.xsize = 1;
else
grid.xsize = compNlon(grid.ysize);
grid.def_xfirst = TRUE;
grid.def_yfirst = TRUE;
}
......@@ -1491,15 +1492,16 @@ int gridFromName(const char *gridname)
if ( cmpstr(pline, "grid", len) == 0 ) grid.type = GRID_GAUSSIAN;
else if ( cmpstr(pline, "zon", len) == 0 ) grid.type = GRID_GAUSSIAN;
else if ( cmpstr(pline, "spec", len) == 0 ) grid.type = GRID_SPECTRAL;
else grid.type = GRID_SPECTRAL;
grid.ysize = ntr2nlat(grid.ntr);
if ( cmpstr(pline, "zon", len) == 0 )
grid.xsize = 1;
else
grid.xsize = compNlon(grid.ysize);
if ( grid.type == GRID_GAUSSIAN )
{
grid.ysize = ntr2nlat(grid.ntr);
if ( cmpstr(pline, "zon", len) == 0 )
grid.xsize = 1;
else
grid.xsize = compNlon(grid.ysize);
grid.def_xfirst = TRUE;
grid.def_yfirst = TRUE;
}
......@@ -1569,7 +1571,7 @@ int gridFromName(const char *gridname)
grid.size = (grid.ni+1)*(grid.ni+1)*10;
}
}
else if ( gridname[0] == 'n' ) /* n<RES> */
else if ( gridname[0] == 'n' ) /* n<N> */
{
pline = &gridname[1];
if ( isdigit((int) *pline) )
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment