1 subroutine da_blacklist_rad (platform_name, satid, sensor_name, nchan, iuse)
3 !---------------------------------------------------------------------------
4 ! PURPOSE: black list for radiance data.
5 ! METHOD: based on black_ds.f90 provided by Paul Poli <Paul.Poli@ecmwf.int>
9 !---------------------------------------------------------------------------
13 character(len=*), intent(in) :: platform_name, sensor_name
14 integer, intent(in) :: satid, nchan
15 integer, intent(inout) :: iuse(nchan)
17 character(len=8) :: cdate !ccyymmdd
18 character(len=6) :: ctime !hhmmss
20 cdate = analysis_date(1:4)//analysis_date(6:7)//analysis_date(9:10)
21 ctime = analysis_date(12:13)//analysis_date(15:16)//analysis_date(18:19)
26 select case ( trim(sensor_name) )
34 case ( 'amsub', 'mhs' )
42 if ( trim(platform_name) == 'noaa' ) then
45 if ( cdate < '19980801' ) iuse = -1 ! passive period
46 if ( trim(sensor_name) == 'amsub' ) iuse = -1 ! bad quality noaa-15-amsub
47 if ( trim(sensor_name) == 'hirs' ) then
48 ! noisy for several periods, unknown reason
49 if ( cdate == '19981006' .and. ctime == '060000' ) iuse = -1
50 if ( cdate == '19990302' .and. ctime == '060000' ) iuse = -1
51 if ( cdate >= '20000219' .and. cdate <= '20000220' ) iuse = -1
52 ! unreliable since 7 June 2000 (filter wheel, ...)
53 if ( cdate >= '20000607' ) iuse = -1
54 end if ! end if noaa-15-hirs
55 if ( trim(sensor_name) == 'amsua' ) then
57 ! noisy, unknown reason
58 if ( cdate == '19990101' .and. ctime == '060000' ) iuse = -1
60 if ( cdate >= '20001030' ) iuse(14) = -1
61 if ( cdate >= '20020410' ) iuse(11) = -1
62 end if ! end if noaa-15-amsua
64 ! data unusable before 26 Oct 2000 due to calibration errors
65 if ( cdate < '20001026' ) iuse = -1
66 if ( trim(sensor_name) == 'hirs' ) then
67 if ( cdate == '20001208' .and. ctime == '000000' ) iuse = -1
68 if ( cdate > '20040524' ) iuse = -1
69 end if ! end if noaa-16-hirs
70 if ( trim(sensor_name) == 'amsua' ) then
71 if ( cdate == '20010111' ) iuse = -1
72 ! channel 8 noisy from the beginning
74 if ( cdate > '20030512' .and. cdate < '20040701' ) iuse(9) = -1
75 if ( cdate > '20050117' .and. cdate < '20050125' ) iuse(9:14) = -1
76 if ( cdate > '20021121' .and. cdate <= '20021203' ) iuse = -1
77 if ( cdate > '20021203' .and. cdate <= '20021216' ) iuse(5:8) = -1
78 !to be checked if ( cdate > '20070124' )
79 ! most channel noisy due to solar eclipse
80 if ( cdate >= '20090123' .and. cdate < '20090202' ) iuse = -1
81 ! unexplained instrument anomaly
82 if ( cdate >= '20090408' .and. cdate < '20090416' ) iuse = -1
83 if ( cdate > '20090603' ) iuse = -1
84 end if ! end if noaa-16-amsua
85 if ( trim(sensor_name) == 'amsub' ) then
86 if ( cdate >= '20070918' ) iuse = -1
87 end if ! end if noaa-16-amsub
89 if ( trim(sensor_name) == 'hirs' ) then
90 ! channels 2, 3, 4, 5 became suddenly much more noisy
91 if ( cdate >= '20101023' ) iuse(2:5) = -1
92 ! increase noise, some channels are really bad, compromising cloud detection
93 if ( cdate >= '20111204' ) iuse = -1
94 end if ! end if noaa-17-hirs
95 if ( trim(sensor_name) == 'amsua' ) then
96 if ( cdate > '20030129' ) iuse(7) = -1
97 ! unusable due to scan motor problems
98 if ( cdate >= '20031028' ) iuse = -1
99 end if ! end if noaa-17-amsua
100 if ( trim(sensor_name) == 'amsub' ) then
101 ! blackbody/space view anomalies
102 if ( cdate > '20091216' ) iuse = -1
103 end if ! end if noaa-17-amsub
105 if ( trim(sensor_name) == 'hirs' ) then
106 ! noaa-18 hirs data were assimilated until 20090312 in EI, but really
107 ! this blacklisting should be done from the beginning
109 end if ! end if noaa-18-hirs
110 if ( trim(sensor_name) == 'amsua' ) then
111 ! channel 9 briefly noisy
112 if ( cdate > '20071115' .and. cdate < '20071219' ) iuse(9) = -1
113 if ( cdate > '20101215' .and. cdate < '20101226' ) iuse(9) = -1
114 ! orbit too close to noaa-19, so data heavily thnned out.
115 ! poor sampling can lead to problems with VarBC
116 !to be checked if ( cdate >= '20090804' .and. cdate < '20091224' ) iuse = -1
117 end if ! end if noaa-18-amsua
119 ! first noaa-19 data to arrive in opearions: 2009040700
120 if ( cdate < '20090407' ) iuse = -1
121 if ( cdate >= '20090407' .and. cdate < '20090501' ) iuse = -1
122 if ( cdate >= '20090501' .and. cdate < '20090602' ) iuse = -1
123 if ( trim(sensor_name) == 'amsua' ) then
124 ! channel 8 excluded due to temporary noise issues
125 if ( cdate >= '20090627' .and. cdate < '20090804' ) iuse(8) = -1
126 if ( cdate >= '20091224' ) iuse(8) = -1
127 end if ! end if noaa-19-amsua
128 if ( trim(sensor_name) == 'mhs' ) then
129 ! allow bias adjustment after update of antenna pattern correction
130 if ( cdate > '20090621' .and. cdate < '20090627' ) iuse = -1
131 ! noise has slowly increased to above specifications
132 if ( cdate >= '20090804' .and. cdate < '20100317' ) iuse = -1
133 ! noise stayed high for channel 3
134 if ( cdate >= '20100317' ) iuse(3) = -1
135 end if ! end if noaa-19-mhs
139 if ( trim(platform_name) == 'eos' ) then
140 select case ( satid )
142 if ( trim(sensor_name) == 'amsua' ) then
144 !to be checked if ( cdate > '20071001' )
145 ! channel 5 noise has slowly increased too much
146 if ( cdate >= '20100502' ) iuse(5) = -1
147 end if ! end if eos-2-amsua
148 if ( trim(sensor_name) == 'airs' ) then
149 ! airs data first appear on 2002102200
150 if ( cdate < '20030401' ) iuse = -1 ! NCEP 200211
151 ! data missing for a few days
152 if ( cdate >= '20100101' .and. cdate <= '20100104' ) iuse = -1
153 ! instrument anomaly: stand-by mode on 20100109, instrument restart on 20100121,
154 ! data flow resumed on 20100128
155 if ( cdate >= '20100109' .and. cdate < '20100128' ) iuse = -1
156 if ( cdate > '20070324' .and. cdate < '20070403' ) iuse = -1
157 ! preventive blacklist of airs from 31 Oct 2003 onwards (solar storm)
158 if ( cdate > '20031030' .and. cdate < '20031202' ) iuse = -1
159 end if ! end if eos-2-airs
163 if ( trim(platform_name) == 'metop' ) then
164 select case ( satid )
166 if ( trim(sensor_name) == 'hirs' ) then
167 ! first metop-2 hirs data arrived 20061130 12UTC
168 if ( cdate <= '20061129' ) then
171 ! a few noisy days in Jan 2007
172 if ( cdate < '20070201' ) iuse = -1
174 end if ! end if metop-2-hirs
175 if ( trim(sensor_name) == 'amsua' ) then
176 ! first metop-2 data arrived 20061102 00UTC for 3 days, then
177 ! data gap util 20061129 12UTC
179 if ( cdate <= '20061128' ) then
183 ! calculate varbc coefficients at the beginning and during
184 ! a recalibration period
185 if ( cdate < '20070111' .or. &
186 (cdate > '20070521' .and. cdate < '20070528') ) then
190 ! channel 7 gone too noisy
191 if ( cdate > '20090105' ) iuse(7) = -1
192 end if ! end if metop-2-amsua
193 if ( trim(sensor_name) == 'mhs' ) then
194 ! first metop-2 data arrived 20061130 12UTC
195 if ( cdate <= '20061129' ) then
198 !to be checked, calculate varbc coefficients
199 if ( cdate < '20070111' ) then
203 end if ! end if metop-2-mhs
205 end if ! end if metop
210 if ( trim(platform_name) == 'noaa' ) then
211 select case ( satid )
213 if ( trim(sensor_name) == 'hirs' ) then
214 if ( cdate < '19981101' ) iuse = -1
215 if ( cdate >= '20000701' ) iuse = -1
216 end if ! end if noaa-15-hirs
217 if ( trim(sensor_name) == 'amsua' ) then
218 if ( cdate < '19981101' ) iuse = -1
219 if ( cdate >= '20001101' ) iuse(11) = -1
220 end if ! end if noaa-15-amsua
221 if ( trim(sensor_name) == 'amsub' ) then
222 if ( cdate < '20000201' ) iuse = -1
223 if ( cdate >= '20060301' ) iuse(4) = -1
224 end if ! end if noaa-15-amsub
226 if ( trim(sensor_name) == 'hirs' ) then
227 if ( cdate < '20010201' ) iuse = -1
228 if ( cdate >= '20040601' ) iuse = -1
229 end if ! end if noaa-16-hirs
230 if ( trim(sensor_name) == 'amsua' ) then
231 if ( cdate < '20010201' ) iuse = -1
232 if ( cdate >= '20050201' ) iuse(9:13) = -1
233 end if ! end if noaa-16-amsua
234 if ( trim(sensor_name) == 'amsub' ) then
235 if ( cdate < '20010201' ) iuse = -1
236 end if ! end if noaa-16-amsub
238 if ( trim(sensor_name) == 'hirs' ) then
239 if ( cdate < '20021001' ) iuse = -1
240 end if ! end if noaa-17-hirs
241 if ( trim(sensor_name) == 'amsua' ) then
243 end if ! end if noaa-17-amsua
244 if ( trim(sensor_name) == 'amsub' ) then
245 if ( cdate < '20021001' ) iuse = -1
246 end if ! end if noaa-17-amsub
248 if ( trim(sensor_name) == 'hirs' ) then
250 end if ! end if noaa-18-hirs
251 if ( trim(sensor_name) == 'amsua' ) then
252 if ( cdate < '20051101' ) iuse = -1
253 if ( cdate >= '20071201' ) iuse(9) = -1
254 end if ! end if noaa-18-amsua
255 if ( trim(sensor_name) == 'mhs' ) then
256 if ( cdate < '20051101' ) iuse = -1
257 end if ! end if noaa-18-mhs
259 if ( trim(sensor_name) == 'amsua' ) then
260 end if ! end if noaa-19-amsua
261 if ( trim(sensor_name) == 'mhs' ) then
262 end if ! end if noaa-19-mhs
266 if ( trim(platform_name) == 'eos' ) then
267 select case ( satid )
269 if ( trim(sensor_name) == 'amsua' ) then
271 if ( cdate < '20021101' ) iuse = -1
272 end if ! end if eos-2-amsua
273 if ( trim(sensor_name) == 'airs' ) then
274 if ( cdate < '20021101' ) iuse = -1
275 end if ! end if eos-2-airs
279 if ( trim(platform_name) == 'metop' ) then
280 select case ( satid )
282 if ( trim(sensor_name) == 'hirs' ) then
283 if ( cdate < '20070601' ) iuse = -1
284 end if ! end if metop-2-hirs
285 if ( trim(sensor_name) == 'amsua' ) then
286 if ( cdate < '20070601' ) iuse = -1
287 end if ! end if metop-2-amsua
288 if ( trim(sensor_name) == 'mhs' ) then
289 if ( cdate < '20070601' ) iuse = -1
290 end if ! end if metop-2-mhs
292 end if ! end if metop
294 end subroutine da_blacklist_rad