<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='DA_DEALLOCATE_Y'><A href='../../html_code/define_structures/da_deallocate_y.inc.html#DA_DEALLOCATE_Y' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

subroutine da_deallocate_y(y) 13,2

   !---------------------------------------------------------------------------
   ! Purpose: Deallocate arrays used in y and residual obs structures.
   !
   ! Method:  Deallocate component in turn.
   !---------------------------------------------------------------------------

   implicit none
   
   type (y_type), intent(inout)          :: y      ! residual type structure.
   integer                               :: n,i  ! Loop counter.


   if (trace_use) call da_trace_entry("da_deallocate_y")

   !---------------------------------------------------------------------------
   ! [1.0] Deallocate:
   !---------------------------------------------------------------------------

   if (y % nlocal(synop) &gt; 0) deallocate (y % synop)

   if (y % nlocal(ships) &gt; 0) deallocate (y % ships)

   if (y % nlocal(metar) &gt; 0) deallocate (y % metar)

   if (y % nlocal(rain) &gt; 0)  deallocate (y % rain)

   if (y % nlocal(sound) &gt; 0) then
      do n = 1, y % nlocal(sound)
         deallocate (y % sound(n)%u)
         deallocate (y % sound(n)%v)
         deallocate (y % sound(n)%t)
         deallocate (y % sound(n)%q)
      end do
      deallocate (y % sound)
   end if

   if (y % nlocal(sonde_sfc) &gt; 0) deallocate (y % sonde_sfc)
      
   if (y % nlocal(mtgirs) &gt; 0) then
      do n = 1, y % nlocal(mtgirs)
         deallocate (y % mtgirs(n)%u)
         deallocate (y % mtgirs(n)%v)
         deallocate (y % mtgirs(n)%t)
         deallocate (y % mtgirs(n)%q)
      end do

      deallocate (y % mtgirs)

   end if

   if (y % nlocal(tamdar) &gt; 0) then
      do n = 1, y % nlocal(tamdar)
         deallocate (y % tamdar(n)%u)
         deallocate (y % tamdar(n)%v)
         deallocate (y % tamdar(n)%t)
         deallocate (y % tamdar(n)%q)
      end do

      deallocate (y % tamdar)
   end if

   if (y % nlocal(tamdar_sfc) &gt; 0) deallocate (y % tamdar_sfc)

   if (y % nlocal(pilot) &gt; 0) then
      do n = 1, y % nlocal(pilot)
         deallocate (y % pilot(n)%u)
         deallocate (y % pilot(n)%v)
      end do
      deallocate (y % pilot)
   end if

   if (y % nlocal(bogus) &gt; 0) then
      do n = 1, y % nlocal(bogus)
         deallocate (y % bogus(n)%u)
         deallocate (y % bogus(n)%v)
         deallocate (y % bogus(n)%t)
         deallocate (y % bogus(n)%q)
      end do
      deallocate (y % bogus)
   end if

    if (y % nlocal(radar) &gt; 0) then
       do n = 1, y % nlocal(radar)
          deallocate (y % radar(n)%rv)
          deallocate (y % radar(n)%rf)
       end do
       deallocate (y % radar)
    end if


   if (y % nlocal(airep) &gt; 0) then
      do n = 1, y % nlocal(airep)
         deallocate (y % airep(n)%u)
         deallocate (y % airep(n)%v)
         deallocate (y % airep(n)%t)
         deallocate (y % airep(n)%q)
      end do
      deallocate (y % airep)
   end if

   if (y % nlocal(geoamv) &gt; 0) then
      do n=1, y % nlocal(geoamv)
         deallocate (y % geoamv(n) % u)
         deallocate (y % geoamv(n) % v)
      end do
      deallocate (y % geoamv)
   end if

   if (y % nlocal(polaramv) &gt; 0) then
      do n=1, y % nlocal(polaramv)
         deallocate (y % polaramv(n) % u)
         deallocate (y % polaramv(n) % v)
      end do
      deallocate (y % polaramv)
   end if

   if (y % nlocal(gpspw) &gt; 0) deallocate (y % gpspw)

   if (y % nlocal(gpsref) &gt; 0) then
      do n = 1, y % nlocal(gpsref)
         deallocate (y % gpsref(n)%ref)
         deallocate (y % gpsref(n)%  p)
         deallocate (y % gpsref(n)%  t)
         deallocate (y % gpsref(n)%  q)
      end do
      deallocate (y % gpsref)
   end if

   if (y % nlocal(satem) &gt; 0) then
      do n = 1, y % nlocal(satem)
         deallocate (y % satem(n) % thickness)
      end do
      deallocate (y % satem)
   end if

   if (y % nlocal(ssmi_tb) &gt; 0) deallocate (y % ssmi_tb)
   if (y % nlocal(ssmi_rv) &gt; 0) deallocate (y % ssmi_rv)
   if (y % nlocal(pseudo)  &gt; 0) deallocate (y % pseudo)

   if (y % nlocal(ssmt1) &gt; 0) then
      do n = 1, y % nlocal(ssmt1)
         deallocate (y % ssmt1(n) % t)
      end do
      deallocate (y % ssmt1)
   end if

   if (y % nlocal(ssmt2) &gt; 0) then
      do n = 1, y % nlocal(ssmt2)
         deallocate (y % ssmt2(n) % rh)
      end do
      deallocate (y % ssmt2)
   end if

   if (y % nlocal(qscat) &gt; 0) deallocate (y % qscat)

   if (y % nlocal(profiler) &gt; 0) then
      do n = 1, y % nlocal(profiler)
         deallocate (y % profiler(n)%u)
         deallocate (y % profiler(n)%v)
      end do
      deallocate (y % profiler)
   end if

   if (y % nlocal(buoy)  &gt; 0) deallocate (y % buoy)

   !  radiance:
 
   if (y % num_inst &gt; 0) then
      do i = 1,  y % num_inst
        if (y % instid(i) % num_rad &lt; 1) cycle
        ! deallocate (y % instid(i) % ichan)
        deallocate ( y % instid(i) % tb )
      end do
      deallocate (y % instid)
   end if
   if (y % nlocal(airsr) &gt; 0) then
      do n = 1, y % nlocal(airsr)
         deallocate (y % airsr(n)%t)
         deallocate (y % airsr(n)%q)
      end do
      deallocate (y % airsr)
   end if

   if (trace_use) call da_trace_exit("da_deallocate_y")

end subroutine da_deallocate_y