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