/[MITgcm]/MITgcm/model/src/impldiff.F
ViewVC logotype

Diff of /MITgcm/model/src/impldiff.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.8 by adcroft, Tue May 18 18:01:13 1999 UTC revision 1.9 by heimbach, Fri Jun 9 02:45:04 2000 UTC
# Line 19  C     == Global data == Line 19  C     == Global data ==
19  #include "PARAMS.h"  #include "PARAMS.h"
20  #include "GRID.h"  #include "GRID.h"
21    
22    #ifdef ALLOW_AUTODIFF_TAMC
23    #include "tamc_keys.h"
24    #endif
25    
26  C     == Routine Arguments ==  C     == Routine Arguments ==
27        INTEGER bi,bj,iMin,iMax,jMin,jMax        INTEGER bi,bj,iMin,iMax,jMin,jMax
28        _RL deltaTX        _RL deltaTX
# Line 36  C     == Local variables == Line 40  C     == Local variables ==
40        _RL bet(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL bet(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
41        _RL gam(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)        _RL gam(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
42    
43    #ifdef ALLOW_AUTODIFF_TAMC
44          INTEGER kkey
45    #endif
46    
47        IF (Nr.GT.1) THEN         ! Only need do anything if Nr>1        IF (Nr.GT.1) THEN         ! Only need do anything if Nr>1
48  C--    Beginning of forward sweep (top level)  C--    Beginning of forward sweep (top level)
49         DO j=jMin,jMax         DO j=jMin,jMax
# Line 45  C--    Beginning of forward sweep (top l Line 53  C--    Beginning of forward sweep (top l
53           b(i,j)=1.-c(i,j)           b(i,j)=1.-c(i,j)
54           bet(i,j)=0.           bet(i,j)=0.
55           IF (b(i,j).NE.0.) bet(i,j)=1. / b(i,j)           IF (b(i,j).NE.0.) bet(i,j)=1. / b(i,j)
          gXnm1(i,j,1,bi,bj)=gXnm1(i,j,1,bi,bj)*bet(i,j)  
56          ENDDO          ENDDO
57         ENDDO         ENDDO
58        ENDIF        ENDIF
59    
60    #ifdef ALLOW_AUTODIFF_TAMC
61    CADJ store bet   = comlev1_impl3d, key = idkey
62    CADJ store gXNm1 = comlev1_impl2d, key = idkey
63    #endif
64    
65           DO j=jMin,jMax
66            DO i=iMin,iMax
67             gXNm1(i,j,1,bi,bj) = gXNm1(i,j,1,bi,bj)*bet(i,j)
68            ENDDO
69           ENDDO
70    
71  C--   Middle of forward sweep  C--   Middle of forward sweep
72        IF (Nr.GT.2) THEN        IF (Nr.GT.2) THEN
73         DO k=2,Nr-1         DO k=2,Nr-1
74    
75    #ifdef ALLOW_AUTODIFF_TAMC
76            kkey = (idkey-1)*(Nr-2) + k-1
77    #endif
78    
79          DO j=jMin,jMax          DO j=jMin,jMax
80           DO i=iMin,iMax           DO i=iMin,iMax
81            ckm1(i,j)=c(i,j)            ckm1(i,j)=c(i,j)
# Line 62  C--   Middle of forward sweep Line 86  C--   Middle of forward sweep
86            b(i,j)=1.-c(i,j)-a(i,j)            b(i,j)=1.-c(i,j)-a(i,j)
87           ENDDO           ENDDO
88          ENDDO          ENDDO
89    
90    #ifdef ALLOW_AUTODIFF_TAMC
91    CADJ store ckm1 = comlev1_impl3d, key = kkey
92    CADJ store bet  = comlev1_impl3d, key = kkey
93    #endif
94    
95          DO j=jMin,jMax          DO j=jMin,jMax
96           DO i=iMin,iMax           DO i=iMin,iMax
97            gam(i,j,k)=ckm1(i,j)*bet(i,j)            gam(i,j,k)=ckm1(i,j)*bet(i,j)
98            bet(i,j)=b(i,j)-a(i,j)*gam(i,j,k)            bet(i,j)=b(i,j)-a(i,j)*gam(i,j,k)
99            IF (bet(i,j).NE.0.) bet(i,j)=1. / bet(i,j)            IF (bet(i,j).NE.0.) bet(i,j)=1. / bet(i,j)
100             ENDDO
101            ENDDO
102    
103    #ifdef ALLOW_AUTODIFF_TAMC
104    CADJ store bet = comlev1_impl3d, key = kkey
105    CADJ store gXNm1(:,:,k-1:k,bi,bj) = comlev1_impl3d, key = kkey
106    #endif
107    
108            DO j=jMin,jMax
109             DO i=iMin,iMax
110            gXnm1(i,j,k,bi,bj)=(gXnm1(i,j,k,bi,bj)            gXnm1(i,j,k,bi,bj)=(gXnm1(i,j,k,bi,bj)
111       &       -a(i,j)*gXnm1(i,j,k-1,bi,bj))*bet(i,j)       &       -a(i,j)*gXnm1(i,j,k-1,bi,bj))*bet(i,j)
112           ENDDO           ENDDO
113          ENDDO          ENDDO
114    
115         ENDDO         ENDDO
116        ENDIF        ENDIF
117        IF (Nr.GT.1) THEN        IF (Nr.GT.1) THEN
# Line 83  C--    End of forward sweep (bottom leve Line 124  C--    End of forward sweep (bottom leve
124           b(i,j)=1.-a(i,j)           b(i,j)=1.-a(i,j)
125          ENDDO          ENDDO
126         ENDDO         ENDDO
127    
128    #ifdef ALLOW_AUTODIFF_TAMC
129    CADJ store ckm1 = comlev1_impl2d, key = idkey
130    CADJ store a,b  = comlev1_impl2d, key = idkey
131    CADJ store bet  = comlev1_impl2d, key = idkey
132    #endif
133    
134         DO j=jMin,jMax         DO j=jMin,jMax
135          DO i=iMin,iMax          DO i=iMin,iMax
136           gam(i,j,Nr)=ckm1(i,j)*bet(i,j)           gam(i,j,Nr)=ckm1(i,j)*bet(i,j)
137           bet(i,j)=b(i,j)-a(i,j)*gam(i,j,Nr)           bet(i,j)=b(i,j)-a(i,j)*gam(i,j,Nr)
138           IF (bet(i,j).NE.0.) bet(i,j)=1. / bet(i,j)           IF (bet(i,j).NE.0.) bet(i,j)=1. / bet(i,j)
139            ENDDO
140           ENDDO
141    
142    #ifdef ALLOW_AUTODIFF_TAMC
143    CADJ store gXnm1 = comlev1_impl2d, key = idkey
144    #endif
145    
146           DO j=jMin,jMax
147            DO i=iMin,iMax
148           gXnm1(i,j,Nr,bi,bj)=(gXnm1(i,j,Nr,bi,bj)           gXnm1(i,j,Nr,bi,bj)=(gXnm1(i,j,Nr,bi,bj)
149       &      -a(i,j)*gXnm1(i,j,Nr-1,bi,bj))*bet(i,j)       &      -a(i,j)*gXnm1(i,j,Nr-1,bi,bj))*bet(i,j)
150          ENDDO          ENDDO
151         ENDDO         ENDDO
152    
153    #ifdef ALLOW_AUTODIFF_TAMC
154    CADJ store gam                = comlev1_impl2d, key = idkey
155    #endif
156    
157  C--    Backward sweep  C--    Backward sweep
158         DO k=Nr-1,1,-1         DO k=Nr-1,1,-1
159          DO j=jMin,jMax          DO j=jMin,jMax

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22