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

Annotation of /MITgcm/pkg/gmredi/gmredi_calc_psi_b.F

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


Revision 1.8 - (hide annotations) (download)
Wed Feb 7 00:01:15 2007 UTC (17 years, 4 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint59, checkpoint58y_post, checkpoint58w_post, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint58v_post, checkpoint58x_post, checkpoint59j
Changes since 1.7: +9 -1 lines
Updating for case ALLOW_KAPGM_CONTROL

1 heimbach 1.8 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_calc_psi_b.F,v 1.7 2005/01/03 14:35:37 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "GMREDI_OPTIONS.h"
5    
6     CStartOfInterface
7     SUBROUTINE GMREDI_CALC_PSI_B(
8     I bi, bj, iMin, iMax, jMin, jMax,
9     I sigmaX, sigmaY, sigmaR,
10 jmc 1.6 I ldd97_LrhoW, ldd97_LrhoS,
11 jmc 1.1 I myThid )
12     C /==========================================================\
13     C | SUBROUTINE GMREDI_CALC_PSI_B |
14     C | o Calculate stream-functions for GM bolus velocity |
15     C |==========================================================|
16     C \==========================================================/
17     IMPLICIT NONE
18    
19     C == Global variables ==
20     #include "SIZE.h"
21     #include "GRID.h"
22     #include "DYNVARS.h"
23     #include "EEPARAMS.h"
24     #include "PARAMS.h"
25     #include "GMREDI.h"
26    
27 heimbach 1.2 #ifdef ALLOW_AUTODIFF_TAMC
28     #include "tamc.h"
29     #include "tamc_keys.h"
30     #endif /* ALLOW_AUTODIFF_TAMC */
31    
32 jmc 1.1 C == Routine arguments ==
33     C
34     _RL sigmaX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
35     _RL sigmaY(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
36     _RL sigmaR(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
37 jmc 1.6 _RL ldd97_LrhoW(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
38     _RL ldd97_LrhoS(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
39 jmc 1.1 INTEGER bi,bj,iMin,iMax,jMin,jMax
40     INTEGER myThid
41     CEndOfInterface
42    
43     #ifdef ALLOW_GMREDI
44     #ifdef GM_BOLUS_ADVEC
45    
46     C == Local variables ==
47     INTEGER i,j,k, km1
48     _RL SlopeX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
49     _RL SlopeY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
50     _RL dSigmaDrW(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
51     _RL dSigmaDrS(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
52     _RL taperX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
53     _RL taperY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
54    
55     C- Initialization : <= done in S/R gmredi_init
56    
57 heimbach 1.2 #ifdef ALLOW_AUTODIFF_TAMC
58     act1 = bi - myBxLo(myThid)
59     max1 = myBxHi(myThid) - myBxLo(myThid) + 1
60     act2 = bj - myByLo(myThid)
61     max2 = myByHi(myThid) - myByLo(myThid) + 1
62     act3 = myThid - 1
63     max3 = nTx*nTy
64     act4 = ikey_dynamics - 1
65 heimbach 1.5 igmkey = (act1 + 1) + act2*max1
66     & + act3*max1*max2
67     & + act4*max1*max2*max3
68 heimbach 1.2 #endif /* ALLOW_AUTODIFF_TAMC */
69    
70 heimbach 1.3 #ifdef ALLOW_AUTODIFF_TAMC
71     # ifdef GM_VISBECK_VARIABLE_K
72 heimbach 1.5 CADJ STORE VisbeckK(:,:,bi,bj) = comlev1_bibj, key=igmkey, byte=isbyte
73 heimbach 1.3 # endif
74     #endif
75 jmc 1.1 IF (GM_AdvForm) THEN
76     DO k=2,Nr
77 heimbach 1.2 km1 = k-1
78    
79     #ifdef ALLOW_AUTODIFF_TAMC
80 heimbach 1.5 kkey = (igmkey-1)*Nr + k
81 heimbach 1.2 DO j=1-Oly,sNy+Oly
82     DO i=1-Olx,sNx+Olx
83     SlopeX(i,j) = 0. _d 0
84     SlopeY(i,j) = 0. _d 0
85     dSigmaDrW(i,j) = 0. _d 0
86     dSigmaDrS(i,j) = 0. _d 0
87     ENDDO
88     ENDDO
89     #endif
90 jmc 1.1
91 jmc 1.6 C Gradient of Sigma below U and V points
92     DO j=1-Oly,sNy+Oly
93     DO i=1-Olx+1,sNx+Olx
94     SlopeX(i,j)=op5*( sigmaX(i,j,km1)+sigmaX(i,j,k) )
95     & *maskW(i,j,k,bi,bj)
96     dSigmaDrW(i,j)=op5*( sigmaR(i-1,j,k)+sigmaR(i,j,k) )
97     & *maskW(i,j,k,bi,bj)
98     ENDDO
99     ENDDO
100     DO j=1-Oly+1,sNy+Oly
101     DO i=1-Olx,sNx+Olx
102     SlopeY(i,j)=op5*( sigmaY(i,j,km1)+sigmaY(i,j,k) )
103     & *maskS(i,j,k,bi,bj)
104     dSigmaDrS(i,j)=op5*( sigmaR(i,j-1,k)+sigmaR(i,j,k) )
105     & *maskS(i,j,k,bi,bj)
106     ENDDO
107     ENDDO
108 jmc 1.1
109 jmc 1.6 C Calculate slopes , taper and/or clip
110     CALL GMREDI_SLOPE_PSI(
111     O taperX, taperY,
112 jmc 1.1 U SlopeX, SlopeY,
113 jmc 1.6 U dSigmaDrW, dSigmaDrS,
114     I ldd97_LrhoW, ldd97_LrhoS, rF(k), k,
115 jmc 1.1 I bi, bj, myThid )
116 heimbach 1.2
117     #ifdef ALLOW_AUTODIFF_TAMC
118     CADJ STORE SlopeX(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
119     CADJ STORE SlopeY(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
120     CADJ STORE taperX(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
121     CADJ STORE taperY(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
122     #endif /* ALLOW_AUTODIFF_TAMC */
123 jmc 1.1
124     C- Compute the 2 stream-function Components ( GM bolus vel.)
125 jmc 1.6 DO j=1-Oly,sNy+Oly
126     DO i=1-Olx+1,sNx+Olx
127     GM_PsiX(i,j,k,bi,bj) = SlopeX(i,j)*taperX(i,j)
128 heimbach 1.8 #ifdef ALLOW_KAPGM_CONTROL
129     & *( kapgm(i,j,k,bi,bj)
130     #else
131 jmc 1.6 & *( GM_background_K
132 heimbach 1.8 #endif
133 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
134 jmc 1.6 & +op5*(VisbeckK(i-1,j,bi,bj)+VisbeckK(i,j,bi,bj))
135 jmc 1.1 #endif
136 jmc 1.6 & )*maskW(i,j,k,bi,bj)
137     ENDDO
138     ENDDO
139     DO j=1-Oly+1,sNy+Oly
140     DO i=1-Olx,sNx+Olx
141     GM_PsiY(i,j,k,bi,bj) = SlopeY(i,j)*taperY(i,j)
142 heimbach 1.8 #ifdef ALLOW_KAPGM_CONTROL
143     & *( kapgm(i,j,k,bi,bj)
144     #else
145 jmc 1.6 & *( GM_background_K
146 heimbach 1.8 #endif
147 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
148 jmc 1.6 & +op5*(VisbeckK(i,j-1,bi,bj)+VisbeckK(i,j,bi,bj))
149 jmc 1.1 #endif
150 jmc 1.6 & )*maskS(i,j,k,bi,bj)
151     ENDDO
152     ENDDO
153 jmc 1.1
154 jmc 1.6 C----- end of loop on level k
155 jmc 1.1 ENDDO
156    
157     ENDIF
158     #endif /* GM_BOLUS_ADVEC */
159     #endif /* ALLOW_GMREDI */
160    
161     RETURN
162     END

  ViewVC Help
Powered by ViewVC 1.1.22