/[MITgcm]/MITgcm/verification/hs94.128x64x5/code/external_forcing.F
ViewVC logotype

Contents of /MITgcm/verification/hs94.128x64x5/code/external_forcing.F

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


Revision 1.2 - (show annotations) (download)
Fri Feb 2 21:36:33 2001 UTC (23 years, 3 months ago) by adcroft
Branch: MAIN
Changes since 1.1: +233 -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 C $Header: /u/gcmpack/models/MITgcmUV/verification/hs94.128x64x5/code/Attic/external_forcing.F,v 1.1.2.1 2001/01/24 17:07:08 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
26 C == Routine arguments ==
27 C iMin - Working range of tile for applying forcing.
28 C iMax
29 C jMin
30 C jMax
31 C kLev
32 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
33 _RL myCurrentTime
34 INTEGER myThid
35 CEndOfInterface
36
37 C == Local variables ==
38 C Loop counters
39 INTEGER I, J
40 C _RL uKf
41 C _RL levelOfGround
42 C _RL criticalLevel
43 C _RL levelOfVelPoint
44 C _RL dist1
45 C _RL dist2
46 C _RL decayFac
47 C _RL velDragHeightFac
48 _RL termP,kV,kF
49
50 kF=1./86400.
51 DO J=jMin,jMax
52 DO I=iMin,iMax
53 IF ( HFacW(i,j,kLev,bi,bj) .GT. 0. ) THEN
54 C termP=0.5*( rF(kLev) + min( rF(kLev+1) ,
55 C & min(H(I,J,bi,bj),H(I,J-1,bi,bj)) ) )
56 termP=0.5*( rF(kLev) + rF(kLev+1) )
57 C termP=rC(kLev)
58 kV=kF*MAX(0., (termP*recip_H(I,J,bi,bj)-0.7)/(1.-0.7) )
59 gU(i,j,kLev,bi,bj)=gU(i,j,kLev,bi,bj)
60 & -kV*uVel(i,j,kLev,bi,bj)
61 ENDIF
62 ENDDO
63 ENDDO
64
65 RETURN
66 END
67 CStartOfInterface
68 SUBROUTINE EXTERNAL_FORCING_V(
69 I iMin, iMax, jMin, jMax,bi,bj,kLev,
70 I myCurrentTime,myThid)
71 C /==========================================================\
72 C | S/R EXTERNAL_FORCING_V |
73 C | o Contains problem specific forcing for merid velocity. |
74 C |==========================================================|
75 C | Adds terms to gV for forcing by external sources |
76 C | e.g. wind stress, bottom friction etc.................. |
77 C \==========================================================/
78 IMPLICIT NONE
79
80 C == Global data ==
81 #include "SIZE.h"
82 #include "EEPARAMS.h"
83 #include "PARAMS.h"
84 #include "GRID.h"
85 #include "DYNVARS.h"
86 #include "FFIELDS.h"
87
88
89 C == Routine arguments ==
90 C iMin - Working range of tile for applying forcing.
91 C iMax
92 C jMin
93 C jMax
94 C kLev
95 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
96 _RL myCurrentTime
97 INTEGER myThid
98 CEndOfInterface
99 C == Local variables ==
100 C Loop counters
101 INTEGER I, J
102 C _RL uKf
103 C _RL levelOfGround
104 C _RL criticalLevel
105 C _RL levelOfVelPoint
106 C _RL dist1
107 C _RL dist2
108 C _RL decayFac
109 C _RL velDragHeightFac
110 _RL termP,kV,kF
111
112 kF=1./86400.
113 DO J=jMin,jMax
114 DO I=iMin,iMax
115 IF ( HFacS(i,j,kLev,bi,bj) .GT. 0. ) THEN
116 C termP=0.5*( rF(kLev) + min( rF(kLev+1) ,
117 C & min(H(I,J,bi,bj),H(I,J-1,bi,bj)) ) )
118 termP=0.5*( rF(kLev) + rF(kLev+1) )
119 C termP=rC(kLev)
120 kV=kF*MAX(0., (termP*recip_H(I,J,bi,bj)-0.7)/(1.-0.7) )
121 gV(i,j,kLev,bi,bj)=gV(i,j,kLev,bi,bj)
122 & -kV*vVel(i,j,kLev,bi,bj)
123 ENDIF
124 ENDDO
125 ENDDO
126
127 RETURN
128 END
129 CStartOfInterface
130 SUBROUTINE EXTERNAL_FORCING_T(
131 I iMin, iMax, jMin, jMax,bi,bj,kLev,
132 I maskC,
133 I myCurrentTime,myThid)
134 C /==========================================================\
135 C | S/R EXTERNAL_FORCING_T |
136 C | o Contains problem specific forcing for temperature. |
137 C |==========================================================|
138 C | Adds terms to gT for forcing by external sources |
139 C | e.g. heat flux, climatalogical relaxation.............. |
140 C \==========================================================/
141 IMPLICIT NONE
142
143 C == Global data ==
144 #include "SIZE.h"
145 #include "EEPARAMS.h"
146 #include "PARAMS.h"
147 #include "GRID.h"
148 #include "DYNVARS.h"
149 #include "FFIELDS.h"
150
151 C == Routine arguments ==
152 C iMin - Working range of tile for applying forcing.
153 C iMax
154 C jMin
155 C jMax
156 C kLev
157 _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
158 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
159 _RL myCurrentTime
160 INTEGER myThid
161 CEndOfInterface
162
163 C == Local variables ==
164 C Loop counters
165 INTEGER I, J
166 _RL thetaLim,kT,ka,ks,term1,term2,thetaEq,termP,rSurf
167
168 rSurf=1.E5
169 ka=1./(40.*86400.)
170 ks=1./(4. *86400.)
171 DO J=jMin,jMax
172 term1=60.*(sin(yC(1,J,bi,bj)*deg2rad)**2)
173 C termP=0.5*( rF(kLev) + min( rF(kLev+1) , H(I,J,bi,bj) ) )
174 termP=0.5*( rF(kLev) + rF(kLev+1) )
175 C termP=rC(kLev)
176 term2=10.*log(termP/rSurf)
177 & *(cos(yC(1,J,bi,bj)*deg2rad)**2)
178 thetaLim = 200. / ((termP/rSurf)**(2./7.))
179 thetaEq=315.-term1-term2
180 thetaEq=MAX(thetaLim,thetaEq)
181 DO I=iMin,iMax
182 kT=ka+(ks-ka)
183 & *MAX(0., (termP*recip_H(I,J,bi,bj)-0.7)/(1.-0.7) )
184 & *COS((yC(1,J,bi,bj)*deg2rad))**4
185 gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)
186 & - kT*( theta(I,J,kLev,bi,bj)-thetaEq )
187 & *maskC(i,j)
188 ENDDO
189 ENDDO
190
191 RETURN
192 END
193 CStartOfInterface
194 SUBROUTINE EXTERNAL_FORCING_S(
195 I iMin, iMax, jMin, jMax,bi,bj,kLev,
196 I maskC,
197 I myCurrentTime,myThid)
198 C /==========================================================\
199 C | S/R EXTERNAL_FORCING_S |
200 C | o Contains problem specific forcing for merid velocity. |
201 C |==========================================================|
202 C | Adds terms to gS for forcing by external sources |
203 C | e.g. fresh-water flux, climatalogical relaxation....... |
204 C \==========================================================/
205 IMPLICIT NONE
206
207 C == Global data ==
208 #include "SIZE.h"
209 #include "EEPARAMS.h"
210 #include "PARAMS.h"
211 #include "GRID.h"
212 #include "DYNVARS.h"
213 #include "FFIELDS.h"
214
215 C == Routine arguments ==
216 C iMin - Working range of tile for applying forcing.
217 C iMax
218 C jMin
219 C jMax
220 C kLev
221 _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
222 INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
223 _RL myCurrentTime
224 INTEGER myThid
225 CEndOfInterface
226
227 C == Local variables ==
228 C Loop counters
229 INTEGER I, J
230
231
232 RETURN
233 END

  ViewVC Help
Powered by ViewVC 1.1.22