SUBROUTINE wtrftiltcdf(ngate,maxazim,nazim,fname,outdir,varname, & 6,1 radname,radlat,radlon,radelv,ivcp,elv, & rmisval,rngfval,itimcdf,frtime,initime, & vnyquist,rfrgate, & azim,beamw,gtspc,refl) ! ! PURPOSE: Write one tilt of radar reflectivity data in NetCDF format. ! AUTHOR: Keith Brewster, CAPS ! IMPLICIT NONE INTEGER :: ngate INTEGER :: maxazim INTEGER :: nazim CHARACTER (LEN=256) :: fname CHARACTER (LEN=80) :: outdir CHARACTER (LEN=40 ) :: varname CHARACTER (LEN=4) :: radname REAL :: radlat REAL :: radlon REAL :: radelv INTEGER :: ivcp REAL :: elv REAL :: rmisval REAL :: rngfval INTEGER :: itimcdf REAL :: frtime INTEGER :: initime REAL :: vnyquist REAL :: rfrgate ! REAL :: azim(maxazim) REAL :: beamw(maxazim) REAL :: gtspc(maxazim) REAL :: refl(ngate,maxazim) ! !----------------------------------------------------------------------- ! ! netCDF variables ! !----------------------------------------------------------------------- ! CHARACTER (LEN=256) :: cdfname INTEGER :: istatus,ncid,ncmode INTEGER :: ipktyp,nbits ! !----------------------------------------------------------------------- ! ! netCDF output variables ! !----------------------------------------------------------------------- ! INTEGER :: swpdim(2) INTEGER :: azmdim(1) ! !----------------------------------------------------------------------- ! ! Variable indexes and descriptors ! !----------------------------------------------------------------------- ! INTEGER :: nazimid,ngateid INTEGER :: azmid,bmwid,elvid,gtwid,refid ! !----------------------------------------------------------------------- ! ! Misc local variables ! !----------------------------------------------------------------------- ! INTEGER :: istr1d(1),iknt1d(1) INTEGER :: istr2d(2),iknt2d(2) INTEGER :: lrname,lvarnam,ifsecs ! INCLUDE 'grid.inc' INCLUDE 'globcst.inc' INCLUDE 'netcdf.inc' ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ncmode=nf_clobber lrname=LEN_TRIM(runname) lvarnam=LEN_TRIM(varname) istr1d(1)=1 istr2d(1)=1 istr2d(2)=1 iknt1d(1)=nazim iknt2d(1)=ngate iknt2d(2)=nazim ! !----------------------------------------------------------------------- ! ! Open netCDF file ! !----------------------------------------------------------------------- ! write(cdfname,'(a,a,a)') TRIM(outdir),'/',TRIM(fname) write(6,'(a,a)') ' Writing data to: ',TRIM(cdfname) istatus=nf_create(cdfname,ncmode,ncid) ! !----------------------------------------------------------------------- ! ! Define Dimensions ! !----------------------------------------------------------------------- ! istatus=nf_def_dim(ncid,'Azimuth',nazim,nazimid) istatus=nf_def_dim(ncid,'Gate',ngate,ngateid) azmdim(1)=nazimid swpdim(1)=ngateid swpdim(2)=nazimid ! !----------------------------------------------------------------------- ! ! Define Variables ! !----------------------------------------------------------------------- ! istatus=nf_def_var(ncid,'Azimuth',nf_real,1,azmdim,azmid) istatus=nf_def_var(ncid,'BeamWidth',nf_real,1,azmdim,bmwid) istatus=nf_def_var(ncid,'GateWidth',nf_real,1,azmdim,gtwid) istatus=nf_def_var(ncid,TRIM(varname),nf_real,2,swpdim,refid) ! !----------------------------------------------------------------------- ! ! Set Variable Attributes ! !----------------------------------------------------------------------- ! istatus=nf_put_att_text(ncid,azmid,'Units',7,'Degrees') istatus=nf_put_att_text(ncid,bmwid,'Units',7,'Degrees') istatus=nf_put_att_text(ncid,gtwid,'Units',6,'Meters') istatus=nf_put_att_text(ncid,refid,'Units',3,'dBZ') ! !----------------------------------------------------------------------- ! ! Set Global Attributes ! !----------------------------------------------------------------------- ! istatus=nf_put_att_text(ncid,nf_global,'TypeName',lvarnam,TRIM(varname)) istatus=nf_put_att_text(ncid,nf_global,'DataType',9,'RadialSet') istatus=nf_put_att_real(ncid,nf_global,'Latitude',nf_real,1,radlat) istatus=nf_put_att_real(ncid,nf_global,'Longitude',nf_real,1,radlon) istatus=nf_put_att_real(ncid,nf_global,'Height',nf_real,1,radelv) istatus=nf_put_att_int(ncid,nf_global,'Time',nf_int,1,itimcdf) istatus=nf_put_att_real(ncid,nf_global,'FractionalTime',nf_real,1,frtime) istatus=nf_put_att_text(ncid,nf_global,'attributes',26, & ' Nyquist_Vel radarName vcp') istatus=nf_put_att_text(ncid,nf_global,'Nyquist_Vel-unit',15,'MetersPerSecond') istatus=nf_put_att_real(ncid,nf_global,'Nyquist_Vel-value',nf_real,1,vnyquist) istatus=nf_put_att_text(ncid,nf_global,'radarName-unit',13,'dimensionless') istatus=nf_put_att_text(ncid,nf_global,'radarName-value',4,radname) istatus=nf_put_att_text(ncid,nf_global,'vcp-unit',13,'dimensionless') istatus=nf_put_att_int(ncid,nf_global,'vcp-value',nf_int,1,ivcp) istatus=nf_put_att_real(ncid,nf_global,'Elevation',nf_real,1,elv) istatus=nf_put_att_text(ncid,nf_global,'ElevationUnits',7,'Degrees') istatus=nf_put_att_real(ncid,nf_global,'RangeToFirstGate',nf_real,1,rfrgate) istatus=nf_put_att_text(ncid,nf_global,'RangeToFirstGateUnits',6,'Meters') istatus=nf_put_att_real(ncid,nf_global,'MissingData',nf_real,1,rmisval) istatus=nf_put_att_real(ncid,nf_global,'RangeFolded',nf_real,1,rngfval) istatus=nf_put_att_text(ncid,nf_global,'Runname',lrname,runname) istatus=nf_put_att_int(ncid,nf_global,'InitialTime',nf_int,1,initime) istatus=nf_put_att_real(ncid,nf_global,'ForecastSeconds',nf_real,1,curtim) istatus=nf_enddef(ncid) ! !----------------------------------------------------------------------- ! ! Write data variables ! !----------------------------------------------------------------------- ! istatus=nf_put_vara_real(ncid,azmid,istr1d,iknt1d,azim) istatus=nf_put_vara_real(ncid,bmwid,istr1d,iknt1d,beamw) istatus=nf_put_vara_real(ncid,gtwid,istr1d,iknt1d,gtspc) istatus=nf_put_vara_real(ncid,refid,istr2d,iknt2d,refl) ! !----------------------------------------------------------------------- ! ! Close and compress reflectivity file ! !----------------------------------------------------------------------- ! istatus=nf_close(ncid) CALL cmprsgz(cdfname) END SUBROUTINE wtrftiltcdf SUBROUTINE wtvrtiltcdf(ngate,maxazim,nazim,fname,outdir,varname, & 6,1 radname,radlat,radlon,radelv,ivcp,elv, & rmisval,rngfval,itimcdf,frtime,initime, & vnyquist,rfrgate, & azim,beamw,gtspc,vnyq,radv) ! ! PURPOSE: Write one tilt of radar reflectivity data in NetCDF format. ! AUTHOR: Keith Brewster, CAPS ! IMPLICIT NONE INTEGER :: ngate INTEGER :: maxazim INTEGER :: nazim CHARACTER (LEN=256) :: fname CHARACTER (LEN=80) :: outdir CHARACTER (LEN=40) :: varname CHARACTER (LEN=4) :: radname REAL :: radlat REAL :: radlon REAL :: radelv INTEGER :: ivcp REAL :: elv REAL :: rmisval REAL :: rngfval INTEGER :: itimcdf REAL :: frtime INTEGER :: initime REAL :: vnyquist REAL :: rfrgate REAL :: azim(maxazim) REAL :: beamw(maxazim) REAL :: gtspc(maxazim) REAL :: vnyq(maxazim) REAL :: radv(ngate,maxazim) ! !----------------------------------------------------------------------- ! ! netCDF variables ! !----------------------------------------------------------------------- ! CHARACTER (LEN=256) :: cdfname INTEGER :: istatus,ncid,ncmode ! !----------------------------------------------------------------------- ! ! netCDF output variables ! !----------------------------------------------------------------------- ! INTEGER :: swpdim(2) INTEGER :: azmdim(1) ! !----------------------------------------------------------------------- ! ! Variable indexes and descriptors ! !----------------------------------------------------------------------- ! INTEGER :: nazimid,ngateid INTEGER :: azmid,bmwid,elvid,gtwid,nyqid,refid,velid ! !----------------------------------------------------------------------- ! ! Misc local variables ! !----------------------------------------------------------------------- ! INTEGER, PARAMETER :: itim1970=315619200 INTEGER :: istr1d(1),iknt1d(1) INTEGER :: istr2d(2),iknt2d(2) INTEGER :: lrname,lvarnam,ifsecs,initimeS ! INCLUDE 'grid.inc' INCLUDE 'globcst.inc' INCLUDE 'netcdf.inc' ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ncmode=nf_clobber lrname=LEN_TRIM(runname) lvarnam=LEN_TRIM(varname) istr1d(1)=1 istr2d(1)=1 istr2d(2)=1 iknt1d(1)=nazim iknt2d(1)=ngate iknt2d(2)=nazim ! !----------------------------------------------------------------------- ! ! Open netCDF file ! !----------------------------------------------------------------------- ! write(cdfname,'(a,a,a)') TRIM(outdir),'/',TRIM(fname) write(6,'(a,a)') ' Writing data to: ',TRIM(cdfname) istatus=nf_create(cdfname,ncmode,ncid) ! !----------------------------------------------------------------------- ! ! Define Dimensions ! !----------------------------------------------------------------------- ! istatus=nf_def_dim(ncid,'Azimuth',nazim,nazimid) istatus=nf_def_dim(ncid,'Gate',ngate,ngateid) azmdim(1)=nazimid swpdim(1)=ngateid swpdim(2)=nazimid ! !----------------------------------------------------------------------- ! ! Define Variables ! !----------------------------------------------------------------------- ! istatus=nf_def_var(ncid,'Azimuth',nf_real,1,azmdim,azmid) istatus=nf_def_var(ncid,'BeamWidth',nf_real,1,azmdim,bmwid) istatus=nf_def_var(ncid,'GateWidth',nf_real,1,azmdim,gtwid) istatus=nf_def_var(ncid,'NyquistVelocity',nf_real,1,azmdim,nyqid) istatus=nf_def_var(ncid,TRIM(varname),nf_real,2,swpdim,velid) ! !----------------------------------------------------------------------- ! ! Set Variable Attributes ! !----------------------------------------------------------------------- ! istatus=nf_put_att_text(ncid,azmid,'Units',7,'Degrees') istatus=nf_put_att_text(ncid,bmwid,'Units',7,'Degrees') istatus=nf_put_att_text(ncid,gtwid,'Units',6,'Meters') istatus=nf_put_att_text(ncid,nyqid,'Units',15,'MetersPerSecond') istatus=nf_put_att_text(ncid,velid,'Units',15,'MetersPerSecond') ! !----------------------------------------------------------------------- ! ! Set Global Attributes ! !----------------------------------------------------------------------- ! istatus=nf_put_att_text(ncid,nf_global,'TypeName',lvarnam,TRIM(varname)) istatus=nf_put_att_text(ncid,nf_global,'DataType',9,'RadialSet') istatus=nf_put_att_real(ncid,nf_global,'Latitude',nf_real,1,radlat) istatus=nf_put_att_real(ncid,nf_global,'Longitude',nf_real,1,radlon) istatus=nf_put_att_real(ncid,nf_global,'Height',nf_real,1,radelv) istatus=nf_put_att_int(ncid,nf_global,'Time',nf_int,1,itimcdf) istatus=nf_put_att_real(ncid,nf_global,'FractionalTime',nf_real,1,frtime) istatus=nf_put_att_text(ncid,nf_global,'attributes',26, & ' Nyquist_Vel radarName vcp') istatus=nf_put_att_text(ncid,nf_global,'Nyquist_Vel-unit',15,'MetersPerSecond') istatus=nf_put_att_real(ncid,nf_global,'Nyquist_Vel-value',nf_real,1,vnyquist) istatus=nf_put_att_text(ncid,nf_global,'radarName-unit',13,'dimensionless') istatus=nf_put_att_text(ncid,nf_global,'radarName-value',4,radname) istatus=nf_put_att_text(ncid,nf_global,'vcp-unit',13,'dimensionless') istatus=nf_put_att_int(ncid,nf_global,'vcp-value',nf_int,1,ivcp) istatus=nf_put_att_real(ncid,nf_global,'Elevation',nf_real,1,elv) istatus=nf_put_att_text(ncid,nf_global,'ElevationUnits',7,'Degrees') istatus=nf_put_att_real(ncid,nf_global,'RangeToFirstGate',nf_real,1,rfrgate) istatus=nf_put_att_text(ncid,nf_global,'RangeToFirstGateUnits',6,'Meters') istatus=nf_put_att_real(ncid,nf_global,'MissingData',nf_real,1,rmisval) istatus=nf_put_att_real(ncid,nf_global,'RangeFolded',nf_real,1,rngfval) istatus=nf_put_att_text(ncid,nf_global,'Runname',lrname,runname) istatus=nf_put_att_int(ncid,nf_global,'InitialTime',nf_int,1,initime) istatus=nf_put_att_real(ncid,nf_global,'ForecastSeconds',nf_real,1,curtim) istatus=nf_enddef(ncid) ! !----------------------------------------------------------------------- ! ! Write data variables ! !----------------------------------------------------------------------- ! istatus=nf_put_vara_real(ncid,azmid,istr1d,iknt1d,azim) istatus=nf_put_vara_real(ncid,bmwid,istr1d,iknt1d,beamw) istatus=nf_put_vara_real(ncid,gtwid,istr1d,iknt1d,gtspc) istatus=nf_put_vara_real(ncid,gtwid,istr1d,iknt1d,vnyq) istatus=nf_put_vara_real(ncid,gtwid,istr2d,iknt2d,radv) ! !----------------------------------------------------------------------- ! ! Close and compress velocity file ! !----------------------------------------------------------------------- ! istatus=nf_close(ncid) CALL cmprsgz(cdfname) END SUBROUTINE wtvrtiltcdf SUBROUTINE wtvvtiltcdf(ngate,maxazim,nazim,fname,outdir,varname, & 3,1 radname,radlat,radlon,radelv,ivcp,elv, & rmisval,rngfval,itimcdf,frtime,initime, & vnyquist,rfrgate, & azim,beamw,gtspc,vvor) ! ! PURPOSE: Write one tilt of radar reflectivity data in NetCDF format. ! AUTHOR: Keith Brewster, CAPS ! IMPLICIT NONE INTEGER :: ngate INTEGER :: maxazim INTEGER :: nazim CHARACTER (LEN=256) :: fname CHARACTER (LEN=80) :: outdir CHARACTER (LEN=40) :: varname CHARACTER (LEN=4) :: radname REAL :: radlat REAL :: radlon REAL :: radelv INTEGER :: ivcp REAL :: elv REAL :: rmisval REAL :: rngfval INTEGER :: itimcdf REAL :: frtime INTEGER :: initime REAL :: vnyquist REAL :: rfrgate ! REAL :: azim(maxazim) REAL :: beamw(maxazim) REAL :: gtspc(maxazim) REAL :: vvor(ngate,maxazim) ! !----------------------------------------------------------------------- ! ! netCDF variables ! !----------------------------------------------------------------------- ! CHARACTER (LEN=256) :: cdfname INTEGER :: istatus,ncid,ncmode INTEGER :: ipktyp,nbits ! !----------------------------------------------------------------------- ! ! netCDF output variables ! !----------------------------------------------------------------------- ! INTEGER :: swpdim(2) INTEGER :: azmdim(1) ! !----------------------------------------------------------------------- ! ! Variable indexes and descriptors ! !----------------------------------------------------------------------- ! INTEGER :: nazimid,ngateid INTEGER :: azmid,bmwid,elvid,gtwid,vorid ! !----------------------------------------------------------------------- ! ! Misc local variables ! !----------------------------------------------------------------------- ! INTEGER :: lrname,lvarnam,ifsecs INTEGER :: istr1d(1),iknt1d(1) INTEGER :: istr2d(2),iknt2d(2) ! INCLUDE 'grid.inc' INCLUDE 'globcst.inc' INCLUDE 'netcdf.inc' ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ncmode=nf_clobber lrname=LEN_TRIM(runname) lvarnam=LEN_TRIM(varname) istr1d(1)=1 istr2d(1)=1 istr2d(2)=1 iknt1d(1)=nazim iknt2d(1)=ngate iknt2d(2)=nazim ! !----------------------------------------------------------------------- ! ! Open netCDF file ! !----------------------------------------------------------------------- ! write(cdfname,'(a,a,a)') TRIM(outdir),'/',TRIM(fname) write(6,'(a,a)') ' Writing data to: ',TRIM(cdfname) istatus=nf_create(cdfname,ncmode,ncid) ! !----------------------------------------------------------------------- ! ! Define Dimensions ! !----------------------------------------------------------------------- ! istatus=nf_def_dim(ncid,'Azimuth',nazim,nazimid) istatus=nf_def_dim(ncid,'Gate',ngate,ngateid) azmdim(1)=nazimid swpdim(1)=ngateid swpdim(2)=nazimid ! !----------------------------------------------------------------------- ! ! Define Variables ! !----------------------------------------------------------------------- ! istatus=nf_def_var(ncid,'Azimuth',nf_real,1,azmdim,azmid) istatus=nf_def_var(ncid,'BeamWidth',nf_real,1,azmdim,bmwid) istatus=nf_def_var(ncid,'GateWidth',nf_real,1,azmdim,gtwid) istatus=nf_def_var(ncid,TRIM(varname),nf_real,2,swpdim,vorid) ! !----------------------------------------------------------------------- ! ! Set Variable Attributes ! !----------------------------------------------------------------------- ! istatus=nf_put_att_text(ncid,azmid,'Units',7,'Degrees') istatus=nf_put_att_text(ncid,bmwid,'Units',7,'Degrees') istatus=nf_put_att_text(ncid,gtwid,'Units',6,'Meters') istatus=nf_put_att_text(ncid,vorid,'Units',9,'1/Seconds') ! !----------------------------------------------------------------------- ! ! Set Global Attributes ! !----------------------------------------------------------------------- ! istatus=nf_put_att_text(ncid,nf_global,'TypeName',lvarnam,TRIM(varname)) istatus=nf_put_att_text(ncid,nf_global,'DataType',9,'RadialSet') istatus=nf_put_att_real(ncid,nf_global,'Latitude',nf_real,1,radlat) istatus=nf_put_att_real(ncid,nf_global,'Longitude',nf_real,1,radlon) istatus=nf_put_att_real(ncid,nf_global,'Height',nf_real,1,radelv) istatus=nf_put_att_int(ncid,nf_global,'Time',nf_int,1,itimcdf) istatus=nf_put_att_real(ncid,nf_global,'FractionalTime',nf_real,1,frtime) istatus=nf_put_att_text(ncid,nf_global,'attributes',26, & ' Nyquist_Vel radarName vcp') istatus=nf_put_att_text(ncid,nf_global,'Nyquist_Vel-unit',15,'MetersPerSecond') istatus=nf_put_att_real(ncid,nf_global,'Nyquist_Vel-value',nf_real,1,vnyquist) istatus=nf_put_att_text(ncid,nf_global,'radarName-unit',13,'dimensionless') istatus=nf_put_att_text(ncid,nf_global,'radarName-value',4,radname) istatus=nf_put_att_text(ncid,nf_global,'vcp-unit',13,'dimensionless') istatus=nf_put_att_int(ncid,nf_global,'vcp-value',nf_int,1,ivcp) istatus=nf_put_att_real(ncid,nf_global,'Elevation',nf_real,1,elv) istatus=nf_put_att_text(ncid,nf_global,'ElevationUnits',7,'Degrees') istatus=nf_put_att_real(ncid,nf_global,'RangeToFirstGate',nf_real,1,rfrgate) istatus=nf_put_att_text(ncid,nf_global,'RangeToFirstGateUnits',6,'Meters') istatus=nf_put_att_real(ncid,nf_global,'MissingData',nf_real,1,rmisval) istatus=nf_put_att_real(ncid,nf_global,'RangeFolded',nf_real,1,rngfval) istatus=nf_put_att_text(ncid,nf_global,'Runname',lrname,runname) istatus=nf_put_att_int(ncid,nf_global,'InitialTime',nf_int,1,initime) istatus=nf_put_att_real(ncid,nf_global,'ForecastSeconds',nf_real,1,curtim) istatus=nf_enddef(ncid) ! !----------------------------------------------------------------------- ! ! Write data variables ! !----------------------------------------------------------------------- ! istatus=nf_put_vara_real(ncid,azmid,istr1d,iknt1d,azim) istatus=nf_put_vara_real(ncid,bmwid,istr1d,iknt1d,beamw) istatus=nf_put_vara_real(ncid,gtwid,istr1d,iknt1d,gtspc) istatus=nf_put_vara_real(ncid,vorid,istr2d,iknt2d,vvor) ! !----------------------------------------------------------------------- ! ! Close and compress reflectivity file ! !----------------------------------------------------------------------- ! istatus=nf_close(ncid) CALL cmprsgz(cdfname) END SUBROUTINE wtvvtiltcdf