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