da_allocate_observations.inc

References to this file elsewhere.
1 subroutine da_allocate_observations (iv)
2 
3    !---------------------------------------------------------------------------
4    ! Purpose: Allocate components of observation structure.
5    !---------------------------------------------------------------------------
6 
7    implicit none
8 
9    type (iv_type), intent(inout) :: iv     ! Observation structure.
10 
11    integer :: i
12 
13    if (trace_use) call da_trace_entry("da_allocate_observations")
14 
15    if (iv%info(sound)%nlocal     > 0) allocate(iv%sound    (1:iv%info(sound)%nlocal))
16    if (iv%info(sonde_sfc)%nlocal > 0) allocate(iv%sonde_sfc(1:iv%info(sonde_sfc)%nlocal))
17    if (iv%info(synop)%nlocal     > 0) allocate(iv%synop    (1:iv%info(synop)%nlocal))
18    if (iv%info(airep)%nlocal     > 0) allocate(iv%airep    (1:iv%info(airep)%nlocal))
19    if (iv%info(geoamv)%nlocal    > 0) allocate(iv%geoamv   (1:iv%info(geoamv)%nlocal))
20    if (iv%info(polaramv)%nlocal  > 0) allocate(iv%polaramv (1:iv%info(polaramv)%nlocal))
21    if (iv%info(satem)%nlocal     > 0) allocate(iv%satem    (1:iv%info(satem)%nlocal))
22    if (iv%info(metar)%nlocal     > 0) allocate(iv%metar    (1:iv%info(metar)%nlocal))
23    if (iv%info(ships)%nlocal     > 0) allocate(iv%ships    (1:iv%info(ships)%nlocal))
24    if (iv%info(pilot)%nlocal     > 0) allocate(iv%pilot    (1:iv%info(pilot)%nlocal))
25    if (iv%info(gpspw)%nlocal     > 0) allocate(iv%gpspw    (1:iv%info(gpspw)%nlocal))
26    if (iv%info(gpsref)%nlocal    > 0) allocate(iv%gpsref   (1:iv%info(gpsref)%nlocal))
27    if (iv%info(ssmi_tb)%nlocal   > 0) allocate(iv%ssmi_tb  (1:iv%info(ssmi_tb)%nlocal))
28    if (iv%info(ssmi_rv)%nlocal   > 0) allocate(iv%ssmi_rv  (1:iv%info(ssmi_rv)%nlocal))
29    if (iv%info(ssmt1)%nlocal     > 0) allocate(iv%ssmt1    (1:iv%info(ssmt1)%nlocal))
30    if (iv%info(ssmt2)%nlocal     > 0) allocate(iv%ssmt2    (1:iv%info(ssmt2)%nlocal))
31    if (iv%info(qscat)%nlocal     > 0) allocate(iv%qscat    (1:iv%info(qscat)%nlocal))
32    if (iv%info(profiler)%nlocal  > 0) allocate(iv%profiler (1:iv%info(profiler)%nlocal))
33    if (iv%info(buoy)%nlocal      > 0) allocate(iv%buoy     (1:iv%info(buoy)%nlocal))
34    if (iv%info(radar)%nlocal     > 0) allocate(iv%radar    (1:iv%info(radar)%nlocal))
35    if (iv%info(bogus)%nlocal     > 0) allocate(iv%bogus    (1:iv%info(bogus)%nlocal))
36    if (iv%info(airsr)%nlocal     > 0) allocate(iv%airsr    (1:iv%info(airsr)%nlocal))
37 
38    do i=1,num_ob_indexes
39       if (iv%info(i)%nlocal > 0) then
40          allocate (iv%info(i)%name(iv%info(i)%nlocal))     
41          allocate (iv%info(i)%platform(iv%info(i)%nlocal)) 
42          allocate (iv%info(i)%id(iv%info(i)%nlocal))       
43          allocate (iv%info(i)%date_char(iv%info(i)%nlocal))
44          allocate (iv%info(i)%levels(iv%info(i)%nlocal))   
45          allocate (iv%info(i)%lat(iv%info(i)%max_lev,iv%info(i)%nlocal))    
46          allocate (iv%info(i)%lon(iv%info(i)%max_lev,iv%info(i)%nlocal))    
47          allocate (iv%info(i)%elv(iv%info(i)%nlocal))      
48          allocate (iv%info(i)%pstar(iv%info(i)%nlocal))    
49 
50          allocate (iv%info(i)%slp(iv%info(i)%nlocal))   
51          allocate (iv%info(i)%pw(iv%info(i)%nlocal))    
52 
53          allocate (iv%info(i)%x  (kms:kme,iv%info(i)%nlocal))   
54          allocate (iv%info(i)%y  (kms:kme,iv%info(i)%nlocal))   
55          allocate (iv%info(i)%i  (kms:kme,iv%info(i)%nlocal))   
56          allocate (iv%info(i)%j  (kms:kme,iv%info(i)%nlocal))      
57          allocate (iv%info(i)%dx (kms:kme,iv%info(i)%nlocal))  
58          allocate (iv%info(i)%dxm(kms:kme,iv%info(i)%nlocal)) 
59          allocate (iv%info(i)%dy (kms:kme,iv%info(i)%nlocal))  
60          allocate (iv%info(i)%dym(kms:kme,iv%info(i)%nlocal)) 
61          allocate (iv%info(i)%k  (iv%info(i)%max_lev,iv%info(i)%nlocal))
62          allocate (iv%info(i)%dz (iv%info(i)%max_lev,iv%info(i)%nlocal))  
63          allocate (iv%info(i)%dzm(iv%info(i)%max_lev,iv%info(i)%nlocal)) 
64          allocate (iv%info(i)%zk (iv%info(i)%max_lev,iv%info(i)%nlocal)) 
65          allocate (iv%info(i)%proc_domain(iv%info(i)%max_lev,iv%info(i)%nlocal)) 
66          allocate (iv%info(i)%obs_global_index(iv%info(i)%nlocal)) 
67 
68          iv%info(i)%proc_domain(:,:)  = .false.
69          iv%info(i)%zk(:,:)           = missing_r
70       end if
71    end do
72 
73    if (trace_use) call da_trace_exit("da_allocate_observations")
74 
75 end subroutine da_allocate_observations
76 
77