1 ! Generated by TAPENADE (INRIA, Tropics team)
2 ! Tapenade 3.6 (r4165) - 21 sep 2011 20:54
4 ! Differentiation of da_couple_uv in reverse (adjoint) mode:
5 ! gradient of useful results: u v mu
6 ! with respect to varying inputs: u v mu
7 ! RW status of diff variables: u:in-out v:in-out mu:incr
8 SUBROUTINE DA_COUPLE_UV_B(u, ub, v, vb, mu, mub0, mub, msfu, msfv, ids, &
9 & ide, jds, jde, kds, kde)
11 ! if (trace_use) call da_trace_exit("da_couple_uv")
12 INTEGER, INTENT(IN) :: ids, ide, jds, jde, kds, kde
13 REAL, INTENT(INOUT) :: u(ids:ide+1, jds:jde, kds:kde)
14 REAL, INTENT(INOUT) :: ub(ids:ide+1, jds:jde, kds:kde)
15 REAL, INTENT(INOUT) :: v(ids:ide, jds:jde+1, kds:kde)
16 REAL, INTENT(INOUT) :: vb(ids:ide, jds:jde+1, kds:kde)
17 REAL, INTENT(IN) :: msfu(ids:ide+1, jds:jde)
18 REAL, INTENT(IN) :: msfv(ids:ide, jds:jde+1)
19 REAL, INTENT(IN) :: mu(ids:ide, jds:jde)
20 REAL :: mub0(ids:ide, jds:jde)
21 REAL, INTENT(IN) :: mub(ids:ide, jds:jde)
22 REAL, ALLOCATABLE :: muu(:, :), muv(:, :)
23 REAL, ALLOCATABLE :: muub(:, :), muvb(:, :)
25 ALLOCATE(muub(ids:ide+1, jds:jde))
27 ! if (trace_use) call da_trace_entry("da_couple_uv")
28 ALLOCATE(muu(ids:ide+1, jds:jde))
29 ALLOCATE(muvb(ids:ide, jds:jde+1))
30 ALLOCATE(muv(ids:ide, jds:jde+1))
31 ! couple variables u, v
32 CALL DA_CALC_MU_UV(mu, mub, muu, muv, ids, ide, jds, jde)
34 CALL DA_COUPLE_B(muv, muvb, v, vb, msfv, ids, ide, jds, arg1, kds, kde&
37 CALL DA_COUPLE_B(muu, muub, u, ub, msfu, ids, arg1, jds, jde, kds, kde&
39 CALL DA_CALC_MU_UV_B(mu, mub0, mub, muu, muub, muv, muvb, ids, ide, &
47 END SUBROUTINE DA_COUPLE_UV_B