! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE GET_DIMS_FROM_RAD ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE get_grid_from_rad(radfname,dx,dy,dz,dzmin,strhopt, & 1,24 mapproj,ctrlat,ctrlon,trulat1,trulat2,trulon,sclfct, & istatus) ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! !----------------------------------------------------------------------- ! ! MODIFICATION HISTORY: ! !----------------------------------------------------------------------- ! ! INPUT: ! ! radfname file name for radar datasets ! ! OUTPUT: ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! istatus status indicator ! ! !----------------------------------------------------------------------- ! ! Variable Declarations: ! !----------------------------------------------------------------------- ! IMPLICIT NONE ! CHARACTER (LEN=*) :: radfname ! REAL :: dx,dy,dz,dzmin INTEGER :: strhopt,mapproj REAL :: ctrlat,ctrlon REAL :: trulat1,trulat2,trulon REAL :: sclfct ! INTEGER :: istatus ! !----------------------------------------------------------------------- ! ! Misc. local variables ! !----------------------------------------------------------------------- ! CHARACTER (LEN=4) :: stn CHARACTER (LEN=80) :: runname INTEGER :: ierr,lens,dmpfmt,nchanl INTEGER :: ireftim,itime,vcpnum,idummy INTEGER :: iradfmt,irngmin,irngmax INTEGER :: iyr, imon, idy, ihr, imin, isec ! !----------------------------------------------------------------------- ! ! hdf variables ! !----------------------------------------------------------------------- ! INTEGER :: sd_id,isource ! ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! istatus=0 ! !----------------------------------------------------------------------- ! ! Open file ! !----------------------------------------------------------------------- ! CALL asnctl ('NEWLOCAL', 1, ierr) CALL asnfile(radfname, '-F f77 -N ieee', ierr) lens=LEN(trim(radfname)) IF(radfname(lens-3:lens)=='hdf4')THEN dmpfmt=2 ELSE dmpfmt=1 ENDIF print*,'radfname=',TRIM(radfname),'dmpfmt=',dmpfmt IF(dmpfmt==1)THEN CALL getunit( nchanl ) OPEN(UNIT=nchanl,FILE=trim(radfname),ERR=399, & FORM='unformatted',STATUS='old') ! !----------------------------------------------------------------------- ! ! Read radar description variables ! !----------------------------------------------------------------------- ! istatus=1 ! READ(nchanl) stn READ(nchanl) ireftim,itime,vcpnum,idummy,idummy, & idummy,idummy,idummy,idummy,idummy ! CALL abss2ctim(itime, iyr, imon, idy, ihr, imin, isec ) WRITE(6,'(/a,i2.2,a,i2.2,a,i4.4,1X,i2.2,a,i2.2,a)') & 'Getting grid info from data recorded at: ', & imon,'/',idy,'/',iyr,ihr,':',imin,' UTC' ! READ(nchanl) runname READ(nchanl) iradfmt,strhopt,mapproj,irngmin,irngmax, & idummy,idummy,idummy,idummy,idummy READ(nchanl) dx,dy,dz,dzmin,ctrlat, & ctrlon,trulat1,trulat2,trulon,sclfct ! CLOSE(nchanl) CALL retunit( nchanl ) GO TO 400 399 CONTINUE PRINT*,'Error reading the radar file:',radfname 400 CONTINUE ELSE !HDF4 file CALL hdfopen(trim(radfname), 1, sd_id) IF (sd_id < 0) THEN WRITE (6,*) "READ1RAD: ERROR opening ", & trim(radfname)," for reading." istatus = 1 STOP END IF CALL hdfrdc(sd_id, 4, 'radid', stn, istatus) CALL hdfrdi(sd_id, 'ireftim', ireftim, istatus) CALL hdfrdi(sd_id, 'itime', itime, istatus) CALL hdfrdc(sd_id, 40, 'runname', runname, istatus) CALL hdfrdi(sd_id, 'iradfmt', iradfmt, istatus) CALL hdfrdi(sd_id, 'strhopt', strhopt, istatus) CALL hdfrdi(sd_id, 'mapproj', mapproj, istatus) CALL hdfrdr(sd_id, 'dx', dx, istatus) CALL hdfrdr(sd_id, 'dy', dy, istatus) CALL hdfrdr(sd_id, 'dz', dz, istatus) CALL hdfrdr(sd_id, 'dzmin', dzmin, istatus) CALL hdfrdr(sd_id, 'ctrlat', ctrlat, istatus) CALL hdfrdr(sd_id, 'ctrlon', ctrlon, istatus) CALL hdfrdr(sd_id, 'trulat1', trulat1, istatus) CALL hdfrdr(sd_id, 'trulat2', trulat2, istatus) CALL hdfrdr(sd_id, 'trulon', trulon, istatus) CALL hdfrdr(sd_id, 'sclfct', sclfct, istatus) CALL abss2ctim(itime, iyr, imon, idy, ihr, imin, isec ) iyr=MOD(iyr,100) WRITE(6,'(/a,i2.2,a,i2.2,a,i2.2,1X,i2.2,a,i2.2,a)') & 'Read grid info from remapped raw radar recorded at: ', & imon,'/',idy,'/',iyr,ihr,':',imin,' UTC' CALL hdfclose(sd_id,istatus) istatus=1 END IF RETURN ! ! Destination for hdf read error ! 115 CONTINUE WRITE(6,'(/a/)') ' Error reading data in HDFREAD' istatus=-11 RETURN END SUBROUTINE get_grid_from_rad