/[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.13.6.4 - (show annotations) (download)
Thu Nov 28 13:02:39 2002 UTC (23 years ago) by heimbach
Branch: ecco-branch
CVS Tags: ecco_ice1, ecco_c44_e25
Branch point for: c24_e25_ice
Changes since 1.13.6.3: +3 -0 lines
Bug fix: missing OBCS_OPTIONS.h for sponge layer code.

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

  ViewVC Help
Powered by ViewVC 1.1.22