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
libcdi
Commits
c4cca286
Commit
c4cca286
authored
Feb 15, 2011
by
Uwe Schulzweida
Browse files
grib2 cleanup
parent
fea2ee64
Changes
8
Hide whitespace changes
Inline
Side-by-side
src/gribapi.c
View file @
c4cca286
...
...
@@ -36,7 +36,7 @@ const char *gribapiLibraryVersion(void)
}
void
grib
apiDefHandles
(
int
streamID
)
void
grib
ContainersNew
(
int
streamID
)
{
stream_t
*
streamptr
;
...
...
@@ -50,12 +50,38 @@ void gribapiDefHandles(int streamID)
#endif
{
int
i
,
editionNumber
=
2
;
gribContainer_t
*
gribContainers
;
if
(
streamptr
->
filetype
==
FILETYPE_GRB
)
editionNumber
=
1
;
streamptr
->
gribHandle
=
(
void
**
)
malloc
(
streamptr
->
nvars
*
sizeof
(
void
*
));
gribContainers
=
(
gribContainer_t
*
)
malloc
(
streamptr
->
nvars
*
sizeof
(
gribContainer_t
));
streamptr
->
gribContainers
=
(
void
*
)
gribContainers
;
for
(
i
=
0
;
i
<
streamptr
->
nvars
;
++
i
)
streamptr
->
gribHandle
[
i
]
=
gribHandleNew
(
editionNumber
);
{
gribContainers
[
i
].
gribHandle
=
gribHandleNew
(
editionNumber
);
gribContainers
[
i
].
init
=
FALSE
;
}
}
}
void
gribContainersDelete
(
int
streamID
)
{
stream_t
*
streamptr
;
streamptr
=
stream_to_pointer
(
streamID
);
if
(
streamptr
->
gribContainers
)
{
int
i
;
gribContainer_t
*
gribContainers
=
(
gribContainer_t
*
)
streamptr
->
gribContainers
;
for
(
i
=
0
;
i
<
streamptr
->
nvars
;
++
i
)
{
gribHandleDelete
(
gribContainers
[
i
].
gribHandle
);
}
free
(
streamptr
->
gribContainers
);
streamptr
->
gribContainers
=
NULL
;
}
}
src/gribapi.h
View file @
c4cca286
...
...
@@ -30,8 +30,15 @@
#define GRIB2_GTYPE_NUMBER 101
/* General Unstructured Grid */
const
char
*
gribapiLibraryVersion
(
void
);
void
gribapiDefHandles
(
int
streamID
);
void
gribContainersNew
(
int
streamID
);
void
gribContainersDelete
(
int
streamID
);
void
*
gribHandleNew
(
int
editionNumber
);
void
gribHandleDelete
(
void
*
gh
);
typedef
struct
{
int
init
;
void
*
gribHandle
;
}
gribContainer_t
;
#endif
/* _GRIBAPI_H */
src/stream.c
View file @
c4cca286
...
...
@@ -1107,17 +1107,7 @@ void streamClose(int streamID)
case
FILETYPE_GRB2
:
{
gribClose
(
fileID
);
if
(
streamptr
->
gribHandle
)
{
int
i
;
for
(
i
=
0
;
i
<
streamptr
->
nvars
;
++
i
)
{
gribHandleDelete
(
streamptr
->
gribHandle
[
i
]);
streamptr
->
gribHandle
[
i
]
=
NULL
;
}
free
(
streamptr
->
gribHandle
);
streamptr
->
gribHandle
=
NULL
;
}
gribContainersDelete
(
streamID
);
break
;
}
#endif
...
...
@@ -1999,7 +1989,7 @@ void streamDefVlist(int streamID, int vlistID)
else
if
(
streamptr
->
filetype
==
FILETYPE_GRB
||
streamptr
->
filetype
==
FILETYPE_GRB2
)
{
grib
apiDefHandles
(
streamID
);
grib
ContainersNew
(
streamID
);
}
}
}
...
...
src/stream_grb.c
View file @
c4cca286
...
...
@@ -438,7 +438,7 @@ static
size_t
grbEncode
(
int
filetype
,
int
varID
,
int
levelID
,
int
vlistID
,
int
gridID
,
int
zaxisID
,
int
date
,
int
time
,
int
tsteptype
,
int
numavg
,
long
datasize
,
const
double
*
data
,
int
nmiss
,
unsigned
char
*
gribbuffer
,
size_t
gribbuffersize
,
int
ljpeg
,
void
*
grib
Handle
)
int
ljpeg
,
void
*
grib
Container
)
{
size_t
nbytes
;
...
...
@@ -455,7 +455,7 @@ size_t grbEncode(int filetype, int varID, int levelID, int vlistID, int gridID,
nbytes
=
gribapiEncode
(
varID
,
levelID
,
vlistID
,
gridID
,
zaxisID
,
date
,
time
,
tsteptype
,
numavg
,
datasize
,
data
,
nmiss
,
gribbuffer
,
gribbuffersize
,
ljpeg
,
grib
Handle
);
ljpeg
,
grib
Container
);
}
return
(
nbytes
);
...
...
@@ -510,7 +510,7 @@ int grbWriteVarSliceDP(int streamID, int varID, int levelID, const double *data,
stream_t
*
streamptr
;
int
ljpeg
=
0
;
int
ljpeg_warn
=
1
;
void
*
g
h
=
NULL
;
void
*
g
c
=
NULL
;
streamptr
=
stream_to_pointer
(
streamID
);
...
...
@@ -545,7 +545,8 @@ int grbWriteVarSliceDP(int streamID, int varID, int levelID, const double *data,
else
#endif
{
gh
=
streamptr
->
gribHandle
[
varID
];
gribContainer_t
*
gribContainers
=
(
gribContainer_t
*
)
streamptr
->
gribContainers
;
gc
=
(
void
*
)
&
gribContainers
[
varID
];
}
if
(
streamptr
->
ztype
==
COMPRESS_JPEG
)
...
...
@@ -556,13 +557,13 @@ int grbWriteVarSliceDP(int streamID, int varID, int levelID, const double *data,
}
else
{
if
(
ljpeg_warn
)
Warning
(
"J
peg
compression of GRIB1 records not available!"
);
if
(
ljpeg_warn
)
Warning
(
"J
PEG
compression of GRIB1 records not available!"
);
ljpeg_warn
=
0
;
}
}
nbytes
=
grbEncode
(
filetype
,
varID
,
levelID
,
vlistID
,
gridID
,
zaxisID
,
date
,
time
,
tsteptype
,
numavg
,
datasize
,
data
,
nmiss
,
gribbuffer
,
gribbuffersize
,
ljpeg
,
g
h
);
datasize
,
data
,
nmiss
,
gribbuffer
,
gribbuffersize
,
ljpeg
,
g
c
);
if
(
streamptr
->
ztype
==
COMPRESS_SZIP
)
nbytes
=
grbSzip
(
filetype
,
gribbuffer
,
nbytes
);
...
...
src/stream_gribapi.c
View file @
c4cca286
...
...
@@ -1858,7 +1858,7 @@ void gribapiDefParam(grib_handle *gh, int param, const char *name)
len
=
strlen
(
name
);
status
=
grib_set_string
(
gh
,
"shortName"
,
name
,
&
len
);
if
(
status
!=
0
)
printf
(
"status=%d; n
o match for shortName=%s
\n
"
,
status
,
name
);
Warning
(
"grib_api: N
o match for shortName=%s
\n
"
,
name
);
}
else
{
...
...
@@ -2021,8 +2021,6 @@ void gribapiDefGrid(grib_handle *gh, int gridID, int ljpeg)
static
short
lwarn
=
TRUE
;
size_t
len
;
char
*
mesg
;
// ISEC1_Sec2Or3Flag = 128;
gridtype
=
gridInqType
(
gridID
);
...
...
@@ -2031,8 +2029,6 @@ void gribapiDefGrid(grib_handle *gh, int gridID, int ljpeg)
if
(
gridtype
==
GRID_GME
||
gridtype
==
GRID_REFERENCE
)
gridtype
=
-
1
;
// ISEC1_GridDefinition = 255;
if
(
gridtype
==
GRID_GENERIC
)
{
int
xsize
,
ysize
,
gridsize
;
...
...
@@ -2071,10 +2067,6 @@ void gribapiDefGrid(grib_handle *gh, int gridID, int ljpeg)
gridtype
=
GRID_LONLAT
;
}
// ISEC2_Reduced = FALSE;
// ISEC2_ScanFlag = 0;
switch
(
gridtype
)
{
case
GRID_LONLAT
:
...
...
@@ -2263,8 +2255,8 @@ void gribapiDefGrid(grib_handle *gh, int gridID, int ljpeg)
GRIB_CHECK
(
grib_set_long
(
gh
,
"K"
,
trunc
),
0
);
GRIB_CHECK
(
grib_set_long
(
gh
,
"M"
,
trunc
),
0
);
GRIB_CHECK
(
grib_set_long
(
gh
,
"numberOfDataPoints"
,
gridInqSize
(
gridID
)),
0
);
GRIB_CHECK
(
grib_set_long
(
gh
,
"numberOfValues"
,
gridInqSize
(
gridID
)),
0
);
//
GRIB_CHECK(grib_set_long(gh, "numberOfDataPoints", gridInqSize(gridID)), 0);
//
GRIB_CHECK(grib_set_long(gh, "numberOfValues", gridInqSize(gridID)), 0);
if
(
gridInqComplexPacking
(
gridID
)
)
{
...
...
@@ -2581,7 +2573,7 @@ void gribHandleDelete(void *gh)
size_t
gribapiEncode
(
int
varID
,
int
levelID
,
int
vlistID
,
int
gridID
,
int
zaxisID
,
int
vdate
,
int
vtime
,
int
tsteptype
,
int
numavg
,
long
datasize
,
const
double
*
data
,
int
nmiss
,
unsigned
char
*
gribbuffer
,
size_t
gribbuffersize
,
int
ljpeg
,
void
*
grib
Handle
)
int
ljpeg
,
void
*
grib
Container
)
{
size_t
nbytes
=
0
;
#if defined (HAVE_LIBGRIB_API)
...
...
@@ -2592,6 +2584,7 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
long
bitsPerValue
;
char
name
[
256
];
grib_handle
*
gh
=
NULL
;
gribContainer_t
*
gc
=
(
gribContainer_t
*
)
gribContainer
;
// extern unsigned char _grib_template_GRIB2[];
param
=
vlistInqVarParam
(
vlistID
,
varID
);
...
...
@@ -2601,20 +2594,20 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
#if defined(GRIBAPIENCODETEST)
gh
=
(
grib_handle
*
)
gribHandleNew
();
#else
gh
=
gribHandle
;
gh
=
gc
->
gribHandle
;
#endif
gribapiDefInstitut
(
gh
,
vlistID
,
varID
);
gribapiDefModel
(
gh
,
vlistID
,
varID
);
if
(
!
gc
->
init
)
gribapiDefInstitut
(
gh
,
vlistID
,
varID
);
if
(
!
gc
->
init
)
gribapiDefModel
(
gh
,
vlistID
,
varID
);
gribapiDefParam
(
gh
,
param
,
name
);
if
(
!
gc
->
init
)
gribapiDefParam
(
gh
,
param
,
name
);
gribapiDefTime
(
gh
,
vdate
,
vtime
,
tsteptype
,
numavg
,
vlistInqTaxis
(
vlistID
));
/* bitsPerValue have to be defined befor call to DefGrid (complex packing) */
bitsPerValue
=
grbBitsPerValue
(
datatype
);
GRIB_CHECK
(
grib_set_long
(
gh
,
"bitsPerValue"
,
bitsPerValue
),
0
);
gribapiDefGrid
(
gh
,
gridID
,
ljpeg
);
if
(
!
gc
->
init
)
gribapiDefGrid
(
gh
,
gridID
,
ljpeg
);
gribapiDefLevel
(
gh
,
param
,
zaxisID
,
levelID
);
if
(
nmiss
>
0
)
...
...
@@ -2639,6 +2632,8 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
gribHandleDelete
(
gh
);
#endif
gc
->
init
=
TRUE
;
nbytes
=
recsize
;
#else
Error
(
"GRIB_API support not compiled in!"
);
...
...
src/stream_gribapi.h
View file @
c4cca286
...
...
@@ -11,6 +11,6 @@ int gribapiDecode(unsigned char *gribbuffer, int gribsize, double *data, int gri
size_t
gribapiEncode
(
int
varID
,
int
levelID
,
int
vlistID
,
int
gridID
,
int
zaxisID
,
int
vdate
,
int
vtime
,
int
tsteptype
,
int
numavg
,
long
datasize
,
const
double
*
data
,
int
nmiss
,
unsigned
char
*
gribbuffer
,
size_t
gribbuffersize
,
int
ljpeg
,
void
*
grib
Handle
);
int
ljpeg
,
void
*
grib
Container
);
#endif
/* _STREAM_GRIBAPI_H */
src/stream_int.c
View file @
c4cca286
...
...
@@ -425,7 +425,7 @@ void stream_init_entry(stream_t *streamptr)
streamptr
->
nfiles
=
0
;
streamptr
->
fnames
=
NULL
;
streamptr
->
grib
Handle
=
NULL
;
streamptr
->
grib
Containers
=
NULL
;
}
...
...
src/stream_int.h
View file @
c4cca286
...
...
@@ -241,7 +241,7 @@ typedef struct {
int
curfile
;
int
nfiles
;
char
**
fnames
;
void
*
*
grib
Handle
;
void
*
grib
Containers
;
}
stream_t
;
...
...
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