NCEPLIBS-g2
3.5.0
|
Subroutines to create a GRIB2 message. More...
Go to the source code of this file.
Functions/Subroutines | |
subroutine | addfield (cgrib, lcgrib, ipdsnum, ipdstmpl, ipdstmplen, coordlist, numcoord, idrsnum, idrstmpl, idrstmplen, fld, ngrdpts, ibmap, bmap, ierr) |
Pack up Sections 4 through 7 for a field and add them to a GRIB2 message. More... | |
subroutine | addgrid (cgrib, lcgrib, igds, igdstmpl, igdstmplen, ideflist, idefnum, ierr) |
Add a Grid Definition Section (Section 3) to a GRIB2 message. More... | |
subroutine | addlocal (cgrib, lcgrib, csec2, lcsec2, ierr) |
Add a Local Use Section (Section 2) to a GRIB2 message. More... | |
subroutine | gribcreate (cgrib, lcgrib, listsec0, listsec1, ierr) |
Initialize a new GRIB2 message and pack GRIB2 sections 0 (Indicator) and 1 (Identification). More... | |
subroutine | gribend (cgrib, lcgrib, lengrib, ierr) |
Finalize a GRIB2 message after all grids and fields have been added. More... | |
subroutine addfield | ( | character(len=1), dimension(lcgrib), intent(inout) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, intent(in) | ipdsnum, | ||
integer, dimension(*), intent(in) | ipdstmpl, | ||
integer, intent(in) | ipdstmplen, | ||
real, dimension(numcoord), intent(in) | coordlist, | ||
integer, intent(in) | numcoord, | ||
integer, intent(in) | idrsnum, | ||
integer, dimension(*), intent(inout) | idrstmpl, | ||
integer, intent(in) | idrstmplen, | ||
real, dimension(ngrdpts), intent(in), target | fld, | ||
integer, intent(in) | ngrdpts, | ||
integer, intent(in) | ibmap, | ||
logical*1, dimension(ngrdpts), intent(in) | bmap, | ||
integer, intent(out) | ierr | ||
) |
Pack up Sections 4 through 7 for a field and add them to a GRIB2 message.
They are the Product Definition Section, Data Representation Section, Bit-Map Section and Data Sections.
This routine is used with routines gribcreate(), addlocal(), addgrid(), and gribend() to create a complete GRIB2 message. Subroutine gribcreate() must be called first to initialize a new GRIB2 message. Subroutine addgrid() must be called after gribcreate() and before this routine to add the appropriate grid description to the GRIB2 message. A call to gribend() is required to complete GRIB2 message after all fields have been added.
[in,out] | cgrib | Character array to contain the GRIB2 message. |
[in] | lcgrib | Maximum length (bytes) of array cgrib. |
[in] | ipdsnum | Product Definition Template Number (see Code Table 4.0). |
[in] | ipdstmpl | Contains the data values for the Product Definition Template specified by ipdsnum. |
[in] | ipdstmplen | Max dimension of ipdstmpl. |
[out] | coordlist | Array containg floating point values intended to document the vertical discretisation associated to model data on hybrid coordinate vertical levels (part of Section 4). |
[in] | numcoord | - number of values in array coordlist. |
[in] | idrsnum | - Data Representation Template Number (see Code Table 5.0). |
[in] | idrstmpl | Contains the data values for the Data Representation Template specified by idrsnum. Note that some values in this template (eg. reference values, number of bits, etc...) may be changed by the data packing algorithms. Use this to specify scaling factors and order of spatial differencing, if desired. |
[in] | idrstmplen | Max dimension of idrstmpl. This must be at least as large as the length of the selected PDS template. |
[in] | fld | Array of data points to pack. |
[out] | ngrdpts | Number of data points in grid. i.e. size of fld and bmap. |
[out] | ibmap | Bitmap indicator (see Code Table 6.0).
|
[out] | bmap | Logical*1 array containing bitmap to be added (if ibmap=0 or ibmap=254). |
[out] | ierr | Error return code.
|
Definition at line 196 of file g2create.F90.
References cmplxpack(), pdstemplates::extpdstemplate(), g2_gbytec1(), g2_sbytec(), g2_sbytec1(), g2_sbytesc(), g2_sbytescr(), getdim(), drstemplates::getdrstemplate(), pdstemplates::getpdstemplate(), getpoly(), jpcpack(), mkieee(), pngpack(), simpack(), and specpack().
Referenced by putgb2().
subroutine addgrid | ( | character(len = 1), dimension(lcgrib), intent(inout) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, dimension(*), intent(in) | igds, | ||
integer, dimension(*), intent(in) | igdstmpl, | ||
integer, intent(in) | igdstmplen, | ||
integer, dimension(idefnum), intent(in) | ideflist, | ||
integer, intent(in) | idefnum, | ||
integer, intent(out) | ierr | ||
) |
Add a Grid Definition Section (Section 3) to a GRIB2 message.
This routine is used with routines gribcreate(), addlocal(), addfield(), and gribend() to create a complete GRIB2 message.
[in,out] | cgrib | Character array to contain the GRIB2 message. |
[in] | lcgrib | Maximum length (bytes) of array cgrib. |
[in] | igds | Contains information needed for GRIB Grid Definition Section 3. Must be dimensioned >= 5.
|
[in] | igdstmpl | Contains the data values for the Grid Definition Template specified by igds(5). This should have the length of mapgridlen of the selected grid template. |
[in] | igdstmplen | Max dimension of igdstmpl. This must be at least as large as the mapgridlen of the chosen template. |
[in] | ideflist | (Used if igds(3) .ne. 0). This array contains the number of grid points contained in each row (or column). |
[in] | idefnum | The number of entries in array ideflist. This is the number of rows (or columns) for which optional grid points are defined. |
[out] | ierr | Error return code.
|
Definition at line 659 of file g2create.F90.
References gridtemplates::extgridtemplate(), g2_gbytec1(), g2_sbytec(), g2_sbytec1(), g2_sbytesc(), and gridtemplates::getgridtemplate().
Referenced by putgb2().
subroutine addlocal | ( | character(len = 1), dimension(lcgrib), intent(inout) | cgrib, |
integer, intent(in) | lcgrib, | ||
character(len = 1), dimension(lcsec2), intent(in) | csec2, | ||
integer, intent(in) | lcsec2, | ||
integer, intent(out) | ierr | ||
) |
Add a Local Use Section (Section 2) to a GRIB2 message.
This routine is used with routines gribcreate(), addlocal(), addfield(), and gribend() to create a complete GRIB2 message. Subroutine gribcreate must be called first to initialize a new GRIB2 message.
The Local Use Section (Section 2) can only follow Section 1 or Section 7 in a GRIB2 message.
[in,out] | cgrib | Character array to contain the GRIB2 message. |
[in] | lcgrib | Maximum length (bytes) of array cgrib. |
[in] | csec2 | Character array containing information to be added to Section 2. |
[in] | lcsec2 | Number of bytes of character array csec2 to be added to Section 2. |
[out] | ierr | Error return code.
|
Definition at line 873 of file g2create.F90.
References g2_gbytec1(), and g2_sbytec1().
Referenced by putgb2().
subroutine gribcreate | ( | character(len = 1), dimension(lcgrib), intent(inout) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, dimension(*), intent(in) | listsec0, | ||
integer, dimension(*), intent(in) | listsec1, | ||
integer, intent(out) | ierr | ||
) |
Initialize a new GRIB2 message and pack GRIB2 sections 0 (Indicator) and 1 (Identification).
This routine is used with routines addlocal(), addgrid(), addfield(), and gribend() to create a complete GRIB2 message. Subroutine gribcreate() must be called first to initialize a new GRIB2 message. Also, a call to gribend() is required to complete GRIB2 message after all fields have been added.
[in,out] | cgrib | Character array to contain the GRIB2 message. |
[in] | lcgrib | Maximum Length (in bytes) of array cgrib. |
[in] | listsec0 | Contains information needed for GRIB Indicator Section 0. Must be dimensioned >= 2.
|
[in] | listsec1 | Contains information needed for GRIB Identification Section 1. Must be dimensioned >= 13.
|
[out] | ierr | Error return code.
|
Definition at line 53 of file g2create.F90.
References g2_sbytec(), and g2_sbytec1().
Referenced by putgb2().
subroutine gribend | ( | character(len = 1), dimension(lcgrib), intent(inout) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, intent(out) | lengrib, | ||
integer, intent(out) | ierr | ||
) |
Finalize a GRIB2 message after all grids and fields have been added.
This subroutine adds the End Section ("7777") to the end of the GRIB message and calculates the length and stores it in the appropriate place in Section 0. This routine is used with routines gribcreate(), addlocal(), addgrid(), and addfield() to create a complete GRIB2 message.
[in,out] | cgrib | Character array to contain the GRIB2 message. |
[in] | lcgrib | Maximum Length (in bytes) of array cgrib. |
[out] | lengrib | Length of the final GRIB2 message in bytes. |
[out] | ierr | Error return code.
|
Definition at line 979 of file g2create.F90.
References g2_gbytec1(), and g2_sbytec1().
Referenced by putgb2().