/[MITgcm]/MITgcm/pkg/aim/aim_external_forcing.F
ViewVC logotype

Contents of /MITgcm/pkg/aim/aim_external_forcing.F

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


Revision 1.2 - (show annotations) (download)
Fri Feb 2 21:36:29 2001 UTC (23 years, 4 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint35, pre38tag1, c37_adj, pre38-close, checkpoint37, checkpoint39, checkpoint38, checkpoint36
Branch point for: pre38
Changes since 1.1: +261 -0 lines
Merged changes from branch "branch-atmos-merge" into MAIN (checkpoint34)
 - substantial modifications to algorithm sequence (dynamics.F)
 - packaged OBCS, Shapiro filter, Zonal filter, Atmospheric Physics

1 C $Header: /u/gcmpack/models/MITgcmUV/pkg/aim/Attic/aim_external_forcing.F,v 1.1.2.4 2001/01/31 23:19:12 jmc Exp $
2 C $Name: branch-atmos-merge-freeze $
3
4 #include "AIM_OPTIONS.h"
5
6 CStartOfInterface
7 SUBROUTINE AIM_EXTERNAL_FORCING_U(
8 I iMin, iMax, jMin, jMax,bi,bj,kLev,
9 I myCurrentTime,myThid)
10 C /==========================================================\
11 C | S/R AIM_EXTERNAL_FORCING_U |
12 C | o Add AIM tendency terms to U tendency. |
13 C \==========================================================/
14
15 C == Global data ==
16 #include "SIZE.h"
17 #include "EEPARAMS.h"
18 #include "PARAMS.h"
19 #include "GRID.h"
20 #include "DYNVARS.h"
21
22 #ifdef ALLOW_AIM
23 #include "atparam0.h"
24 #include "atparam1.h"
25 INTEGER NGP
26 INTEGER NLON
27 INTEGER NLAT
28 INTEGER NLEV
29 PARAMETER ( NLON=IX, NLAT=IL, NLEV=KX, NGP=NLON*NLAT )
30 #include "com_physvar.h"
31 #endif /* ALLOW_AIM */
32
33 C == Routine arguments ==
34 C iMin - Working range of tile for applying forcing.
35 C iMax
36 C jMin
37 C jMax
38 C kLev
39 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
40 _RL myCurrentTime
41 INTEGER myThid
42 CEndOfInterface
43
44 #ifdef ALLOW_AIM
45 C == Local variables ==
46 C Loop counters
47 INTEGER I, J
48 INTEGER I2, I3, kAtm
49
50 DO J=1,sNy
51 DO I=1,sNx
52 I2 = sNx*(J-1)+I
53 I3 = sNx*(J-1)+mod(I+sNx-2,sNx)+1
54 Katm = _KD2KA( Klev )
55 gU(i,j,kLev,bi,bj) =
56 & gU(i,j,kLev,bi,bj) + 0.5*(UT_PBL(I2,katm)+UT_PBL(I3,katm))
57 ENDDO
58 ENDDO
59
60 _EXCH_XYZ_R8( gU , myThid)
61
62 #endif /* ALLOW_AIM */
63
64 RETURN
65 END
66 CStartOfInterface
67 SUBROUTINE AIM_EXTERNAL_FORCING_V(
68 I iMin, iMax, jMin, jMax,bi,bj,kLev,
69 I myCurrentTime,myThid)
70 C /==========================================================\
71 C | S/R EXTERNAL_FORCING_V |
72 C | o Add AIM tendency to meridional velocity. |
73 C \==========================================================/
74 IMPLICIT rEAL*8 (A-H,O-Z)
75
76 C == Global data ==
77 #include "SIZE.h"
78 #include "EEPARAMS.h"
79 #include "PARAMS.h"
80 #include "GRID.h"
81 #include "DYNVARS.h"
82 #include "FFIELDS.h"
83
84 #ifdef ALLOW_AIM
85 #include "atparam0.h"
86 #include "atparam1.h"
87 INTEGER NGP
88 INTEGER NLON
89 INTEGER NLAT
90 INTEGER NLEV
91 PARAMETER ( NLON=IX, NLAT=IL, NLEV=KX, NGP=NLON*NLAT )
92 #include "com_physvar.h"
93 #endif /* ALLOW_AIM */
94
95 C == Routine arguments ==
96 C iMin - Working range of tile for applying forcing.
97 C iMax
98 C jMin
99 C jMax
100 C kLev
101 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
102 _RL myCurrentTime
103 INTEGER myThid
104 CEndOfInterface
105
106 #ifdef ALLOW_AIM
107 C == Local variables ==
108 C Loop counters
109 INTEGER I, J
110 INTEGER I2, I3, JN, kAtm
111
112 DO J=1,sNy
113 DO I=1,sNx
114 I2 = sNx*(J-1)+I
115 JN = J
116 IF ( JN .EQ. sNy ) JN = sNy-1
117 I3 = sNx*(JN )+I
118 Katm = _KD2KA( Klev )
119 gV(i,j,kLev,bi,bj) =
120 & gV(i,j,kLev,bi,bj) + 0.5*(VT_PBL(I2,katm)+VT_PBL(I3,katm))
121 ENDDO
122 ENDDO
123
124 _EXCH_XYZ_R8( gV , myThid)
125
126 #endif /* ALLOW_AIM */
127
128 RETURN
129 END
130 CStartOfInterface
131 SUBROUTINE AIM_EXTERNAL_FORCING_T(
132 I iMin, iMax, jMin, jMax,bi,bj,kLev,
133 I myCurrentTime,myThid)
134 C /==========================================================\
135 C | S/R AIM_EXTERNAL_FORCING_T |
136 C | o Add AIM tendency to T |
137 C \==========================================================/
138
139 C == Global data ==
140 #include "SIZE.h"
141 #include "EEPARAMS.h"
142 #include "PARAMS.h"
143 #include "GRID.h"
144 #include "DYNVARS.h"
145
146 #ifdef ALLOW_AIM
147 #include "atparam0.h"
148 #include "atparam1.h"
149 INTEGER NGP
150 INTEGER NLON
151 INTEGER NLAT
152 INTEGER NLEV
153 PARAMETER ( NLON=IX, NLAT=IL, NLEV=KX, NGP=NLON*NLAT )
154 #include "com_physvar.h"
155 #endif
156
157 C == Routine arguments ==
158 C iMin - Working range of tile for applying forcing.
159 C iMax
160 C jMin
161 C jMax
162 C kLev
163 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
164 _RL myCurrentTime
165 INTEGER myThid
166 CEndOfInterface
167
168 #ifdef ALLOW_AIM
169 C == Local variables ==
170 C Loop counters
171 INTEGER I, J
172
173 C-- Forcing term
174 _RL thetaLim,kT,ka,ks,term1,term2,thetaEq,termP,rSurf
175 _RL pGround
176
177 C-- Forcing term
178 pGround = 1. _d 5
179 RD = 287. _d 0
180 CPAIR = 1004. _d 0
181 DO J=1,sNy
182 DO I=1,sNx
183 I2 = sNx*(J-1)+I
184 katm = _KD2KA( Klev )
185 gT(i,j,kLev,bi,bj) = gT(i,j,kLev,bi,bj) +(
186 & TT_PBL(I2,katm)
187 & +TT_CNV(I2,katm)
188 & +TT_LSC(I2,katm)
189 & +TT_RSW(I2,katm)
190 & +TT_RLW(I2,katm)
191 & )*((pGround/rC(kLev))**(RD/CPAIR))
192 ENDDO
193 ENDDO
194
195 _EXCH_XYZ_R8( gT , myThid)
196
197 #endif /* ALLOW_AIM */
198
199 RETURN
200 END
201 CStartOfInterface
202 SUBROUTINE AIM_EXTERNAL_FORCING_S(
203 I iMin, iMax, jMin, jMax,bi,bj,kLev,
204 I myCurrentTime,myThid)
205 C /==========================================================\
206 C | S/R AIM_EXTERNAL_FORCING_S |
207 C | o Add AIM tendency to S. |
208 C \==========================================================/
209
210 C == Global data ==
211 #include "SIZE.h"
212 #include "EEPARAMS.h"
213 #include "PARAMS.h"
214 #include "GRID.h"
215 #include "DYNVARS.h"
216
217 #ifdef ALLOW_AIM
218 #include "atparam0.h"
219 #include "atparam1.h"
220 INTEGER NGP
221 INTEGER NLON
222 INTEGER NLAT
223 INTEGER NLEV
224 PARAMETER ( NLON=IX, NLAT=IL, NLEV=KX, NGP=NLON*NLAT )
225 #include "com_physvar.h"
226 #endif
227
228
229 C == Routine arguments ==
230 C iMin - Working range of tile for applying forcing.
231 C iMax
232 C jMin
233 C jMax
234 C kLev
235 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
236 _RL myCurrentTime
237 INTEGER myThid
238 CEndOfInterface
239
240 #ifdef ALLOW_AIM
241 C == Local variables ==
242 C Loop counters
243 INTEGER I, J
244
245 DO J=1,sNy
246 DO I=1,sNx
247 katm = _KD2KA( kLev )
248 I2 = sNx*(J-1)+I
249 gS(i,j,kLev,bi,bj) = gS(i,j,kLev,bi,bj)
250 & +QT_PBL(I2,katm)
251 & +QT_CNV(I2,katm)
252 & +QT_LSC(I2,katm)
253 ENDDO
254 ENDDO
255
256 _EXCH_XYZ_R8( gS , myThid)
257
258 #endif /* ALLOW_AIM */
259
260 RETURN
261 END

  ViewVC Help
Powered by ViewVC 1.1.22