; ; create_dorade_structs.pro ; ; Define and allocate dorade data structures which are stored in a ; common block called dorade. Note, the data structures must be ; subsequently populated with appropriate information. ; ; Usage: ; IDL> create_dorade_structs, nr, na ; ; Where: ; nr = number of range bins ; na = number of azimuth bins (rays) ; ; pro create_dorade_structs, nr, na common dorade, comm, vold, radd, cfac, parm, celv, swib, ryib, asib, rdat, $ sswb, rktb, null comm = { COMM, $ ; comment block id : 'COMM', $ len : 16L, $ ; should be 8 + strlen(comment) comment : ' DORADE ' } vold = { VOLD, $ ; volume descriptor block id : 'VOLD', $ len : 72L, $ version : 1, $ volume : 1, $ maxbytes : 65500L , $ ; max bytes per descriptor project : 'VORTEX2 ', $ ; 20 ascii char utc_year : 0, $ ; date/time of data collection utc_mon : 0, $ utc_day : 0, $ utc_hour : 0, $ utc_min : 0, $ utc_sec : 0, $ flight : ' ', $ ; 8 ascii char gen_fac : 'UMass ', $ ; 8 ascii char gen_year : 0, $ ; date of file creation gen_mon : 0, $ gen_day : 0, $ sensors : 1 } ; # of sensors (radars) radd = { RADD, $ ; radar descriptor block id : 'RADD', $ len : 144L, $ name : 'UMass-XP', $ ; 8 ascii char const : 0., $ ; radar constant TxkW : 6.25, $ ; Tx power in kW RxPn : -102., $ ; receiver noise floor in dBm Grec : 35., $ ; receiver gain Gant : 41.8, $ ; antenna gain Gsys : 1., $ ; system gain (?) Hbw : 1.25, $ ; horiz beam width Vbw : 1.25, $ ; vert beam width type : 0, $ ; 0 = ground-based radar mode : 1, $ ; scan mode 1 == PPI rate : 24., $ ; scan rate in deg/s start : 0., $ ; nominal start angle stop : 360., $ ; nominal stop angle params : 8, $ ; # radar parameters addl : 0, $ ; # radar descriptors cmpres : 0, $ ; data compression 0 = none reduct : 0, $ ; data reduction 0 = none respar : [0., 0.], $ ; parameters for data reduction lon : 0., $ ; radar longitude lat : 0., $ ; radar latitude msl : 0., $ ; elevation vmax : 0., $ ; unambiguous velocity rmax : 0., $ ; unambiguous range (km) nfreq : 1, $ ; # frequencies, f ntau : 2, $ ; # pulse intervals, tau f : [9.41, 0., 0., 0., 0.], $ tau : [0.4167, 0.625, 0., 0., 0.] } cfac = { CFAC, $ ; correction factors id : 'CFAC', $ len : 72L, $ azim : 0., $ elev : 0., $ range : 0., $ lon : 0., $ lat : 0., $ msl : 0., $ agl : 0., $ gsew : 0., $ gsns : 0., $ vz : 0., $ head : 0., $ roll : 0., $ pitch : 0., $ drift : 0., $ rot : 0., $ tilt : 0. } parm = { PARM, $ ; parameter descriptor id : 'PARM', $ len : 104L, $ name : 'ZE ', $ ; 8 ascii char desc : 'Reflectivity factor (attenuated) ', $ ; 40 ascii char unit : 'dBZ ', $ ; 8 ascii char ntau : 3, $ ; pulse-periods used (bit-flags) nf : 1, $ ; frequencies used (bit-flags) B : 5., $ ; radar bandwidth (MHz) pw : 150, $ ; pulse width (m) pol : 5, $ ; polarization 0=H, 1=V, 5=dual nsamp : 33, $ ; samples per dwell time type : 2, $ ; data type 2=short int, 4=float thresh_field : 'NONE ', $ ; 8 ascii char thresh_val : 0., $ ; scale : 100., $ ; scale factor offset : 0., $ ; & offset missing : -999L } ; missing data value celv = { CELV, $ ; cell range vector id : 'CELV', $ len : 12L + nr*4L, $ ; sizeof struct nrg : long(nr), $ ; # range bins r : fltarr(nr) } ; range bin values swib = { SWIB, $ ; sweep info block id : 'SWIB', $ len : 40L, $ radar : 'UMass-XP', $ ; 8-ascii char number : 1L, $ ; sweep number rays : long(na), $ ; rays in this sweep start : 0., $ ; start angle stop : 0., $ ; stop angle fixed : 0., $ ; fixed angle (elevation) filt : 0L } ; filter flag 0=none ryib = { RYIB, $ ; ray info block id : 'RYIB', $ len : 44L, $ swp : 0L, $ ; sweep number julday : 0L, $ ; day of year hour : 0, $ ; time min : 0, $ sec : 0, $ msec : 0, $ azim : 0., $ ; azimuth (deg) elev : 0., $ ; elevation txkw : 6.25, $ ; tx power (kW) rate : 24., $ ; scan rate status : 0L } ; ray status 0=normal asib = { ASIB, $ ; platform info block id : 'ASIB', $ len : 80L, $ nav : fltarr(18) } ; buncha navigation parameters rdat = { RDAT, $ ; parameter data block id : 'RDAT', $ len : 16L + nr*2L, $ ; assumes short ints name : 'ZE ', $ ; 8 ascii char val : intarr(nr) } ; assumes short ints sswb = { SSWB, $ ; "Super" sweep info block id : 'SSWB', $ len : 196L, $ last : 0L, $ ; last used (unix time) start : 0L, $ ; start time (unix) stop : 0L, $ ; stop time size : 0L, $ ; file size comp : 0L, $ ; compression flag 0=none vts : 0L, $ ; volume time stamp npar : 0L, $ ; # parameters name : 'UMass-XP', $ ; 8 ascii char dstart : 0.D, $ ; double prec. start time dstop : 0.D, $ ; double prec. stop time ver : 0L, $ ; version number nkeys : 0L, $ ; # entries in key table status : 0L, $ ; ? place_holder : lonarr(7), $ ; unused? key_table : lonarr(24) } ; ndx = 480L rktb = { RKTB, $ ; rotation angle key table id : 'RKTB', $ len : 32L + 16L*ndx, $ angle2ndx : ndx/360., $ ndx_que_size : ndx, $ first_key_offset : 32L + 4L*ndx, $ angle_table_offset : 32L, $ num_rays : 0L, $ spare : 0L, $ angle_table : replicate(-1L, ndx), $ key_table : replicate({ENTRY,angle:0.,offset:0L,size:0L}, ndx) } null = { NULL, $ ; null descriptor block (like end-of-file) id : 'NULL', $ len : 8L } return end