updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / var / da / da_radiance / da_blacklist_rad.inc
blobd2f10ff65c9d9db04dd4b8211c158d2975d55413
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>
6    !           -1 == CONSTANT
7    !           -2 == EXPERIMENTAL
8    !  HISTORY: 04/17/2012
9    !---------------------------------------------------------------------------
11    implicit none
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)
23 !============
24 ! from ERA
25 !============
26    select case ( trim(sensor_name) )
27    case ( 'amsua' )
28       iuse(1)  = -1
29       iuse(2)  = -1
30       iuse(3)  = -1
31       iuse(4)  = -1
32       iuse(14) = -1   ! NCEP
33       iuse(15) = -1
34    case ( 'amsub', 'mhs' )
35       iuse(1)  = -1
36       iuse(2)  = -1
37    case ( 'hirs' )
38       iuse(1)     = -1   ! NCEP
39       iuse(16:19) = -1
40    end select
42    if ( trim(platform_name) == 'noaa' ) then
43       select case ( satid )
44       case ( 15 )
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
56             ! NCEP 199811
57             ! noisy, unknown reason
58             if ( cdate == '19990101' .and. ctime == '060000' ) iuse = -1
59             ! channel 14 failure
60             if ( cdate >= '20001030' ) iuse(14) = -1
61             if ( cdate >= '20020410' ) iuse(11) = -1
62          end if   ! end if noaa-15-amsua
63       case ( 16 )
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
73             iuse(8) = -1
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
88       case ( 17 )
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
104       case ( 18 )
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
108             iuse = -1
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
118       case ( 19 )
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
136       end select
137    end if   ! end if noaa
139    if ( trim(platform_name) == 'eos' ) then
140       select case ( satid )
141       case ( 2 )
142          if ( trim(sensor_name) == 'amsua' ) then
143             iuse(7) = -1
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
160       end select
161    end if   ! end if eos
163    if ( trim(platform_name) == 'metop' ) then
164       select case ( satid )
165       case ( 2 )
166          if ( trim(sensor_name) == 'hirs' ) then
167             ! first metop-2 hirs data arrived 20061130 12UTC
168             if ( cdate <= '20061129' ) then
169                iuse = -1
170             else
171                ! a few noisy days in Jan 2007
172                if ( cdate < '20070201' ) iuse = -1
173             end if
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
178             ! NCEP 200706
179             if ( cdate <= '20061128' ) then
180                iuse = -1
181             else
182                !to be checked
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
187                   iuse = -1
188                end if
189             end if
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
196                iuse = -1
197             else
198                !to be checked, calculate varbc coefficients
199                if ( cdate < '20070111' ) then
200                   iuse = -1
201                end if
202             end if
203          end if   ! end if metop-2-mhs
204       end select
205    end if   ! end if metop
207 !============
208 ! from NCEP
209 !============
210    if ( trim(platform_name) == 'noaa' ) then
211       select case ( satid )
212       case ( 15 )
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
225       case ( 16 )
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
237       case ( 17 )
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
242             iuse = -1
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
247       case ( 18 )
248          if ( trim(sensor_name) == 'hirs' ) then
249             iuse = -1
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
258       case ( 19 )
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
263       end select
264    end if   ! end if noaa
266    if ( trim(platform_name) == 'eos' ) then
267       select case ( satid )
268       case ( 2 )
269          if ( trim(sensor_name) == 'amsua' ) then
270             iuse(7) = -1
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
276       end select
277    end if   ! end if eos
279    if ( trim(platform_name) == 'metop' ) then
280       select case ( satid )
281       case ( 2 )
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
291       end select
292    end if   ! end if metop
294 end subroutine da_blacklist_rad