;$Id: ;+ ; NAME: ; WCR3CONF ; ; PURPOSE: ; Returns experiment specific WCR3 configuration structure with ; information about the radar installation and calibration parameters ; ; This is user supplied function and is used in conjunction with ; loadwcr3conf.pro function. ; ; The name WCR3CONF is reserved for the prototype/default ; function/configuration, which can be found in wcr3tools library. ; ; For any change in the configuration parameters related to a specific ; experiment the user should edit WCR3CONF and save it with a different ; name. It is recommended that the name is based on the following ; convention: wcr3conf__.pro. ; ; ATTENTION: to avoid a problem with UNIX/Linux case sensitive OS, make ; sure the function name and the file name for the function are both ; lower case and the same. ; ; Note: The config. is not complete yet. Will have to figure out ; some polarimetric stuff (e.g., channels' isolations) ; ; CATEGORY: ; wcr3tools ; ; CALLING SEQUENCE: ; wcr3conf=wcr3conf() ; ; INPUTS: ; ; KEYWORD PARAMETERS: ; IRS: input, string, select inertial reference system (N2UW only) ; values: 'av'- using Applanix AV410 real-time nav data ; 'AV'- using Applanix post-processed nav data ; default is 'av' ; PLATFORM: input, string; 'N2UW', 'N130AR' (default N2UW) ; ; OUTPUTS: ; ; NOTES: ; The function returns wcr3conf named structure (for description of the ; wcr3conf see wcr3conf__define.pro). ;- ; MODIFICATION HISTORY: ; Written by: Samuel Haimov, Oct 2015 ; ; Copyright (C) 2015-present, Samuel Haimov, Dept. of Atmos. Sci., University ; of Wyoming. This software may be used, copied, or redistributed as long as ; it is not sold and this copyright notice is reproduced on each copy made. ; This routine is provided as is without any expressed or implied warranties ; whatsoever. Other limitations apply as described in the WCR3TOOLS Readme file. FUNCTION wcr3conf_tecpec19, platform=platform, irs=irs functionname='wcr3conf_tecpec19.pro' ; ------------------------------------------------------------------------------ ; Initialize wcr3conf named structure ; ------------------------------------------------------------------------------ conf = {wcr3conf} ; ------------------------------------------------------------------------------ ; Assign WCR3 configuration parameters that may change for each experiment ; ------------------------------------------------------------------------------ ; ............................................................................ ; WCR3 Installation aircraft/paltform and IRS IDs if n_elements(platform) eq 0 then $ ; N2UW, N130AR and ground ; conf.platform='N130AR' ; for NSF/NCAR C130 ; are used in the software ; conf.platform='ground' ; for ground measurements ; and are reserved words conf.platform='N2UW' $ else conf.platform=platform if (where(conf.platform eq ['N2UW','N130AR','ground']))[0] eq -1 then $ message,'Invalid platform name' irsname=['Applanix(real-time)','Applanix(post-processed)'] ind=0 if n_elements(irs) eq 0 then conf.irs='av' $ else begin ind=(where(irs eq ['av','AV']))[0] if ind eq -1 then $ message,'Invalid IRS name' $ else conf.irs=irs endelse print,'% WCR3CONF: Using '+irsname[ind]+' INS.' print,'% WCR3CONF: Using '+functionname+' WCR configuration for '+$ conf.platform ; ............................................................................ ; The following parameters are ordered according to the DAQ port IDs ; (These are ProSensing port IDs; the swap of H1 and H2 has been taken care ; in this program and in ProSensing EMS and system software ; Copol-crosspol port pairs according to the current EMS truth table: ; H1-V1 - used for N2UW; side/up; H1(h-pol), V1(v-pol) ; H2-V2 - dual-pol pair used for N130AR; down-slant; H2(h-pol), V2(v-pol) ; or wnen not used (single pol down V2 and single pol down-slant H2) ; H1-V3 - dual-pol pair not used (V3 is single-pol down or side slant antenna) ; Note: if we make down-slant antenna(H2) a dual-pol the truth table should be ; changed from H1-V3 to H2-V3, where H2 will be h-pol and V3,v-pol; ; another solution that does not require change in the truth table, but ; will change the original port allocation and requires a new waveguide ; is to use H2-V2 for the dual-pol down-slant antenna and move the down ; antenna to V3 - this is being used for a C130 installation ; PortID (PID): 0 1 2 3 4 ; EMS PortLabel: 5 3 1 4 2 ; Port names: 'H1' 'V1' 'V3' 'H2' 'V2' ; AntennaID: 1 1 3 4 2 ; ................................. N2UW..................................... ;N2UW Antenna: 12"GOLA 12"GOLA 12"Horn 15"Dish 18"Dish conf.antap =[ 0.305, 0.305, 0.305, 0.381, 0.457];[m], apperture conf.antbw =[ 0.75, 0.75, 0.85, 0.63, 0.5 ];[deg], beamwidth conf.antff =[ 60., 60., 60., 91., 132. ];[m], far field ; AntennaID; enter -9 if the port is terminated; ATTEN: 0 is reserved for use ; with N2UW side/up antenna mirror and cannot be used as antenna ID: ; for more read comments for mirrorids tag ; Antenna names/strings 'up', 'side', down', 'side-', 'down-' are reserved ; words and are used in other WCR3 related files/programs ; (e.g., wcr3prototype, wcr3plotnc, plotwcr3qa) ; N2UW: beamids/beamstr differs from antids/antstr due to the external side/up ; mirror and loosely follows antenna ports (see ATTENTION below) conf.antids =[ 1, 1, 3, 4, 2 ];antenna IDs conf.beamids=[ 0, 1, 3, 4, 2 ];beam IDs conf.antstr =['side_up-h','side_up-v','side-fore','down-fore','down'] conf.beamstr=['side', 'up', 'side-fore','down-fore','down'] ; ............................................................................ ; ATTENTION: Antenna/Beam assignments ; Antenna/Beam position and unit vectors; position/pointing angles in AC ; coordinates.(3,5) array with the second index loosely matching the portID. ; The port match is a bit confusing. This is because for N2UW I use port 0 ; index to define the SIDE beam vector and port 1 index for the UP beam ; vector (controlled by external mirror), while they are designated to ; represent h-pol and v-pol ports for the N2UW single side/up antenna. For ; N130AR the up antenna is connected to port 0 and index 0 is used for UP ; beam, but UP beam ID is still 1. ; Antenna position for N2UW; Applanix AV410 ; PID conf.antpos =[ $ [-2.687, 0.264,-0.926], $ ; 0: side; stiff shock mounts [-2.687, 0.264,-0.926], $ ; 1: up; stiff shock mounts [-999., -999., -999. ], $ ; 2: side-fore; not available [-3.087,-0.056,-0.296], $ ; 3: down-fore; stiff shock mounts [-2.687,-0.016,-0.296]] ; 4: down; stiff shock mounts ; Antenna beam vectors for N2UW sorted according to conf.beamids conf.beamcaldate=20161103 conf.beams =[ $ [-0.0168584, 0.999838, 0.00638259 ],$ ; 0: side beam ;[deg] 90.9660 1.03287 89.6343 ; side SNOWIE17 [ 0.0636615, 0.0, -0.997972 ],$ ; 1: up beam ;[deg] 86.35 90.0 -3.65 ; up SNOWIE17 [ 0.5854, 0.8105, 0.02 ],$ ; 2: side-fore beam ;[deg] 54.17 35.86 88.85 ; side-fore NASA06 [ 0.434635, 0.00477793, 0.900594 ],$ ; 3: down-fore beam ;[deg] 64.2379 89.7262 25.7637 ; down-fore SNOWIE17 [-0.0586747, 0.00100662, 0.998277 ] ] ; 4: down beam ;[deg] 93.3637 89.9423 3.36424 ; down SNOWIE17 ; ............................................................................ ; N2UW Calib. coeffs:[co-pol,cr-pol,cr-pol-iso] for every PORT ; ATTN: currently vh and hv cr-pol cal. coeffs are assumed the same as vv ; and hh. The cross-pol cal. routine assumes and uses equal split in ; the loss. ; WARNNING: reflectivities in the 1st gate (~105m for 250 ns) may be ; underestimated up to 1 dB due to not yet fully open EMS ; receiver protector switches conf.calpwrdate=20140617 conf.calpwr =[[ 39.0, 41.6, -35.0], $ ; PID=0: side/up antenna Tx h-pol [ 41.6, 39.0, -35.0], $ ; PID=1: side/up antenna Tx v-pol [ 99.0,-999.0,-999.0], $ ; PID=2: side-fore beam Tx h-pol [ 44.0,-999.0,-999.0], $ ; PID=3: down-fore beam Tx h-pol [ 39.3,-999.0,-999.0]] ; PID=4: nadir beam Tx h-pol ; ............................................................................ ; Linear Polarization convention: ; h-pol and v-pol refer to their corresponding horzontal and vertical ; polarizations when a WCR beam is pointing horizontally and laterally ; w.r.t.platform logitudinal axis rotation(roll) ; Tx PID: 0 1 2 3 4 conf.portstr =['H1','V1','V3','H2','V2']; Tx port names conf.polrxids=[ 1, 0, 0, 1, 0 ]; Receiver (Vrx=0, Hrx=1) associated ; with the co-pol return for all PIDs ; I need it to avoid using portstr ; coding to extract the assoc. Rx_ch; ; 0=Vrx, 1=Hrx are hardwired in ; the radar firmware,initwcr3,etc. conf.poltxids=[ 1, 0, 1, 1, 1 ] ; Tx pol ID for every port ; The isolation/loss not implemented; tags are just place holders ; ............................................................................ ; Total insertion loss and isolation between ports during Tx and Rx. ; The EMS measured values can be used, but for precise calibration ; they need to be measured with the antennas connected. ; Currently these parameters are not used for calibration ; Tx PID: 0 1 2 3 4 conf.portiso =[[0., 999.,999.,999.,999.],$ ; Tx PID=0 [999.,0., 999.,999.,999.],$ ; Tx PID=1 [999.,999.,0., 999.,999.],$ ; Tx PID=2 [999.,999.,999.,0. ,999.],$ ; Tx PID=3 [999.,999.,999.,999.,0. ]] ; Tx PID=4 ; Rx PID: 0 1 2 3 4 ; conf.portrxiso =[[0., 999.,999.,999.,999.],$ ; Rx PID=0 ; [999.,0., 999.,999.,999.],$ ; Rx PID=1 ; [999.,999.,0., 999.,999.],$ ; Rx PID=2 ; [999.,999.,999.,0. ,999.],$ ; Rx PID=3 ; [999.,999.,999.,999.,0. ]] ; Rx PID=4 ; Tx PID: 0 1 2 3 4 ; conf.porttxiso =[[0., 999.,999.,999.,999.],$ ; Rx PID=0 ; [999.,0., 999.,999.,999.],$ ; Rx PID=1 ; [999.,999.,0., 999.,999.],$ ; Rx PID=2 ; [999.,999.,999.,0. ,999.],$ ; Rx PID=3 ; [999.,999.,999.,999.,0. ]] ; Rx PID=4 ; ............................................................................ ; Mirror ID for the side and up beam on N2UW (as recorded by the data ; system), the antenna assoc. with the mirror, and the corresponding beam ; vector indices (from conf.beams) ; Atten: conf.mirrorids[1] must be equal to conf.mirrorids[2]; in other ; words the up beam designation must match the antenna id. Note that ; 0 is not allowed as an antenna id and is to be used for designating ; a beam ID for side direction. If conf.mirrorids[[0,2]]=-9 then mirror ; is either not used or it does not exist (-9 designation has been used ; in plotwcr3qa.pro only so far). Words 'side' and 'up' are required ; and cannot be replaced with other synonyms - they are used in other ; programs. ind1=(where(conf.beamstr eq 'side'))[0] ind2=(where(conf.beamstr eq 'up'))[0] conf.mirrorids=[ conf.beamids[ind1],conf.beamids[ind2],conf.antids[ind1],ind1,ind2, 3 ] conf.mirrorstr=['side','up','antid','side_beam_ind','up_beam_ind','transition'] ; ------------------------------------------------------------------------------ ; Assign WCR3 configuration fixed parameters ; ------------------------------------------------------------------------------ conf.algids =[ 0, 1, 2, 3, 4, 5, 6 ] ; conf.algstr =['SPP','FF1','FF2','FF3','FF4','FF5','CPP'] ; ; Note: algids= 7 is not used by the WCR3 data system; data system sets ; record_raw flag in fh when raw I,Q data are recorded for any mode. ; algs (mode name) is assigned in openwcr3 if record_raw=1 conf.c =299792458.d0 ; m/s; speed of light in vacuum ; ............................................................................ ; Power cal. correction for every pulse; reference is CR cal. for 200 ns ; 50 100 200 250 500 ns conf.calcor =[6., 3., 0., -1., -4.] ; ............................................................................ ; When a spectral window is used the loss of energy due to the data weighting ; is compensated with a correction implemented in the acquisition software conf.fftwinids=[ 0, 1, 2, 3, 4, 5] conf.fftwinstr=['bartlett','blackman','hamming','hanning','rectangular','tukey'] ; Minimum range_gate_sampling. ; Range sampling is done in the DRx using the decimation parameter. ; Min decimation is 2 corresponding to conf.minrgs. Decimation step ; is 1 corresponding to 1.8760479d0 m. conf.minrgs=3.7520958d0 ; in meters ; ............................................................................ ; Smoothing noise-window size(default 101); should be an odd number; ; it is recommended not to exceed 10% of the processed number of profiles conf.noisewin =101L ; must be at least 3 ; Minimum power (in mW) set when no signal is present ; (after rxscale is applied in readwcr3data) conf.nosignal=1.e-15 ; ............................................................................ conf.polstr =['v', 'h'] ; pol ID string 'v'=0; 'h'=1 ;allowed pulse lengths in [ns] conf.pulses =[50.06258d0,100.12516d0,200.25032d0,250.3129d0,500.6258d0] conf.rflambda =0.00315836 ; WCR3 transmit(carrier) wavelength in meters conf.rffreq =94.921 ; WCR3 transmit(carrier) frequency in GHz ; For WCR3 rxscale=1; in other words the data is already converted to mW. conf.rxscale =1. ; Digital receiver conversion factor to mW: ; Digital receiver level in mW after which it starts saturating ; WCR3 Pentek saturation level starts at +8 dBm (6.30957) conf.rxsat =6.30957 ; +8 dBm return,conf end