Skip to content
GitLab
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
64cdfcfe
Commit
64cdfcfe
authored
Apr 04, 2010
by
Uwe Schulzweida
Browse files
Added operator cloudlayer: compute low, mid and high clouds
parent
f49e343f
Changes
6
Hide whitespace changes
Inline
Side-by-side
.gitattributes
View file @
64cdfcfe
...
...
@@ -267,6 +267,7 @@ src/CDItest.c -text
src/Cat.c -text
src/Change.c -text
src/Change_e5slm.c -text
src/Cloudlayer.c -text
src/Comp.c -text
src/Compc.c -text
src/Complextorect.c -text
...
...
ChangeLog
View file @
64cdfcfe
2010-04-04 Uwe Schulzweida <Uwe.Schulzweida@zmaw.de>
* Added operator cloudlayer: compute low, mid and high clouds [request: Daniel Klocke]
2010-04-01 Martin Claus <mclaus@ifm-geomar.de>
* vertwind: added missing value support
...
...
src/Cloudlayer.c
0 → 100644
View file @
64cdfcfe
/*
This file is part of CDO. CDO is a collection of Operators to
manipulate and analyse Climate model Data.
Copyright (C) 2003-2010 Uwe Schulzweida, Uwe.Schulzweida@zmaw.de
See COPYING file for copying and redistribution conditions.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
#include
<ctype.h>
#include
<string.h>
#include
<math.h>
#include
"cdi.h"
#include
"cdo.h"
#include
"cdo_int.h"
#include
"pstream.h"
#include
"vinterp.h"
#define SCALESLP (101325.0)
/* ================================================= */
/* LayerCloud calculates random overlap cloud cover */
/* ================================================= */
static
void
layer_cloud
(
const
double
*
cc
,
double
*
ll
,
long
MaxLev
,
long
MinLev
,
long
dimgp
)
{
long
i
,
k
;
double
maxval
,
minval
;
double
ZEPSEC
;
ZEPSEC
=
1
.
-
1.0e-12
;
for
(
i
=
0
;
i
<
dimgp
;
i
++
)
ll
[
i
]
=
1
.
-
cc
[
i
+
MaxLev
*
dimgp
];
// printf("maxlev %d minlev %d\n", MaxLev, MinLev);
for
(
k
=
MaxLev
+
1
;
k
<=
MinLev
;
k
++
)
{
for
(
i
=
0
;
i
<
dimgp
;
i
++
)
{
maxval
=
MAX
(
cc
[
i
+
(
k
-
1
)
*
dimgp
],
cc
[
i
+
k
*
dimgp
]);
minval
=
MIN
(
cc
[
i
+
(
k
-
1
)
*
dimgp
],
ZEPSEC
);
ll
[
i
]
*=
(
1
.
-
maxval
)
/
(
1
.
-
minval
);
}
}
for
(
i
=
0
;
i
<
dimgp
;
i
++
)
ll
[
i
]
=
1
.
-
ll
[
i
];
}
static
void
vct2plev
(
const
double
*
vct
,
double
*
plevs
,
long
nlevs
)
{
long
k
;
for
(
k
=
0
;
k
<
nlevs
;
k
++
)
plevs
[
k
]
=
vct
[
k
]
+
vct
[
k
+
nlevs
]
*
SCALESLP
;
/*
for ( k = 0; k < nlevs; k++ )
printf("plevs %ld %g\n", k, plevs[k]);
for ( k = 1; k < nlevs; k++ )
printf("plevs %ld %g\n", k-1, (plevs[k]+plevs[k-1])/2);
*/
}
static
void
hl_index
(
int
*
kmax
,
int
*
kmin
,
double
pmax
,
double
pmin
,
long
nhlevs
,
double
*
pph
)
{
long
k
;
long
MaxLev
,
MinLev
;
for
(
k
=
0
;
k
<
nhlevs
;
k
++
)
if
(
pph
[
k
]
>
pmax
)
break
;
MaxLev
=
k
-
1
;
for
(
k
=
nhlevs
-
1
;
k
>=
0
;
k
--
)
if
(
pph
[
k
]
<
pmin
)
break
;
MinLev
=
k
;
*
kmax
=
MaxLev
;
*
kmin
=
MinLev
;
}
static
void
pl_index
(
int
*
kmax
,
int
*
kmin
,
double
pmax
,
double
pmin
,
long
nlevs
,
double
*
plevs
)
{
long
k
;
long
MaxLev
=
-
1
,
MinLev
=
-
1
;
for
(
k
=
0
;
k
<
nlevs
;
k
++
)
if
(
plevs
[
k
]
>=
pmax
)
{
MaxLev
=
k
;
break
;
}
for
(
k
=
nlevs
-
1
;
k
>=
0
;
k
--
)
if
(
plevs
[
k
]
<
pmin
)
{
MinLev
=
k
;
break
;
}
*
kmax
=
MaxLev
;
*
kmin
=
MinLev
;
}
#define NVARS 3
void
*
Cloudlayer
(
void
*
argument
)
{
static
char
func
[]
=
"Cloudlayer"
;
int
streamID1
,
streamID2
;
int
vlistID1
,
vlistID2
;
int
taxisID1
,
taxisID2
;
int
gridID
,
zaxisID
,
tsID
;
int
surfaceID
;
int
nlevel
,
nhlev
,
nlevs
,
nrecs
,
recID
,
code
;
int
varID
,
levelID
;
int
zrev
=
FALSE
;
int
nvars
;
int
gridsize
,
i
;
int
offset
;
int
nmiss
;
int
ngp
=
0
,
ngrids
;
int
aclcac_code
;
int
aclcacID
=
-
1
;
int
kmin
[
NVARS
],
kmax
[
NVARS
];
char
varname
[
128
];
double
sfclevel
=
0
;
double
*
plevs
=
NULL
;
double
*
aclcac
=
NULL
;
double
*
cloud
[
NVARS
];
double
missval
;
cdoInitialize
(
argument
);
streamID1
=
streamOpenRead
(
cdoStreamName
(
0
));
if
(
streamID1
<
0
)
cdiError
(
streamID1
,
"Open failed on %s"
,
cdoStreamName
(
0
));
vlistID1
=
streamInqVlist
(
streamID1
);
ngrids
=
vlistNgrids
(
vlistID1
);
for
(
i
=
0
;
i
<
ngrids
;
i
++
)
{
gridID
=
vlistGrid
(
vlistID1
,
i
);
if
(
gridInqType
(
gridID
)
!=
GRID_SPECTRAL
)
{
ngp
=
gridInqSize
(
gridID
);
break
;
}
}
/* check gridsize */
for
(
i
=
0
;
i
<
ngrids
;
i
++
)
{
gridID
=
vlistGrid
(
vlistID1
,
i
);
if
(
gridInqType
(
gridID
)
!=
GRID_SPECTRAL
)
{
if
(
ngp
!=
gridInqSize
(
gridID
)
)
cdoAbort
(
"Grids have different size!"
);
}
}
aclcac_code
=
223
;
nvars
=
vlistNvars
(
vlistID1
);
for
(
varID
=
0
;
varID
<
nvars
;
++
varID
)
{
gridID
=
vlistInqVarGrid
(
vlistID1
,
varID
);
zaxisID
=
vlistInqVarZaxis
(
vlistID1
,
varID
);
gridsize
=
gridInqSize
(
gridID
);
nlevel
=
zaxisInqSize
(
zaxisID
);
code
=
vlistInqVarCode
(
vlistID1
,
varID
);
if
(
code
<=
0
)
{
vlistInqVarName
(
vlistID1
,
varID
,
varname
);
strtolower
(
varname
);
if
(
strcmp
(
varname
,
"aclcac"
)
==
0
)
code
=
223
;
}
if
(
code
==
aclcac_code
)
aclcacID
=
varID
;
}
if
(
aclcacID
==
-
1
)
cdoAbort
(
"Cloud cover (code 223) not found!"
);
missval
=
vlistInqVarMissval
(
vlistID1
,
aclcacID
);
gridID
=
vlistInqVarGrid
(
vlistID1
,
aclcacID
);
zaxisID
=
vlistInqVarZaxis
(
vlistID1
,
aclcacID
);
gridsize
=
gridInqSize
(
gridID
);
nlevel
=
zaxisInqSize
(
zaxisID
);
nhlev
=
nlevel
+
1
;
aclcac
=
(
double
*
)
malloc
(
gridsize
*
nlevel
*
sizeof
(
double
));
for
(
varID
=
0
;
varID
<
NVARS
;
++
varID
)
cloud
[
varID
]
=
(
double
*
)
malloc
(
gridsize
*
sizeof
(
double
));
if
(
zaxisInqType
(
zaxisID
)
==
ZAXIS_PRESSURE
)
{
plevs
=
(
double
*
)
malloc
(
nlevel
*
sizeof
(
double
));
zaxisInqLevels
(
zaxisID
,
plevs
);
if
(
plevs
[
0
]
>
plevs
[
nlevel
-
1
]
)
{
double
ptmp
;
zrev
=
TRUE
;
for
(
levelID
=
0
;
levelID
<
nlevel
/
2
;
++
levelID
)
{
ptmp
=
plevs
[
levelID
];
plevs
[
levelID
]
=
plevs
[
nlevel
-
1
-
levelID
];
plevs
[
nlevel
-
1
-
levelID
]
=
ptmp
;
}
}
/*
for ( levelID = 0; levelID < nlevel; ++levelID )
{
printf("level %d %g\n", levelID, plevs[levelID]);
}
*/
pl_index
(
&
kmax
[
2
],
&
kmin
[
2
],
5000
.,
44000
.,
nlevel
,
plevs
);
pl_index
(
&
kmax
[
1
],
&
kmin
[
1
],
46000
.,
73000
.,
nlevel
,
plevs
);
pl_index
(
&
kmax
[
0
],
&
kmin
[
0
],
75000
.,
101300
.,
nlevel
,
plevs
);
free
(
plevs
);
}
else
if
(
zaxisInqType
(
zaxisID
)
==
ZAXIS_HYBRID
)
{
int
nvct
;
nvct
=
zaxisInqVctSize
(
zaxisID
);
if
(
nlevel
==
(
nvct
/
2
-
1
)
)
{
double
*
vct
;
vct
=
(
double
*
)
malloc
(
nvct
*
sizeof
(
double
));
memcpy
(
vct
,
zaxisInqVctPtr
(
zaxisID
),
nvct
*
sizeof
(
double
));
nlevs
=
nlevel
+
1
;
plevs
=
(
double
*
)
malloc
(
nlevs
*
sizeof
(
double
));
vct2plev
(
vct
,
plevs
,
nlevs
);
free
(
vct
);
hl_index
(
&
kmax
[
2
],
&
kmin
[
2
],
5000
.,
44000
.,
nhlev
,
plevs
);
hl_index
(
&
kmax
[
1
],
&
kmin
[
1
],
46000
.,
73000
.,
nhlev
,
plevs
);
hl_index
(
&
kmax
[
0
],
&
kmin
[
0
],
75000
.,
101300
.,
nhlev
,
plevs
);
free
(
plevs
);
}
else
cdoAbort
(
"Unsupported vertical coordinate table format!"
);
}
else
cdoAbort
(
"Unsupported Z-Axis type!"
);
surfaceID
=
zaxisCreate
(
ZAXIS_SURFACE
,
1
);
zaxisDefLevels
(
surfaceID
,
&
sfclevel
);
vlistID2
=
vlistCreate
();
varID
=
vlistDefVar
(
vlistID2
,
gridID
,
surfaceID
,
TIME_VARIABLE
);
vlistDefVarCode
(
vlistID2
,
varID
,
34
);
vlistDefVarName
(
vlistID2
,
varID
,
"low_cld"
);
vlistDefVarLongname
(
vlistID2
,
varID
,
"low cloud"
);
vlistDefVarMissval
(
vlistID2
,
varID
,
missval
);
varID
=
vlistDefVar
(
vlistID2
,
gridID
,
surfaceID
,
TIME_VARIABLE
);
vlistDefVarCode
(
vlistID2
,
varID
,
35
);
vlistDefVarName
(
vlistID2
,
varID
,
"mid_cld"
);
vlistDefVarLongname
(
vlistID2
,
varID
,
"mid cloud"
);
vlistDefVarMissval
(
vlistID2
,
varID
,
missval
);
varID
=
vlistDefVar
(
vlistID2
,
gridID
,
surfaceID
,
TIME_VARIABLE
);
vlistDefVarCode
(
vlistID2
,
varID
,
36
);
vlistDefVarName
(
vlistID2
,
varID
,
"hih_cld"
);
vlistDefVarLongname
(
vlistID2
,
varID
,
"high cloud"
);
vlistDefVarMissval
(
vlistID2
,
varID
,
missval
);
taxisID1
=
vlistInqTaxis
(
vlistID1
);
taxisID2
=
taxisDuplicate
(
taxisID1
);
vlistDefTaxis
(
vlistID2
,
taxisID2
);
streamID2
=
streamOpenWrite
(
cdoStreamName
(
1
),
cdoFiletype
());
if
(
streamID2
<
0
)
cdiError
(
streamID2
,
"Open failed on %s"
,
cdoStreamName
(
1
));
streamDefVlist
(
streamID2
,
vlistID2
);
tsID
=
0
;
while
(
(
nrecs
=
streamInqTimestep
(
streamID1
,
tsID
))
)
{
taxisCopyTimestep
(
taxisID2
,
taxisID1
);
streamDefTimestep
(
streamID2
,
tsID
);
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
if
(
zrev
)
offset
=
(
nlevel
-
1
-
levelID
)
*
gridsize
;
else
offset
=
levelID
*
gridsize
;
if
(
varID
==
aclcacID
)
{
streamReadRecord
(
streamID1
,
aclcac
+
offset
,
&
nmiss
);
if
(
nmiss
!=
0
)
cdoAbort
(
"missing values unsupported!"
);
}
}
for
(
varID
=
0
;
varID
<
NVARS
;
++
varID
)
{
for
(
i
=
0
;
i
<
gridsize
;
i
++
)
cloud
[
varID
][
i
]
=
missval
;
}
for
(
varID
=
0
;
varID
<
NVARS
;
++
varID
)
{
if
(
kmax
[
varID
]
!=
-
1
&&
kmin
[
varID
]
!=
-
1
)
layer_cloud
(
aclcac
,
cloud
[
varID
],
kmax
[
varID
],
kmin
[
varID
],
gridsize
);
}
for
(
varID
=
0
;
varID
<
NVARS
;
++
varID
)
{
nmiss
=
0
;
for
(
i
=
0
;
i
<
gridsize
;
i
++
)
if
(
DBL_IS_EQUAL
(
cloud
[
varID
][
i
],
missval
)
)
nmiss
++
;
streamDefRecord
(
streamID2
,
varID
,
0
);
streamWriteRecord
(
streamID2
,
cloud
[
varID
],
nmiss
);
}
tsID
++
;
}
streamClose
(
streamID2
);
streamClose
(
streamID1
);
vlistDestroy
(
vlistID2
);
free
(
aclcac
);
for
(
varID
=
0
;
varID
<
NVARS
;
++
varID
)
free
(
cloud
[
varID
]);
cdoFinish
();
return
(
0
);
}
src/Makefile.am
View file @
64cdfcfe
...
...
@@ -12,6 +12,7 @@ cdo_SOURCES = Arith.c \
CDItest.c
\
Change.c
\
Change_e5slm.c
\
Cloudlayer.c
\
Comp.c
\
Compc.c
\
Cond.c
\
...
...
src/Makefile.in
View file @
64cdfcfe
...
...
@@ -51,6 +51,11 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acx_c_package.m4 \
$(top_srcdir)
/m4/ac_lang_program_fortran.m4
\
$(top_srcdir)
/m4/acx_lang_fortran_check_include.m4
\
$(top_srcdir)
/m4/acx_lang_c_check_include.m4
\
$(top_srcdir)
/m4/ac_fc_freeform.m4
\
$(top_srcdir)
/m4/acx_fc_library_ldflags.m4
\
$(top_srcdir)
/m4/ac_lang_program_fortran.m4
\
$(top_srcdir)
/m4/acx_lang_fortran_check_include.m4
\
$(top_srcdir)
/m4/acx_lang_c_check_include.m4
\
$(top_srcdir)
/configure.ac
am__configure_deps
=
$(am__aclocal_m4_deps)
$(CONFIGURE_DEPENDENCIES)
\
$(ACLOCAL_M4)
...
...
@@ -62,72 +67,73 @@ am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS
=
$(bin_PROGRAMS)
$(noinst_PROGRAMS)
am_cdo_OBJECTS
=
Arith.
$(OBJEXT)
Arithc.
$(OBJEXT)
Arithdays.
$(OBJEXT)
\
Arithlat.
$(OBJEXT)
Cat.
$(OBJEXT)
CDItest.
$(OBJEXT)
\
Change.
$(OBJEXT)
Change_e5slm.
$(OBJEXT)
Comp.
$(OBJEXT)
\
Compc.
$(OBJEXT)
Cond.
$(OBJEXT)
Cond2.
$(OBJEXT)
Condc.
$(OBJEXT)
\
Complextorect.
$(OBJEXT)
Copy.
$(OBJEXT)
Del29feb.
$(OBJEXT)
\
Detrend.
$(OBJEXT)
Diff.
$(OBJEXT)
Echam5ini.
$(OBJEXT)
\
Enlarge.
$(OBJEXT)
Enlargegrid.
$(OBJEXT)
Ensstat.
$(OBJEXT)
\
Eofcoeff.
$(OBJEXT)
Exprf.
$(OBJEXT)
Filedes.
$(OBJEXT)
\
Fillmiss.
$(OBJEXT)
Filter.
$(OBJEXT)
Fldrms.
$(OBJEXT)
\
Fldstat.
$(OBJEXT)
Fldstat2.
$(OBJEXT)
Fourier.
$(OBJEXT)
\
Gengrid.
$(OBJEXT)
Gradsdes.
$(OBJEXT)
Gridboxstat.
$(OBJEXT)
\
Gridcell.
$(OBJEXT)
Harmonic.
$(OBJEXT)
Histogram.
$(OBJEXT)
\
Importamsr.
$(OBJEXT)
Importbinary.
$(OBJEXT)
\
Importcmsaf.
$(OBJEXT)
Importobs.
$(OBJEXT)
Info.
$(OBJEXT)
\
Input.
$(OBJEXT)
Intgrid.
$(OBJEXT)
Intgridtraj.
$(OBJEXT)
\
Intlevel.
$(OBJEXT)
Inttime.
$(OBJEXT)
Intntime.
$(OBJEXT)
\
Intyear.
$(OBJEXT)
Invert.
$(OBJEXT)
Invertlev.
$(OBJEXT)
\
Log.
$(OBJEXT)
Maskbox.
$(OBJEXT)
Mastrfu.
$(OBJEXT)
\
Math.
$(OBJEXT)
Merge.
$(OBJEXT)
Mergegrid.
$(OBJEXT)
\
Mergetime.
$(OBJEXT)
Merstat.
$(OBJEXT)
Monarith.
$(OBJEXT)
\
Mrotuv.
$(OBJEXT)
Mrotuvb.
$(OBJEXT)
Ninfo.
$(OBJEXT)
\
Nmltest.
$(OBJEXT)
Output.
$(OBJEXT)
Outputgmt.
$(OBJEXT)
\
Pinfo.
$(OBJEXT)
Pressure.
$(OBJEXT)
Regres.
$(OBJEXT)
\
Remap.
$(OBJEXT)
Remapeta.
$(OBJEXT)
Replace.
$(OBJEXT)
\
Rotuv.
$(OBJEXT)
Runpctl.
$(OBJEXT)
Runstat.
$(OBJEXT)
\
Seascount.
$(OBJEXT)
Seaspctl.
$(OBJEXT)
Seasstat.
$(OBJEXT)
\
Selbox.
$(OBJEXT)
Select.
$(OBJEXT)
Selvar.
$(OBJEXT)
\
Seloperator.
$(OBJEXT)
Selrec.
$(OBJEXT)
Seltime.
$(OBJEXT)
\
Set.
$(OBJEXT)
Setbox.
$(OBJEXT)
Setgatt.
$(OBJEXT)
\
Setgrid.
$(OBJEXT)
Sethalo.
$(OBJEXT)
Setmiss.
$(OBJEXT)
\
Setrange.
$(OBJEXT)
Setrcaname.
$(OBJEXT)
Settime.
$(OBJEXT)
\
Setzaxis.
$(OBJEXT)
Showinfo.
$(OBJEXT)
Sinfo.
$(OBJEXT)
\
Smooth9.
$(OBJEXT)
Sort.
$(OBJEXT)
Sorttimestamp.
$(OBJEXT)
\
Specinfo.
$(OBJEXT)
Spectral.
$(OBJEXT)
Spectrum.
$(OBJEXT)
\
Split.
$(OBJEXT)
Splitrec.
$(OBJEXT)
Splitsel.
$(OBJEXT)
\
Splittime.
$(OBJEXT)
Splityear.
$(OBJEXT)
Subtrend.
$(OBJEXT)
\
Templates.
$(OBJEXT)
Test.
$(OBJEXT)
Tests.
$(OBJEXT)
\
Timcount.
$(OBJEXT)
Timeof.
$(OBJEXT)
Timpctl.
$(OBJEXT)
\
Timsort.
$(OBJEXT)
Timselpctl.
$(OBJEXT)
Timselstat.
$(OBJEXT)
\
Timstat.
$(OBJEXT)
Timstat2.
$(OBJEXT)
Timstat3.
$(OBJEXT)
\
Tinfo.
$(OBJEXT)
Tocomplex.
$(OBJEXT)
Transpose.
$(OBJEXT)
\
Trend.
$(OBJEXT)
Trms.
$(OBJEXT)
Tstepcount.
$(OBJEXT)
\
Vardup.
$(OBJEXT)
Vargen.
$(OBJEXT)
Varrms.
$(OBJEXT)
\
Vertint.
$(OBJEXT)
Vertstat.
$(OBJEXT)
Vertwind.
$(OBJEXT)
\
Wind.
$(OBJEXT)
Writegrid.
$(OBJEXT)
Writerandom.
$(OBJEXT)
\
Yhourstat.
$(OBJEXT)
Ydaypctl.
$(OBJEXT)
Ydaystat.
$(OBJEXT)
\
Ydrunpctl.
$(OBJEXT)
Ydrunstat.
$(OBJEXT)
Ymonarith.
$(OBJEXT)
\
Ymonpctl.
$(OBJEXT)
Ymonstat.
$(OBJEXT)
Yseaspctl.
$(OBJEXT)
\
Yseasstat.
$(OBJEXT)
Zonstat.
$(OBJEXT)
cdilib.
$(OBJEXT)
\
commandline.
$(OBJEXT)
exception.
$(OBJEXT)
expr_yacc.
$(OBJEXT)
\
expr_lex.
$(OBJEXT)
expr.
$(OBJEXT)
cdo.
$(OBJEXT)
\
cdo_pthread.
$(OBJEXT)
cdo_vlist.
$(OBJEXT)
field.
$(OBJEXT)
\
fieldc.
$(OBJEXT)
field2.
$(OBJEXT)
fieldmer.
$(OBJEXT)
\
fieldzon.
$(OBJEXT)
gradsdeslib.
$(OBJEXT)
grid.
$(OBJEXT)
\
grid_gme.
$(OBJEXT)
grid_lcc.
$(OBJEXT)
grid_rot.
$(OBJEXT)
\
griddes.
$(OBJEXT)
griddes_nc.
$(OBJEXT)
griddes_h5.
$(OBJEXT)
\
hetaeta.
$(OBJEXT)
history.
$(OBJEXT)
institution.
$(OBJEXT)
\
interpol.
$(OBJEXT)
job.
$(OBJEXT)
modules.
$(OBJEXT)
\
namelist.
$(OBJEXT)
normal.
$(OBJEXT)
pipe.
$(OBJEXT)
\
process.
$(OBJEXT)
remaplib.
$(OBJEXT)
timer.
$(OBJEXT)
\
realtime.
$(OBJEXT)
pstream.
$(OBJEXT)
table.
$(OBJEXT)
\
userlog.
$(OBJEXT)
util.
$(OBJEXT)
legendre.
$(OBJEXT)
\
fouriertrans.
$(OBJEXT)
specspace.
$(OBJEXT)
readline.
$(OBJEXT)
\
juldate.
$(OBJEXT)
vinterp.
$(OBJEXT)
zaxis.
$(OBJEXT)
\
par_io.
$(OBJEXT)
pthread_debug.
$(OBJEXT)
color.
$(OBJEXT)
\
list.
$(OBJEXT)
percentiles.
$(OBJEXT)
nth_element.
$(OBJEXT)
\
ecacore.
$(OBJEXT)
ecautil.
$(OBJEXT)
EcaIndices.
$(OBJEXT)
\
Hi.
$(OBJEXT)
Wct.
$(OBJEXT)
statistic.
$(OBJEXT)
Change.
$(OBJEXT)
Change_e5slm.
$(OBJEXT)
Cloudlayer.
$(OBJEXT)
\
Comp.
$(OBJEXT)
Compc.
$(OBJEXT)
Cond.
$(OBJEXT)
Cond2.
$(OBJEXT)
\
Condc.
$(OBJEXT)
Complextorect.
$(OBJEXT)
Copy.
$(OBJEXT)
\
Del29feb.
$(OBJEXT)
Detrend.
$(OBJEXT)
Diff.
$(OBJEXT)
\
Echam5ini.
$(OBJEXT)
Enlarge.
$(OBJEXT)
Enlargegrid.
$(OBJEXT)
\
Ensstat.
$(OBJEXT)
Eofcoeff.
$(OBJEXT)
Exprf.
$(OBJEXT)
\
Filedes.
$(OBJEXT)
Fillmiss.
$(OBJEXT)
Filter.
$(OBJEXT)
\
Fldrms.
$(OBJEXT)
Fldstat.
$(OBJEXT)
Fldstat2.
$(OBJEXT)
\
Fourier.
$(OBJEXT)
Gengrid.
$(OBJEXT)
Gradsdes.
$(OBJEXT)
\
Gridboxstat.
$(OBJEXT)
Gridcell.
$(OBJEXT)
Harmonic.
$(OBJEXT)
\
Histogram.
$(OBJEXT)
Importamsr.
$(OBJEXT)
\
Importbinary.
$(OBJEXT)
Importcmsaf.
$(OBJEXT)
\
Importobs.
$(OBJEXT)
Info.
$(OBJEXT)
Input.
$(OBJEXT)
\
Intgrid.
$(OBJEXT)
Intgridtraj.
$(OBJEXT)
Intlevel.
$(OBJEXT)
\
Inttime.
$(OBJEXT)
Intntime.
$(OBJEXT)
Intyear.
$(OBJEXT)
\
Invert.
$(OBJEXT)
Invertlev.
$(OBJEXT)
Log.
$(OBJEXT)
\
Maskbox.
$(OBJEXT)
Mastrfu.
$(OBJEXT)
Math.
$(OBJEXT)
\
Merge.
$(OBJEXT)
Mergegrid.
$(OBJEXT)
Mergetime.
$(OBJEXT)
\
Merstat.
$(OBJEXT)
Monarith.
$(OBJEXT)
Mrotuv.
$(OBJEXT)
\
Mrotuvb.
$(OBJEXT)
Ninfo.
$(OBJEXT)
Nmltest.
$(OBJEXT)
\
Output.
$(OBJEXT)
Outputgmt.
$(OBJEXT)
Pinfo.
$(OBJEXT)
\
Pressure.
$(OBJEXT)
Regres.
$(OBJEXT)
Remap.
$(OBJEXT)
\
Remapeta.
$(OBJEXT)
Replace.
$(OBJEXT)
Rotuv.
$(OBJEXT)
\
Runpctl.
$(OBJEXT)
Runstat.
$(OBJEXT)
Seascount.
$(OBJEXT)
\
Seaspctl.
$(OBJEXT)
Seasstat.
$(OBJEXT)
Selbox.
$(OBJEXT)
\
Select.
$(OBJEXT)
Selvar.
$(OBJEXT)
Seloperator.
$(OBJEXT)
\
Selrec.
$(OBJEXT)
Seltime.
$(OBJEXT)
Set.
$(OBJEXT)
\
Setbox.
$(OBJEXT)
Setgatt.
$(OBJEXT)
Setgrid.
$(OBJEXT)
\
Sethalo.
$(OBJEXT)
Setmiss.
$(OBJEXT)
Setrange.
$(OBJEXT)
\
Setrcaname.
$(OBJEXT)
Settime.
$(OBJEXT)
Setzaxis.
$(OBJEXT)
\
Showinfo.
$(OBJEXT)
Sinfo.
$(OBJEXT)
Smooth9.
$(OBJEXT)
\
Sort.
$(OBJEXT)
Sorttimestamp.
$(OBJEXT)
Specinfo.
$(OBJEXT)
\
Spectral.
$(OBJEXT)
Spectrum.
$(OBJEXT)
Split.
$(OBJEXT)
\
Splitrec.
$(OBJEXT)
Splitsel.
$(OBJEXT)
Splittime.
$(OBJEXT)
\
Splityear.
$(OBJEXT)
Subtrend.
$(OBJEXT)
Templates.
$(OBJEXT)
\
Test.
$(OBJEXT)
Tests.
$(OBJEXT)
Timcount.
$(OBJEXT)
\
Timeof.
$(OBJEXT)
Timpctl.
$(OBJEXT)
Timsort.
$(OBJEXT)
\
Timselpctl.
$(OBJEXT)
Timselstat.
$(OBJEXT)
Timstat.
$(OBJEXT)
\
Timstat2.
$(OBJEXT)
Timstat3.
$(OBJEXT)
Tinfo.
$(OBJEXT)
\
Tocomplex.
$(OBJEXT)
Transpose.
$(OBJEXT)
Trend.
$(OBJEXT)
\
Trms.
$(OBJEXT)
Tstepcount.
$(OBJEXT)
Vardup.
$(OBJEXT)
\
Vargen.
$(OBJEXT)
Varrms.
$(OBJEXT)
Vertint.
$(OBJEXT)
\
Vertstat.
$(OBJEXT)
Vertwind.
$(OBJEXT)
Wind.
$(OBJEXT)
\
Writegrid.
$(OBJEXT)
Writerandom.
$(OBJEXT)
Yhourstat.
$(OBJEXT)
\
Ydaypctl.
$(OBJEXT)
Ydaystat.
$(OBJEXT)
Ydrunpctl.
$(OBJEXT)
\
Ydrunstat.
$(OBJEXT)
Ymonarith.
$(OBJEXT)
Ymonpctl.
$(OBJEXT)
\
Ymonstat.
$(OBJEXT)
Yseaspctl.
$(OBJEXT)
Yseasstat.
$(OBJEXT)
\
Zonstat.
$(OBJEXT)
cdilib.
$(OBJEXT)
commandline.
$(OBJEXT)
\
exception.
$(OBJEXT)
expr_yacc.
$(OBJEXT)
expr_lex.
$(OBJEXT)
\
expr.
$(OBJEXT)
cdo.
$(OBJEXT)
cdo_pthread.
$(OBJEXT)
\
cdo_vlist.
$(OBJEXT)
field.
$(OBJEXT)
fieldc.
$(OBJEXT)
\
field2.
$(OBJEXT)
fieldmer.
$(OBJEXT)
fieldzon.
$(OBJEXT)
\
gradsdeslib.
$(OBJEXT)
grid.
$(OBJEXT)
grid_gme.
$(OBJEXT)
\
grid_lcc.
$(OBJEXT)
grid_rot.
$(OBJEXT)
griddes.
$(OBJEXT)
\
griddes_nc.
$(OBJEXT)
griddes_h5.
$(OBJEXT)
hetaeta.
$(OBJEXT)
\
history.
$(OBJEXT)
institution.
$(OBJEXT)
interpol.
$(OBJEXT)
\
job.
$(OBJEXT)
modules.
$(OBJEXT)
namelist.
$(OBJEXT)
\
normal.
$(OBJEXT)
pipe.
$(OBJEXT)
process.
$(OBJEXT)
\
remaplib.
$(OBJEXT)
timer.
$(OBJEXT)
realtime.
$(OBJEXT)
\
pstream.
$(OBJEXT)
table.
$(OBJEXT)
userlog.
$(OBJEXT)
\
util.
$(OBJEXT)
legendre.
$(OBJEXT)
fouriertrans.
$(OBJEXT)
\
specspace.
$(OBJEXT)
readline.
$(OBJEXT)
juldate.
$(OBJEXT)
\
vinterp.
$(OBJEXT)
zaxis.
$(OBJEXT)
par_io.
$(OBJEXT)
\
pthread_debug.
$(OBJEXT)
color.
$(OBJEXT)
list.
$(OBJEXT)
\
percentiles.
$(OBJEXT)
nth_element.
$(OBJEXT)
ecacore.
$(OBJEXT)
\
ecautil.
$(OBJEXT)
EcaIndices.
$(OBJEXT)
Hi.
$(OBJEXT)
\
Wct.
$(OBJEXT)
statistic.
$(OBJEXT)
cdo_OBJECTS
=
$(am_cdo_OBJECTS)
cdo_DEPENDENCIES
=
am_cdotest_OBJECTS
=
cdilib.
$(OBJEXT)
cdotest.
$(OBJEXT)
...
...
@@ -281,6 +287,7 @@ cdo_SOURCES = Arith.c \
CDItest.c
\
Change.c
\
Change_e5slm.c
\
Cloudlayer.c
\
Comp.c
\
Compc.c
\
Cond.c
\
...
...
@@ -642,6 +649,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/Cat.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/Change.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/Change_e5slm.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/Cloudlayer.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/Comp.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/Compc.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/Complextorect.Po@am__quote@
...
...
src/modules.c
View file @
64cdfcfe
...
...
@@ -46,6 +46,7 @@ void *Cat(void *argument);
void
*
CDItest
(
void
*
argument
);
void
*
Change
(
void
*
argument
);
void
*
Change_e5slm
(
void
*
argument
);
void
*
Cloudlayer
(
void
*
argument
);
void
*
Comp
(
void
*
argument
);
void
*
Compc
(
void
*
argument
);
void
*
Cond
(
void
*
argument
);
...
...
@@ -242,6 +243,7 @@ void *Wct(void *argument);
#define CDItestOperators {"ncopy"}
#define ChangeOperators {"chcode", "chtabnum", "chname", "chlevel", "chlevelc", "chlevelv", "chltype"}
#define Change_e5slmOperators {"change_e5slm", "change_e5lsm", "change_e5mask"}
#define CloudlayerOperators {"cloudlayer"}
#define CompOperators {"eq", "ne", "le", "lt", "ge", "gt"}
#define CompcOperators {"eqc", "nec", "lec", "ltc", "gec", "gtc"}
#define CondOperators {"ifthen", "ifnotthen"}
...
...
@@ -474,6 +476,7 @@ static modules_t Modules[] =
{
CDItest
,
NULL
,
CDItestOperators
,
CDI_REAL
,
1
,
1
},
{
Change
,
ChangeHelp
,
ChangeOperators
,
CDI_REAL
,
1
,
1
},
{
Change_e5slm
,
NULL
,
Change_e5slmOperators
,
CDI_REAL
,
1
,
1
},
{
Cloudlayer
,
NULL
,
CloudlayerOperators
,
CDI_REAL
,
1
,
1
},
{
Comp
,
CompHelp
,
CompOperators
,
CDI_REAL
,
2
,
1
},
{
Compc
,
CompcHelp
,
CompcOperators
,
CDI_REAL
,
1
,
1
},
{
Cond
,
CondHelp
,
CondOperators
,
CDI_REAL
,
2
,
1
},
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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