da_jo_and_grady_ssmi_rv.inc
References to this file elsewhere.
1 subroutine da_jo_and_grady_ssmi_rv(oi, re, jo, jo_grad_y)
2
3 !-----------------------------------------------------------------------
4 ! Purpose: TBD
5 !-----------------------------------------------------------------------
6
7 implicit none
8
9 type (ob_type), intent(in) :: oi ! Ob Inc. structure.
10 type (y_type), intent(in) :: re ! Residual structure.
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
15
16 jo % ssmir_Speed=0.0
17 jo % ssmir_tpw=0.0
18
19 do n=1, oi%num_ssmi_retrieval
20 jo_grad_y%ssmi_retrieval(n)%Speed = - re%ssmi_retrieval(n)%Speed / &
21 (oi%ssmi_retrieval(n)%Speed%error * &
22 oi%ssmi_retrieval(n)%Speed%error)
23
24 jo_grad_y%ssmi_retrieval(n)%tpw = -re%ssmi_retrieval(n)%tpw / &
25 (oi%ssmi_retrieval(n)%tpw%error * &
26 oi%ssmi_retrieval(n)%tpw%error)
27
28 if (oi%ssmi_retrieval(n)%loc%proc_domain) then
29
30 jo % ssmir_Speed = jo % ssmir_Speed - &
31 re%ssmi_retrieval(n)%Speed * &
32 jo_grad_y%ssmi_retrieval(n)%Speed
33
34 jo % ssmir_tpw = jo % ssmir_tpw - &
35 re%ssmi_retrieval(n)%tpw * jo_grad_y%ssmi_retrieval(n)%tpw
36
37 end if
38 end do
39
40 jo % ssmir_Speed = 0.5 * jo % ssmir_Speed
41 jo % ssmir_tpw = 0.5 * jo % ssmir_tpw
42
43 end subroutine da_jo_and_grady_ssmi_rv
44
45