radiometer calibration: implementation of counts to ta processor frank wentz and thomas meissner...

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

Upload: barbra-simpson

Post on 19-Jan-2018

214 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

Radiometer Calibration:Implementation of Counts to TA Processor Frank Wentz and Thomas Meissner

Aquarius Algorithm Workshop, Santa Rosa, CA, March 9-11, 2010

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

TA to Counts (Forward Model)

PRT MeasurementsTA

Orbit Simulator

Temperature Coefficients

Front End Losses L i

Noise Diode Injection Temperatures

TND, TCND

Non-Linearity Coefficients c2, c3

Gains + Offsets

Phase Imbalance

TA_hat

Accumulation Counts (linear)

Accumulation Counts (non-linear) Input OutputExternal

Parameters

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

Counts to TA (Calibration)

PRT MeasurementsAccumulation Counts

measured

Temperature Coefficients

Front End Losses L i

Noise Diode Injection

Temperatures TND, TCND

Non-Linearity Coefficients c2,

c3

Averaging over Calibration Cycles

Phase Imbalance

Averaging over subcycles

Accumulation Counts (linear)

Input OutputExternal Parameters

TA

Gains + Offsets

TA_hat

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

Subroutines that are called:

call initialize call read_l1a call geolocation

call count_to_TAcall get_ancillary_datacall fd_tb_toacall fd_tbsur_ssscall fd_ta_expected

call write_l2_arrays

L1a to L2 Aquarius Processor

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

Calibration constants for counts-to-ta process: Subroutine get_prelaunch_calibration_coeffsValues read in from external files: coeff_loss_file and coeff_nl_file

Reference temperatures for front end losses and noise diodesreal(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) CL1real(4), dimension(2,n_rad) CL2A, CL2B, CL3, CL4, dL4_dT4, CL5, dL5_dT5real(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

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

Reference temperatures and coefficients for correcting detector non-linearityreal(4), dimension(4,n_rad) Dnl20, Dnl21, Dnl22, Dnl30, Dnl31, Dnl32, Tref_nl

Values provided by J. Piepmeyer, 7/7/2009

Subroutine Initialize (cont)

Channel 1 2 3 4 5 6 7 8 9 10 11 12

Mean temperature used for center point of modelTref (K) 297.4554076 297.4667647 297.5065396 297.4405472 297.1769784 297.2290539 297.3453129 297.4807418 296.0485938 296.2202132 296.539167 296.8941114

Temperature dependence of second-order coeffi cient (c2)c2,0 -4.37043E-06 -6.20383E-06 -1.00989E-06 -7.0919E-06 -3.31062E-06 -9.15163E-06 -9.95918E-06 -4.13785E-06 -7.40805E-06 -1.73219E-05 -2.62724E-06 -1.12926E-05c2,1 6.91316E-08 4.29645E-08 6.68137E-08 8.18588E-08 5.13062E-08 3.17049E-08 5.48152E-08 5.69667E-08 4.64253E-08 3.68228E-08 7.08903E-08 5.18223E-08c2,2 2.71454E-10 -3.23785E-10 2.44445E-10 3.57603E-10 -8.42341E-10 -4.11789E-10 -1.93762E-10 -2.49847E-10 -2.34789E-10 9.86806E-11 -3.63836E-10 1.06553E-09

Temperature dependence of third-order coeffi cient (c3)c3,0 9.29131E-10 1.14823E-09 6.97826E-10 1.21359E-09 8.65358E-10 1.30908E-09 1.47055E-09 9.06682E-10 1.20934E-09 1.82229E-09 9.62126E-10 1.31571E-09c3,1 3.4078E-13 6.95425E-12 -1.55549E-12 -6.56256E-13 3.42423E-12 1.12441E-11 6.63741E-12 1.96215E-12 6.84328E-12 1.03532E-11 1.40407E-12 2.74856E-12c3,2 -9.03073E-14 9.66804E-14 -7.49064E-14 -9.00946E-14 1.18479E-13 1.76054E-13 9.49687E-14 1.88242E-14 6.04447E-14 4.49092E-14 4.10894E-14 -1.86667E-13

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

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) + slopinteger(4), parameter :: n_rad=3 ! number of radiometers (i.e., horns) (inner, middle, outer)integer(4), parameter :: n_prt=85 ! number of thermistorsinteger(4), parameter :: n_subcyc=12 ! number of sub cycles per cycleinteger(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_cycreal(8), dimension (max_cyc) :: time_utc_2000, time_ut1_2000real(8), dimension(3,max_cyc) :: scpos_j2k, scvel_j2k, scrpyinteger(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=Hreal(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

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

Subroutine count_to_ta: Major Output

Gains + offsetsreal(4), dimension (n_rad,max_cyc) :: gvv, ghh, ov, oh, gpv, gph, op, gmv, gmh, om, gpU, gmU

TA before front end loss correctionsreal(4), dimension(3,n_rad,max_cyc) :: TA_hat

TA after front end loss correctionsreal(4), dimension(3,n_rad,max_cyc) :: TA

1 = v-pol 2=h-pol 3= 3rd Stokes

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

Subroutine count_to_ta (cont)Step 1: Compute Zone temperatures from PRT valuescall get_zone_temperatures

Step 2: OOB checkTBD

Step 3: non-linearity correctioncall nl_correction

Step 4: Determine Dicke load reference temperature and CND and ND injection temperaturesdo 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 offsetscall find_cal_VHcall find_cal_PMcall find_cal_U

Step 6: Count to TA before front end loss corrections. RFI filter (TBD). Averaging over subcyclescall find_TA_hat

Step 7: Front end loss correctionscall fe_loss_corr

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

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 2AT2A(1,icyc) = t_prt(1,icyc)T2A(2,icyc) = t_prt(2,icyc)T2A(3,icyc) = t_prt(3,icyc)

! zone 3T3(1,1,icyc) = t_prt(5,icyc) !RAD1 VT3(2,1,icyc) = t_prt(4,icyc) !RAD1 HT3(1,2,icyc) = t_prt(7,icyc) !RAD2 VT3(2,2,icyc) = t_prt(6,icyc) !RAD2 HT3(1,3,icyc) = t_prt(9,icyc) !RAD3 VT3(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.0T2B(2,icyc) = (T2A(2,icyc) + (T3(1,2,icyc)+T3(2,2,icyc))/2.0) /2.0T2B(3,icyc) = (T2A(3,icyc) + (T3(1,3,icyc)+T3(2,3,icyc))/2.0) /2.0

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

Subroutine get_zone_temperatures (cont)

! zone 4T4(1,1,icyc) = t_prt(11,icyc) ! RAD1 VT4(2,1,icyc) = t_prt(10,icyc) ! RAD1 HT4(1,2,icyc) = t_prt(13,icyc) ! RAD2 VT4(2,2,icyc) = t_prt(12,icyc) ! RAD2 HT4(1,3,icyc) = t_prt(15,icyc) ! RAD3 VT4(2,3,icyc) = t_prt(14,icyc) ! RAD3 H

! zone 5T5(1,1,icyc) = t_prt(17,icyc) ! RAD1 VT5(2,1,icyc) = t_prt(16,icyc) ! RAD1 HT5(1,2,icyc) = t_prt(19,icyc) ! RAD2 VT5(2,2,icyc) = t_prt(18,icyc) ! RAD2 HT5(1,3,icyc) = t_prt(21,icyc) ! RAD3 VT5(2,3,icyc) = t_prt(20,icyc) ! RAD3 H

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

Subroutine get_zone_temperatures (cont)

! Dicke loadT0(1,1,icyc) = (t_prt(24,icyc) + t_prt(25,icyc))/2.0 ! RAD1 VT0(2,1,icyc) = (t_prt(22,icyc) + t_prt(23,icyc))/2.0 ! RAD1 HT0(1,2,icyc) = (t_prt(28,icyc) + t_prt(29,icyc))/2.0 ! RAD2 VT0(2,2,icyc) = (t_prt(26,icyc) + t_prt(27,icyc))/2.0 ! RAD2 HT0(1,3,icyc) = (t_prt(32,icyc) + t_prt(33,icyc))/2.0 ! RAD1 VT0(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 VTND_P(2,1,icyc) = (t_prt(73,icyc) + t_prt(75,icyc))/2.0 ! RAD1 HTND_P(1,2,icyc) = (t_prt(77,icyc) + t_prt(79,icyc))/2.0 ! RAD2 VTND_P(2,2,icyc) = (t_prt(79,icyc) + t_prt(80,icyc))/2.0 ! RAD2 HTND_P(1,3,icyc) = (t_prt(82,icyc) + t_prt(84,icyc))/2.0 ! RAD3 VTND_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) !RAD1TCND_P(2,1,icyc) = t_prt(71,icyc) !RAD1TCND_P(1,2,icyc) = t_prt(76,icyc) !RAD2TCND_P(2,2,icyc) = t_prt(76,icyc) !RAD2TCND_P(1,3,icyc) = t_prt(81,icyc) !RAD3TCND_P(2,3,icyc) = t_prt(81,icyc) !RAD3

! DetectorTdet(1:4,1,icyc) = t_prt(42:45,icyc) ! RAD1 V/P/M/HTdet(1:4,2,icyc) = t_prt(46:49,icyc) ! RAD2 V/P/M/HTdet(1:4,3,icyc) = t_prt(50:53,icyc) ! RAD3 V/P/M/H

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

Subroutine nl_correction

Difference between measured detector temperature and reference temperaturedelta_t = Tdet - Tref_nl

Calculate non-linearity correction coefficients at detector temperaturec2 = Dnl20 + Dnl21*delta_t + Dnl22(delta_t**2)c3 = Dnl30 + Dnl31*delta_t + Dnl32*(delta_t**2)

Perform non-linearity correctionvave = raw counts from short/long accumulationscorrected counts = vave + c2*(vave**2) + c3*(vave**3)

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

Gains and Offsets

Subroutine find_cal_VH Output: gvv, ov, ghh, ohLA 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 NDc_1 = counts w/I NDGain is averaged over 42 cycles = approx 1 min. Offset is averaged over 206 cycles = approx 5 mingain = (c_1-c_0)/d_t offset = c_0-gain*t_0

Subroutine find_cal_PM Output: gpv, gph, gmv, gmh, op, omLA counts 1 – 4For 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, gmUSA counts 1 – 5 (w/o correlated noise diode CND) and SA count 6 (w/i CND)TCND = injection temperature of CNDgpv, gmv, gph, gmhL5= Loss factor of zone 5 (see below)delta_phi = phase imbalance of CND Gain is averaged over 42 cycles = approx 1 min

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

Subroutine find_TA_hat

Counts to TA before front end loss corrections Input: gvv, ghh, gpv, gph, gmv, gmh, gpU, gmU, ov, oh, op, omSA counts 1 – 5 for each polarization

Output: TA_hat = TA before front end loss corrections. 3 components: V, H, 3rd StokesInversion of forward model (see J. Piepmeyer ATBD)1 for each cycle (average over subcycles).

RFI Filtering Algorithm by C. Ruf to be implementedProvided FORTRAN code strongly simplified from algorithm description?

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

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 formulasneed to check with Jeff

Apply Li to TA_hat in each zone with temperature Ti starting at zone 5 :

For V/H: TA i, corrected = Li * TA i + (Li – 1 ) Ti

Phase imbalance of OMT cable for 3rd Stokes

Impedance mismatch not implementedneed to check with Jeff

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

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.40ov = 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 offsetsretrieved TA = original TA

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

Add NEDT in Forward Model

NEDT

Integration time: = 0.009 secBandwidth: B = 25 MHzReceiver 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

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

NEDT versus Quantization Error

Large quantization error because of small gain.

MC simulation:Gain = 1.00 = constantTA = 150.49 K = constantAverage over 12 subcyclesQuantization error: 0.49 K

Adding NEDT improves error

Red star: NEDT (140.49 K)/(5*12)

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

To Be Done / To Be Determined

1. Implement RFI filter by C. RufFORTRAN 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)?