/[MITgcm]/MITgcm/model/src/external_forcing.F
ViewVC logotype

Contents of /MITgcm/model/src/external_forcing.F

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


Revision 1.14 - (show annotations) (download)
Sun Mar 24 02:18:36 2002 UTC (22 years, 2 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint44h_post, checkpoint45
Changes since 1.13: +34 -1 lines
Add hook for obcs sponge layer code.

1 C $Header: /u/gcmpack/MITgcm/model/src/external_forcing.F,v 1.13 2001/09/26 18:09:14 cnh Exp $
2 C $Name: $
3
4 #include "CPP_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: EXTERNAL_FORCING_U
8 C !INTERFACE:
9 SUBROUTINE EXTERNAL_FORCING_U(
10 I iMin, iMax, jMin, jMax,bi,bj,kLev,
11 I myCurrentTime,myThid)
12 C !DESCRIPTION: \bv
13 C *==========================================================*
14 C | S/R EXTERNAL_FORCING_U
15 C | o Contains problem specific forcing for zonal velocity.
16 C *==========================================================*
17 C | Adds terms to gU for forcing by external sources
18 C | e.g. wind stress, bottom friction etc..................
19 C *==========================================================*
20 C \ev
21
22 C !USES:
23 IMPLICIT NONE
24 C == Global data ==
25 #include "SIZE.h"
26 #include "EEPARAMS.h"
27 #include "PARAMS.h"
28 #include "GRID.h"
29 #include "DYNVARS.h"
30 #include "FFIELDS.h"
31
32 C !INPUT/OUTPUT PARAMETERS:
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
43 C !LOCAL VARIABLES:
44 C == Local variables ==
45 C Loop counters
46 INTEGER I, J
47 CEOP
48
49 C-- Forcing term
50 C Add windstress momentum impulse into the top-layer
51 IF ( kLev .EQ. 1 ) THEN
52 DO j=jMin,jMax
53 DO i=iMin,iMax
54 gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
55 & +foFacMom*surfaceTendencyU(i,j,bi,bj)
56 & *_maskW(i,j,kLev,bi,bj)
57 ENDDO
58 ENDDO
59 ENDIF
60
61 #ifdef ALLOW_OBCS
62 IF (useOBCS) THEN
63 CALL OBCS_SPONGE_U(
64 I iMin, iMax, jMin, jMax,bi,bj,kLev,
65 I myCurrentTime,myThid)
66 ENDIF
67 #endif
68
69 RETURN
70 END
71 CBOP
72 C !ROUTINE: EXTERNAL_FORCING_V
73 C !INTERFACE:
74 SUBROUTINE EXTERNAL_FORCING_V(
75 I iMin, iMax, jMin, jMax,bi,bj,kLev,
76 I myCurrentTime,myThid)
77 C !DESCRIPTION: \bv
78 C *==========================================================*
79 C | S/R EXTERNAL_FORCING_V
80 C | o Contains problem specific forcing for merid velocity.
81 C *==========================================================*
82 C | Adds terms to gV for forcing by external sources
83 C | e.g. wind stress, bottom friction etc..................
84 C *==========================================================*
85 C \ev
86
87 C !USES:
88 IMPLICIT NONE
89 C == Global data ==
90 #include "SIZE.h"
91 #include "EEPARAMS.h"
92 #include "PARAMS.h"
93 #include "GRID.h"
94 #include "DYNVARS.h"
95 #include "FFIELDS.h"
96
97 C !INPUT/OUTPUT PARAMETERS:
98 C == Routine arguments ==
99 C iMin - Working range of tile for applying forcing.
100 C iMax
101 C jMin
102 C jMax
103 C kLev
104 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
105 _RL myCurrentTime
106 INTEGER myThid
107
108 C !LOCAL VARIABLES:
109 C == Local variables ==
110 C Loop counters
111 INTEGER I, J
112 CEOP
113
114 C-- Forcing term
115 C Add windstress momentum impulse into the top-layer
116 IF ( kLev .EQ. 1 ) THEN
117 DO j=jMin,jMax
118 DO i=iMin,iMax
119 gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
120 & +foFacMom*surfaceTendencyV(i,j,bi,bj)
121 & *_maskS(i,j,kLev,bi,bj)
122 ENDDO
123 ENDDO
124 ENDIF
125
126 #ifdef ALLOW_OBCS
127 IF (useOBCS) THEN
128 CALL OBCS_SPONGE_V(
129 I iMin, iMax, jMin, jMax,bi,bj,kLev,
130 I myCurrentTime,myThid)
131 ENDIF
132 #endif
133
134 RETURN
135 END
136 CBOP
137 C !ROUTINE: EXTERNAL_FORCING_T
138 C !INTERFACE:
139 SUBROUTINE EXTERNAL_FORCING_T(
140 I iMin, iMax, jMin, jMax,bi,bj,kLev,
141 I myCurrentTime,myThid)
142 C !DESCRIPTION: \bv
143 C *==========================================================*
144 C | S/R EXTERNAL_FORCING_T
145 C | o Contains problem specific forcing for temperature.
146 C *==========================================================*
147 C | Adds terms to gT for forcing by external sources
148 C | e.g. heat flux, climatalogical relaxation..............
149 C *==========================================================*
150 C \ev
151
152 C !USES:
153 IMPLICIT NONE
154 C == Global data ==
155 #include "SIZE.h"
156 #include "EEPARAMS.h"
157 #include "PARAMS.h"
158 #include "GRID.h"
159 #include "DYNVARS.h"
160 #include "FFIELDS.h"
161 #ifdef SHORTWAVE_HEATING
162 integer two
163 _RL minusone
164 parameter (two=2,minusone=-1.)
165 _RL swfracb(two)
166 #endif
167
168 C !INPUT/OUTPUT PARAMETERS:
169 C == Routine arguments ==
170 C iMin - Working range of tile for applying forcing.
171 C iMax
172 C jMin
173 C jMax
174 C kLev
175 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
176 _RL myCurrentTime
177 INTEGER myThid
178 CEndOfInterface
179
180 C !LOCAL VARIABLES:
181 C == Local variables ==
182 C Loop counters
183 INTEGER I, J
184 CEOP
185
186 C-- Forcing term
187 C Add heat in top-layer
188 IF ( kLev .EQ. 1 ) THEN
189 DO j=jMin,jMax
190 DO i=iMin,iMax
191 gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)
192 & +maskC(i,j,kLev,bi,bj)*surfaceTendencyT(i,j,bi,bj)
193 ENDDO
194 ENDDO
195 ENDIF
196
197 #ifdef SHORTWAVE_HEATING
198 C Penetrating SW radiation
199 swfracb(1)=abs(rF(klev))
200 swfracb(2)=abs(rF(klev+1))
201 call SWFRAC(
202 I two,minusone,
203 I myCurrentTime,myThid,
204 O swfracb)
205 DO j=jMin,jMax
206 DO i=iMin,iMax
207 gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)
208 & -maskC(i,j,klev,bi,bj)*Qsw(i,j,bi,bj)*(swfracb(1)-swfracb(2))
209 & *recip_Cp*recip_rhoNil*recip_drF(klev)
210 ENDDO
211 ENDDO
212 #endif
213
214 #ifdef ALLOW_OBCS
215 IF (useOBCS) THEN
216 CALL OBCS_SPONGE_T(
217 I iMin, iMax, jMin, jMax,bi,bj,kLev,
218 I myCurrentTime,myThid)
219 ENDIF
220 #endif
221
222 RETURN
223 END
224 CBOP
225 C !ROUTINE: EXTERNAL_FORCING_S
226 C !INTERFACE:
227 SUBROUTINE EXTERNAL_FORCING_S(
228 I iMin, iMax, jMin, jMax,bi,bj,kLev,
229 I myCurrentTime,myThid)
230
231 C !DESCRIPTION: \bv
232 C *==========================================================*
233 C | S/R EXTERNAL_FORCING_S
234 C | o Contains problem specific forcing for merid velocity.
235 C *==========================================================*
236 C | Adds terms to gS for forcing by external sources
237 C | e.g. fresh-water flux, climatalogical relaxation.......
238 C *==========================================================*
239 C \ev
240
241 C !USES:
242 IMPLICIT NONE
243 C == Global data ==
244 #include "SIZE.h"
245 #include "EEPARAMS.h"
246 #include "PARAMS.h"
247 #include "GRID.h"
248 #include "DYNVARS.h"
249 #include "FFIELDS.h"
250
251 C !INPUT/OUTPUT PARAMETERS:
252 C == Routine arguments ==
253 C iMin - Working range of tile for applying forcing.
254 C iMax
255 C jMin
256 C jMax
257 C kLev
258 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
259 _RL myCurrentTime
260 INTEGER myThid
261
262 C !LOCAL VARIABLES:
263 C == Local variables ==
264 C Loop counters
265 INTEGER I, J
266 CEOP
267
268 C-- Forcing term
269 C Add fresh-water in top-layer
270 IF ( kLev .EQ. 1 ) THEN
271 DO j=jMin,jMax
272 DO i=iMin,iMax
273 gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
274 & +maskC(i,j,kLev,bi,bj)*surfaceTendencyS(i,j,bi,bj)
275 ENDDO
276 ENDDO
277 ENDIF
278
279 #ifdef ALLOW_OBCS
280 IF (useOBCS) THEN
281 CALL OBCS_SPONGE_S(
282 I iMin, iMax, jMin, jMax,bi,bj,kLev,
283 I myCurrentTime,myThid)
284 ENDIF
285 #endif
286
287 RETURN
288 END

  ViewVC Help
Powered by ViewVC 1.1.22