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