/[MITgcm]/MITgcm/pkg/aim_v23/aim_tendency_apply.F
ViewVC logotype

Contents of /MITgcm/pkg/aim_v23/aim_tendency_apply.F

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


Revision 1.2 - (show annotations) (download)
Fri Jan 3 03:51:27 2003 UTC (21 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint50c_post, checkpoint48e_post, checkpoint50c_pre, checkpoint48i_post, checkpoint50d_pre, checkpoint51, checkpoint50, checkpoint50d_post, checkpoint50b_pre, checkpoint48b_post, checkpoint51d_post, checkpoint48c_pre, checkpoint48d_pre, checkpoint47i_post, checkpoint48d_post, checkpoint48f_post, checkpoint48h_post, checkpoint51b_pre, checkpoint47g_post, checkpoint48a_post, checkpoint50f_post, checkpoint50a_post, checkpoint50f_pre, checkpoint47j_post, checkpoint48c_post, checkpoint51b_post, checkpoint51c_post, checkpoint50g_post, checkpoint50h_post, checkpoint50e_pre, checkpoint50i_post, checkpoint50e_post, checkpoint48, checkpoint49, checkpoint47h_post, checkpoint50b_post, checkpoint51a_post, checkpoint48g_post
Changes since 1.1: +5 -5 lines
 time-average AIM output: become independent from statvars time-average
  (can be used with #undef ALLOW_TIMEAVE) ; add new variables (e.g., RH)

1 C $Header: /u/gcmpack/MITgcm/pkg/aim_v23/aim_tendency_apply.F,v 1.1 2002/11/22 17:17:03 jmc Exp $
2 C $Name: $
3
4 #include "AIM_OPTIONS.h"
5
6 CStartOfInterface
7 SUBROUTINE AIM_TENDENCY_APPLY_U(
8 I iMin, iMax, jMin, jMax,bi,bj,kLev,
9 I myTime,myThid)
10 C *==========================================================*
11 C | S/R AIM_TENDENCY_APPLY_U
12 C | o Add AIM tendency terms to U tendency.
13 C *==========================================================*
14 IMPLICIT NONE
15
16 C == Global data ==
17 #include "SIZE.h"
18 #include "EEPARAMS.h"
19 #include "PARAMS.h"
20 #include "GRID.h"
21 #include "DYNVARS.h"
22
23 #include "AIM2DYN.h"
24 #include "AIM_DIAGS.h"
25
26 C == Routine arguments ==
27 C iMin - Working range of tile for applying forcing.
28 C iMax
29 C jMin
30 C jMax
31 C kLev
32 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
33 _RL myTime
34 INTEGER myThid
35 CEndOfInterface
36
37 #ifdef ALLOW_AIM
38 C == Local variables ==
39 C i,j - Loop counters
40 INTEGER i, j
41 _RL DDTT, uStr_tmp
42
43 DDTT = deltaTclock
44
45 c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
46 IF (kLev.eq.1) THEN
47 DO j=jMin,jMax
48 DO i=iMin,iMax
49 IF ( hFacW(i,j,kLev,bi,bj) .NE. 0. ) THEN
50 uStr_tmp =
51 & -( aim_drag(i-1,j,bi,bj)+aim_drag(i,j,bi,bj) )
52 & * 0.5 _d 0 * uVel(i,j,kLev,bi,bj)
53 gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
54 & + uStr_tmp*gravity*recip_drF(kLev)
55 & * recip_hFacW(i,j,kLev,bi,bj)
56 #ifdef ALLOW_AIM_TAVE
57 USTRtave(i,j,bi,bj) = USTRtave(i,j,bi,bj) + uStr_tmp*DDTT
58 #endif
59 ENDIF
60 ENDDO
61 ENDDO
62 ELSE
63 DO j=jMin,jMax
64 DO i=iMin,iMax
65 IF ( hFacW(i,j,kLev,bi,bj) .NE. 0. ) THEN
66 uStr_tmp =
67 & -( (1.-maskC(i-1,j,kLev-1,bi,bj))*aim_drag(i-1,j,bi,bj)
68 & +(1.-maskC( i ,j,kLev-1,bi,bj))*aim_drag( i ,j,bi,bj)
69 & )* 0.5 _d 0 * uVel(i,j,kLev,bi,bj)
70 gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
71 & + uStr_tmp*gravity*recip_drF(kLev)
72 & * recip_hFacW(i,j,kLev,bi,bj)
73 #ifdef ALLOW_AIM_TAVE
74 USTRtave(i,j,bi,bj) = USTRtave(i,j,bi,bj) + uStr_tmp*DDTT
75 #endif
76 ENDIF
77 ENDDO
78 ENDDO
79 ENDIF
80 c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
81
82 #endif /* ALLOW_AIM */
83
84 RETURN
85 END
86 CStartOfInterface
87 SUBROUTINE AIM_TENDENCY_APPLY_V(
88 I iMin, iMax, jMin, jMax,bi,bj,kLev,
89 I myTime,myThid)
90 C *==========================================================*
91 C | S/R TENDENCY_APPLY_V
92 C | o Add AIM tendency terms to V tendency.
93 C *==========================================================*
94 IMPLICIT NONE
95
96 C == Global data ==
97 #include "SIZE.h"
98 #include "EEPARAMS.h"
99 #include "PARAMS.h"
100 #include "GRID.h"
101 #include "DYNVARS.h"
102
103 #include "AIM2DYN.h"
104 #include "AIM_DIAGS.h"
105
106 C == Routine arguments ==
107 C iMin - Working range of tile for applying forcing.
108 C iMax
109 C jMin
110 C jMax
111 C kLev
112 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
113 _RL myTime
114 INTEGER myThid
115 CEndOfInterface
116
117 #ifdef ALLOW_AIM
118 C == Local variables ==
119 C Loop counters
120 INTEGER i, j
121 _RL DDTT, vStr_tmp
122
123 DDTT = deltaTclock
124
125 c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
126 IF (kLev.eq.1) THEN
127 DO j=jMin,jMax
128 DO i=iMin,iMax
129 IF ( hFacS(i,j,kLev,bi,bj) .NE. 0. ) THEN
130 vStr_tmp =
131 & -( aim_drag(i,j-1,bi,bj)+aim_drag(i,j,bi,bj) )
132 & * 0.5 _d 0 * vVel(i,j,kLev,bi,bj)
133 gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
134 & + vStr_tmp*gravity*recip_drF(kLev)
135 & * recip_hFacS(i,j,kLev,bi,bj)
136 #ifdef ALLOW_AIM_TAVE
137 VSTRtave(i,j,bi,bj) = VSTRtave(i,j,bi,bj) + vStr_tmp*DDTT
138 #endif
139 ENDIF
140 ENDDO
141 ENDDO
142 ELSE
143 DO j=jMin,jMax
144 DO i=iMin,iMax
145 IF ( hFacS(i,j,kLev,bi,bj) .NE. 0. ) THEN
146 vStr_tmp =
147 & -( (1.-maskC(i,j-1,kLev-1,bi,bj))*aim_drag(i,j-1,bi,bj)
148 & +(1.-maskC(i, j ,kLev-1,bi,bj))*aim_drag(i, j ,bi,bj)
149 & )* 0.5 _d 0 * vVel(i,j,kLev,bi,bj)
150 gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
151 & + vStr_tmp*gravity*recip_drF(kLev)
152 & * recip_hFacS(i,j,kLev,bi,bj)
153 #ifdef ALLOW_AIM_TAVE
154 VSTRtave(i,j,bi,bj) = VSTRtave(i,j,bi,bj) + vStr_tmp*DDTT
155 #endif
156 ENDIF
157 ENDDO
158 ENDDO
159 ENDIF
160 c---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
161
162 #endif /* ALLOW_AIM */
163
164 RETURN
165 END
166 CStartOfInterface
167 SUBROUTINE AIM_TENDENCY_APPLY_T(
168 I iMin, iMax, jMin, jMax,bi,bj,kLev,
169 I myTime,myThid)
170 C *==========================================================*
171 C | S/R AIM_TENDENCY_APPLY_T
172 C | o Add AIM tendency to gT
173 C *==========================================================*
174 IMPLICIT NONE
175
176 C == Global data ==
177 #include "SIZE.h"
178 #include "EEPARAMS.h"
179 #include "PARAMS.h"
180 #include "GRID.h"
181 #include "DYNVARS.h"
182
183 #include "AIM2DYN.h"
184
185 C == Routine arguments ==
186 C iMin - Working range of tile for applying forcing.
187 C iMax
188 C jMin
189 C jMax
190 C kLev
191 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
192 _RL myTime
193 INTEGER myThid
194 CEndOfInterface
195
196 #ifdef ALLOW_AIM
197 C == Local variables ==
198 C Loop counters
199 INTEGER I, J
200
201 C-- Forcing: add AIM heating/cooling tendency to gT:
202 DO J=1,sNy
203 DO I=1,sNx
204 gT(i,j,kLev,bi,bj) = maskC(i,j,kLev,bi,bj)
205 & *( gT(i,j,kLev,bi,bj) + aim_dTdt(i,j,kLev,bi,bj) )
206 ENDDO
207 ENDDO
208
209 #endif /* ALLOW_AIM */
210
211 RETURN
212 END
213 CStartOfInterface
214 SUBROUTINE AIM_TENDENCY_APPLY_S(
215 I iMin, iMax, jMin, jMax,bi,bj,kLev,
216 I myTime,myThid)
217 C *==========================================================*
218 C | S/R AIM_TENDENCY_APPLY_S
219 C | o Add AIM tendency to gS.
220 C *==========================================================*
221 IMPLICIT NONE
222
223 C == Global data ==
224 #include "SIZE.h"
225 #include "EEPARAMS.h"
226 #include "PARAMS.h"
227 #include "GRID.h"
228 #include "DYNVARS.h"
229
230 #include "AIM2DYN.h"
231
232 C == Routine arguments ==
233 C iMin - Working range of tile for applying forcing.
234 C iMax
235 C jMin
236 C jMax
237 C kLev
238 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
239 _RL myTime
240 INTEGER myThid
241 CEndOfInterface
242
243
244 #ifdef ALLOW_AIM
245 C == Local variables ==
246 C Loop counters
247 INTEGER I, J
248
249 C-- Forcing: add AIM dq/dt tendency to gS:
250 DO J=1,sNy
251 DO I=1,sNx
252 gS(i,j,kLev,bi,bj) = maskC(i,j,kLev,bi,bj)
253 & *( gS(i,j,kLev,bi,bj) + aim_dSdt(i,j,kLev,bi,bj) )
254 ENDDO
255 ENDDO
256
257 #endif /* ALLOW_AIM */
258
259 RETURN
260 END

  ViewVC Help
Powered by ViewVC 1.1.22