/[MITgcm]/MITgcm/pkg/gmredi/gmredi_calc_uvflow.F
ViewVC logotype

Contents of /MITgcm/pkg/gmredi/gmredi_calc_uvflow.F

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


Revision 1.9 - (show annotations) (download)
Tue Nov 19 17:07:11 2013 UTC (10 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.8: +1 -1 lines
FILE REMOVED
remove routine which are no longer used (after removing k-loop from
 thermodynamics.F) and update ad_diff list

1 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_calc_uvflow.F,v 1.8 2013/11/17 22:04:33 jmc Exp $
2 C $Name: $
3
4 #include "GMREDI_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: GMREDI_CALC_UVFLOW
8 C !INTERFACE:
9 SUBROUTINE GMREDI_CALC_UVFLOW(
10 U uFld, vFld, uTrans, vTrans,
11 I k, bi, bj, myThid )
12 C !DESCRIPTION:
13 C Add GM-bolus flow to Eulerian horizontal transport.
14
15 C !USES:
16 IMPLICIT NONE
17
18 C == GLobal variables ==
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "PARAMS.h"
22 #include "GRID.h"
23 #include "GMREDI.h"
24 #ifdef ALLOW_EDDYPSI
25 # include "DYNVARS.h"
26 #endif
27
28 C !INPUT/OUTPUT PARAMETERS:
29 C == Routine arguments ==
30 C uFld :: zonal velocity (updated)
31 C vFld :: meridional velocity (updated)
32 C uTrans :: zonal volume transport (updated)
33 C vTrans :: meridional volume transport (updated)
34 C k :: level index
35 C bi,bj :: tile indices
36 C myThid :: thread number
37 INTEGER k, bi, bj, myThid
38 _RL uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
39 _RL vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
40 _RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
41 _RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42
43 #ifdef ALLOW_GMREDI
44 #ifdef GM_BOLUS_ADVEC
45
46 C !LOCAL VARIABLES:
47 C == Local variables ==
48 C i, j :: loop indices
49 INTEGER i, j
50 INTEGER kp1
51 _RL maskp1
52 _RL delPsi
53 #ifdef ALLOW_EDDYPSI
54 _RL ustar, vstar
55 #endif
56 #ifdef GM_CALC_TRANSP_FROM_VEL
57 _RS xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
58 _RS yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
59 #endif
60 CEOP
61
62 IF ( GM_AdvForm .AND. .NOT.GM_AdvSeparate
63 & .AND. .NOT.GM_InMomAsStress ) THEN
64
65 #ifdef GM_CALC_TRANSP_FROM_VEL
66 DO j=1-OLy,sNy+OLy
67 DO i=1-OLx,sNx+OLx
68 xA(i,j) = _dyG(i,j,bi,bj)*deepFacC(k)
69 & *drF(k)*_hFacW(i,j,k,bi,bj)
70 yA(i,j) = _dxG(i,j,bi,bj)*deepFacC(k)
71 & *drF(k)*_hFacS(i,j,k,bi,bj)
72 ENDDO
73 ENDDO
74 #endif
75
76 kp1 = MIN(k+1,Nr)
77 maskp1 = 1.
78 IF (k.GE.Nr) maskp1 = 0.
79 DO j=1-OLy,sNy+OLy
80 DO i=1-OLx,sNx+OLx
81 delPsi = GM_PsiX(i,j,kp1,bi,bj)*maskp1
82 & - GM_PsiX(i,j, k, bi,bj)
83 uFld(i,j) = uFld(i,j)
84 & + delPsi*recip_drF(k)*_recip_hFacW(i,j,k,bi,bj)
85 #ifdef GM_CALC_TRANSP_FROM_VEL
86 uTrans(i,j) = uFld(i,j)*xA(i,j)*rhoFacC(k)
87 #else
88 uTrans(i,j) = uTrans(i,j)
89 & + dyG(i,j,bi,bj)*delPsi*maskW(i,j,k,bi,bj)
90 #endif
91 ENDDO
92 ENDDO
93 DO j=1-OLy,sNy+OLy
94 DO i=1-OLx,sNx+OLx
95 delPsi = GM_PsiY(i,j,kp1,bi,bj)*maskp1
96 & - GM_PsiY(i,j, k, bi,bj)
97 vFld(i,j) = vFld(i,j)
98 & + delPsi*recip_drF(k)*_recip_hFacS(i,j,k,bi,bj)
99 #ifdef GM_CALC_TRANSP_FROM_VEL
100 vTrans(i,j) = vFld(i,j)*yA(i,j)*rhoFacC(k)
101 #else
102 vTrans(i,j) = vTrans(i,j)
103 & + dxG(i,j,bi,bj)*delPsi*maskS(i,j,k,bi,bj)
104 #endif
105 ENDDO
106 ENDDO
107
108 #ifdef ALLOW_EDDYPSI
109 ELSEIF( GM_AdvForm .AND. .NOT.GM_AdvSeparate
110 & .AND. GM_InMomAsStress ) THEN
111
112 C Calculate the mean velocity from the residual and bolus
113 kp1 = MIN(k+1,Nr)
114 maskp1 = 1.
115 IF (k.GE.Nr) maskp1 = 0.
116 DO j=1-OLy,sNy+OLy
117 DO i=1-OLx,sNx+OLx
118 delPsi = GM_PsiX(i,j,kp1,bi,bj)*maskp1
119 & - GM_PsiX(i,j, k, bi,bj)
120 ustar = delPsi*recip_drF(k)*_recip_hFacW(i,j,k,bi,bj)
121 uMean(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) - ustar
122 ENDDO
123 ENDDO
124 DO j=1-OLy,sNy+OLy
125 DO i=1-OLx,sNx+OLx
126 delPsi = GM_PsiY(i,j,kp1,bi,bj)*maskp1
127 & - GM_PsiY(i,j, k, bi,bj)
128 vstar = delPsi*recip_drF(k)*_recip_hFacS(i,j,k,bi,bj)
129 vMean(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) - vstar
130 ENDDO
131 ENDDO
132
133 #ifdef ALLOW_DIAGNOSTICS
134 c CALL DIAGNOSTICS_FILL( uMean(1-OLx,1-OLy,k,bi,bj), 'UVELMEAN',
135 c I k, 1, 2, bi, bj, myThid )
136 c CALL DIAGNOSTICS_FILL( vMean(1-OLx,1-OLy,k,bi,bj), 'VVELMEAN',
137 c I k, 1, 2, bi, bj, myThid )
138 C or shorter:
139 CALL DIAGNOSTICS_FILL( uMean, 'UVELMEAN',
140 I k, Nr, 1, bi, bj, myThid )
141 CALL DIAGNOSTICS_FILL( vMean, 'VVELMEAN',
142 I k, Nr, 1, bi, bj, myThid )
143 #endif /* ALLOW_DIAGNOSTICS */
144 #endif /* ALLOW_EDDYPSI */
145
146 ENDIF
147 #endif /* GM_BOLUS_ADVEC */
148 #endif /* ALLOW_GMREDI */
149
150 RETURN
151 END

  ViewVC Help
Powered by ViewVC 1.1.22