1 subroutine da_jo_and_grady_radar(iv, re, jo, jo_grad_y)
3 !-----------------------------------------------------------------------
5 !-----------------------------------------------------------------------
9 type (iv_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.
16 if (trace_use) call da_trace_entry("da_jo_and_grady_radar")
25 do n=1, iv%info(radar)%nlocal
26 do k=1, iv%info(radar)%levels(n)
27 if (use_radar_rv) then
28 jo_grad_y%radar(n)%rv(k) = -re%radar(n)%rv(k) / (iv%radar(n)%rv(k)%error * iv%radar(n)%rv(k)%error)
31 if (use_radar_rf) then
32 jo_grad_y%radar(n)%rf(k) = -re%radar(n)%rf(k) / (iv%radar(n)%rf(k)%error * iv%radar(n)%rf(k)%error)
35 if (use_radar_rhv) then
36 jo_grad_y%radar(n)%rrn(k) = -re%radar(n)%rrn(k) / (iv%radar(n)%rrn(k)%error * iv%radar(n)%rrn(k)%error)
37 jo_grad_y%radar(n)%rsn(k) = -re%radar(n)%rsn(k) / (iv%radar(n)%rsn(k)%error * iv%radar(n)%rsn(k)%error)
38 jo_grad_y%radar(n)%rgr(k) = -re%radar(n)%rgr(k) / (iv%radar(n)%rgr(k)%error * iv%radar(n)%rgr(k)%error)
41 if (use_radar_rqv) then
42 jo_grad_y%radar(n)%rqv(k) = -re%radar(n)%rqv(k) / (iv%radar(n)%rqv(k)%error * iv%radar(n)%rqv(k)%error)
46 if (iv%info(radar)%proc_domain(1,n)) then
47 do k=1, iv%info(radar)%levels(n)
48 if (use_radar_rv) then
49 jo % radar_rv = jo % radar_rv - re%radar(n)%rv(k) * jo_grad_y%radar(n)%rv(k)
52 if (use_radar_rf) then
53 jo % radar_rf = jo % radar_rf - re%radar(n)%rf(k) * jo_grad_y%radar(n)%rf(k)
56 if (use_radar_rhv) then
57 jo % radar_rrn = jo % radar_rrn - re%radar(n)%rrn(k) * jo_grad_y%radar(n)%rrn(k)
58 jo % radar_rsn = jo % radar_rsn - re%radar(n)%rsn(k) * jo_grad_y%radar(n)%rsn(k)
59 jo % radar_rgr = jo % radar_rgr - re%radar(n)%rgr(k) * jo_grad_y%radar(n)%rgr(k)
62 if (use_radar_rqv) then
63 jo % radar_rqv = jo % radar_rqv - re%radar(n)%rqv(k) * jo_grad_y%radar(n)%rqv(k)
69 jo % radar_rv = 0.5 * jo % radar_rv
70 jo % radar_rf = 0.5 * jo % radar_rf
71 jo % radar_rrn= 0.5 * jo % radar_rrn
72 jo % radar_rsn= 0.5 * jo % radar_rsn
73 jo % radar_rgr= 0.5 * jo % radar_rgr
74 jo % radar_rqv= 0.5 * jo % radar_rqv
76 if (trace_use) call da_trace_exit("da_jo_and_grady_radar")
78 end subroutine da_jo_and_grady_radar