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

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

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

revision 1.1 by cnh, Fri Jan 26 16:23:18 2001 UTC revision 1.2 by adcroft, Fri Feb 2 21:36:29 2001 UTC
# Line 0  Line 1 
1    C     $Header$
2    C     $Name$
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

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.22