Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mpim-sw
cdo
Commits
6200efc1
Commit
6200efc1
authored
Feb 01, 2016
by
Uwe Schulzweida
Browse files
cast nmiss to size_t
parent
655f8b6e
Changes
18
Hide whitespace changes
Inline
Side-by-side
src/Adisit.c
View file @
6200efc1
...
...
@@ -328,9 +328,17 @@ void *Adisit(void *argument)
offset
=
gridsize
*
levelID
;
if
(
varID
==
thoID
)
streamReadRecord
(
streamID1
,
tho
.
ptr
+
offset
,
&
(
tho
.
nmiss
));
if
(
varID
==
saoID
)
streamReadRecord
(
streamID1
,
sao
.
ptr
+
offset
,
&
(
sao
.
nmiss
));
}
if
(
varID
==
thoID
)
{
streamReadRecord
(
streamID1
,
tho
.
ptr
+
offset
,
&
nmiss
);
tho
.
nmiss
=
(
size_t
)
nmiss
;
}
if
(
varID
==
saoID
)
{
streamReadRecord
(
streamID1
,
sao
.
ptr
+
offset
,
&
nmiss
);
sao
.
nmiss
=
(
size_t
)
nmiss
;
}
}
if
(
operatorID
==
ADISIT
)
{
...
...
src/Arith.c
View file @
6200efc1
...
...
@@ -37,6 +37,7 @@ void *Arith(void *argument)
{
enum
{
FILL_NONE
,
FILL_TS
,
FILL_VAR
,
FILL_VARTS
,
FILL_FILE
};
int
filltype
=
FILL_NONE
;
int
nmiss
;
int
gridsize
;
int
nrecs
,
nrecs2
,
nvars
=
0
,
nlev
,
recID
;
int
nlevels2
=
1
;
...
...
@@ -250,8 +251,9 @@ void *Arith(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamIDx1
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamIDx1
,
fieldx1
->
ptr
,
&
fieldx1
->
nmiss
);
streamReadRecord
(
streamIDx1
,
fieldx1
->
ptr
,
&
nmiss
);
fieldx1
->
nmiss
=
(
size_t
)
nmiss
;
if
(
tsID
==
0
||
filltype
==
FILL_NONE
||
filltype
==
FILL_FILE
||
filltype
==
FILL_VARTS
)
{
int
lstatus
=
nlevels2
>
1
?
varID
==
0
:
recID
==
0
;
...
...
@@ -259,7 +261,8 @@ void *Arith(void *argument)
if
(
lstatus
||
(
filltype
!=
FILL_VAR
&&
filltype
!=
FILL_VARTS
)
)
{
streamInqRecord
(
streamIDx2
,
&
varID2
,
&
levelID2
);
streamReadRecord
(
streamIDx2
,
fieldx2
->
ptr
,
&
fieldx2
->
nmiss
);
streamReadRecord
(
streamIDx2
,
fieldx2
->
ptr
,
&
nmiss
);
fieldx2
->
nmiss
=
(
size_t
)
nmiss
;
}
if
(
filltype
==
FILL_TS
)
...
...
@@ -308,7 +311,7 @@ void *Arith(void *argument)
farfun
(
&
field1
,
field2
,
operfunc
);
streamDefRecord
(
streamID3
,
varID
,
levelID
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
field1
.
nmiss
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
(
int
)
field1
.
nmiss
);
}
tsID
++
;
...
...
src/Eofcoeff.c
View file @
6200efc1
...
...
@@ -127,8 +127,8 @@ void *Eofcoeff(void * argument)
if
(
levelID
>=
nlevs
)
cdoAbort
(
"Internal error - too high levelID"
);
streamReadRecord
(
streamID1
,
eof
[
varID
][
levelID
][
eofID
].
ptr
,
&
eof
[
varID
][
levelID
][
eofID
].
nmiss
)
;
streamReadRecord
(
streamID1
,
eof
[
varID
][
levelID
][
eofID
].
ptr
,
&
nmiss
);
eof
[
varID
][
levelID
][
eofID
].
nmiss
=
(
size_t
)
nmiss
;
}
eofID
++
;
}
...
...
@@ -203,7 +203,8 @@ void *Eofcoeff(void * argument)
{
streamInqRecord
(
streamID2
,
&
varID
,
&
levelID
);
missval2
=
vlistInqVarMissval
(
vlistID2
,
varID
);
streamReadRecord
(
streamID2
,
in
.
ptr
,
&
in
.
nmiss
);
streamReadRecord
(
streamID2
,
in
.
ptr
,
&
nmiss
);
in
.
nmiss
=
(
size_t
)
nmiss
;
for
(
eofID
=
0
;
eofID
<
neof
;
eofID
++
)
{
...
...
src/Eofcoeff3d.c
View file @
6200efc1
...
...
@@ -127,8 +127,8 @@ void *Eofcoeff3d(void * argument)
if
(
levelID
>=
nlevs
)
cdoAbort
(
"Internal error - too high levelID"
);
streamReadRecord
(
streamID1
,
eof
[
varID
][
levelID
][
eofID
].
ptr
,
&
eof
[
varID
][
levelID
][
eofID
].
nmiss
)
;
streamReadRecord
(
streamID1
,
eof
[
varID
][
levelID
][
eofID
].
ptr
,
&
nmiss
);
eof
[
varID
][
levelID
][
eofID
].
nmiss
=
(
size_t
)
nmiss
;
}
eofID
++
;
}
...
...
@@ -212,8 +212,8 @@ void *Eofcoeff3d(void * argument)
{
streamInqRecord
(
streamID2
,
&
varID
,
&
levelID
);
missval2
=
vlistInqVarMissval
(
vlistID2
,
varID
);
streamReadRecord
(
streamID2
,
in
.
ptr
,
&
in
.
nmiss
);
streamReadRecord
(
streamID2
,
in
.
ptr
,
&
nmiss
);
in
.
nmiss
=
(
size_t
)
nmiss
;
for
(
eofID
=
0
;
eofID
<
neof
;
eofID
++
)
{
...
...
@@ -248,7 +248,7 @@ void *Eofcoeff3d(void * argument)
for
(
eofID
=
0
;
eofID
<
neof
;
eofID
++
)
{
for
(
varID
=
0
;
varID
<
nvars
;
varID
++
)
{
streamDefRecord
(
streamIDs
[
eofID
],
varID
,
0
);
streamWriteRecord
(
streamIDs
[
eofID
],
out
[
varID
][
eofID
].
ptr
,
out
[
varID
][
eofID
].
nmiss
);
streamWriteRecord
(
streamIDs
[
eofID
],
out
[
varID
][
eofID
].
ptr
,
(
int
)
out
[
varID
][
eofID
].
nmiss
);
}
}
...
...
src/Fillmiss.c
View file @
6200efc1
...
...
@@ -409,6 +409,7 @@ void setmisstodis(field_t *field1, field_t *field2, int num_neighbors)
void
*
Fillmiss
(
void
*
argument
)
{
int
nmiss
;
int
nrecs
,
recID
,
varID
,
levelID
;
void
(
*
fill_method
)
(
field_t
*
fin
,
field_t
*
fout
,
int
)
=
NULL
;
...
...
@@ -488,7 +489,8 @@ void *Fillmiss(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
streamDefRecord
(
streamID2
,
varID
,
levelID
);
...
...
src/Fldrms.c
View file @
6200efc1
...
...
@@ -37,6 +37,7 @@ void *Fldrms(void *argument)
int
recID
,
nrecs
;
int
tsID
,
varID
,
levelID
;
int
lim
;
int
nmiss
;
int
ndiffgrids
;
int
needWeights
=
FALSE
;
double
slon
,
slat
;
...
...
@@ -122,9 +123,11 @@ void *Fldrms(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
streamInqRecord
(
streamID2
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamID2
,
field2
.
ptr
,
&
field2
.
nmiss
);
streamReadRecord
(
streamID2
,
field2
.
ptr
,
&
nmiss
);
field2
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
field2
.
grid
=
vlistInqVarGrid
(
vlistID2
,
varID
);
...
...
@@ -152,7 +155,7 @@ void *Fldrms(void *argument)
fldrms
(
field1
,
field2
,
&
field3
);
streamDefRecord
(
streamID3
,
varID
,
levelID
);
streamWriteRecord
(
streamID3
,
&
sglval
,
field3
.
nmiss
);
streamWriteRecord
(
streamID3
,
&
sglval
,
(
int
)
field3
.
nmiss
);
}
tsID
++
;
}
...
...
src/Gridboxstat.c
View file @
6200efc1
...
...
@@ -557,6 +557,7 @@ void gridboxstat(field_t *field1, field_t *field2, int xinc, int yinc, int statf
void
*
Gridboxstat
(
void
*
argument
)
{
int
nmiss
;
int
lastgrid
=
-
1
;
int
wstatus
=
FALSE
;
int
index
;
...
...
@@ -638,7 +639,8 @@ void *Gridboxstat(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
field1
.
size
=
gridInqSize
(
field1
.
grid
);
...
...
@@ -662,7 +664,7 @@ void *Gridboxstat(void *argument)
gridboxstat
(
&
field1
,
&
field2
,
xinc
,
yinc
,
operfunc
);
streamDefRecord
(
streamID2
,
varID
,
levelID
);
streamWriteRecord
(
streamID2
,
field2
.
ptr
,
field2
.
nmiss
);
streamWriteRecord
(
streamID2
,
field2
.
ptr
,
(
int
)
field2
.
nmiss
);
}
tsID
++
;
}
...
...
src/Hi.c
View file @
6200efc1
...
...
@@ -91,6 +91,7 @@ void *Hi(void *argument)
{
int
streamID1
,
streamID2
,
streamID3
,
streamID4
;
int
gridsize
;
int
nmiss
;
int
nrecs
,
nrecs2
,
nrecs3
,
recID
;
int
tsID
;
int
gridID
,
zaxisID
;
...
...
@@ -165,13 +166,16 @@ void *Hi(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID1
,
&
levelID1
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
streamInqRecord
(
streamID2
,
&
varID2
,
&
levelID2
);
streamReadRecord
(
streamID2
,
field2
.
ptr
,
&
field2
.
nmiss
);
streamReadRecord
(
streamID2
,
field2
.
ptr
,
&
nmiss
);
field2
.
nmiss
=
(
size_t
)
nmiss
;
streamInqRecord
(
streamID3
,
&
varID3
,
&
levelID3
);
streamReadRecord
(
streamID3
,
field3
.
ptr
,
&
field3
.
nmiss
);
streamReadRecord
(
streamID3
,
field3
.
ptr
,
&
nmiss
);
field3
.
nmiss
=
(
size_t
)
nmiss
;
if
(
varID1
!=
varID2
||
varID1
!=
varID3
||
levelID1
!=
levelID2
||
levelID1
!=
levelID3
)
cdoAbort
(
"Input streams have different structure!"
);
...
...
@@ -190,7 +194,7 @@ void *Hi(void *argument)
farexpr
(
&
field1
,
field2
,
field3
,
humidityIndex
);
streamDefRecord
(
streamID4
,
varID4
,
levelID1
);
streamWriteRecord
(
streamID4
,
field1
.
ptr
,
field1
.
nmiss
);
streamWriteRecord
(
streamID4
,
field1
.
ptr
,
(
int
)
field1
.
nmiss
);
}
tsID
++
;
...
...
src/Merstat.c
View file @
6200efc1
...
...
@@ -43,6 +43,7 @@ void *Merstat(void *argument)
int
gridID1
,
gridID2
=
-
1
,
lastgrid
=
-
1
;
int
wstatus
=
FALSE
;
int
index
;
int
nmiss
;
int
recID
,
nrecs
;
int
varID
,
levelID
;
int
needWeights
=
FALSE
;
...
...
@@ -140,8 +141,8 @@ void *Merstat(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
if
(
needWeights
&&
field1
.
grid
!=
lastgrid
)
{
...
...
@@ -162,7 +163,7 @@ void *Merstat(void *argument)
merfun
(
field1
,
&
field2
,
operfunc
);
streamDefRecord
(
streamID2
,
varID
,
levelID
);
streamWriteRecord
(
streamID2
,
field2
.
ptr
,
field2
.
nmiss
);
streamWriteRecord
(
streamID2
,
field2
.
ptr
,
(
int
)
field2
.
nmiss
);
}
tsID
++
;
}
...
...
src/Monarith.c
View file @
6200efc1
...
...
@@ -40,6 +40,7 @@ void *Monarith(void *argument)
int
tsID
,
tsID2
;
int
varID
,
levelID
;
int
offset
;
int
nmiss
;
int
vlistID1
,
vlistID2
,
vlistID3
;
int
taxisID1
,
taxisID2
,
taxisID3
;
int
vdate
;
...
...
@@ -140,8 +141,8 @@ void *Monarith(void *argument)
gridsize
=
gridInqSize
(
vlistInqVarGrid
(
vlistID2
,
varID
));
offset
=
gridsize
*
levelID
;
streamReadRecord
(
streamID2
,
vardata2
[
varID
]
+
offset
,
&
field2
.
nmiss
);
varnmiss2
[
varID
][
levelID
]
=
field2
.
nmiss
;
streamReadRecord
(
streamID2
,
vardata2
[
varID
]
+
offset
,
&
nmiss
);
varnmiss2
[
varID
][
levelID
]
=
nmiss
;
}
tsID2
++
;
...
...
@@ -154,23 +155,22 @@ void *Monarith(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
field1
.
missval
=
vlistInqVarMissval
(
vlistID1
,
varID
);
gridsize
=
gridInqSize
(
vlistInqVarGrid
(
vlistID2
,
varID
));
offset
=
gridsize
*
levelID
;
memcpy
(
field2
.
ptr
,
vardata2
[
varID
]
+
offset
,
gridsize
*
sizeof
(
double
));
field2
.
nmiss
=
varnmiss2
[
varID
][
levelID
];
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
field1
.
missval
=
vlistInqVarMissval
(
vlistID1
,
varID
);
field2
.
nmiss
=
varnmiss2
[
varID
][
levelID
];
field2
.
grid
=
vlistInqVarGrid
(
vlistID2
,
varID
);
field2
.
missval
=
vlistInqVarMissval
(
vlistID2
,
varID
);
farfun
(
&
field1
,
field2
,
operfunc
);
streamDefRecord
(
streamID3
,
varID
,
levelID
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
field1
.
nmiss
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
(
int
)
field1
.
nmiss
);
}
tsID
++
;
...
...
src/Rhopot.c
View file @
6200efc1
...
...
@@ -296,9 +296,17 @@ void *Rhopot(void *argument)
offset
=
gridsize
*
levelID
;
if
(
varID
==
toID
)
streamReadRecord
(
streamID1
,
to
.
ptr
+
offset
,
&
(
to
.
nmiss
));
if
(
varID
==
saoID
)
streamReadRecord
(
streamID1
,
sao
.
ptr
+
offset
,
&
(
sao
.
nmiss
));
}
if
(
varID
==
toID
)
{
streamReadRecord
(
streamID1
,
to
.
ptr
+
offset
,
&
nmiss
);
to
.
nmiss
=
(
size_t
)
nmiss
;
}
if
(
varID
==
saoID
)
{
streamReadRecord
(
streamID1
,
sao
.
ptr
+
offset
,
&
nmiss
);
sao
.
nmiss
=
(
size_t
)
nmiss
;
}
}
calc_rhopot
(
gridsize
,
nlevel
,
pressure
,
to
,
sao
,
rho
);
...
...
src/Splitsel.c
View file @
6200efc1
...
...
@@ -151,8 +151,11 @@ void *Splitsel(void *argument)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
if
(
vlistInqVarTsteptype
(
vlistID1
,
varID
)
==
TSTEP_CONSTANT
)
streamReadRecord
(
streamID1
,
vars
[
varID
][
levelID
].
ptr
,
&
vars
[
varID
][
levelID
].
nmiss
);
}
{
streamReadRecord
(
streamID1
,
vars
[
varID
][
levelID
].
ptr
,
&
nmiss
);
vars
[
varID
][
levelID
].
nmiss
=
(
size_t
)
nmiss
;
}
}
}
index
=
0
;
...
...
src/Timstat3.c
View file @
6200efc1
...
...
@@ -44,7 +44,7 @@ void *Timstat3(void *argument)
int
nlevs
;
int
i
,
iw
,
is
;
int
varID
,
recID
,
levelID
,
gridID
;
int
nmiss
3
;
int
nmiss
;
double
rconst
,
risk
;
double
fnvals0
,
fnvals1
;
double
missval
,
missval1
,
missval2
;
...
...
@@ -190,8 +190,9 @@ void *Timstat3(void *argument)
recLevelID
[
recID
]
=
levelID
;
}
streamReadRecord
(
streamID
[
is
],
in
[
is
].
ptr
,
&
in
[
is
].
nmiss
);
streamReadRecord
(
streamID
[
is
],
in
[
is
].
ptr
,
&
nmiss
);
in
[
is
].
nmiss
=
(
size_t
)
nmiss
;
for
(
i
=
0
;
i
<
gridsize
;
++
i
)
{
/*
...
...
@@ -308,12 +309,12 @@ void *Timstat3(void *argument)
}
}
nmiss
3
=
0
;
nmiss
=
0
;
for
(
i
=
0
;
i
<
gridsize
;
i
++
)
if
(
DBL_IS_EQUAL
(
out
[
0
].
ptr
[
i
],
missval1
)
)
nmiss
3
++
;
if
(
DBL_IS_EQUAL
(
out
[
0
].
ptr
[
i
],
missval1
)
)
nmiss
++
;
streamDefRecord
(
streamID3
,
varID
,
levelID
);
streamWriteRecord
(
streamID3
,
out
[
0
].
ptr
,
nmiss
3
);
streamWriteRecord
(
streamID3
,
out
[
0
].
ptr
,
nmiss
);
}
for
(
varID
=
0
;
varID
<
nvars
;
varID
++
)
...
...
src/Wct.c
View file @
6200efc1
...
...
@@ -86,6 +86,7 @@ void *Wct(void *argument)
int
gridsize
;
int
nrecs
,
nrecs2
,
recID
;
int
tsID
;
int
nmiss
;
int
gridID
,
zaxisID
;
int
varID1
,
varID2
,
varID3
;
int
levelID1
,
levelID2
;
...
...
@@ -151,10 +152,12 @@ void *Wct(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID1
,
&
levelID1
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
streamInqRecord
(
streamID2
,
&
varID2
,
&
levelID2
);
streamReadRecord
(
streamID2
,
field2
.
ptr
,
&
field2
.
nmiss
);
streamReadRecord
(
streamID2
,
field2
.
ptr
,
&
nmiss
);
field2
.
nmiss
=
(
size_t
)
nmiss
;
if
(
varID1
!=
varID2
||
levelID1
!=
levelID2
)
cdoAbort
(
"Input streams have different structure!"
);
...
...
@@ -171,7 +174,7 @@ void *Wct(void *argument)
farexpr
(
&
field1
,
field2
,
windchillTemperature
);
streamDefRecord
(
streamID3
,
varID3
,
levelID1
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
field1
.
nmiss
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
(
int
)
field1
.
nmiss
);
}
tsID
++
;
...
...
src/Yhourarith.c
View file @
6200efc1
...
...
@@ -71,6 +71,7 @@ void *Yhourarith(void *argument)
int
vlistID1
,
vlistID2
,
vlistID3
;
int
taxisID1
,
taxisID2
,
taxisID3
;
int
vdate
,
vtime
;
int
nmiss
;
int
houroy
;
field_t
field1
,
field2
;
int
**
varnmiss2
[
MAX_HOUR
];
...
...
@@ -142,8 +143,8 @@ void *Yhourarith(void *argument)
gridsize
=
gridInqSize
(
vlistInqVarGrid
(
vlistID2
,
varID
));
offset
=
gridsize
*
levelID
;
streamReadRecord
(
streamID2
,
vardata2
[
houroy
][
varID
]
+
offset
,
&
field2
.
nmiss
);
varnmiss2
[
houroy
][
varID
][
levelID
]
=
field2
.
nmiss
;
streamReadRecord
(
streamID2
,
vardata2
[
houroy
][
varID
]
+
offset
,
&
nmiss
);
varnmiss2
[
houroy
][
varID
][
levelID
]
=
nmiss
;
}
tsID
++
;
...
...
@@ -166,23 +167,22 @@ void *Yhourarith(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
field1
.
missval
=
vlistInqVarMissval
(
vlistID1
,
varID
);
gridsize
=
gridInqSize
(
vlistInqVarGrid
(
vlistID2
,
varID
));
offset
=
gridsize
*
levelID
;
memcpy
(
field2
.
ptr
,
vardata2
[
houroy
][
varID
]
+
offset
,
gridsize
*
sizeof
(
double
));
field2
.
nmiss
=
varnmiss2
[
houroy
][
varID
][
levelID
];
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
field1
.
missval
=
vlistInqVarMissval
(
vlistID1
,
varID
);
field2
.
grid
=
vlistInqVarGrid
(
vlistID2
,
varID
);
field2
.
missval
=
vlistInqVarMissval
(
vlistID2
,
varID
);
farfun
(
&
field1
,
field2
,
operfunc
);
streamDefRecord
(
streamID3
,
varID
,
levelID
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
field1
.
nmiss
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
(
int
)
field1
.
nmiss
);
}
tsID
++
;
...
...
src/Ymonarith.c
View file @
6200efc1
...
...
@@ -44,6 +44,7 @@ void *Ymonarith(void *argument)
int
tsID
;
int
varID
,
levelID
;
int
offset
;
int
nmiss
;
int
vdate
,
year
,
mon
,
day
;
field_t
field1
,
field2
;
int
**
varnmiss2
[
MAX_MON
];
...
...
@@ -133,8 +134,8 @@ void *Ymonarith(void *argument)
gridsize
=
gridInqSize
(
vlistInqVarGrid
(
vlistID2
,
varID
));
offset
=
gridsize
*
levelID
;
streamReadRecord
(
streamID2
,
vardata2
[
mon
][
varID
]
+
offset
,
&
field2
.
nmiss
);
varnmiss2
[
mon
][
varID
][
levelID
]
=
field2
.
nmiss
;
streamReadRecord
(
streamID2
,
vardata2
[
mon
][
varID
]
+
offset
,
&
nmiss
);
varnmiss2
[
mon
][
varID
][
levelID
]
=
nmiss
;
}
tsID
++
;
...
...
@@ -167,24 +168,23 @@ void *Ymonarith(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
field1
.
missval
=
vlistInqVarMissval
(
vlistID1
,
varID
);
gridsize
=
gridInqSize
(
vlistInqVarGrid
(
vlistID2
,
varID
));
offset
=
gridsize
*
levelID
;
memcpy
(
field2
.
ptr
,
vardata2
[
mon
][
varID
]
+
offset
,
gridsize
*
sizeof
(
double
));
field2
.
nmiss
=
varnmiss2
[
mon
][
varID
][
levelID
];
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
field1
.
missval
=
vlistInqVarMissval
(
vlistID1
,
varID
);
field2
.
grid
=
vlistInqVarGrid
(
vlistID2
,
varID
);
field2
.
missval
=
vlistInqVarMissval
(
vlistID2
,
varID
);
farfun
(
&
field1
,
field2
,
operfunc
);
streamDefRecord
(
streamID3
,
varID
,
levelID
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
field1
.
nmiss
);
streamWriteRecord
(
streamID3
,
field1
.
ptr
,
(
int
)
field1
.
nmiss
);
}
tsID
++
;
}
...
...
src/Zonstat.c
View file @
6200efc1
...
...
@@ -44,6 +44,7 @@ void *Zonstat(void *argument)
int
gridID1
=
-
1
,
gridID2
=
-
1
;
int
zongridID
=
-
1
;
int
index
;
int
nmiss
;
int
recID
,
nrecs
;
int
varID
,
levelID
;
...
...
@@ -153,8 +154,9 @@ void *Zonstat(void *argument)
for
(
recID
=
0
;
recID
<
nrecs
;
recID
++
)
{
streamInqRecord
(
streamID1
,
&
varID
,
&
levelID
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
streamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
vlistInqVarGrid
(
vlistID1
,
varID
);
field1
.
missval
=
vlistInqVarMissval
(
vlistID1
,
varID
);
field2
.
missval
=
vlistInqVarMissval
(
vlistID1
,
varID
);
...
...
@@ -173,7 +175,7 @@ void *Zonstat(void *argument)
}
streamDefRecord
(
streamID2
,
varID
,
levelID
);
streamWriteRecord
(
streamID2
,
field2
.
ptr
,
field2
.
nmiss
);
streamWriteRecord
(
streamID2
,
field2
.
ptr
,
(
int
)
field2
.
nmiss
);
}
tsID
++
;
}
...
...
src/ecacore.c
View file @
6200efc1
...
...
@@ -36,6 +36,7 @@ void eca1(const ECA_REQUEST_1 *request)
{
const
int
operatorID
=
cdoOperatorID
();
int
nmiss
;
int
cmplen
;
char
indate1
[
DATE_LEN
+
1
],
indate2
[
DATE_LEN
+
1
];
int
gridsize
;
...
...
@@ -224,7 +225,8 @@ void eca1(const ECA_REQUEST_1 *request)
if
(
IS_SET
(
request
->
var2
.
h3
)
)
var23
[
levelID
].
nmiss
=
gridsize
;
}
streamReadRecord
(
istreamID
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
istreamID
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
var12
[
levelID
].
grid
;
field1
.
missval
=
var12
[
levelID
].
missval
;
...
...
@@ -402,6 +404,7 @@ void eca2(const ECA_REQUEST_2 *request)
{
const
int
operatorID
=
cdoOperatorID
();
int
nmiss
;
int
cmplen
;
char
indate1
[
DATE_LEN
+
1
],
indate2
[
DATE_LEN
+
1
];
int
gridsize
;
...
...
@@ -611,11 +614,13 @@ void eca2(const ECA_REQUEST_2 *request)
var22
[
levelID
].
nmiss
=
gridsize
;
}
streamReadRecord
(
istreamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
istreamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
gridID
;
field1
.
missval
=
missval1
;
streamReadRecord
(
istreamID2
,
field2
.
ptr
,
&
field2
.
nmiss
);
streamReadRecord
(
istreamID2
,
field2
.
ptr
,
&
nmiss
);
field2
.
nmiss
=
(
size_t
)
nmiss
;
field2
.
grid
=
gridID
;
field2
.
missval
=
missval2
;
...
...
@@ -789,6 +794,7 @@ void eca3(const ECA_REQUEST_3 *request)
{
const
int
operatorID
=
cdoOperatorID
();
int
nmiss
;
int
cmplen
;
char
indate1
[
DATE_LEN
+
1
],
indate2
[
DATE_LEN
+
1
];
int
gridsize
;
...
...
@@ -930,11 +936,13 @@ void eca3(const ECA_REQUEST_3 *request)
var2
[
levelID
].
nmiss
=
gridsize
;
}
streamReadRecord
(
istreamID1
,
field1
.
ptr
,
&
field1
.
nmiss
);
streamReadRecord
(
istreamID1
,
field1
.
ptr
,
&
nmiss
);
field1
.
nmiss
=
(
size_t
)
nmiss
;
field1
.
grid
=
var1
[
levelID
].
grid
;
field1
.
missval
=
var1
[
levelID
].
missval
;
streamReadRecord
(
istreamID2
,
field2
.
ptr
,
&
field2
.
nmiss
);
streamReadRecord
(
istreamID2
,
field2
.
ptr
,
&
nmiss
);
field2
.
nmiss
=
(
size_t
)
nmiss
;
field2
.
grid
=
var1
[
levelID
].
grid
;
field2
.
missval
=
var1
[
levelID
].
missval
;
...
...
@@ -994,6 +1002,7 @@ void eca4(const ECA_REQUEST_4 *request)
{
const
int
operatorID
=
cdoOperatorID
();
int
nmiss
;
int
cmplen
;
char
indate1
[
DATE_LEN
+
1
],
indate2
[
DATE_LEN
+
1
];
int
gridsize
,
gridtype
;
...
...
@@ -1171,7 +1180,8 @@ void eca4(const ECA_REQUEST_4 *request)
if
(
streamInqTimestep
(
istreamID2
,
itsID
)
)
{
streamInqRecord
(
istreamID2
,
&
varID
,
&
levelID
);
streamReadRecord
(
istreamID2
,
mask
.
ptr
,
&
mask
.
nmiss
);
streamReadRecord
(
istreamID2
,
mask
.
ptr
,
&
nmiss
);
mask
.
nmiss
=
(
size_t
)
nmiss
;