updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / var / da / da_update_bc / da_couple_uv_ad.inc
blobf5599240d6970dd0ceffc69a3a4cbcef657fc865
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)
10   IMPLICIT NONE
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(:, :)
24   INTEGER :: arg1
25   ALLOCATE(muub(ids:ide+1, jds:jde))
26 ! update_bc
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)
33   arg1 = jde + 1
34   CALL DA_COUPLE_B(muv, muvb, v, vb, msfv, ids, ide, jds, arg1, kds, kde&
35 &            )
36   arg1 = ide + 1
37   CALL DA_COUPLE_B(muu, muub, u, ub, msfu, ids, arg1, jds, jde, kds, kde&
38 &            )
39   CALL DA_CALC_MU_UV_B(mu, mub0, mub, muu, muub, muv, muvb, ids, ide, &
40 &                 jds, jde)
41   muub = 0.0
42   muvb = 0.0
43   DEALLOCATE(muv)
44   DEALLOCATE(muvb)
45   DEALLOCATE(muu)
46   DEALLOCATE(muub)
47 END SUBROUTINE DA_COUPLE_UV_B