Presentation is loading. Please wait.

Presentation is loading. Please wait.

Radiometer Calibration: Implementation of Counts to TA Processor Frank Wentz and Thomas Meissner Aquarius Algorithm Workshop, Santa Rosa, CA, March 9-11,

Similar presentations


Presentation on theme: "Radiometer Calibration: Implementation of Counts to TA Processor Frank Wentz and Thomas Meissner Aquarius Algorithm Workshop, Santa Rosa, CA, March 9-11,"— Presentation transcript:

1 Radiometer Calibration: Implementation of Counts to TA Processor Frank Wentz and Thomas Meissner Aquarius Algorithm Workshop, Santa Rosa, CA, March 9-11, 2010

2 TA to Counts (Forward Model) PRT MeasurementsTA Orbit Simulator Temperature Coefficients Front End Losses L i Noise Diode Injection Temperatures T ND, T CND Non-Linearity Coefficients c 2, c 3 Gains + Offsets Phase Imbalance TA_hat Accumulation Counts (linear) Accumulation Counts (non- linear) InputOutput External Parameters

3 Counts to TA (Calibration) PRT Measurements Accumulation Counts measured Temperature Coefficients Front End Losses L i Noise Diode Injection Temperatures T ND, T CND Non-Linearity Coefficients c 2, c 3 Averaging over Calibration Cycles Phase Imbalance Averaging over subcycles Accumulation Counts (linear) InputOutput External Parameters TA Gains + Offsets TA_hat

4 Subroutines that are called: call initialize call read_l1a call geolocation call count_to_TA call get_ancillary_data call fd_tb_toa call fd_tbsur_sss call fd_ta_expected call write_l2_arrays L1a to L2 Aquarius Processor

5 Calibration constants for counts-to-ta process: Subroutine get_prelaunch_calibration_coeffs Values read in from external files: coeff_loss_file and coeff_nl_file Reference temperatures for front end losses and noise diodes real(4) Tref_3, Tref_4, Tref_5, Tref_6, Tref_CND, Tref_ND Coefficients for front end losses and noise diodes (value at reference temperature + gradient) real(4), dimension(2,n_rad) CL1 real(4), dimension(2,n_rad) CL2A, CL2B, CL3, CL4, dL4_dT4, CL5, dL5_dT5 real(4), dimension(2,n_rad) CCND, dTCND_dT4, dTCND_dT, CND, dTND_dT Values provided by J. Piepmeyer, 7/7/2009 RAD1 RAD2 RAD3 REF TEMP [C] V H V H V H CL1 1.000 1.000 1.000 1.000 1.000 1.000 CL2A 1.002 1.002 1.002 1.002 1.002 1.002 CL2B 1.002 1.002 1.002 1.002 1.002 1.002 CL3 1.011 1.016 1.010 1.018 1.012 1.013 23.0 CL4 1.078 1.069 1.076 1.075 1.083 1.073 23.0 dL4dT4 120.0 120.0 120.0 120.0 120.0 120.0 ! Multiplied by 1.0E-6 CL5 1.172 1.169 1.161 1.159 1.161 1.161 20.0 dL5dT5 120.0 120.0 120.0 120.0 120.0 120.0 ! Multiplied by 1.0E-6 CCND 510.8 486.4 475.9 521.3 540.2 507.3 21.0 dTCNDdT4 0.031 0.031 0.031 0.031 0.031 0.031 dTCNDdT 0.984 1.129 0.908 0.880 1.049 1.202 CND 661.1 689.1 680.5 708.5 732.9 697.6 21.0 dTNDdT 1.274 1.391 1.259 1.406 1.328 1.418 Phase imbalances of CND network / OMT subsystem [in deg] real(4), parameter :: delta_phi(n_rad)=1.0, delta_phi_f(n_rad)=1.0 Subroutine Initialize

6 Reference temperatures and coefficients for correcting detector non-linearity real(4), dimension(4,n_rad) Dnl20, Dnl21, Dnl22, Dnl30, Dnl31, Dnl32, Tref_nl Values provided by J. Piepmeyer, 7/7/2009 Subroutine Initialize (cont)

7 Subroutine Read_L1A Simply reads in all the L1A variables and arrays for a single orbit. integer(4), parameter :: max_cyc= 5000 ! max number of block in l1a file = (5872 sec/orbit)*(1.2 overlap)/(1.44 sec/block) + slop integer(4), parameter :: n_rad=3 ! number of radiometers (i.e., horns) (inner, middle, outer) integer(4), parameter :: n_prt=85 ! number of thermistors integer(4), parameter :: n_subcyc=12 ! number of sub cycles per cycle integer(4), parameter :: npol=4 !number of polarizations (v, h, plus, minus) integer(4), parameter :: n_Sacc=6 ! number of S(short) accum (antenna) integer(4), parameter :: n_Lacc=8 ! number of L(long) accum (calibration) integer(4) iorbit, n_cyc real(8), dimension (max_cyc) :: time_utc_2000, time_ut1_2000 real(8), dimension(3,max_cyc) :: scpos_j2k, scvel_j2k, scrpy integer(4), dimension (max_cyc) :: iflag_qc real(4), dimension(n_prt,max_cyc) :: t_prt ! Short accumulation radiometer raw counts ! 6 records for each of the 12 subcycles. ! S1 and S2 are double accumulatons and will be divided by 2 during processing. ! Polarization order (last dimension) is 1=V, 2=P, 3=M, 4=H real(4), dimension(n_Sacc, n_subcyc, npol, n_rad, max_cyc) :: S_acc_raw! raw SA counts ! Long accumulation radiometer raw counts ! 8 records per cycle. ! L1-L4 are to be divided by 10. L5-L8 are to be divided by 2. The divisions will be performed during processing. real(4), dimension(n_Lacc, npol, n_rad, max_cyc) :: L_acc_raw! raw LA counts

8 Subroutine count_to_ta: Major Output Gains + offsets real(4), dimension (n_rad,max_cyc) :: gvv, ghh, ov, oh, gpv, gph, op, gmv, gmh, om, gpU, gmU TA before front end loss corrections real(4), dimension(3,n_rad,max_cyc) :: TA_hat TA after front end loss corrections real(4), dimension(3,n_rad,max_cyc) :: TA 1 = v-pol2=h-pol3= 3 rd Stokes

9 Subroutine count_to_ta (cont) Step 1: Compute Zone temperatures from PRT values call get_zone_temperatures Step 2: OOB check TBD Step 3: non-linearity correction call nl_correction Step 4: Determine Dicke load reference temperature and CND and ND injection temperatures do icyc =1,n_cyc TND( :,:,icyc) = CND + dTND_dT*(TND_P(:,:,icyc) - Tref_ND) TCND(:,:,icyc) = & CCND + dTCND_dT4*( T4(:,:,icyc) - Tref_CND) +dTCND_dT*(TCND_P(:,:,icyc) - Tref_CND) enddo Step 5: Calculate gains and offsets call find_cal_VH call find_cal_PM call find_cal_U Step 6: Count to TA before front end loss corrections. RFI filter (TBD). Averaging over subcycles call find_TA_hat Step 7: Front end loss corrections call fe_loss_corr

10 Subroutine get_zone_temperatures Mapping between 85 PRT readings and temperature in the various zones ! Reflector temperature (zone 1), average over 8 thermistors, same for each radiometer T1(1,icyc) = sum(t_prt(34:41,icyc))/8.0 T1(2,icyc) = sum(t_prt(34:41,icyc))/8.0 T1(3,icyc) = sum(t_prt(34:41,icyc))/8.0 ! zone 2A T2A(1,icyc) = t_prt(1,icyc) T2A(2,icyc) = t_prt(2,icyc) T2A(3,icyc) = t_prt(3,icyc) !zone 3 T3(1,1,icyc) = t_prt(5,icyc) !RAD1 V T3(2,1,icyc) = t_prt(4,icyc) !RAD1 H T3(1,2,icyc) = t_prt(7,icyc) !RAD2 V T3(2,2,icyc) = t_prt(6,icyc) !RAD2 H T3(1,3,icyc) = t_prt(9,icyc) !RAD3 V T3(2,3,icyc) = t_prt(8,icyc) !RAD3 H ! zone 2B = arithmetic average of 2A and 2B ? T2B(1,icyc) = (T2A(1,icyc) + (T3(1,1,icyc)+T3(2,1,icyc))/2.0) /2.0 T2B(2,icyc) = (T2A(2,icyc) + (T3(1,2,icyc)+T3(2,2,icyc))/2.0) /2.0 T2B(3,icyc) = (T2A(3,icyc) + (T3(1,3,icyc)+T3(2,3,icyc))/2.0) /2.0

11 Subroutine get_zone_temperatures (cont) ! zone 4 T4(1,1,icyc) = t_prt(11,icyc) ! RAD1 V T4(2,1,icyc) = t_prt(10,icyc) ! RAD1 H T4(1,2,icyc) = t_prt(13,icyc) ! RAD2 V T4(2,2,icyc) = t_prt(12,icyc) ! RAD2 H T4(1,3,icyc) = t_prt(15,icyc) ! RAD3 V T4(2,3,icyc) = t_prt(14,icyc) ! RAD3 H ! zone 5 T5(1,1,icyc) = t_prt(17,icyc) ! RAD1 V T5(2,1,icyc) = t_prt(16,icyc) ! RAD1 H T5(1,2,icyc) = t_prt(19,icyc) ! RAD2 V T5(2,2,icyc) = t_prt(18,icyc) ! RAD2 H T5(1,3,icyc) = t_prt(21,icyc) ! RAD3 V T5(2,3,icyc) = t_prt(20,icyc) ! RAD3 H

12 Subroutine get_zone_temperatures (cont) ! Dicke load T0(1,1,icyc) = (t_prt(24,icyc) + t_prt(25,icyc))/2.0 ! RAD1 V T0(2,1,icyc) = (t_prt(22,icyc) + t_prt(23,icyc))/2.0 ! RAD1 H T0(1,2,icyc) = (t_prt(28,icyc) + t_prt(29,icyc))/2.0 ! RAD2 V T0(2,2,icyc) = (t_prt(26,icyc) + t_prt(27,icyc))/2.0 ! RAD2 H T0(1,3,icyc) = (t_prt(32,icyc) + t_prt(33,icyc))/2.0 ! RAD1 V T0(2,3,icyc) = (t_prt(30,icyc) + t_prt(31,icyc))/2.0 ! RAD1 H ! ND TND_P(1,1,icyc) = (t_prt(72,icyc) + t_prt(74,icyc))/2.0 ! RAD1 V TND_P(2,1,icyc) = (t_prt(73,icyc) + t_prt(75,icyc))/2.0 ! RAD1 H TND_P(1,2,icyc) = (t_prt(77,icyc) + t_prt(79,icyc))/2.0 ! RAD2 V TND_P(2,2,icyc) = (t_prt(79,icyc) + t_prt(80,icyc))/2.0 ! RAD2 H TND_P(1,3,icyc) = (t_prt(82,icyc) + t_prt(84,icyc))/2.0 ! RAD3 V TND_P(2,3,icyc) = (t_prt(83,icyc) + t_prt(85,icyc))/2.0 ! RAD3 H ! CND TCND_P(1,1,icyc) = t_prt(71,icyc) !RAD1 TCND_P(2,1,icyc) = t_prt(71,icyc) !RAD1 TCND_P(1,2,icyc) = t_prt(76,icyc) !RAD2 TCND_P(2,2,icyc) = t_prt(76,icyc) !RAD2 TCND_P(1,3,icyc) = t_prt(81,icyc) !RAD3 TCND_P(2,3,icyc) = t_prt(81,icyc) !RAD3 ! Detector Tdet(1:4,1,icyc) = t_prt(42:45,icyc) ! RAD1 V/P/M/H Tdet(1:4,2,icyc) = t_prt(46:49,icyc) ! RAD2 V/P/M/H Tdet(1:4,3,icyc) = t_prt(50:53,icyc) ! RAD3 V/P/M/H

13 Subroutine nl_correction Difference between measured detector temperature and reference temperature delta_t = Tdet - Tref_nl Calculate non-linearity correction coefficients at detector temperature c2 = Dnl20 + Dnl21*delta_t + Dnl22(delta_t**2) c3 = Dnl30 + Dnl31*delta_t + Dnl32*(delta_t**2) Perform non-linearity correction vave = raw counts from short/long accumulations corrected counts = vave + c2*(vave**2) + c3*(vave**3)

14 Gains and Offsets Subroutine find_cal_VH Output: gvv, ov, ghh, oh LA counts 1 – 4 (V/H w/o and w/i noise diode ND) t_0 = Dicke load temperature. d_t = Injection temperature of ND c_0 = counts w/o ND c_1 = counts w/I ND Gain is averaged over 42 cycles = approx 1 min. Offset is averaged over 206 cycles = approx 5 min gain = (c_1-c_0)/d_t offset = c_0-gain*t_0 Subroutine find_cal_PM Output: gpv, gph, gmv, gmh, op, om LA counts 1 – 4 For each polarization (P, M) there are 3 constants (gpv, gph, op) and 4 measurements (V/H w/o and w/i ND): The over-determined problem can be solved by a least square fit (see J. Piepmeyer, ATBD) Gain is averaged over 42 cycles = approx 1 min. Offset is averaged over 206 cycles = approx 5 min Subroutine find_cal_U Output: gpU, gmU SA counts 1 – 5 (w/o correlated noise diode CND) and SA count 6 (w/i CND) TCND = injection temperature of CND gpv, gmv, gph, gmh L5= Loss factor of zone 5 (see below) delta_phi = phase imbalance of CND Gain is averaged over 42 cycles = approx 1 min

15 Subroutine find_TA_hat Counts to TA before front end loss corrections Input: gvv, ghh, gpv, gph, gmv, gmh, gpU, gmU, ov, oh, op, om SA counts 1 – 5 for each polarization Output: TA_hat = TA before front end loss corrections. 3 components: V, H, 3 rd Stokes Inversion of forward model (see J. Piepmeyer ATBD) 1 for each cycle (average over subcycles). RFI Filtering Algorithm by C. Ruf to be implemented Provided FORTRAN code strongly simplified from algorithm description?

16 Subroutine fe_loss_corr Calculate front end loss coefficients in each zone: L1= CL1(1,irad) L2A(1:2)= CL2A(1:2,irad) L2B(1:2)= CL2B(1:2,irad) L3(1:2)= CL3(1:2,irad) L4(1:2)= CL4(1:2,irad) + dL4_dT4(:,irad)*(T4(1:2,irad,icyc) - Tref_4) L5(1:2)= CL5(1:2,irad) + dL5_dT5(:,irad)*(T5(1:2,irad,icyc) - Tref_5) J. Piepmeyer ATBD version 9/11/2009: L4(1:2)= CL4(1:2,irad) * [1.0 + dL4_dT4(:,irad)*(T4(1:2,irad,icyc) - Tref_4)] L5(1:2)= CL5(1:2,irad) * [1.0 + dL4_dT5(:,irad)*(T5(1:2,irad,icyc) - Tref_5)] differs from CND and ND formulas need to check with Jeff Apply L i to TA_hat in each zone with temperature T i starting at zone 5 : For V/H: TA i, corrected = L i * TA i + (L i – 1 ) T i Phase imbalance of OMT cable for 3 rd Stokes Impedance mismatch not implemented need to check with Jeff

17 Check of Calibration Code Nominal value for TA  Orbit simulator  Counts  Calibration Code  TA Nominal values for calibration coefficients provided by J. Piepmeyer: gvv=1.00, ghh=1.00, gpv=0.35, gph=0.35, gpU=0.40, gmv=0.35, gmh=0.35, gmU=-0.40 ov = 500.0, oh = 500.0, op = 500.0 om = 500.0 Constant temperature of all radiometer components + no NEDT: retrieved gains + offsets = original gains and offsets retrieved TA = original TA

18 Add NEDT in Forward Model NEDT Integration time:  = 0.009 sec Bandwidth: B = 25 MHz Receiver noise temperature: T r = 74.6 K NEDT = (T scene + T r ) /  (B*  ) NEDT (T scene = 300 K) = 0.79 K Added to each single short accumulation NEDT (P,M) = NEDT(V,H)/√2

19 NEDT versus Quantization Error Large quantization error because of small gain. MC simulation: Gain = 1.00 = constant TA = 150.49 K = constant Average over 12 subcycles Quantization error: 0.49 K Adding NEDT improves error Red star: NEDT (140.49 K)/  (5*12)

20 To Be Done / To Be Determined 1.Implement RFI filter by C. Ruf FORTRAN code is a simple double-mean filter. What happened with all the elaborate static and dynamic auxiliary data? What happened with the time tagging? 2.Clarification of analytic form for temperature correction for L4 and L5 (J. Piepmeyer)? 3.Impedance mismatch in zone 5 (J. Piepmeyer)?


Download ppt "Radiometer Calibration: Implementation of Counts to TA Processor Frank Wentz and Thomas Meissner Aquarius Algorithm Workshop, Santa Rosa, CA, March 9-11,"

Similar presentations


Ads by Google