⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gf_unpack6.f

📁 计算线性趋势 回归系数 主要用于气象站点值的线性趋势计算
💻 F
字号:
      subroutine gf_unpack6(cgrib,lcgrib,iofst,ngpts,ibmap,bmap,ierr)!$$$  SUBPROGRAM DOCUMENTATION BLOCK!                .      .    .                                       .! SUBPROGRAM:    gf_unpack6 !   PRGMMR: Gilbert         ORG: W/NP11    DATE: 2000-05-26!! ABSTRACT: This subroutine unpacks Section 6 (Bit-Map Section)!   starting at octet 6 of that Section.  !! PROGRAM HISTORY LOG:! 2000-05-26  Gilbert! 2002-01-24  Gilbert  - Changed to dynamically allocate arrays!                        and to pass pointers to those arrays through!                        the argument list.!! USAGE:    CALL gf_unpack6(cgrib,lcgrib,iofst,ngpts,ibmap,bmap,ierr)!   INPUT ARGUMENT LIST:!     cgrib    - Character array that contains the GRIB2 message!     lcgrib   - Length (in bytes) of GRIB message array cgrib.!     iofst    - Bit offset of the beginning of Section 6.!     ngpts    - Number of grid points specified in the bit-map!!   OUTPUT ARGUMENT LIST:      !     iofst    - Bit offset at the end of Section 6, returned.!     ibmap    - Bitmap 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.!     bmap()   - Pointer to a logical*1 array containing decoded bitmap. !                ( if ibmap=0 )!     ierr     - Error return code.!                0 = no error!                4 = Unrecognized pre-defined bit-map.!                6 = memory allocation error!! REMARKS: None!! ATTRIBUTES:!   LANGUAGE: Fortran 90!   MACHINE:  IBM SP!!$$$      character(len=1),intent(in) :: cgrib(lcgrib)      integer,intent(in) :: lcgrib,ngpts      integer,intent(inout) :: iofst      integer,intent(out) :: ibmap      integer,intent(out) :: ierr      logical*1,pointer,dimension(:) :: bmap      integer :: intbmap(ngpts)      ierr=0      nullify(bmap)      iofst=iofst+32    ! skip Length of Section      iofst=iofst+8     ! skip section number      call gbyte(cgrib,ibmap,iofst,8)    ! Get bit-map indicator      iofst=iofst+8      if (ibmap.eq.0) then               ! Unpack bitmap         istat=0         if (ngpts.gt.0) allocate(bmap(ngpts),stat=istat)         if (istat.ne.0) then            ierr=6            nullify(bmap)            return         endif         call gbytes(cgrib,intbmap,iofst,1,0,ngpts)         iofst=iofst+ngpts         do j=1,ngpts           bmap(j)=.true.           if (intbmap(j).eq.0) bmap(j)=.false.         enddo!      elseif (ibmap.eq.254) then               ! Use previous bitmap!        return!      elseif (ibmap.eq.255) then               ! No bitmap in message!        bmap(1:ngpts)=.true.!      else!        print *,'gf_unpack6: Predefined bitmap ',ibmap,' not recognized.'!        ierr=4      endif            return    ! End of Section 6 processing      end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -