To: File 5 July 2001 From: Mike Janssen Subject: Wind determination from Doppler-shifted lines – a simple approach Assumptions: 1. A limb-sounding spectrum is obtained at each tangent altitude with an ideal (pencil) beam with a millimeter or submillimeter spectrometer. 2. The atmosphere traversed by the beam is in uniform motion at each altitude sampled. 3. Each spectrum is measured with frequency resolution f and Gaussian noise N Ts f t on each measurement ( N is Gaussian distributed with rms, Ts is the spectrometer’s system temperature and t is the integration time). 4. The frequency resolution f is sufficient to resolve the line, and the spectrum fully covers the line. 5. The frequency calibration of the spectrometer is ideal. Question: How well can the profile of wind velocity be determined along the line-of-sight? Solution: I have taken a simplistic approach to this problem which is certainly capable of improvement. The following should be regarded as highly preliminary. I assume the exact lineshape for the atmosphere is known and find the Doppler shift that best fits simulated data at each altitude over a range of altitudes. The procedure is as follows: 1. At each tangent altitude, generate an ensemble of noisy spectra Tmeas Tideal N Ts f t for an atmosphere in uniform motion (e.g., velocity = 0 m/s). 2. Determine the best fit Doppler velocity V for each spectrum by a least-squares minimization of the following expression over all the spectral points (n spectral points) n Sum(f ) Tideal f i f Tmeas f i 2 i1 where Tideal (f) is the known lineshape at rest and Tmeas is the simulated lineshape measured for a Doppler shift of magnitude f . The equivalent velocity is V = f / f c . 3. Compute the rms deviation of the best-fit values of V This rms is a Monte Carlo estimate of the uncertainty. I typically run many cases (1000 cases) at each tangent altitude so that the estimate is well determined. 4. Repeat the above over a range of altitudes to establish the uncertainty profile. The IDL subroutine used to perform this minimization is given below. A powerpoint file showing wind uncertainty profiles for typical millimeter and submillimeter cases is attached. Two improvements are immediately obvious: 1. The frequency resolution should be improved to better capture the upper atmospheric range: 2. More importantly, the estimate can be tightened by minimizing a least squares sum weighted by the differential signal dT 2 n 2 Sum(f ) ideal Tideal f i f Tnoisy f i df i1 This emphasizes the measurements that contribute to the result and should reduce the net uncertainty in wind velocity determination. Appendix: IDL Subroutine for determining the uncertainty in wind velocity Dvelrms at a given tangent altitude: PRO Windfit, H0, NCO, Tdsb, tau, Nave, Tfit, F, Dvelrms ; ; Fit wind velocity at H0 altitude [km], Tdsb [K] double ; sideband system temperature, tau [s] integration time ; ; NCO = 12, line is 12CO ; NCO = 13, line is 13CO ; Nave is the number of spectra in the data ensemble ; Tfit are three spectra shifted by 50 kHz ; F gives the spectrum frequencies (returned from Spect_limb) ; Dvelrms is the estimated uncertainty of the velocity fit ; Freq0_CO = 0.0D IF (NCO EQ 12) THEN Freq0_CO = 576267.5305D ;Hz IF (NCO EQ 13) THEN Freq0_CO = 550927.0000D ;Hz ; ; Calculate nominal limb-sounding spectrum Tb vs. F in CO at ; tangent altitude H0 F2V = 3.e+8/Freq0_CO ; m/s/MHz Spect_limb, Freq0_CO-10., 101, 0.2, 50, H0, 150., Tb, F ; Calculate spectrum for delta freq offset +/- 50 kHz Tmeas = FLTARR(101) Tfit = FLTARR(3, 101) ; Dvel is the vector of calculated Delta velocity fits to the ; data ensemble Dvel = FLTARR(Nave) Tfit(0,*) = interpol(Tb, f, f-0.05) Tfit(1,*) = Tb Tfit(2,*) = interpol(Tb, f, f+0.05) Sumsq = FLTARR(3) FOR J=0,Nave-1 DO BEGIN ; Calculate noise vector for 200 kHz sampling in a 20 MHz ; Bandpass DT = (2.*Tdsb/SQRT(200.e+3*tau))*randomn(seed, 101) Tmeas = Tb + DT FOR I=0,2 DO BEGIN Sumsq(I) = SQRT(TOTAL((Tmeas - Tfit(I,*))^2)) ENDFOR Dvel(J) = F2V*(sumsq(0)- sumsq(2))*0.025/ (sumsq(0)+sumsq(2)-2.*sumsq(1)) ENDFOR ; Dvelrms = SQRT(TOTAL(Dvel^2)/Nave) print, Dvelrms, 'm/s' RETURN END Input parameters to Spect_limb are defined below: PRO Spect_limb, Freqstart, Nf, Df, N, H0, H1, Ts, ; ; Spect_limb, 547000.0, 1300, 10., 50, 50., 150., ; Calculate brightness temperature spectrum along ; tangent to atmosphere at altitude H0 ; Freqstart = beginning frequency, MHz ; Nf = number of frequencies ; Df = frequency spacing ; 2*N = number of equal distance increments along ; sight ; H1 = upper limit altitude for computations ; Ts = brightness temperature spectrum ; F = frequencies for spectrum F ts, f line line-of-