da_deallocate_y.inc

References to this file elsewhere.
1 subroutine da_deallocate_y(y)
2 
3    !---------------------------------------------------------------------------
4    ! Purpose: Deallocate arrays used in y and residual obs structures.
5    !
6    ! Method:  Deallocate component in turn.
7    !---------------------------------------------------------------------------
8 
9    implicit none
10    
11    type (y_type), intent(inout)          :: y      ! residual type structure.
12    integer                               :: n,i  ! Loop counter.
13 
14 
15    if (trace_use) call da_trace_entry("da_deallocate_y")
16 
17    !---------------------------------------------------------------------------
18    ! [1.0] Deallocate:
19    !---------------------------------------------------------------------------
20 
21    if (y % nlocal(synop) > 0) deallocate (y % synop)
22 
23    if (y % nlocal(ships) > 0) deallocate (y % ships)
24 
25    if (y % nlocal(metar) > 0) deallocate (y % metar)
26 
27 
28    if (y % nlocal(sound) > 0) then
29       do n = 1, y % nlocal(sound)
30          deallocate (y % sound(n)%u)
31          deallocate (y % sound(n)%v)
32          deallocate (y % sound(n)%t)
33          deallocate (y % sound(n)%q)
34       end do
35 
36       deallocate (y % sound)
37 
38       deallocate (y % sonde_sfc)
39    end if
40 
41    if (y % nlocal(pilot) > 0) then
42       do n = 1, y % nlocal(pilot)
43          deallocate (y % pilot(n)%u)
44          deallocate (y % pilot(n)%v)
45       end do
46       deallocate (y % pilot)
47    end if
48 
49    if (y % nlocal(bogus) > 0) then
50       do n = 1, y % nlocal(bogus)
51          deallocate (y % bogus(n)%u)
52          deallocate (y % bogus(n)%v)
53          deallocate (y % bogus(n)%t)
54          deallocate (y % bogus(n)%q)
55       end do
56       deallocate (y % bogus)
57    end if
58 
59     if (y % nlocal(radar) > 0) then
60        do n = 1, y % nlocal(radar)
61           deallocate (y % radar(n)%rv)
62           deallocate (y % radar(n)%rf)
63        end do
64        deallocate (y % radar)
65     end if
66 
67 
68    if (y % nlocal(airep) > 0) then
69       do n = 1, y % nlocal(airep)
70          deallocate (y % airep(n)%u)
71          deallocate (y % airep(n)%v)
72          deallocate (y % airep(n)%t)
73       end do
74       deallocate (y % airep)
75    end if
76 
77    if (y % nlocal(geoamv) > 0) then
78       do n=1, y % nlocal(geoamv)
79          deallocate (y % geoamv(n) % u)
80          deallocate (y % geoamv(n) % v)
81       end do
82       deallocate (y % geoamv)
83    end if
84 
85    if (y % nlocal(polaramv) > 0) then
86       do n=1, y % nlocal(polaramv)
87          deallocate (y % polaramv(n) % u)
88          deallocate (y % polaramv(n) % v)
89       end do
90       deallocate (y % polaramv)
91    end if
92 
93    if (y % nlocal(gpspw) > 0) deallocate (y % gpspw)
94 
95    if (y % nlocal(gpsref) > 0) then
96       do n = 1, y % nlocal(gpsref)
97          deallocate (y % gpsref(n)%ref)
98          deallocate (y % gpsref(n)%  p)
99          deallocate (y % gpsref(n)%  t)
100          deallocate (y % gpsref(n)%  q)
101       end do
102       deallocate (y % gpsref)
103    end if
104 
105    if (y % nlocal(satem) > 0) then
106       do n = 1, y % nlocal(satem)
107          deallocate (y % satem(n) % thickness)
108       end do
109       deallocate (y % satem)
110    end if
111 
112    if (y % nlocal(ssmi_tb) > 0) deallocate (y % ssmi_tb)
113    if (y % nlocal(ssmi_rv) > 0) deallocate (y % ssmi_rv)
114    if (y % nlocal(pseudo)  > 0) deallocate (y % pseudo)
115 
116    if (y % nlocal(ssmt1) > 0) then
117       do n = 1, y % nlocal(ssmt1)
118          deallocate (y % ssmt1(n) % t)
119       end do
120       deallocate (y % ssmt1)
121    end if
122 
123    if (y % nlocal(ssmt2) > 0) then
124       do n = 1, y % nlocal(ssmt2)
125          deallocate (y % ssmt2(n) % rh)
126       end do
127       deallocate (y % ssmt2)
128    end if
129 
130    if (y % nlocal(qscat) > 0) deallocate (y % qscat)
131 
132    if (y % nlocal(profiler) > 0) then
133       do n = 1, y % nlocal(profiler)
134          deallocate (y % profiler(n)%u)
135          deallocate (y % profiler(n)%v)
136       end do
137       deallocate (y % profiler)
138    end if
139 
140    if (y % nlocal(buoy)  > 0) deallocate (y % buoy)
141 
142    !  radiance:
143  
144    if (y % num_inst > 0) then
145       do i = 1,  y % num_inst
146         if (y % instid(i) % num_rad < 1) cycle
147         ! deallocate (y % instid(i) % ichan)
148         deallocate ( y % instid(i) % tb )
149       end do
150       deallocate (y % instid)
151    end if
152    if (y % nlocal(airsr) > 0) then
153       do n = 1, y % nlocal(airsr)
154          deallocate (y % airsr(n)%t)
155          deallocate (y % airsr(n)%q)
156       end do
157       deallocate (y % airsr)
158    end if
159 
160    if (trace_use) call da_trace_exit("da_deallocate_y")
161 
162 end subroutine da_deallocate_y
163 
164