subroutine p3_bout(lunout, refws, nlevel, range_delay, bin_resolution, year, month, day, hrs, & mins, secs, flat, flon, altitude, azimuth, fincidence, dinu, lacid, lacrn, lstmid, acid, acrn, stmid) !************************************************************************ !* P3_BOUT * !* * !* This subroutine write data to a BUFR file. * !* * !* p3_bout(lunout, refws, nlevel, range_delay, bin_resolution, year, * !* month, day, hrs, mins, secs, flat, flon, altitude, azimuth, * !* fincidence, dinu, lacid, lacrn, lstmid, acid, acrn, stmid) * !* * !* Input parameters: * !* lunout integer FORTRAN logical unit number to * !* assign to BFILE. * !* refws short P3 radar data array * !* nlevel short Bins (range gates) Per Radial * !* range_delay real Meters (add to range * !* calculation to get true range) * !* bin_resolution real Bin (range gate) Resolution * !* flat real Radar Latitude * !* flon real Radar Longitude * !* altitude real Radar Altitude * !* azimuth real Earth Relative Azimuth * !* fincidence real Earth Relative Incidence * !* dinu short Antenna Number * !* lacid integer Length of Aircraft flight number* !* lacrn integer Length of Aircraft registration * !* (Tail) number * !* lstmid integer Length of Storm identifier * !* acid char* Aircraft flight number * !* acrn char* Aircraft registration * !* (Tail) number * !* stmid char* Storm identifier * !** * !* Log: * !* S. Guan/NCEP 07/09 Initial version * !************************************************************************ integer, parameter :: nmsgsize=600 real :: range_delay, bin_resolution, flat, flon, altitude, azimuth, fincidence integer :: year, month, day, hrs, mins, secs, i, valid_time, lunout, lundx, nret, level integer(2) nlevel, dinu, refws(nmsgsize,3) character(len=80) hdrstr, rptstr character(len=10) subset character*14 acid character(len=10) stmid, acrn real(8) :: tdata(4,nmsgsize), xdata(12) integer :: lacid, lacrn, lstmid data hdrstr /'PTID YEAR MNTH DAYS HOUR MINU SECO CLAT CLON FLVLST ANAZ ANEL'/ data rptstr /'DIST HREF DMVR DVSW'/ level = nlevel do i = 1, level tdata(1,i) = range_delay + (i - 0.5) * bin_resolution do j = 2, 4 tdata(j,i) = 10.0e+10 if (refws(i,j-1) .gt. -8887) tdata(j,i) = refws(i,j-1)/10.0 end do end do xdata(1) = dinu xdata(2) = year xdata(3) = month xdata(4) = day xdata(5) = hrs xdata(6) = mins xdata(7) = secs xdata(8) = flat xdata(9) = flon xdata(10) = altitude xdata(11) = azimuth if (xdata(11).le.0) xdata(11) = xdata(11) +360 xdata(12) = fincidence subset ='NC006070' valid_time=(int(xdata(2))*1000000)+ (int(xdata(3))*10000)+ & (int(xdata(4))*100)+(int(xdata(5))) ! call openmb(lunout,subset,valid_time) ! Character ID call ut_cibf ( lunout, 'ACRN', acrn, lacrn, iercbf) call ut_cibf ( lunout, 'STMID', stmid, lstmid, iercbf) call ufbint(lunout,xdata,12,1,nret,hdrstr) ! call ufbint to store the reflectivity gate distance and reflectivity values ! call ufbint(lunout,tdata,4,level,nret,rptstr) ! call writsb(lunout) call ut_wbfr ( lunout, 'radarp3', 0, iercbf ) call writlc ( lunout, acid(1:lacid), 'ACID' ) return end subroutine p3_bout