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

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

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


Revision 1.4 - (hide annotations) (download)
Tue Jun 7 21:05:13 2011 UTC (12 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint65, checkpoint63, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint62z, HEAD
Changes since 1.3: +6 -3 lines
refine debugLevel criteria when writing to log file

1 jmc 1.4 C $Header: /u/gcmpack/MITgcm/pkg/down_slope/dwnslp_calc_flow.F,v 1.3 2010/04/23 13:19:26 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "DWNSLP_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: DWNSLP_CALC_FLOW
8     C !INTERFACE:
9     SUBROUTINE DWNSLP_CALC_FLOW(
10 jmc 1.2 I bi, bj, kBottom, rho3d,
11 jmc 1.1 I myTime, myIter, myThid )
12 jmc 1.4
13 jmc 1.1 C !DESCRIPTION: \bv
14     C *==========================================================*
15     C | SUBROUTINE DWNSLP_CALC_FLOW
16     C | o Detect active site of Down-Sloping flow and compute
17     C | the corresponding volume transport
18     C *==========================================================*
19     C \ev
20    
21     C !USES:
22     IMPLICIT NONE
23    
24     C === Global variables ===
25     #include "SIZE.h"
26     #include "EEPARAMS.h"
27     #include "PARAMS.h"
28     #include "DWNSLP_SIZE.h"
29     #include "DWNSLP_PARAMS.h"
30     #include "DWNSLP_VARS.h"
31    
32     C !INPUT/OUTPUT PARAMETERS:
33     C === Routine arguments ===
34     C bi,bj :: Tile indices
35     C kBottom :: Vertical index of bottom grid cell.
36 jmc 1.2 C rho3d :: In-situ density [kg/m3] computed at z=rC ;
37 jmc 1.1 C myTime :: Current time in simulation
38     C myIter :: Current time-step number
39     C myThid :: my Thread Id number
40     INTEGER bi, bj
41 jmc 1.2 INTEGER kBottom( xySize, nSx,nSy )
42     _RL rho3d ( xySize, Nr,nSx,nSy )
43 jmc 1.1 _RL myTime
44     INTEGER myIter, myThid
45    
46     #ifdef ALLOW_DOWN_SLOPE
47    
48     C !LOCAL VARIABLES:
49     C === Local variables ===
50 jmc 1.4 C msgBuf :: Informational/error message buffer
51 jmc 1.1 C ijd :: horiz. index of deep water column receiving dense water flow
52     C ijs :: horiz. index of shallow water column (e.g. shelf)
53     C from which dense water flow originates
54     c CHARACTER*(MAX_LEN_MBUF) msgBuf
55     INTEGER k
56     INTEGER n, ijd, ijr, ijs
57     INTEGER kdeep, ishelf, jshelf, kshelf
58     _RL dRhoH
59     INTEGER downward
60     #ifdef ALLOW_DIAGNOSTICS
61     LOGICAL doDiagDwnSlpFlow
62     INTEGER ij
63     _RL sgnFac
64     _RL uFlow( xySize )
65     _RL vFlow( xySize )
66     C- Functions:
67     LOGICAL DIAGNOSTICS_IS_ON
68     EXTERNAL DIAGNOSTICS_IS_ON
69     #endif /* ALLOW_DIAGNOSTICS */
70    
71     CEOP
72    
73     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
74    
75     c downward = rkSign*NINT(gravitySign)
76     downward = 1
77     IF ( usingPCoords ) downward = -1
78    
79     #ifdef ALLOW_DIAGNOSTICS
80     IF ( useDiagnostics ) THEN
81     doDiagDwnSlpFlow = DIAGNOSTICS_IS_ON( 'DSLPuFlw', myThid )
82     & .OR. DIAGNOSTICS_IS_ON( 'DSLPvFlw', myThid )
83     IF ( doDiagDwnSlpFlow ) THEN
84     DO ij=1,xySize
85     uFlow(ij) = 0. _d 0
86     vFlow(ij) = 0. _d 0
87     ENDDO
88     ENDIF
89     ELSE
90     doDiagDwnSlpFlow = .FALSE.
91     ENDIF
92     #endif /* ALLOW_DIAGNOSTICS */
93    
94     DO n=1,DWNSLP_NbSite(bi,bj)
95     DWNSLP_deepK(n,bi,bj) = 0
96    
97 jmc 1.3 C- detect density gradient along the slope => Downsloping flow
98 jmc 1.1
99     ijd = DWNSLP_ijDeep(n,bi,bj)
100     ijr = DWNSLP_shVsD(n,bi,bj)
101     ijs = ijd + ijr
102     kshelf = kBottom(ijs,bi,bj)
103    
104 jmc 1.2 dRhoH = rho3d(ijs,kshelf,bi,bj)
105     & -rho3d(ijd,kshelf,bi,bj)
106 jmc 1.1 c IF ( dRhoH.GT.0. _d 0 ) THEN
107 jmc 1.2 IF ( rho3d(ijs,kshelf+1,bi,bj).GT.rho3d(ijd,kshelf+1,bi,bj)
108 jmc 1.1 & .AND. dRhoH.GT.0. _d 0 ) THEN
109    
110     C- search for deepest level where Rho_shelf > Rho_deep
111     kdeep = kshelf
112     DO k=kshelf+1,kBottom(ijd,bi,bj),downward
113 jmc 1.2 IF ( rho3d(ijs,k,bi,bj).GT.rho3d(ijd,k,bi,bj) ) kdeep = k
114 jmc 1.1 ENDDO
115     DWNSLP_deepK(n,bi,bj) = kdeep
116    
117     C- Compute the Volume Transport :
118     C- same formulation as described in the paper:
119     c downslpFlow = DWNSLP_gamma/mu *gravity*dRhoH*recip_rhoConst
120     C with DWNSLP_Gamma = slope * effective cross-section area
121     DWNSLP_Transp(n,bi,bj) = DWNSLP_Gamma(n,bi,bj)
122     & *DWNSLP_rec_mu*gravity*dRhoH*recip_rhoConst
123    
124     #ifdef ALLOW_DIAGNOSTICS
125     IF ( doDiagDwnSlpFlow ) THEN
126     ij = MAX( ijd, ijs )
127     sgnFac = SIGN(1,-ijr)
128     IF ( ABS(ijr).EQ.1 ) THEN
129     uFlow(ij) = sgnFac*DWNSLP_Transp(n,bi,bj)
130     ELSE
131     vFlow(ij) = sgnFac*DWNSLP_Transp(n,bi,bj)
132     ENDIF
133     ENDIF
134     #endif /* ALLOW_DIAGNOSTICS */
135    
136     ENDIF
137    
138     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
139     ENDDO
140    
141 jmc 1.4 IF ( DWNSLP_ioUnit.GT.0 ) THEN
142     _BEGIN_MASTER(myThid)
143 jmc 1.1 WRITE(DWNSLP_ioUnit,'(A,I8,2I4)')
144     & ' DWNSLP_CALC_FLOW: iter,bi,bj=',myIter,bi,bj
145     WRITE(DWNSLP_ioUnit,'(A)')
146     & ' bi bj n : ijd ijr is js ; ks kd-s Transp :'
147     DO n=1,DWNSLP_NbSite(bi,bj)
148     IF (DWNSLP_deepK(n,bi,bj).NE.0) THEN
149     ijs = DWNSLP_ijDeep(n,bi,bj) + DWNSLP_shVsD(n,bi,bj)
150     ishelf = 1-OLx + mod(ijs-1,xSize)
151     jshelf = 1-OLy + (ijs-1)/xSize
152     kshelf = kBottom(ijs,bi,bj)
153     WRITE(DWNSLP_ioUnit,'(2I4,I6,A,I8,I6,2I4,A,2I4,1PE14.6)')
154     & bi,bj,n,' :', DWNSLP_ijDeep(n,bi,bj),
155     & DWNSLP_shVsD(n,bi,bj), ishelf,jshelf,
156     & ' ;', kshelf, DWNSLP_deepK(n,bi,bj)-kshelf,
157     & DWNSLP_Transp(n,bi,bj)
158     ENDIF
159     ENDDO
160     WRITE(DWNSLP_ioUnit,*)
161 jmc 1.4 _END_MASTER(myThid)
162 jmc 1.1 ENDIF
163    
164     #ifdef ALLOW_DIAGNOSTICS
165     IF ( doDiagDwnSlpFlow ) THEN
166     CALL DIAGNOSTICS_FILL( uFlow, 'DSLPuFlw', 0,1,2,bi,bj,myThid )
167     CALL DIAGNOSTICS_FILL( vFlow, 'DSLPvFlw', 0,1,2,bi,bj,myThid )
168     ENDIF
169     #endif /* ALLOW_DIAGNOSTICS */
170    
171     #endif /* ALLOW_DOWN_SLOPE */
172    
173     RETURN
174     END

  ViewVC Help
Powered by ViewVC 1.1.22