/[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.7 - (show annotations) (download)
Mon Sep 11 20:45:57 2000 UTC (23 years, 8 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint31
Changes since 1.6: +28 -21 lines
External forcing rearranged.
Scaling separated from tendency calculation.
Shortwave radiation included for use with KPP.
Tested for exp(0,2,4).

1 C $Header: /u/gcmpack/models/MITgcmUV/model/src/external_forcing.F,v 1.6 1999/06/29 18:39:45 adcroft Exp $
2
3 #include "CPP_OPTIONS.h"
4
5 CStartOfInterface
6 SUBROUTINE EXTERNAL_FORCING_U(
7 I iMin, iMax, jMin, jMax,bi,bj,kLev,
8 I myCurrentTime,myThid)
9 C /==========================================================\
10 C | S/R EXTERNAL_FORCING_U |
11 C | o Contains problem specific forcing for zonal velocity. |
12 C |==========================================================|
13 C | Adds terms to gU for forcing by external sources |
14 C | e.g. wind stress, bottom friction etc.................. |
15 C \==========================================================/
16 IMPLICIT NONE
17
18 C == Global data ==
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "PARAMS.h"
22 #include "GRID.h"
23 #include "DYNVARS.h"
24 #include "FFIELDS.h"
25 C == Routine arguments ==
26 C iMin - Working range of tile for applying forcing.
27 C iMax
28 C jMin
29 C jMax
30 C kLev
31 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
32 _RL myCurrentTime
33 INTEGER myThid
34 CEndOfInterface
35
36 C == Local variables ==
37 C Loop counters
38 INTEGER I, J
39
40 C-- Forcing term
41 C Add windstress momentum impulse into the top-layer
42 IF ( kLev .EQ. 1 ) THEN
43 CALL EXTERNAL_FORCING_SURF_U(
44 & iMin, iMax, jMin, jMax,bi,bj,myThid )
45 DO j=jMin,jMax
46 DO i=iMin,iMax
47 gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
48 & +foFacMom*surfaceTendencyU(i,j,bi,bj)
49 & *_maskW(i,j,kLev,bi,bj)
50 ENDDO
51 ENDDO
52 ENDIF
53
54 RETURN
55 END
56 CStartOfInterface
57 SUBROUTINE EXTERNAL_FORCING_V(
58 I iMin, iMax, jMin, jMax,bi,bj,kLev,
59 I myCurrentTime,myThid)
60 C /==========================================================\
61 C | S/R EXTERNAL_FORCING_V |
62 C | o Contains problem specific forcing for merid velocity. |
63 C |==========================================================|
64 C | Adds terms to gV for forcing by external sources |
65 C | e.g. wind stress, bottom friction etc.................. |
66 C \==========================================================/
67 IMPLICIT NONE
68
69 C == Global data ==
70 #include "SIZE.h"
71 #include "EEPARAMS.h"
72 #include "PARAMS.h"
73 #include "GRID.h"
74 #include "DYNVARS.h"
75 #include "FFIELDS.h"
76
77
78 C == Routine arguments ==
79 C iMin - Working range of tile for applying forcing.
80 C iMax
81 C jMin
82 C jMax
83 C kLev
84 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
85 _RL myCurrentTime
86 INTEGER myThid
87 CEndOfInterface
88 C == Local variables ==
89 C Loop counters
90 INTEGER I, J
91
92 C-- Forcing term
93 C Add windstress momentum impulse into the top-layer
94 IF ( kLev .EQ. 1 ) THEN
95 CALL EXTERNAL_FORCING_SURF_V(
96 I iMin, iMax, jMin, jMax,bi,bj,myThid )
97 DO j=jMin,jMax
98 DO i=iMin,iMax
99 gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
100 & +foFacMom*surfaceTendencyV(i,j,bi,bj)
101 & *_maskS(i,j,kLev,bi,bj)
102 ENDDO
103 ENDDO
104 ENDIF
105
106 RETURN
107 END
108 CStartOfInterface
109 SUBROUTINE EXTERNAL_FORCING_T(
110 I iMin, iMax, jMin, jMax,bi,bj,kLev,
111 I maskC,
112 I myCurrentTime,myThid)
113 C /==========================================================\
114 C | S/R EXTERNAL_FORCING_T |
115 C | o Contains problem specific forcing for temperature. |
116 C |==========================================================|
117 C | Adds terms to gT for forcing by external sources |
118 C | e.g. heat flux, climatalogical relaxation.............. |
119 C \==========================================================/
120 IMPLICIT NONE
121
122 C == Global data ==
123 #include "SIZE.h"
124 #include "EEPARAMS.h"
125 #include "PARAMS.h"
126 #include "GRID.h"
127 #include "DYNVARS.h"
128 #include "FFIELDS.h"
129 #ifdef SHORTWAVE_HEATING
130 integer two, k
131 _RS one
132 parameter (two=2,one=1.)
133 _RS ztmp(two), swfracb(two)
134 #endif
135
136
137 C == Routine arguments ==
138 C iMin - Working range of tile for applying forcing.
139 C iMax
140 C jMin
141 C jMax
142 C kLev
143 _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
144 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
145 _RL myCurrentTime
146 INTEGER myThid
147 CEndOfInterface
148
149 C == Local variables ==
150 C Loop counters
151 INTEGER I, J
152
153 C-- Forcing term
154 C Add heat in top-layer
155 IF ( kLev .EQ. 1 ) THEN
156 CALL EXTERNAL_FORCING_SURF_T(
157 I iMin, iMax, jMin, jMax,bi,bj,myThid )
158 DO j=jMin,jMax
159 DO i=iMin,iMax
160 gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)
161 & +maskC(i,j)*surfaceTendencyT(i,j,bi,bj)
162 ENDDO
163 ENDDO
164 ENDIF
165
166 #ifdef SHORTWAVE_HEATING
167 C Penetrating SW radiation
168 ztmp(1)=0.0
169 do k=1,klev-1
170 ztmp(1)=ztmp(1)-delZ(k)
171 enddo
172 ztmp(2)=ztmp(1)-delZ(klev)
173 call SWFRAC(two,one,ztmp, swfracb)
174 DO j=jMin,jMax
175 DO i=iMin,iMax
176 gT(i,j,klev,bi,bj) = gT(i,j,klev,bi,bj)
177 & +maskC(i,j)*Qsw(i,j,bi,bj)*(swfracb(1)-swfracb(2))
178 ENDDO
179 ENDDO
180 #endif
181 RETURN
182 END
183 CStartOfInterface
184 SUBROUTINE EXTERNAL_FORCING_S(
185 I iMin, iMax, jMin, jMax,bi,bj,kLev,
186 I maskC,
187 I myCurrentTime,myThid)
188 C /==========================================================\
189 C | S/R EXTERNAL_FORCING_S |
190 C | o Contains problem specific forcing for merid velocity. |
191 C |==========================================================|
192 C | Adds terms to gS for forcing by external sources |
193 C | e.g. fresh-water flux, climatalogical relaxation....... |
194 C \==========================================================/
195 IMPLICIT NONE
196
197 C == Global data ==
198 #include "SIZE.h"
199 #include "EEPARAMS.h"
200 #include "PARAMS.h"
201 #include "GRID.h"
202 #include "DYNVARS.h"
203 #include "FFIELDS.h"
204
205 C == Routine arguments ==
206 C iMin - Working range of tile for applying forcing.
207 C iMax
208 C jMin
209 C jMax
210 C kLev
211 _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
212 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
213 _RL myCurrentTime
214 INTEGER myThid
215 CEndOfInterface
216
217 C == Local variables ==
218 C Loop counters
219 INTEGER I, J
220
221 C-- Forcing term
222 C Add fresh-water in top-layer
223 IF ( kLev .EQ. 1 ) THEN
224 CALL EXTERNAL_FORCING_SURF_S(
225 I iMin, iMax, jMin, jMax,bi,bj,myThid )
226 DO j=jMin,jMax
227 DO i=iMin,iMax
228 gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
229 & +maskC(i,j)*surfaceTendencyS(i,j,bi,bj)
230 ENDDO
231 ENDDO
232 ENDIF
233
234 RETURN
235 END

  ViewVC Help
Powered by ViewVC 1.1.22