Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / var / da / da_setup_structures / da_setup_obs_structures_rain.inc
blob4a030b0bc71e4943554b505fc27c02d86c936321
1 subroutine da_setup_obs_structures_rain(grid, ob, iv)
3    !---------------------------------------------------------------------------
4    ! Purpose: Define, allocate and read observation structure.
5    !---------------------------------------------------------------------------
7    implicit none
8    
9    type (domain) , intent(in)    :: grid        ! model data
10    type (y_type),  intent(out)   :: ob          ! Observation structure.
11    type (iv_type), intent(inout) :: iv          ! O-B structure.
13    character(len=filename_len)  :: filename
14    integer                     :: n,i,j,k
16    if (trace_use) call da_trace_entry("da_setup_obs_structures_rain")
18    !-------------------------------
19    ! 0.0 Make thinning grids
20    !------------------------------
22    if ( thin_rainobs ) then
23       allocate(thinning_grid(num_ob_indexes,num_fgat_time))
24       do n=1, num_fgat_time
25          call makegrids (rain,thin_mesh_conv(rain), n)
26       end do
27    end if
29    !--------------------------------------------------------------------------
30    ! [1.0] Scan data
31    !--------------------------------------------------------------------------
33    do n=2, num_fgat_time
34       if ( .not. fgat_rain_flags(n) ) cycle
35       iv%time = n
36       filename = ' '
38       ! scan rainfall observation file
39       write(filename(1:9), fmt='(a, i2.2, a)') 'ob', n,'.rain'
40       call da_scan_obs_rain(iv, filename, iv%time)
42       iv%info(rain)%plocal(n) = iv%info(rain)%nlocal
43       iv%info(rain)%ptotal(n) = iv%info(rain)%ntotal
44    end do
46    !--------------------------------------------------------------------------
47    ! Allocate the ob based on input number of obs:
48    !--------------------------------------------------------------------------
50    call da_allocate_observations_rain (iv)
52    !--------------------------------------------------------------------------
53    ! [2.0] Read data
54    !--------------------------------------------------------------------------
55     
56    do n=2, num_fgat_time
57       if ( .not. fgat_rain_flags(n) ) cycle
58       iv%time = n
59       filename = ' '
61       ! read rainfall observation file
62       write(filename(1:9), fmt='(a, i2.2, a)') 'ob', n,'.rain'
63      call da_read_obs_rain(iv, filename, iv%time)
64    end do
66    if ( thin_rainobs ) then
67      do n = 1, num_fgat_time
68         call destroygrids (rain,n)
69      end do
70      deallocate(thinning_grid)
71    end if
73    !--------------------------------------------------------------------------
74    ! [3.0] Calculate innovation vector (O-B) and create (smaller) ob structure:
75    !--------------------------------------------------------------------------
77    call da_fill_obs_structures_rain(iv, ob)
79    iv%time = 1
81    if (trace_use) call da_trace_exit("da_setup_obs_structures_rain")
83 end subroutine da_setup_obs_structures_rain