Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_define_structures / da_deallocate_y.inc
blob3225ac90c6db1132de35cd64af75181a22693261
1 subroutine da_deallocate_y(y)
3    !---------------------------------------------------------------------------
4    ! Purpose: Deallocate arrays used in y and residual obs structures.
5    !
6    ! Method:  Deallocate component in turn.
7    !---------------------------------------------------------------------------
9    implicit none
10    
11    type (y_type), intent(inout)          :: y      ! residual type structure.
12    integer                               :: n,i  ! Loop counter.
15    if (trace_use) call da_trace_entry("da_deallocate_y")
17    !---------------------------------------------------------------------------
18    ! [1.0] Deallocate:
19    !---------------------------------------------------------------------------
21    if (y % nlocal(synop) > 0) deallocate (y % synop)
23    if (y % nlocal(ships) > 0) deallocate (y % ships)
25    if (y % nlocal(metar) > 0) deallocate (y % metar)
27    if (y % nlocal(rain) > 0)  deallocate (y % rain)
29    if (y % nlocal(sound) > 0) then
30       do n = 1, y % nlocal(sound)
31          deallocate (y % sound(n)%u)
32          deallocate (y % sound(n)%v)
33          deallocate (y % sound(n)%t)
34          deallocate (y % sound(n)%q)
35       end do
36       deallocate (y % sound)
37    end if
39    if (y % nlocal(sonde_sfc) > 0) deallocate (y % sonde_sfc)
40       
41    if (y % nlocal(mtgirs) > 0) then
42       do n = 1, y % nlocal(mtgirs)
43          deallocate (y % mtgirs(n)%u)
44          deallocate (y % mtgirs(n)%v)
45          deallocate (y % mtgirs(n)%t)
46          deallocate (y % mtgirs(n)%q)
47       end do
49       deallocate (y % mtgirs)
51    end if
53    if (y % nlocal(tamdar) > 0) then
54       do n = 1, y % nlocal(tamdar)
55          deallocate (y % tamdar(n)%u)
56          deallocate (y % tamdar(n)%v)
57          deallocate (y % tamdar(n)%t)
58          deallocate (y % tamdar(n)%q)
59       end do
61       deallocate (y % tamdar)
62    end if
64    if (y % nlocal(tamdar_sfc) > 0) deallocate (y % tamdar_sfc)
66    if (y % nlocal(pilot) > 0) then
67       do n = 1, y % nlocal(pilot)
68          deallocate (y % pilot(n)%u)
69          deallocate (y % pilot(n)%v)
70       end do
71       deallocate (y % pilot)
72    end if
74    if (y % nlocal(bogus) > 0) then
75       do n = 1, y % nlocal(bogus)
76          deallocate (y % bogus(n)%u)
77          deallocate (y % bogus(n)%v)
78          deallocate (y % bogus(n)%t)
79          deallocate (y % bogus(n)%q)
80       end do
81       deallocate (y % bogus)
82    end if
84     if (y % nlocal(radar) > 0) then
85        do n = 1, y % nlocal(radar)
86           deallocate (y % radar(n)%rv)
87           deallocate (y % radar(n)%rf)
88           if (associated(y%radar(n)%rqv)) deallocate(y%radar(n)%rqv)
89           if (associated(y%radar(n)%rgr)) deallocate(y%radar(n)%rgr)
90           if (associated(y%radar(n)%rsn)) deallocate(y%radar(n)%rsn)
91           if (associated(y%radar(n)%rrn)) deallocate(y%radar(n)%rrn)
92        end do
93        deallocate (y % radar)
94     end if
97    if (y % nlocal(airep) > 0) then
98       do n = 1, y % nlocal(airep)
99          deallocate (y % airep(n)%u)
100          deallocate (y % airep(n)%v)
101          deallocate (y % airep(n)%t)
102          deallocate (y % airep(n)%q)
103       end do
104       deallocate (y % airep)
105    end if
107    if (y % nlocal(geoamv) > 0) then
108       do n=1, y % nlocal(geoamv)
109          deallocate (y % geoamv(n) % u)
110          deallocate (y % geoamv(n) % v)
111       end do
112       deallocate (y % geoamv)
113    end if
115    if (y % nlocal(polaramv) > 0) then
116       do n=1, y % nlocal(polaramv)
117          deallocate (y % polaramv(n) % u)
118          deallocate (y % polaramv(n) % v)
119       end do
120       deallocate (y % polaramv)
121    end if
123    if (y % nlocal(gpspw) > 0) deallocate (y % gpspw)
125    if (y % nlocal(gpsref) > 0) then
126       do n = 1, y % nlocal(gpsref)
127          deallocate (y % gpsref(n)%ref)
128          deallocate (y % gpsref(n)%  p)
129          deallocate (y % gpsref(n)%  t)
130          deallocate (y % gpsref(n)%  q)
131       end do
132       deallocate (y % gpsref)
133    end if
135    if (y % nlocal(gpseph) > 0) then
136       do n = 1, y % nlocal(gpseph)
137          deallocate (y % gpseph(n)%eph)
138       end do
139       deallocate (y % gpseph)
140    end if
142    if (y % nlocal(satem) > 0) then
143       do n = 1, y % nlocal(satem)
144          deallocate (y % satem(n) % thickness)
145       end do
146       deallocate (y % satem)
147    end if
149    if (y % nlocal(ssmi_tb) > 0) deallocate (y % ssmi_tb)
150    if (y % nlocal(ssmi_rv) > 0) deallocate (y % ssmi_rv)
151    if (y % nlocal(pseudo)  > 0) deallocate (y % pseudo)
153    if (y % nlocal(ssmt1) > 0) then
154       do n = 1, y % nlocal(ssmt1)
155          deallocate (y % ssmt1(n) % t)
156       end do
157       deallocate (y % ssmt1)
158    end if
160    if (y % nlocal(ssmt2) > 0) then
161       do n = 1, y % nlocal(ssmt2)
162          deallocate (y % ssmt2(n) % rh)
163       end do
164       deallocate (y % ssmt2)
165    end if
167    if (y % nlocal(qscat) > 0) deallocate (y % qscat)
169    if (y % nlocal(profiler) > 0) then
170       do n = 1, y % nlocal(profiler)
171          deallocate (y % profiler(n)%u)
172          deallocate (y % profiler(n)%v)
173       end do
174       deallocate (y % profiler)
175    end if
177    if (y % nlocal(buoy)  > 0) deallocate (y % buoy)
179    !  radiance:
181    if (y % num_inst > 0) then
182       do i = 1,  y % num_inst
183         if (y % instid(i) % num_rad < 1) cycle
184         ! deallocate (y % instid(i) % ichan)
185         deallocate ( y % instid(i) % tb )
186       end do
187       deallocate (y % instid)
188    end if
189    if (y % nlocal(airsr) > 0) then
190       do n = 1, y % nlocal(airsr)
191          deallocate (y % airsr(n)%t)
192          deallocate (y % airsr(n)%q)
193       end do
194       deallocate (y % airsr)
195    end if
197    if (trace_use) call da_trace_exit("da_deallocate_y")
199 end subroutine da_deallocate_y