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

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

  ViewVC Help
Powered by ViewVC 1.1.22