/[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.28 by jmc, Sun Jan 26 21:06:11 2003 UTC revision 1.29 by jmc, Sat Feb 8 02:09:20 2003 UTC
# Line 7  CBOP Line 7  CBOP
7  C     !ROUTINE: TIMESTEP  C     !ROUTINE: TIMESTEP
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE TIMESTEP( bi, bj, iMin, iMax, jMin, jMax, K,        SUBROUTINE TIMESTEP( bi, bj, iMin, iMax, jMin, jMax, K,
10       I                     phiHyd, phiSurfX, phiSurfY,       I             phiHyd, dPhiHydX,dPhiHydY, phiSurfX, phiSurfY,
11       I                     myIter, myThid )       I                     myIter, myThid )
12  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
13  C     *==========================================================*  C     *==========================================================*
# Line 28  C     == Global variables == Line 28  C     == Global variables ==
28    
29  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
30  C     == Routine Arguments ==  C     == Routine Arguments ==
31  C     phiHyd    - Hydrostatic Potential (ocean: pressure/rho)  C     phiHyd     :: Hydrostatic Potential (ocean: pressure/rho)
32  C                                       (atmos: geopotentiel)  C                                         (atmos: geopotential)
33  C     phiSurfX, - gradient of Surface potentiel (Pressure/rho, ocean)  C     dPhiHydX,Y :: Gradient (X & Y directions) of Hydrostatic Potential
34  C     phiSurfY             or geopotentiel (atmos) in X and Y direction  C     phiSurfX :: gradient of Surface potential (Pressure/rho, ocean)
35    C     phiSurfY ::          or geopotential (atmos) in X and Y direction
36        INTEGER bi,bj,iMin,iMax,jMin,jMax        INTEGER bi,bj,iMin,iMax,jMin,jMax
37        INTEGER K        INTEGER K
38        _RL     phiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL     phiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
39          _RL     dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
40          _RL     dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
41        _RL     phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL     phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42        _RL     phiSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL     phiSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
43        INTEGER myIter, myThid        INTEGER myIter, myThid
# Line 57  C     Adams-Bashforth timestepping weigh Line 60  C     Adams-Bashforth timestepping weigh
60         ab05=-0.5-abeps         ab05=-0.5-abeps
61        ENDIF        ENDIF
62    
63    C-- stagger time step: grad Phi_Hyp is not in gU,gV => add it in this S/R
64    c     IF (staggerTimeStep) THEN
65          IF (.FALSE.) THEN
66            phxFac = pfFacMom
67            phyFac = pfFacMom
68          ELSE
69            phxFac = 0.
70            phyFac = 0.
71          ENDIF
72    
73    C-- explicit part of the surface potential gradient is added in this S/R
74          psFac = pfFacMom*(1. _d 0 - implicSurfPress)
75    
76  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
77  C-    Compute effective gU term (including Adams-Bashforth weights) :  C-    Compute effective gU term (including Adams-Bashforth weights) :
78        DO j=jMin,jMax        DO j=jMin,jMax
# Line 92  C-    Compute effective gU term (includi Line 108  C-    Compute effective gU term (includi
108  #endif  #endif
109    
110  C     Step forward zonal velocity (store in Gu)  C     Step forward zonal velocity (store in Gu)
       psFac = pfFacMom*(1. _d 0 - implicSurfPress)  
111        DO j=jMin,jMax        DO j=jMin,jMax
112          DO i=iMin,iMax          DO i=iMin,iMax
113            gUNm1(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)            gUNm1(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)
114       &     +deltaTmom*(       &     +deltaTmom*(
115       &         gUtmp(i,j)       &         gUtmp(i,j)
116       &       - psFac*phiSurfX(i,j)       &       - psFac*phiSurfX(i,j)
117         &       - phxFac*dPhiHydX(i,j)
118       &        )*_maskW(i,j,k,bi,bj)       &        )*_maskW(i,j,k,bi,bj)
119          ENDDO          ENDDO
120        ENDDO        ENDDO
121    
122    c     IF (.FALSE.) THEN
123        IF (staggerTimeStep) THEN        IF (staggerTimeStep) THEN
124  C--   -grad Phi_Hyd has not been incorporated to gU and is added here:  C--   -grad Phi_Hyd has not been incorporated to gU and is added here:
125          phxFac = pfFacMom*deltaTmom          phxFac = pfFacMom*deltaTmom
126          DO j=jMin,jMax          DO j=jMin,jMax
127            DO i=iMin,iMax            DO i=iMin,iMax
128              gUNm1(i,j,k,bi,bj)=gUNm1(i,j,k,bi,bj)              gUNm1(i,j,k,bi,bj)=gUNm1(i,j,k,bi,bj)
129    c    &       - phxFac*dPhiHydX(i,j)*_maskW(i,j,k,bi,bj)
130       &       - _recip_dxC(i,j,bi,bj)       &       - _recip_dxC(i,j,bi,bj)
131       &         *(phiHyd(i,j,k)-phiHyd(i-1,j,k))*phxFac       &         *(phiHyd(i,j,k)-phiHyd(i-1,j,k))*phxFac
132       &         *_maskW(i,j,k,bi,bj)       &         *_maskW(i,j,k,bi,bj)
# Line 151  C-    Compute effective gV term (includi Line 169  C-    Compute effective gV term (includi
169  #endif  #endif
170    
171  C     Step forward meridional velocity (store in Gv)  C     Step forward meridional velocity (store in Gv)
       psFac = pfFacMom*(1. _d 0 - implicSurfPress)  
172        DO j=jMin,jMax        DO j=jMin,jMax
173          DO i=iMin,iMax          DO i=iMin,iMax
174            gVNm1(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)            gVNm1(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)
175       &     +deltaTmom*(       &     +deltaTmom*(
176       &         gVtmp(i,j)       &         gVtmp(i,j)
177       &       - psFac*phiSurfY(i,j)       &       - psFac*phiSurfY(i,j)
178         &       - phyFac*dPhiHydY(i,j)
179       &        )*_maskS(i,j,k,bi,bj)       &        )*_maskS(i,j,k,bi,bj)
180          ENDDO          ENDDO
181        ENDDO        ENDDO
182    
183    c     IF (.FALSE.) THEN
184        IF (staggerTimeStep) THEN        IF (staggerTimeStep) THEN
185  C--   -grad Phi_Hyd has not been incorporated to gV and is added here:  C--   -grad Phi_Hyd has not been incorporated to gV and is added here:
186          phyFac = pfFacMom*deltaTmom          phyFac = pfFacMom*deltaTmom
187          DO j=jMin,jMax          DO j=jMin,jMax
188            DO i=iMin,iMax            DO i=iMin,iMax
189              gVNm1(i,j,k,bi,bj)=gVNm1(i,j,k,bi,bj)              gVNm1(i,j,k,bi,bj)=gVNm1(i,j,k,bi,bj)
190    c    &       - phyFac*dPhiHydY(i,j)*_maskS(i,j,k,bi,bj)
191       &       - _recip_dyC(i,j,bi,bj)       &       - _recip_dyC(i,j,bi,bj)
192       &         *(phiHyd(i,j,k)-phiHyd(i,j-1,k))*phyFac       &         *(phiHyd(i,j,k)-phiHyd(i,j-1,k))*phyFac
193       &         *_maskS(i,j,k,bi,bj)       &         *_maskS(i,j,k,bi,bj)

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.29

  ViewVC Help
Powered by ViewVC 1.1.22