da_interp_lin_2d_adj.inc
References to this file elsewhere.
1 subroutine da_interp_lin_2d_adj(fm2d, info, k, fo2d)
2
3 !-----------------------------------------------------------------------
4 ! Purpose: TBD
5 !-----------------------------------------------------------------------
6
7 implicit none
8
9 real, intent(inout) :: fm2d(ims:ime,jms:jme) ! 'Input' variable modified by adjoint
10 type(infa_type), intent(in) :: info
11 integer, intent(in) :: k ! level
12 real, intent(in) :: fo2d(info%n1:info%n2) ! 'Output' variable unchanged by adjoint
13
14 integer :: n
15
16 if (trace_use) call da_trace_entry("da_interp_lin_2d_adj")
17
18 do n=info%n1,info%n2
19 fm2d(info%i(k,n) ,info%j(k,n)) = info%dym(k,n) * info%dxm(k,n) * fo2d(n) + fm2d(info%i(k,n) ,info%j(k,n))
20 fm2d(info%i(k,n)+1,info%j(k,n)) = info%dym(k,n) * info%dx(k,n) * fo2d(n) + fm2d(info%i(k,n)+1,info%j(k,n))
21 fm2d(info%i(k,n) ,info%j(k,n)+1) = info%dy(k,n) * info%dxm(k,n) * fo2d(n) + fm2d(info%i(k,n) ,info%j(k,n)+1)
22 fm2d(info%i(k,n)+1,info%j(k,n)+1) = info%dy(k,n) * info%dx(k,n) * fo2d(n) + fm2d(info%i(k,n)+1,info%j(k,n)+1)
23 end do
24
25 if (trace_use) call da_trace_exit("da_interp_lin_2d_adj")
26
27 end subroutine da_interp_lin_2d_adj
28
29