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

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

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

revision 1.36 by jmc, Wed Nov 10 03:02:00 2004 UTC revision 1.37 by jmc, Fri Apr 15 14:17:31 2005 UTC
# Line 135  C--   Forcing term inside the Adams-Bash Line 135  C--   Forcing term inside the Adams-Bash
135       I     myTime,myThid)       I     myTime,myThid)
136        ENDIF        ENDIF
137    
138          IF (useCDscheme) THEN
139    C-     for CD-scheme, store gU,Vtmp = gU,V^n + forcing
140            DO j=jMin,jMax
141             DO i=iMin,iMax
142              gUtmp(i,j) = gU(i,j,k,bi,bj)
143              gVtmp(i,j) = gV(i,j,k,bi,bj)
144             ENDDO
145            ENDDO
146          ENDIF
147    
148  C-    Compute effective gU,gV_[n+1/2] terms (including Adams-Bashforth weights)  C-    Compute effective gU,gV_[n+1/2] terms (including Adams-Bashforth weights)
149  C     and save gU,gV_[n] into guNm1,gvNm1 for the next time step.  C     and save gU,gV_[n] into guNm1,gvNm1 for the next time step.
150        DO j=jMin,jMax  #ifdef ALLOW_ADAMSBASHFORTH_3
151         DO i=iMin,iMax        CALL ADAMS_BASHFORTH3(
152          gUtmp(i,j) = ab15*gU(i,j,k,bi,bj)       I                        bi, bj, k,
153       &             + ab05*guNm1(i,j,k,bi,bj)         U                        gU, guNm,
154          gVtmp(i,j) = ab15*gV(i,j,k,bi,bj)       I                        myIter, myThid )
155       &             + ab05*gvNm1(i,j,k,bi,bj)          CALL ADAMS_BASHFORTH3(
156          guNm1(i,j,k,bi,bj)= gU(i,j,k,bi,bj)       I                        bi, bj, k,
157          gvNm1(i,j,k,bi,bj)= gV(i,j,k,bi,bj)       U                        gV, gvNm,
158          gU(i,j,k,bi,bj) = gUtmp(i,j)       I                        myIter, myThid )
159          gV(i,j,k,bi,bj) = gVtmp(i,j)  #else /* ALLOW_ADAMSBASHFORTH_3 */
160         ENDDO        CALL ADAMS_BASHFORTH2(
161        ENDDO       I                        bi, bj, k,
162         U                        gU, guNm1,
163         I                        myIter, myThid )
164          CALL ADAMS_BASHFORTH2(
165         I                        bi, bj, k,
166         U                        gV, gvNm1,
167         I                        myIter, myThid )
168    #endif /* ALLOW_ADAMSBASHFORTH_3 */
169                
170  C--   Forcing term outside the Adams-Bashforth:  C--   Forcing term outside the Adams-Bashforth:
171  C     (not recommanded with CD-scheme ON)  C     (not recommanded with CD-scheme ON)
172        IF (momForcing .AND. .NOT.momForcing_In_AB) THEN        IF (momForcing .AND. .NOT.momForcing_In_AB) THEN
173           IF (useCDscheme) THEN
174            DO j=jMin,jMax
175             DO i=iMin,iMax
176              gUtmp(i,j) = gUtmp(i,j) - gU(i,j,k,bi,bj)
177              gVtmp(i,j) = gVtmp(i,j) - gV(i,j,k,bi,bj)
178             ENDDO
179            ENDDO
180           ENDIF
181          CALL EXTERNAL_FORCING_U(          CALL EXTERNAL_FORCING_U(
182       I     iMin,iMax,jMin,jMax,bi,bj,k,       I     iMin,iMax,jMin,jMax,bi,bj,k,
183       I     myTime,myThid)       I     myTime,myThid)
184          CALL EXTERNAL_FORCING_V(          CALL EXTERNAL_FORCING_V(
185       I     iMin,iMax,jMin,jMax,bi,bj,k,       I     iMin,iMax,jMin,jMax,bi,bj,k,
186       I     myTime,myThid)       I     myTime,myThid)
187         IF (useCDscheme) THEN  
188  C-     for CD-scheme, compute gU,Vtmp = gU,V^n + forcing  C-     for CD-scheme, compute gU,Vtmp = gU,V^n + forcing
189           IF (useCDscheme) THEN
190          DO j=jMin,jMax          DO j=jMin,jMax
191           DO i=iMin,iMax           DO i=iMin,iMax
192            gUtmp(i,j) = gU(i,j,k,bi,bj)-gUtmp(i,j)            gUtmp(i,j) = gUtmp(i,j) + gU(i,j,k,bi,bj)
193       &               + guNm1(i,j,k,bi,bj)            gVtmp(i,j) = gVtmp(i,j) + gV(i,j,k,bi,bj)
           gVtmp(i,j) = gV(i,j,k,bi,bj)-gVtmp(i,j)  
      &               + gvNm1(i,j,k,bi,bj)  
          ENDDO  
         ENDDO  
        ELSE  
         DO j=jMin,jMax  
          DO i=iMin,iMax  
           gUtmp(i,j) = gU(i,j,k,bi,bj)  
           gVtmp(i,j) = gV(i,j,k,bi,bj)  
194           ENDDO           ENDDO
195          ENDDO          ENDDO
196         ENDIF         ENDIF
       ELSEIF ( useCDscheme) THEN  
         DO j=jMin,jMax  
          DO i=iMin,iMax  
           gUtmp(i,j) = guNm1(i,j,k,bi,bj)  
           gVtmp(i,j) = gvNm1(i,j,k,bi,bj)  
          ENDDO  
         ENDDO  
197        ENDIF        ENDIF
198    
199  #ifdef ALLOW_CD_CODE  #ifdef ALLOW_CD_CODE
# Line 202  C      and return coriolis terms on C-gr Line 212  C      and return coriolis terms on C-gr
212       &               + gvCor(i,j)       &               + gvCor(i,j)
213           ENDDO           ENDDO
214          ENDDO          ENDDO
215        ENDIF        ELSE
216  #endif /* ALLOW_CD_CODE */  #endif /* ALLOW_CD_CODE */
217            DO j=jMin,jMax
218             DO i=iMin,iMax
219              gUtmp(i,j) = gU(i,j,k,bi,bj)
220              gVtmp(i,j) = gV(i,j,k,bi,bj)
221             ENDDO
222            ENDDO
223    #ifdef ALLOW_CD_CODE
224          ENDIF
225    #endif
226    
227  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
228        IF (.NOT. vectorInvariantMomentum        IF (.NOT. vectorInvariantMomentum

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.37

  ViewVC Help
Powered by ViewVC 1.1.22