Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mpim-sw
cdo
Commits
6256c04a
Commit
6256c04a
authored
Aug 04, 2010
by
Uwe Schulzweida
Browse files
Docu update
parent
d9e71bcf
Changes
6
Hide whitespace changes
Inline
Side-by-side
doc/tex/cdo.tex
View file @
6256c04a
...
...
@@ -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
...
...
doc/tex/cdoprog.tex
View file @
6256c04a
...
...
@@ -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
...
...
doc/tex/grid.tex
View file @
6256c04a
...
...
@@ -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
g
aussian grid:
{
\tt
t<RES>grid
}}
{
\tt
t<RES>grid
}
defines a global
g
aussian grid.
Each valid triangular resolution can be used for
{
\tt
<RES>
}
.
\subsection*
{
Global
G
aussian grid:
{
\tt
n<N>
}}
{
\tt
n<N>
}
defines a global
G
aussian 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
}
i
s the number of intervals on a main triangle side.
{
\tt
NI
}
specifie
s the number of intervals on a main triangle side.
\subsection
{
Grids from data files
}
...
...
doc/tex/usage.tex
View file @
6256c04a
...
...
@@ -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
}
...
...
src/Specinfo.c
View file @
6256c04a
...
...
@@ -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
;
...
...
src/griddes.c
View file @
6256c04a
...
...
@@ -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
)
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment