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

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

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


Revision 1.2 - (hide 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 adcroft 1.2 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