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 (ob_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) call da_trace_entry("da_zero_y")
16
17 !---------------------------------------------------------------------------
18 ! [1.0] Copy number of observations:
19 !---------------------------------------------------------------------------
20
21 y % total_obs = iv % total_obs
22 y % num_synop = iv % num_synop
23 y % num_ships = iv % num_ships
24 y % num_metar = iv % num_metar
25 y % num_sound = iv % num_sound
26 y % num_pilot = iv % num_pilot
27 y % num_airep = iv % num_airep
28 y % num_satem = iv % num_satem
29 y % num_geoamv = iv % num_geoamv
30 y % num_polaramv = iv % num_polaramv
31 y % num_gpspw = iv % num_gpspw
32 y % num_gpsref = iv % num_gpsref
33 y % num_ssmi_tb = iv % num_ssmi_tb
34 y % num_ssmi_retrieval = iv % num_ssmi_retrieval
35 y % num_ssmt1 = iv % num_ssmt1
36 y % num_ssmt2 = iv % num_ssmt2
37 y % num_pseudo = num_pseudo
38 y % num_qscat = iv % num_qscat
39 y % num_profiler = iv % num_profiler
40 y % num_buoy = iv % num_buoy
41 y % num_radar = iv % num_radar
42 y % num_bogus = iv % num_bogus
43 y % num_airsr = iv % num_airsr
44
45 !---------------------------------------------------------------------------
46 ! [2.0] Allocate:
47 !---------------------------------------------------------------------------
48
49 ! Initialize synops:
50
51 if ( y % num_synop > 0 ) then
52 y % synop(1:y % num_synop) % u = 0.0
53 y % synop(1:y % num_synop) % v = 0.0
54 y % synop(1:y % num_synop) % t = 0.0
55 y % synop(1:y % num_synop) % p = 0.0
56 y % synop(1:y % num_synop) % q = 0.0
57 end if
58
59 ! Initialize ships:
60
61 if ( y % num_ships > 0 ) then
62 y % ships(1:y % num_ships) % u = 0.0
63 y % ships(1:y % num_ships) % v = 0.0
64 y % ships(1:y % num_ships) % t = 0.0
65 y % ships(1:y % num_ships) % p = 0.0
66 y % ships(1:y % num_ships) % q = 0.0
67 end if
68
69 ! Initialize metars:
70
71 if ( y % num_metar > 0 ) then
72 y % metar(1:y % num_metar) % u = 0.0
73 y % metar(1:y % num_metar) % v = 0.0
74 y % metar(1:y % num_metar) % t = 0.0
75 y % metar(1:y % num_metar) % p = 0.0
76 y % metar(1:y % num_metar) % q = 0.0
77 end if
78
79 ! Initialize Geo. AMV's:
80
81 if ( y % num_geoamv > 0 ) then
82 do n = 1, y % num_geoamv
83 nlevels = iv % geoamv(n) % info % levels
84 y % geoamv(n) % u(1:nlevels) = 0.0
85 y % geoamv(n) % v(1:nlevels) = 0.0
86 end do
87 end if
88
89 ! Initialize Polat AMVs:
90
91 if ( y % num_polaramv > 0 ) then
92 do n = 1, y % num_polaramv
93 nlevels = iv % polaramv(n) % info % levels
94 y % polaramv(n) % u(1:nlevels) = 0.0
95 y % polaramv(n) % v(1:nlevels) = 0.0
96 end do
97 end if
98
99 ! Initialize GPS TPW:
100
101 if ( y % num_gpspw > 0 ) then
102 y % gpspw(1:y % num_gpspw) % tpw = 0.0
103 end if
104
105 ! Initialize GPS REFRACTIVITY:
106
107 if ( y % num_gpsref > 0 ) then
108 do n = 1, y % num_gpsref
109 nlevels = iv % gpsref(n) % info % levels
110 y % gpsref(n) % ref(1:nlevels) = 0.0
111 y % gpsref(n) % p(1:nlevels) = 0.0
112 y % gpsref(n) % t(1:nlevels) = 0.0
113 y % gpsref(n) % q(1:nlevels) = 0.0
114 end do
115 end if
116
117 ! Initialize sondes:
118
119 if ( y % num_sound > 0 ) then
120 do n = 1, y % num_sound
121 nlevels = iv % sound(n) % info % levels
122
123 y % sound(n) % u(1:nlevels) = 0.0
124 y % sound(n) % v(1:nlevels) = 0.0
125 y % sound(n) % t(1:nlevels) = 0.0
126 y % sound(n) % q(1:nlevels) = 0.0
127
128 ! Initialize sonde_sfc
129
130 y % sonde_sfc(n) % u = 0.0
131 y % sonde_sfc(n) % v = 0.0
132 y % sonde_sfc(n) % t = 0.0
133 y % sonde_sfc(n) % p = 0.0
134 y % sonde_sfc(n) % q = 0.0
135 end do
136 end if
137
138 if ( y % num_bogus > 0 ) then
139 do n = 1, y % num_bogus
140 nlevels = iv % bogus(n) % info % levels
141
142 y % bogus(n) % u(1:nlevels) = 0.0
143 y % bogus(n) % v(1:nlevels) = 0.0
144 y % bogus(n) % t(1:nlevels) = 0.0
145 y % bogus(n) % q(1:nlevels) = 0.0
146 y % bogus(n) % slp = 0.0
147 end do
148 end if
149
150 ! Initialize pilots:
151
152 if ( y % num_pilot > 0 ) then
153 do n = 1, y % num_pilot
154 nlevels = iv % pilot(n) % info % levels
155
156 y % pilot(n) % u(1:nlevels) = 0.0
157 y % pilot(n) % v(1:nlevels) = 0.0
158 end do
159 end if
160
161 ! Initialize AIREPs:
162
163 if ( y % num_airep > 0 ) then
164 do n = 1, y % num_airep
165 nlevels = iv % airep(n) % info % levels
166
167 y % airep(n) % u(1:nlevels) = 0.0
168 y % airep(n) % v(1:nlevels) = 0.0
169 y % airep(n) % t(1:nlevels) = 0.0
170 end do
171 end if
172
173 ! Initialize satem:
174
175 if ( y % num_satem > 0 ) then
176 do n = 1, y % num_satem
177 nlevels = iv % satem(n) % info % levels
178
179 y % satem(n) % thickness(1:nlevels) = 0.0
180 end do
181 end if
182
183 if ( y % num_ssmi_tb > 0 ) then
184 y % ssmi_tb(1:y % num_ssmi_tb) % tb19v = 0.0
185 y % ssmi_tb(1:y % num_ssmi_tb) % tb19h = 0.0
186 y % ssmi_tb(1:y % num_ssmi_tb) % tb22v = 0.0
187 y % ssmi_tb(1:y % num_ssmi_tb) % tb37v = 0.0
188 y % ssmi_tb(1:y % num_ssmi_tb) % tb37h = 0.0
189 y % ssmi_tb(1:y % num_ssmi_tb) % tb85v = 0.0
190 y % ssmi_tb(1:y % num_ssmi_tb) % tb85h = 0.0
191 end if
192
193 if ( y % num_ssmi_retrieval > 0 ) then
194 y % ssmi_retrieval(1:y % num_ssmi_retrieval) % tpw = 0.0
195 y % ssmi_retrieval(1:y % num_ssmi_retrieval) % Speed = 0.0
196 end if
197
198 if ( y % num_ssmt1 > 0 ) then
199 do n = 1, y % num_ssmt1
200 nlevels = iv % ssmt1(n) % info % levels
201 y % ssmt1(n) % t(1:nlevels) = 0.0
202 end do
203 end if
204
205 if ( y % num_ssmt2 > 0 ) then
206 do n = 1, y % num_ssmt2
207 nlevels = iv % ssmt2(n) % info % levels
208 y % ssmt2(n) % rh(1:nlevels) = 0.0
209 end do
210 end if
211
212 if ( y % num_pseudo > 0 ) then
213 y % pseudo(1:y % num_pseudo) % u = 0.0
214 y % pseudo(1:y % num_pseudo) % v = 0.0
215 y % pseudo(1:y % num_pseudo) % t = 0.0
216 y % pseudo(1:y % num_pseudo) % p = 0.0
217 y % pseudo(1:y % num_pseudo) % q = 0.0
218 end if
219
220 ! Initialize Quikscat:
221
222 if ( y % num_qscat > 0 ) then
223 y % qscat(1:y % num_qscat) % u = 0.0
224 y % qscat(1:y % num_qscat) % v = 0.0
225 end if
226
227 ! Initialize profilers:
228
229 if ( y % num_profiler > 0 ) then
230 do n = 1, y % num_profiler
231 nlevels = iv % profiler(n) % info % levels
232
233 y % profiler(n) % u(1:nlevels) = 0.0
234 y % profiler(n) % v(1:nlevels) = 0.0
235 end do
236 end if
237
238 ! Initialize buoy:
239
240 if ( y % num_buoy > 0 ) then
241 y % buoy(1:y % num_buoy) % u = 0.0
242 y % buoy(1:y % num_buoy) % v = 0.0
243 y % buoy(1:y % num_buoy) % t = 0.0
244 y % buoy(1:y % num_buoy) % p = 0.0
245 y % buoy(1:y % num_buoy) % q = 0.0
246 end if
247
248 ! Initialize buoy:
249 if ( y % num_radar > 0 ) then
250 do n = 1, y % num_radar
251 nlevels = iv % radar(n) % info % levels
252
253 y % radar(n) % rv(1:nlevels) = 0.0
254 y % radar(n) % rf(1:nlevels) = 0.0
255 end do
256 end if
257 ! Initialize AIRS retrievals:
258
259 if ( y % num_airsr > 0 ) then
260 do n = 1, y % num_airsr
261 nlevels = iv % airsr(n) % info % levels
262
263 y % airsr(n) % t(1:nlevels) = 0.0
264 y % airsr(n) % q(1:nlevels) = 0.0
265 end do
266 end if
267
268
269 if (trace_use) call da_trace_exit("da_zero_y")
270
271 end subroutine da_zero_y
272
273