c SUBROUTINE packGB2_prob: Write probability data into GRIB2 file c subroutine packGB2_prob(iprob,jf,thresh,gfld) use grib_mod include 'parm.inc' type(gribfield) :: gfld C for variable table: INTEGER,intent(IN) :: iprob INTEGER,allocatable,dimension(:) :: ipdtmpl REAL,dimension(jf),intent(IN) :: vrbl_pr c write(*,*) 'packing direct prob for nv ',nv c write(*,*) iprob, c + nv,jpd1,jpd2,jpd10,jpd27,jf,Lp,Lt, c + iens,iyr,imon,idy,ihr,ifhr,gribid c write(*,*) 'Plvl Tlvl=',Plvl(nv),Tlvl(nv) !redefine data representation, otherwise some (e.g. VIS) !prob could not be stored in (lead to Min=0.0, Max=0.0) gfld%idrtmpl(1)=0 gfld%idrtmpl(2)=-1 gfld%idrtmpl(3)=0 gfld%idrtmpl(4)=8 gfld%idrtmpl(5)=0 gfld%idrtmpl(6)=0 gfld%idrtmpl(7)=255 ipdtnum=5 !ensemble NON-accum prob use Template 4.5 ipdtlen=22 allocate (ipdtmpl(ipdtlen)) ipdtmpl(1)=gfld%ipdtmpl(1) ipdtmpl(2)=gfld%ipdtmpl(2) ipdtmpl(3)=gfld%ipdtmpl(3) ipdtmpl(4)=gfld%ipdtmpl(4) ipdtmpl(5)=gfld%ipdtmpl(5) ipdtmpl(6)=gfld%ipdtmpl(6) ipdtmpl(7)=gfld%ipdtmpl(7) ipdtmpl(8)=gfld%ipdtmpl(8) ipdtmpl(9)=gfld%ipdtmpl(9) ipdtmpl(10)=gfld%ipdtmpl(10) ipdtmpl(11)=gfld%ipdtmpl(11) ipdtmpl(13)=gfld%ipdtmpl(13) !ipdtmpl(12)= see below ipdtmpl(14)=gfld%ipdtmpl(14) ipdtmpl(15)=gfld%ipdtmpl(15) ipdtmpl(16)=0 ipdtmpl(17)=0 ipdtmpl(18)=1 ipdtmpl(19)=0 ipdtmpl(20)=0 ipdtmpl(21)=3 ipdtmpl(22)=thresh*1000 !since scale factor ipdtmpl(21) is 3 !if ( gfld%ibmap .ne. 255 ) then !gfld%ibmap=0 !important resetting !end if if (gfld%idrtmpl(7).eq.255) gfld%idrtmpl(7)=0 iret=0 call Zputgb2(iprob,gfld,ipdtmpl,ipdtnum,ipdtlen,iret) c if(iret.ne.0) then c write(*,*) 'Zputgb2 prob error:',iret c end if 500 continue 2000 CONTINUE return end