NCEPLIBS-g2  3.4.5
addfield.f File Reference

Contains subroutine which packs up Sections 4 through 7 for a given field and adds them to 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)
 This subroutine packs up Sections 4 through 7 for a given field and adds them to a GRIB2 message. More...
 

Detailed Description

Contains subroutine which packs up Sections 4 through 7 for a given field and adds them to a GRIB2 message.

Author
Stephen Gilbert
Date
2000-05-02

Definition in file addfield.f.

Function/Subroutine Documentation

◆ addfield()

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 
)

This subroutine packs up Sections 4 through 7 for a given field and adds them to a GRIB2 message.

They are Product Definition Section, Data Representation Section, Bit-Map Section and Data Section, respectively.

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. Also, subroutine addgrid must be called after gribcreate and before this routine to add the appropriate grid description to the GRIB2 message. Also, a call to gribend is required to complete GRIB2 message after all fields have been added.

PROGRAM HISTORY LOG:

  • 2000-05-02 Stephen Gilbert
  • 2002-12-17 Stephen Gilbert - Added support for new templates using PNG and JPEG2000 algorithms/templates.
  • 2004-06-22 Stephen Gilbert - Added check to determine if packing algorithm failed.
Parameters
[in,out]cgribCharacter array to contain the GRIB2 message.
[in]lcgribMaximum length (bytes) of array cgrib.
[in]ipdsnumProduct Definition Template Number ( see Code Table 4.0).
[in]ipdstmplContains the data values for the specified Product Definition Template (N=ipdsnum). Each element of this integer array contains an entry (in the order specified) of Product Defintion Template 4.N
[in]ipdstmplenMax dimension of ipdstmpl coordlist Array containg floating point values intended to document the vertical discretisation associated to model data on hybrid coordinate vertical levels.
[out]coordlistArray containg floating point values intended to document the vertical discretisation associated to model data on hybrid coordinate vertical levels. (part of Section 4) The dimension of this array can be obtained in advance from maxvals(5), which is returned from subroutine gribinfo.
[in]numcoord- number of values in array coordlist.
[in]idrsnum- Data Representation Template Number ( see Code Table 5.0 )
[in]idrstmplContains the data values for the specified Data Representation Template (N=idrsnum). Each element of this integer array contains an entry (in the order specified) of Data Representation Template 5.N. 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]idrstmplenMax dimension of idrstmpl.
[in]fldArray of data points to pack.
[out]ngrdptsNumber of data points in grid. i.e. size of fld and bmap.
[out]ibmapBitmap indicator (see Code Table 6.0).
  • 0 = bitmap applies and is included in Section 6.
  • 1-253 = Predefined bitmap applies
  • 254 = Previously defined bitmap applies to this field
  • 255 = Bit map does not apply to this product.
[out]bmapLogical*1 array containing bitmap to be added. (if ibmap=0 or ibmap=254)
[out]ierrError return code.
  • 0 = no error
  • 1 = GRIB message was not initialized. Need to call routine gribcreate first.
  • 2 = GRIB message already complete. Cannot add new section.
  • 3 = Sum of Section byte counts does not add to total byte count.
  • 4 = Previous Section was not 3 or 7.
  • 5 = Could not find requested Product Definition Template.
  • 6 = Section 3 (GDS) not previously defined in message
  • 7 = Tried to use unsupported Data Representationi Template
  • 8 = Specified use of a previously defined bitmap, but one does not exist in the GRIB message.
  • 9 = GDT of one of 5.50 through 5.53 required to pack using DRT 5.51
  • 10 = Error packing data field.
Note
Note that the Local Use Section (Section 2) can only follow Section 1 or Section 7 in a GRIB2 message.
Author
Stephen Gilbert
Date
2000-05-02

Definition at line 91 of file addfield.f.