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

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

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

revision 1.2 by adcroft, Mon Jun 1 22:27:14 1998 UTC revision 1.10 by cnh, Fri Nov 6 22:44:45 1998 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2    
3  #include "CPP_EEOPTIONS.h"  #include "CPP_OPTIONS.h"
4    
5  C     /==========================================================\  C     /==========================================================\
6  C     | S/R CORRECTION_STEP                                      |  C     | S/R CORRECTION_STEP                                      |
7  C     | o Corrects the horizontal flow fields with the surface   |  C     | o Corrects the horizontal flow fields with the surface   |
8  C     |   pressure gradient.                                     |  C     |   slope.                                                 |
9  C     \==========================================================/  C     \==========================================================/
10        SUBROUTINE CORRECTION_STEP( bi, bj, iMin, iMax, jMin, jMax,        SUBROUTINE CORRECTION_STEP( bi, bj, iMin, iMax, jMin, jMax,
11       I                       K, pSurfX, pSurfY,       I                       K, etaSurfX, etaSurfY,
12       I                       myThid )       I                       myCurrentTime, myThid )
13        implicit none        IMPLICIT NONE
14  ! Common  ! Common
15  #include "SIZE.h"  #include "SIZE.h"
16  #include "DYNVARS.h"  #include "DYNVARS.h"
17    #include "EEPARAMS.h"
18  #include "PARAMS.h"  #include "PARAMS.h"
19  #include "GRID.h"  #include "GRID.h"
 #include "EEPARAMS.h"  
20  #include "CG2D.h"  #include "CG2D.h"
21  C     == Routine Arguments ==  C     == Routine Arguments ==
22    C     etaSurfX, etaSurfY           - Surface slope
23    C     bi,bj,iMin,iMax,jMin,jMax, K - Loop counters
24    C     myThid                       - Instance number for
25    C                                    this call to S/R CORRECTION_STEP
26    C     myCurrentTime                - Current simulation time for this instance.
27          _RL  etaSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
28          _RL  etaSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
29        INTEGER bi,bj,iMin,iMax,jMin,jMax        INTEGER bi,bj,iMin,iMax,jMin,jMax
30        INTEGER K        INTEGER K
       _RL  pSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
       _RL  pSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
31        INTEGER myThid        INTEGER myThid
32          _RL myCurrentTime
33    
34  C     == Local variables ==  C     == Local variables ==
35        INTEGER i,j        INTEGER i,j
36        _RL ab15,ab05,hxFac,hyFac,rRhoNil        _RL hxFac,hyFac,rRhoNil
   
 C     Adams-Bashforth timestepping weights  
       ab15=1.5+abeps  
       ab05=-0.5-abeps  
37    
38  C     On/off scaling paramters  C     On/off scaling paramters
39        hxFac = pfFacMom        hxFac = pfFacMom
40        hyFac = pfFacMom        hyFac = pfFacMom
41    
       rRhoNil=1. / rhonil  
   
42  C     Step forward zonal velocity  C     Step forward zonal velocity
43        DO j=jMin,jMax        DO j=jMin,jMax
44         DO i=iMin,iMax         DO i=iMin,iMax
45          uVel(i,j,k,bi,bj)=( gUNm1(i,j,k,bi,bj)          uVel(i,j,k,bi,bj)=( gUNm1(i,j,k,bi,bj)
46       &       -deltaTmom*hxFac*rRhonil *pSurfX(i,j)       &       -deltaTmom*hxFac*gBaro*etaSurfX(i,j)
47       &                    )*_maskW(i,j,k,bi,bj)       &                    )*_maskW(i,j,k,bi,bj)
48          gUNm1(i,j,k,bi,bj)=gU(i,j,k,bi,bj)          gUNm1(i,j,k,bi,bj)=gU(i,j,k,bi,bj)
49         ENDDO         ENDDO
# Line 52  C     Step forward meridional velocity Line 53  C     Step forward meridional velocity
53        DO j=jMin,jMax        DO j=jMin,jMax
54         DO i=iMin,iMax         DO i=iMin,iMax
55          vVel(i,j,k,bi,bj)=( gVNm1(i,j,k,bi,bj)          vVel(i,j,k,bi,bj)=( gVNm1(i,j,k,bi,bj)
56       &       -deltaTmom*hyFac*rRhonil *pSurfY(i,j)       &       -deltaTmom*hyFac*gBaro*etaSurfY(i,j)
57       &                    )*_maskS(i,j,k,bi,bj)       &                    )*_maskS(i,j,k,bi,bj)
58          gVNm1(i,j,k,bi,bj)=gV(i,j,k,bi,bj)          gVNm1(i,j,k,bi,bj)=gV(i,j,k,bi,bj)
59         ENDDO         ENDDO
60        ENDDO        ENDDO
61    
62    C     Rotate theta/gT/gTnm1
63          IF ( tempStepping ) THEN
64           DO j=jMin,jMax
65            DO i=iMin,iMax
66             theta(i,j,k,bi,bj)=gTNm1(i,j,k,bi,bj)
67             gTNm1(i,j,k,bi,bj)=gT(i,j,k,bi,bj)
68            ENDDO
69           ENDDO
70          ENDIF
71    
72    C     Rotate salt/gS/gSnm1
73          IF ( saltStepping ) THEN
74           DO j=jMin,jMax
75            DO i=iMin,iMax
76             salt(i,j,k,bi,bj)=gSNm1(i,j,k,bi,bj)
77             gSNm1(i,j,k,bi,bj)=gS(i,j,k,bi,bj)
78            ENDDO
79           ENDDO
80          ENDIF
81    
82        RETURN        RETURN
83        END        END

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22