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

subroutine da_allocate_observations (iv) 5,2

   !---------------------------------------------------------------------------
   ! Purpose: Allocate components of observation structure.
   !---------------------------------------------------------------------------

   implicit none

   type (iv_type), intent(inout) :: iv     ! Observation structure.

   integer :: i

   if (trace_use) call da_trace_entry("da_allocate_observations")

   if (iv%info(sound)%nlocal     &gt; 0) allocate(iv%sound    (1:iv%info(sound)%nlocal))
   if (iv%info(sonde_sfc)%nlocal &gt; 0) allocate(iv%sonde_sfc(1:iv%info(sonde_sfc)%nlocal))
   if (iv%info(mtgirs)%nlocal    &gt; 0) allocate(iv%mtgirs   (1:iv%info(mtgirs)%nlocal))
   if (iv%info(tamdar)%nlocal    &gt; 0) allocate(iv%tamdar   (1:iv%info(tamdar)%nlocal))
   if (iv%info(tamdar_sfc)%nlocal &gt; 0) allocate(iv%tamdar_sfc (1:iv%info(tamdar_sfc)%nlocal))
   if (iv%info(synop)%nlocal     &gt; 0) allocate(iv%synop    (1:iv%info(synop)%nlocal))
   if (iv%info(airep)%nlocal     &gt; 0) allocate(iv%airep    (1:iv%info(airep)%nlocal))
   if (iv%info(geoamv)%nlocal    &gt; 0) allocate(iv%geoamv   (1:iv%info(geoamv)%nlocal))
   if (iv%info(polaramv)%nlocal  &gt; 0) allocate(iv%polaramv (1:iv%info(polaramv)%nlocal))
   if (iv%info(satem)%nlocal     &gt; 0) allocate(iv%satem    (1:iv%info(satem)%nlocal))
   if (iv%info(metar)%nlocal     &gt; 0) allocate(iv%metar    (1:iv%info(metar)%nlocal))
   if (iv%info(ships)%nlocal     &gt; 0) allocate(iv%ships    (1:iv%info(ships)%nlocal))
   if (iv%info(pilot)%nlocal     &gt; 0) allocate(iv%pilot    (1:iv%info(pilot)%nlocal))
   if (iv%info(gpspw)%nlocal     &gt; 0) allocate(iv%gpspw    (1:iv%info(gpspw)%nlocal))
   if (iv%info(gpsref)%nlocal    &gt; 0) allocate(iv%gpsref   (1:iv%info(gpsref)%nlocal))
   if (iv%info(ssmi_tb)%nlocal   &gt; 0) allocate(iv%ssmi_tb  (1:iv%info(ssmi_tb)%nlocal))
   if (iv%info(ssmi_rv)%nlocal   &gt; 0) allocate(iv%ssmi_rv  (1:iv%info(ssmi_rv)%nlocal))
   if (iv%info(ssmt1)%nlocal     &gt; 0) allocate(iv%ssmt1    (1:iv%info(ssmt1)%nlocal))
   if (iv%info(ssmt2)%nlocal     &gt; 0) allocate(iv%ssmt2    (1:iv%info(ssmt2)%nlocal))
   if (iv%info(qscat)%nlocal     &gt; 0) allocate(iv%qscat    (1:iv%info(qscat)%nlocal))
   if (iv%info(profiler)%nlocal  &gt; 0) allocate(iv%profiler (1:iv%info(profiler)%nlocal))
   if (iv%info(buoy)%nlocal      &gt; 0) allocate(iv%buoy     (1:iv%info(buoy)%nlocal))
   if (iv%info(radar)%nlocal     &gt; 0) allocate(iv%radar    (1:iv%info(radar)%nlocal))
   if (iv%info(bogus)%nlocal     &gt; 0) allocate(iv%bogus    (1:iv%info(bogus)%nlocal))
   if (iv%info(airsr)%nlocal     &gt; 0) allocate(iv%airsr    (1:iv%info(airsr)%nlocal))
   if (iv%info(pseudo)%nlocal    &gt; 0) allocate(iv%pseudo   (1:iv%info(pseudo)%nlocal))
   if (iv%info(rain)%nlocal      &gt; 0) allocate(iv%rain     (1:iv%info(rain)%nlocal))
   do i=1,num_ob_indexes

      ! Radar structures now allocated in their own subroutine (da_setup_obs_structures_radar)
      if (i == radar) cycle

      if (iv%info(i)%nlocal &gt; 0) then
         allocate (iv%info(i)%name(iv%info(i)%nlocal))     
         allocate (iv%info(i)%platform(iv%info(i)%nlocal)) 
         allocate (iv%info(i)%id(iv%info(i)%nlocal))       
         allocate (iv%info(i)%date_char(iv%info(i)%nlocal))
         allocate (iv%info(i)%levels(iv%info(i)%nlocal))   
         allocate (iv%info(i)%lat(iv%info(i)%max_lev,iv%info(i)%nlocal))    
         allocate (iv%info(i)%lon(iv%info(i)%max_lev,iv%info(i)%nlocal))    
         allocate (iv%info(i)%elv(iv%info(i)%nlocal))      
         allocate (iv%info(i)%pstar(iv%info(i)%nlocal))    

         allocate (iv%info(i)%slp(iv%info(i)%nlocal))   
         allocate (iv%info(i)%pw(iv%info(i)%nlocal))    

         allocate (iv%info(i)%x  (kms:kme,iv%info(i)%nlocal))   
         allocate (iv%info(i)%y  (kms:kme,iv%info(i)%nlocal))   
         allocate (iv%info(i)%i  (kms:kme,iv%info(i)%nlocal))   
         allocate (iv%info(i)%j  (kms:kme,iv%info(i)%nlocal))      
         allocate (iv%info(i)%dx (kms:kme,iv%info(i)%nlocal))  
         allocate (iv%info(i)%dxm(kms:kme,iv%info(i)%nlocal)) 
         allocate (iv%info(i)%dy (kms:kme,iv%info(i)%nlocal))  
         allocate (iv%info(i)%dym(kms:kme,iv%info(i)%nlocal)) 
         allocate (iv%info(i)%k  (iv%info(i)%max_lev,iv%info(i)%nlocal))
         allocate (iv%info(i)%dz (iv%info(i)%max_lev,iv%info(i)%nlocal))  
         allocate (iv%info(i)%dzm(iv%info(i)%max_lev,iv%info(i)%nlocal)) 
         allocate (iv%info(i)%zk (iv%info(i)%max_lev,iv%info(i)%nlocal)) 
         allocate (iv%info(i)%proc_domain(iv%info(i)%max_lev,iv%info(i)%nlocal)) 
         allocate (iv%info(i)%thinned(iv%info(i)%max_lev,iv%info(i)%nlocal)) 
         allocate (iv%info(i)%obs_global_index(iv%info(i)%nlocal)) 

         iv%info(i)%proc_domain(:,:)  = .false.
         iv%info(i)%thinned(:,:)      = .false.
         iv%info(i)%zk(:,:)           = missing_r
      end if
   end do

   if (trace_use) call da_trace_exit("da_allocate_observations")

end subroutine da_allocate_observations