da_calculate_grady_radar.inc

References to this file elsewhere.
1 subroutine da_calculate_grady_radar(iv, re, jo_grad_y)
2 
3    !-------------------------------------------------------------------------
4    ! Purpose: Applies obs inverse on re-vector
5    !-------------------------------------------------------------------------
6 
7    implicit none
8 
9    type (ob_type), intent(in)     :: iv          ! Innovation vector.
10    type (y_type),  intent(inout)  :: re          ! Residual vector.
11    type (y_type),  intent(inout)  :: jo_grad_y   ! Grad_y(Jo)
12 
13    integer                      :: n, k
14 
15    if (iv%num_Radar > 0) then 
16       do n=1, iv%num_Radar
17          do k=1, iv%Radar(n)%info%levels
18             if (use_Radar_rv) then
19                if (iv%Radar(n)%rv(k)%qc < obs_qc_pointer) then
20                   re%Radar(n)%rv(k) = 0.0
21                end if
22 
23                jo_grad_y%Radar(n)%rv(k) = -re%Radar(n)%rv(k) / &
24                                       (iv%Radar(n)%rv(k)%error * &
25                                         iv%Radar(n)%rv(k)%error)
26             end if
27 
28             if (use_Radar_rf) then
29                if (iv%Radar(n)%rf(k)%qc < obs_qc_pointer) then
30                   re%Radar(n)%rf(k) = 0.0
31                end if
32                jo_grad_y%Radar(n)%rf(k) = -re%Radar(n)%rf(k) / &
33                                       (iv%Radar(n)%rf(k)%error * &
34                                         iv%Radar(n)%rf(k)%error)
35             end if
36          end do
37       end do
38    end if
39 
40 end subroutine da_calculate_grady_radar
41 
42