Update version info for release v4.6.1 (#2122)
[WRF.git] / var / da / da_update_bc / da_calc_mu_uv_ad.inc
blob72924b0fbbd1266678b428a1b5b4ff8109c4c820
1 !        Generated by TAPENADE     (INRIA, Tropics team)
2 !  Tapenade 3.6 (r4165) - 21 sep 2011 20:54
4 !  Differentiation of da_calc_mu_uv in reverse (adjoint) mode:
5 !   gradient     of useful results: muu muv mu
6 !   with respect to varying inputs: mu
7 SUBROUTINE DA_CALC_MU_UV_B(mu, mub0, mub, muu, muub, muv, muvb, ids, ide&
8 &  , jds, jde)
9   IMPLICIT NONE
10   INTEGER, INTENT(IN) :: ids, ide, jds, jde
11   REAL, DIMENSION(ids:ide, jds:jde), INTENT(IN) :: mu, mub
12   REAL, DIMENSION(ids:ide, jds:jde) :: mub0
13   REAL, DIMENSION(ids:ide + 1, jds:jde) :: muu
14   REAL, DIMENSION(ids:ide+1, jds:jde) :: muub
15   REAL, DIMENSION(ids:ide, jds:jde + 1) :: muv
16   REAL, DIMENSION(ids:ide, jds:jde+1) :: muvb
17   REAL, DIMENSION(ids - 1:ide + 1, jds - 1:jde + 1) :: mut
18   REAL, DIMENSION(ids-1:ide+1, jds-1:jde+1) :: mutb
19   INTEGER :: i, j
20   mutb = 0.0
21   DO j=jde+1,jds,-1
22     DO i=ide,ids,-1
23       mutb(i, j) = mutb(i, j) + 0.5*muvb(i, j)
24       mutb(i, j-1) = mutb(i, j-1) + 0.5*muvb(i, j)
25       muvb(i, j) = 0.0
26     END DO
27   END DO
28   DO j=jde,jds,-1
29     DO i=ide+1,ids,-1
30       mutb(i, j) = mutb(i, j) + 0.5*muub(i, j)
31       mutb(i-1, j) = mutb(i-1, j) + 0.5*muub(i, j)
32       muub(i, j) = 0.0
33     END DO
34   END DO
35   DO i=ide+1,ids-1,-1
36     mutb(i, jde) = mutb(i, jde) + mutb(i, jde+1)
37     mutb(i, jde+1) = 0.0
38     mutb(i, jds) = mutb(i, jds) + mutb(i, jds-1)
39     mutb(i, jds-1) = 0.0
40   END DO
41   DO j=jde,jds,-1
42     mutb(ide, j) = mutb(ide, j) + mutb(ide+1, j)
43     mutb(ide+1, j) = 0.0
44     mutb(ids, j) = mutb(ids, j) + mutb(ids-1, j)
45     mutb(ids-1, j) = 0.0
46     DO i=ide,ids,-1
47       mub0(i, j) = mub0(i, j) + mutb(i, j)
48       mutb(i, j) = 0.0
49     END DO
50   END DO
51 END SUBROUTINE DA_CALC_MU_UV_B