/[MITgcm]/MITgcm/pkg/down_slope/dwnslp_calc_flow.F
ViewVC logotype

Diff of /MITgcm/pkg/down_slope/dwnslp_calc_flow.F

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

revision 1.1 by jmc, Sun Aug 17 02:01:27 2008 UTC revision 1.3 by jmc, Fri Apr 23 13:19:26 2010 UTC
# Line 7  CBOP Line 7  CBOP
7  C     !ROUTINE: DWNSLP_CALC_FLOW  C     !ROUTINE: DWNSLP_CALC_FLOW
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE DWNSLP_CALC_FLOW(        SUBROUTINE DWNSLP_CALC_FLOW(
10       I                             bi, bj, kBottom,       I                             bi, bj, kBottom, rho3d,
      I                             rhoInSitu,  
11       I                             myTime, myIter, myThid )       I                             myTime, myIter, myThid )
12  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
13  C     *==========================================================*  C     *==========================================================*
# Line 33  C     !INPUT/OUTPUT PARAMETERS: Line 32  C     !INPUT/OUTPUT PARAMETERS:
32  C     === Routine arguments ===  C     === Routine arguments ===
33  C     bi,bj     :: Tile indices  C     bi,bj     :: Tile indices
34  C     kBottom   :: Vertical index of bottom grid cell.  C     kBottom   :: Vertical index of bottom grid cell.
35  C     rhoInSitu :: In-situ density [kg/m3] computed at z=rC ;  C     rho3d     :: In-situ density [kg/m3] computed at z=rC ;
36  C     myTime    :: Current time in simulation  C     myTime    :: Current time in simulation
37  C     myIter    :: Current time-step number  C     myIter    :: Current time-step number
38  C     myThid    :: my Thread Id number  C     myThid    :: my Thread Id number
39        INTEGER bi, bj        INTEGER bi, bj
40        INTEGER kBottom  ( xySize, nSx,nSy )        INTEGER kBottom( xySize, nSx,nSy )
41        _RL     rhoInSitu( xySize, Nr )        _RL     rho3d  ( xySize, Nr,nSx,nSy )
42        _RL     myTime        _RL     myTime
43        INTEGER myIter, myThid        INTEGER myIter, myThid
44    
# Line 47  C     myThid    :: my Thread Id number Line 46  C     myThid    :: my Thread Id number
46    
47  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
48  C     === Local variables ===  C     === Local variables ===
49  C     msgBuf     :: Informational/error meesage buffer  C     msgBuf     :: Informational/error message buffer
50  C     ijd     :: horiz. index of deep water column receiving dense water flow  C     ijd     :: horiz. index of deep water column receiving dense water flow
51  C     ijs     :: horiz. index of shallow water column (e.g. shelf)  C     ijs     :: horiz. index of shallow water column (e.g. shelf)
52  C                from which dense water flow originates  C                from which dense water flow originates
# Line 94  c     downward = rkSign*NINT(gravitySign Line 93  c     downward = rkSign*NINT(gravitySign
93        DO n=1,DWNSLP_NbSite(bi,bj)        DO n=1,DWNSLP_NbSite(bi,bj)
94          DWNSLP_deepK(n,bi,bj) = 0          DWNSLP_deepK(n,bi,bj) = 0
95    
96  C- detect density dradient along the slope => Downsloping flow  C- detect density gradient along the slope => Downsloping flow
97    
98          ijd = DWNSLP_ijDeep(n,bi,bj)          ijd = DWNSLP_ijDeep(n,bi,bj)
99          ijr = DWNSLP_shVsD(n,bi,bj)          ijr = DWNSLP_shVsD(n,bi,bj)
100          ijs = ijd + ijr          ijs = ijd + ijr
101          kshelf = kBottom(ijs,bi,bj)          kshelf = kBottom(ijs,bi,bj)
102    
103          dRhoH = rhoInSitu(ijs,kshelf)          dRhoH = rho3d(ijs,kshelf,bi,bj)
104       &         -rhoInSitu(ijd,kshelf)       &         -rho3d(ijd,kshelf,bi,bj)
105  c       IF ( dRhoH.GT.0. _d 0 ) THEN  c       IF ( dRhoH.GT.0. _d 0 ) THEN
106          IF ( rhoInSitu(ijs,kshelf+1).GT.rhoInSitu(ijd,kshelf+1)          IF ( rho3d(ijs,kshelf+1,bi,bj).GT.rho3d(ijd,kshelf+1,bi,bj)
107       &    .AND. dRhoH.GT.0. _d 0 ) THEN       &    .AND. dRhoH.GT.0. _d 0 ) THEN
108    
109  C- search for deepest level where Rho_shelf > Rho_deep  C- search for deepest level where Rho_shelf > Rho_deep
110            kdeep = kshelf            kdeep = kshelf
111            DO k=kshelf+1,kBottom(ijd,bi,bj),downward            DO k=kshelf+1,kBottom(ijd,bi,bj),downward
112             IF ( rhoInSitu(ijs,k).GT.rhoInSitu(ijd,k) ) kdeep = k             IF ( rho3d(ijs,k,bi,bj).GT.rho3d(ijd,k,bi,bj) ) kdeep = k
113            ENDDO            ENDDO
114            DWNSLP_deepK(n,bi,bj) = kdeep            DWNSLP_deepK(n,bi,bj) = kdeep
115    
# Line 160  C---+----1----+----2----+----3----+----4 Line 159  C---+----1----+----2----+----3----+----4
159        ENDIF        ENDIF
160    
161  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
 c     IF ( useDiagnostics ) THEN  
 c       CALL DIAGNOSTICS_FILL(rhoInSitu,'RHOAnExt',0,Nr,2,bi,bj,myThid)  
 c     ENDIF  
162        IF ( doDiagDwnSlpFlow ) THEN        IF ( doDiagDwnSlpFlow ) THEN
163          CALL DIAGNOSTICS_FILL( uFlow, 'DSLPuFlw', 0,1,2,bi,bj,myThid )          CALL DIAGNOSTICS_FILL( uFlow, 'DSLPuFlw', 0,1,2,bi,bj,myThid )
164          CALL DIAGNOSTICS_FILL( vFlow, 'DSLPvFlw', 0,1,2,bi,bj,myThid )          CALL DIAGNOSTICS_FILL( vFlow, 'DSLPvFlw', 0,1,2,bi,bj,myThid )

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22