/[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.13 by adcroft, Wed Nov 29 22:38:31 2000 UTC revision 1.14 by heimbach, Mon Jan 29 20:04:43 2001 UTC
# Line 2  C $Header$ Line 2  C $Header$
2    
3  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
4    
5  C     /==========================================================\  C     |==========================================================|
6  C     | S/R IMPLDIFF                                             |  C     | S/R IMPLDIFF                                             |
7  C     | o Solve implicit diffusion equation for vertical         |  C     | o Solve implicit diffusion equation for vertical         |
8  C     |   diffusivity.                                           |  C     |   diffusivity.                                           |
9  C     | o Recoded from 2d intermediate fields to 3d to reduce    |  C     | o Recoded from 2d intermediate fields to 3d to reduce    |
10  C     |   TAMC storage                                           |  C     |   TAMC storage                                           |
11  C     | o Fixed missing masks for fields a(), c()                |  C     | o Fixed missing masks for fields a(), c()                |
12  C     \==========================================================/  C     |==========================================================|
13        SUBROUTINE IMPLDIFF( bi, bj, iMin, iMax, jMin, jMax,        SUBROUTINE IMPLDIFF( bi, bj, iMin, iMax, jMin, jMax,
14       I                     deltaTX,KappaRX,recip_hFac,       I                     deltaTX,KappaRX,recip_hFac,
15       U                     gXNm1,       U                     gXNm1,
# Line 43  C     == Local variables == Line 43  C     == Local variables ==
43        _RL bet(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)        _RL bet(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
44        _RL gam(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)        _RL gam(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
45    
 #ifdef ALLOW_AUTODIFF_TAMC  
       INTEGER kkey  
 #endif  
   
46  C--   Initialise  C--   Initialise
47    
48  C--   Old aLower  C--   Old aLower
49        DO j=1-Oly,sNy+Oly        DO j=jMin,jMax
50         DO i=1-Olx,sNx+Olx         DO i=iMin,iMax
51           a(i,j,1) = 0. _d 0           a(i,j,1) = 0. _d 0
52         ENDDO         ENDDO
53        ENDDO        ENDDO
54        DO k=2,Nr        DO k=2,Nr
55         DO j=1-Oly,sNy+Oly         DO j=jMin,jMax
56          DO i=1-Olx,sNx+Olx          DO i=iMin,iMax
57            a(i,j,k) = -deltaTX*recip_hFac(i,j,k,bi,bj)*recip_drF(k)            a(i,j,k) = -deltaTX*recip_hFac(i,j,k,bi,bj)*recip_drF(k)
58       &               *KappaRX(i,j, k )*recip_drC( k )       &               *KappaRX(i,j, k )*recip_drC( k )
59          ENDDO          ENDDO
# Line 66  C--   Old aLower Line 62  C--   Old aLower
62    
63  C--   Old aUpper  C--   Old aUpper
64        DO k=1,Nr-1        DO k=1,Nr-1
65         DO j=1-Oly,sNy+Oly         DO j=jMin,jMax
66          DO i=1-Olx,sNx+Olx          DO i=iMin,iMax
67            c(i,j,k) = -deltaTX*recip_hFac(i,j,k,bi,bj)*recip_drF(k)            c(i,j,k) = -deltaTX*recip_hFac(i,j,k,bi,bj)*recip_drF(k)
68       &               *KappaRX(i,j,k+1)*recip_drC(k+1)       &               *KappaRX(i,j,k+1)*recip_drC(k+1)
69            IF (recip_hFac(i,j,k+1,bi,bj).EQ.0.) c(i,j,k)=0.            IF (recip_hFac(i,j,k+1,bi,bj).EQ.0.) c(i,j,k)=0.
70          ENDDO          ENDDO
71         ENDDO         ENDDO
72        ENDDO        ENDDO
73        DO j=1-Oly,sNy+Oly        DO j=jMin,jMax
74         DO i=1-Olx,sNx+Olx         DO i=iMin,iMax
75           c(i,j,Nr) = 0. _d 0           c(i,j,Nr) = 0. _d 0
76         ENDDO         ENDDO
77        ENDDO        ENDDO
78    
79  C--   Old aCenter  C--   Old aCenter
80        DO k=1,Nr        DO k=1,Nr
81         DO j=1-Oly,sNy+Oly         DO j=jMin,jMax
82          DO i=1-Olx,sNx+Olx          DO i=iMin,iMax
83            b(i,j,k) = 1. _d 0 - c(i,j,k) - a(i,j,k)            b(i,j,k) = 1. _d 0 - c(i,j,k) - a(i,j,k)
84          ENDDO          ENDDO
85         ENDDO         ENDDO
# Line 91  C--   Old aCenter Line 87  C--   Old aCenter
87    
88  C--   Old and new gam, bet are the same  C--   Old and new gam, bet are the same
89        DO k=1,Nr        DO k=1,Nr
90         DO j=1-Oly,sNy+Oly         DO j=jMin,jMax
91          DO i=1-Olx,sNx+Olx          DO i=iMin,iMax
92            bet(i,j,k) = 0. _d 0            bet(i,j,k) = 0. _d 0
93            gam(i,j,k) = 0. _d 0            gam(i,j,k) = 0. _d 0
94          ENDDO          ENDDO
# Line 118  C--   Middle of forward sweep Line 114  C--   Middle of forward sweep
114  CADJ loop = sequential  CADJ loop = sequential
115         DO k=2,Nr         DO k=2,Nr
116    
 #ifdef ALLOW_AUTODIFF_TAMC  
         kkey = (idkey-1)*(Nr-2) + k-1  
 #endif  
   
117          DO j=jMin,jMax          DO j=jMin,jMax
118           DO i=iMin,iMax           DO i=iMin,iMax
119            gam(i,j,k) = c(i,j,k-1)*bet(i,j,k-1)            gam(i,j,k) = c(i,j,k-1)*bet(i,j,k-1)

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.22