da_jo_and_grady_radar.inc
References to this file elsewhere.
1 subroutine da_jo_and_grady_radar(iv, re, jo, jo_grad_y)
2
3 !-----------------------------------------------------------------------
4 ! Purpose: TBD
5 !-----------------------------------------------------------------------
6
7 implicit none
8
9 type (ob_type), intent(in) :: iv ! Innovation vector.
10 type (y_type), intent(in) :: re ! Residual vector.
11 type (y_type), intent(inout) :: jo_grad_y ! Grad_y(Jo)
12 type (jo_type),intent(inout) :: jo ! Obs cost function.
13
14 integer :: n, k
15
16 jo % Radar_rv = 0.0
17 jo % Radar_rf = 0.0
18
19 if (iv%num_Radar < 0) return
20
21 do n=1, iv%num_Radar
22 do k=1, iv%Radar(n)%info%levels
23 if (use_Radar_rv) then
24 jo_grad_y%Radar(n)%rv(k) = -re%Radar(n)%rv(k) / &
25 (iv%Radar(n)%rv(k)%error * &
26 iv%Radar(n)%rv(k)%error)
27 end if
28
29 if (use_Radar_rf) then
30 jo_grad_y%Radar(n)%rf(k) = -re%Radar(n)%rf(k) / &
31 (iv%Radar(n)%rf(k)%error * &
32 iv%Radar(n)%rf(k)%error)
33 end if
34 end do
35
36 if (iv%Radar(n)%loc%proc_domain) then
37 do k=1, iv%Radar(n)%info%levels
38 if (use_Radar_rv) then
39 jo % Radar_rv = jo % Radar_rv - &
40 re%Radar(n)%rv(k) * jo_grad_y%Radar(n)%rv(k)
41 end if
42
43 if (use_Radar_rf) then
44 jo % Radar_rf = jo % Radar_rf - &
45 re%Radar(n)%rf(k) * jo_grad_y%Radar(n)%rf(k)
46 end if
47 end do
48 end if
49 end do
50
51 jo % Radar_rv = 0.5 * jo % Radar_rv
52 jo % Radar_rf = 0.5 * jo % Radar_rf
53
54 end subroutine da_jo_and_grady_radar
55
56