da_zero_y.inc

References to this file elsewhere.
1 subroutine da_zero_y( iv, y )
2 
3    !---------------------------------------------------------------------------
4    ! Purpose: Initialises the Y-array
5    !---------------------------------------------------------------------------
6 
7    implicit none
8    
9    type (iv_type), intent(in)            :: iv      ! Ob type input.
10    type (y_type), intent(inout)          :: y       ! Residual type structure.
11 
12    integer                               :: n       ! Loop counter.
13    integer                               :: nlevels ! Number of levels.
14 
15    if (trace_use_dull) call da_trace_entry("da_zero_y")
16 
17    !---------------------------------------------------------------------------
18    ! [1.0] Copy number of observations:
19    !---------------------------------------------------------------------------
20 
21    y % nlocal(:) = iv % nlocal(:)
22 
23    !---------------------------------------------------------------------------
24    ! [2.0] Allocate:
25    !---------------------------------------------------------------------------
26 
27    ! Initialize synops:
28 
29    if ( y % nlocal(synop) > 0 ) then
30       y % synop(1:y % nlocal(synop)) % u = 0.0
31       y % synop(1:y % nlocal(synop)) % v = 0.0
32       y % synop(1:y % nlocal(synop)) % t = 0.0
33       y % synop(1:y % nlocal(synop)) % p = 0.0
34       y % synop(1:y % nlocal(synop)) % q = 0.0
35    end if
36 
37    ! Initialize ships:
38 
39    if ( y % nlocal(ships) > 0 ) then
40       y % ships(1:y % nlocal(ships)) % u = 0.0
41       y % ships(1:y % nlocal(ships)) % v = 0.0
42       y % ships(1:y % nlocal(ships)) % t = 0.0
43       y % ships(1:y % nlocal(ships)) % p = 0.0
44       y % ships(1:y % nlocal(ships)) % q = 0.0
45    end if
46 
47    ! Initialize metars:
48 
49    if ( y % nlocal(metar) > 0 ) then
50       y % metar(1:y % nlocal(metar)) % u = 0.0
51       y % metar(1:y % nlocal(metar)) % v = 0.0
52       y % metar(1:y % nlocal(metar)) % t = 0.0
53       y % metar(1:y % nlocal(metar)) % p = 0.0
54       y % metar(1:y % nlocal(metar)) % q = 0.0
55    end if
56 
57    ! Initialize Geo. AMV's:
58 
59    if ( y % nlocal(geoamv) > 0 ) then
60       do n = 1, y % nlocal(geoamv)
61        nlevels = iv%info(geoamv)%levels(n)
62        y % geoamv(n) % u(1:nlevels) = 0.0
63        y % geoamv(n) % v(1:nlevels) = 0.0
64       end do
65    end if
66 
67    ! Initialize Polat AMVs:
68 
69    if ( y % nlocal(polaramv) > 0 ) then
70       do n = 1, y % nlocal(polaramv)
71        nlevels = iv%info(polaramv)%levels(n)
72        y % polaramv(n) % u(1:nlevels) = 0.0
73        y % polaramv(n) % v(1:nlevels) = 0.0
74       end do
75    end if
76 
77    ! Initialize GPS TPW:
78 
79    if ( y % nlocal(gpspw) > 0 ) then
80       y % gpspw(1:y % nlocal(gpspw)) % tpw = 0.0
81    end if
82 
83    ! Initialize GPS REFRACTIVITY:
84 
85    if ( y % nlocal(gpsref) > 0 ) then
86       do n = 1, y % nlocal(gpsref)
87          nlevels = iv % gpsref(n) % info % levels
88          y % gpsref(n) % ref(1:nlevels) = 0.0
89          y % gpsref(n) %   p(1:nlevels) = 0.0
90          y % gpsref(n) %   t(1:nlevels) = 0.0
91          y % gpsref(n) %   q(1:nlevels) = 0.0
92       end do
93    end if
94 
95    ! Initialize sondes:
96 
97    if ( y % nlocal(sound) > 0 ) then
98       do n = 1, y % nlocal(sound)
99          nlevels = iv%info(sound)%levels(n)
100 
101          y % sound(n) % u(1:nlevels) = 0.0
102          y % sound(n) % v(1:nlevels) = 0.0
103          y % sound(n) % t(1:nlevels) = 0.0
104          y % sound(n) % q(1:nlevels) = 0.0
105 
106          ! Initialize sonde_sfc
107 
108          y % sonde_sfc(n) % u = 0.0
109          y % sonde_sfc(n) % v = 0.0
110          y % sonde_sfc(n) % t = 0.0
111          y % sonde_sfc(n) % p = 0.0
112          y % sonde_sfc(n) % q = 0.0
113       end do
114    end if
115 
116    if ( y % nlocal(bogus) > 0 ) then
117       do n = 1, y % nlocal(bogus)
118          nlevels = iv % bogus(n) % info % levels
119 
120          y % bogus(n) % u(1:nlevels) = 0.0
121          y % bogus(n) % v(1:nlevels) = 0.0
122          y % bogus(n) % t(1:nlevels) = 0.0
123          y % bogus(n) % q(1:nlevels) = 0.0
124          y % bogus(n) % slp          = 0.0
125       end do
126    end if
127 
128    ! Initialize pilots:
129 
130    if ( y % nlocal(pilot) > 0 ) then
131       do n = 1, y % nlocal(pilot)
132          nlevels = iv % pilot(n) % info % levels
133 
134          y % pilot(n) % u(1:nlevels) = 0.0
135          y % pilot(n) % v(1:nlevels) = 0.0
136       end do
137    end if
138 
139    ! Initialize AIREPs:
140 
141    if ( y % nlocal(airep) > 0 ) then
142       do n = 1, y % nlocal(airep)
143          nlevels = iv%info(airep)%levels(n)
144 
145          y % airep(n) % u(1:nlevels) = 0.0
146          y % airep(n) % v(1:nlevels) = 0.0
147          y % airep(n) % t(1:nlevels) = 0.0
148       end do
149    end if
150 
151    ! Initialize satem:
152 
153    if ( y % nlocal(satem) > 0 ) then
154       do n = 1, y % nlocal(satem)
155          nlevels = iv % satem(n) % info % levels
156 
157          y % satem(n) % thickness(1:nlevels) = 0.0
158       end do
159    end if
160 
161    if ( y % nlocal(ssmi_tb) > 0 ) then
162       y % ssmi_tb(1:y % nlocal(ssmi_tb)) % tb19v = 0.0
163       y % ssmi_tb(1:y % nlocal(ssmi_tb)) % tb19h = 0.0
164       y % ssmi_tb(1:y % nlocal(ssmi_tb)) % tb22v = 0.0
165       y % ssmi_tb(1:y % nlocal(ssmi_tb)) % tb37v = 0.0
166       y % ssmi_tb(1:y % nlocal(ssmi_tb)) % tb37h = 0.0
167       y % ssmi_tb(1:y % nlocal(ssmi_tb)) % tb85v = 0.0
168       y % ssmi_tb(1:y % nlocal(ssmi_tb)) % tb85h = 0.0
169    end if
170 
171    if ( y % nlocal(ssmi_rv) > 0 ) then
172         y % ssmi_rv(1:y % nlocal(ssmi_rv)) % tpw = 0.0
173         y % ssmi_rv(1:y % nlocal(ssmi_rv)) % Speed = 0.0
174    end if
175    
176    if ( y % nlocal(ssmt1) > 0 ) then
177       do n = 1, y % nlocal(ssmt1)
178          nlevels = iv % ssmt1(n) % info % levels
179          y % ssmt1(n) % t(1:nlevels) = 0.0
180       end do
181    end if
182    
183    if ( y % nlocal(ssmt2) > 0 ) then
184       do n = 1, y % nlocal(ssmt2)
185          nlevels = iv % ssmt2(n) % info % levels
186          y % ssmt2(n) % rh(1:nlevels) = 0.0
187       end do
188    end if
189    
190    if ( y % num_pseudo > 0 ) then
191         y % pseudo(1:y % num_pseudo) % u = 0.0
192         y % pseudo(1:y % num_pseudo) % v = 0.0
193         y % pseudo(1:y % num_pseudo) % t = 0.0
194         y % pseudo(1:y % num_pseudo) % p = 0.0
195         y % pseudo(1:y % num_pseudo) % q = 0.0
196    end if
197 
198    !  Initialize Quikscat:
199 
200    if ( y % nlocal(qscat) > 0 ) then
201       y % qscat(1:y % nlocal(qscat)) % u = 0.0
202       y % qscat(1:y % nlocal(qscat)) % v = 0.0
203    end if
204       
205    ! Initialize profilers:
206 
207    if ( y % nlocal(profiler) > 0 ) then
208       do n = 1, y % nlocal(profiler)
209          nlevels = iv % profiler(n) % info % levels
210 
211          y % profiler(n) % u(1:nlevels) = 0.0
212          y % profiler(n) % v(1:nlevels) = 0.0
213       end do
214    end if
215 
216    ! Initialize buoy:
217 
218    if ( y % nlocal(buoy) > 0 ) then
219       y % buoy(1:y % nlocal(buoy)) % u = 0.0
220       y % buoy(1:y % nlocal(buoy)) % v = 0.0
221       y % buoy(1:y % nlocal(buoy)) % t = 0.0
222       y % buoy(1:y % nlocal(buoy)) % p = 0.0
223       y % buoy(1:y % nlocal(buoy)) % q = 0.0
224    end if
225 
226    ! Initialize buoy:
227    if ( y % nlocal(radar) > 0 ) then
228       do n = 1, y % nlocal(radar)
229          nlevels = iv % radar(n) % info % levels
230 
231          y % radar(n) % rv(1:nlevels) = 0.0
232          y % radar(n) % rf(1:nlevels) = 0.0
233       end do
234    end if
235    ! Initialize AIRS retrievals:
236 
237    if ( y % nlocal(airsr) > 0 ) then
238       do n = 1, y % nlocal(airsr)
239          nlevels = iv % airsr(n) % info % levels
240 
241          y % airsr(n) % t(1:nlevels) = 0.0
242          y % airsr(n) % q(1:nlevels) = 0.0
243       end do
244    end if
245 
246 
247    if (trace_use_dull) call da_trace_exit("da_zero_y")
248 
249 end subroutine da_zero_y        
250 
251