1 | MODULE orodrag_mod |
---|
2 | |
---|
3 | IMPLICIT NONE |
---|
4 | |
---|
5 | CONTAINS |
---|
6 | |
---|
7 | SUBROUTINE ORODRAG( klon,klev |
---|
8 | I , KGWD, KGWDIM, KDX, KTEST |
---|
9 | R , PTSPHY |
---|
10 | R , PAPHM1,PAPM1,PGEOM1,PTM1,PUM1 |
---|
11 | R , PVM1, PVAROR, PSIG, PGAMMA, PTHETA |
---|
12 | C OUTPUTS |
---|
13 | R , PULOW,PVLOW |
---|
14 | R , PVOM,PVOL,PTE ) |
---|
15 | C |
---|
16 | C |
---|
17 | C**** *ORODRAG* - DOES THE GRAVITY WAVE PARAMETRIZATION. |
---|
18 | C |
---|
19 | C PURPOSE. |
---|
20 | C -------- |
---|
21 | C |
---|
22 | C THIS ROUTINE COMPUTES THE PHYSICAL TENDENCIES OF THE |
---|
23 | C PROGNOSTIC VARIABLES U,V AND T DUE TO VERTICAL TRANSPORTS BY |
---|
24 | C SUBGRIDSCALE OROGRAPHICALLY EXCITED GRAVITY WAVES |
---|
25 | C |
---|
26 | C EXPLICIT ARGUMENTS : |
---|
27 | C -------------------- |
---|
28 | C |
---|
29 | C INPUT : |
---|
30 | C |
---|
31 | C NLON : NUMBER OF HORIZONTAL GRID POINTS |
---|
32 | C NLEV : NUMBER OF LEVELS |
---|
33 | C KGWD : NUMBER OF POINTS AT WHICH THE SCHEME IS CALLED |
---|
34 | C KGWDIM : NUMBER OF POINTS AT WHICH THE SCHEME IS CALLED |
---|
35 | C KDX(NLON) : POINTS AT WHICH TO CALL THE SCHEME |
---|
36 | C KTEST(NLON) : MAP OF CALLING POINTS |
---|
37 | C PTSPHY : LENGTH OF TIME STEP |
---|
38 | C PAPHM1(NLON,NLEV+1): PRESSURE AT MIDDLE LEVELS |
---|
39 | C PAPM1(NLON,NLEV) : PRESSURE ON MODEL LEVELS |
---|
40 | C PGEOM1(NLON,NLEV) : GEOPOTENTIAL HIEGHT OF MODEL LEVELS |
---|
41 | C PTM1(NLON,NLEV) : TEMPERATURE |
---|
42 | C PUM1(NLON,NLEV) : ZONAL WIND |
---|
43 | C PVM1(NLON,NLEV) : MERIDIONAL WIND |
---|
44 | C PVAROR(NLON) : SUB-GRID SCALE STANDARD DEVIATION |
---|
45 | C PSIG(NLON) : SUB-GRID SCALE SLOPE |
---|
46 | C PGAMMA(NLON) : SUB-GRID SCALE ANISOTROPY |
---|
47 | C PTHETA(NLON) : SUB-GRID SCALE PRINCIPAL AXES ANGLE |
---|
48 | C |
---|
49 | C OUTPUT : |
---|
50 | C |
---|
51 | C PULOW(NLON) : LOW LEVEL ZONAL WIND |
---|
52 | C PVLOW(NLON) : LOW LEVEL MERIDIONAL WIND |
---|
53 | C PVOM(NLON,NLEV) : ZONAL WIND TENDENCY |
---|
54 | C PVOL(NLON,NLEV) : MERIDIONAL WIND TENDENCY |
---|
55 | C PTE(NLON,NLEV) : TEMPERATURE TENDENCY |
---|
56 | C |
---|
57 | C IMPLICIT ARGUMENTS : |
---|
58 | C -------------------- |
---|
59 | C |
---|
60 | C comcstfi.h |
---|
61 | C yoegwd.h |
---|
62 | C |
---|
63 | C METHOD. |
---|
64 | C ------- |
---|
65 | C |
---|
66 | C EXTERNALS. |
---|
67 | C ---------- |
---|
68 | C |
---|
69 | C REFERENCE. |
---|
70 | C ---------- |
---|
71 | C |
---|
72 | C AUTHOR. |
---|
73 | C ------- |
---|
74 | C M.MILLER + B.RITTER E.C.M.W.F. 15/06/86. |
---|
75 | C |
---|
76 | C F.LOTT + M. MILLER E.C.M.W.F. 22/11/94 |
---|
77 | C----------------------------------------------------------------------- |
---|
78 | use dimradmars_mod, only: ndlo2 |
---|
79 | USE gwstress_mod, ONLY: gwstress |
---|
80 | USE gwprofil_mod, ONLY: gwprofil |
---|
81 | USE comcstfi_h, ONLY: g, cpp |
---|
82 | implicit none |
---|
83 | C |
---|
84 | C |
---|
85 | integer klon,klev,kidia |
---|
86 | parameter(kidia=1) |
---|
87 | integer, save :: kfdia ! =NDLO2 |
---|
88 | |
---|
89 | include "yoegwd.h" |
---|
90 | C----------------------------------------------------------------------- |
---|
91 | C |
---|
92 | C* 0.1 ARGUMENTS |
---|
93 | C --------- |
---|
94 | C |
---|
95 | C |
---|
96 | REAL PTE(NDLO2,klev), |
---|
97 | * PVOL(NDLO2,klev), |
---|
98 | * PVOM(NDLO2,klev), |
---|
99 | * PULOW(NDLO2), |
---|
100 | * PVLOW(NDLO2) |
---|
101 | REAL PUM1(NDLO2,klev), |
---|
102 | * PVM1(NDLO2,klev), |
---|
103 | * PTM1(NDLO2,klev), |
---|
104 | * PVAROR(NDLO2),PSIG(NDLO2),PGAMMA(NDLO2),PTHETA(NDLO2), |
---|
105 | * PGEOM1(NDLO2,klev), |
---|
106 | * PAPM1(NDLO2,klev), |
---|
107 | * PAPHM1(NDLO2,klev+1) |
---|
108 | C |
---|
109 | integer kgwd,kgwdim |
---|
110 | real ptsphy |
---|
111 | INTEGER KDX(NDLO2),KTEST(NDLO2) |
---|
112 | C----------------------------------------------------------------------- |
---|
113 | C |
---|
114 | C* 0.2 LOCAL ARRAYS |
---|
115 | C ------------ |
---|
116 | INTEGER ISECT(NDLO2), |
---|
117 | * ICRIT(NDLO2), |
---|
118 | * IKCRITH(NDLO2), |
---|
119 | * IKenvh(NDLO2), |
---|
120 | * IKNU(NDLO2), |
---|
121 | * IKNU2(NDLO2), |
---|
122 | * IKCRIT(NDLO2), |
---|
123 | * IKHLIM(NDLO2) |
---|
124 | integer ji,jk,jl,klevm1,ilevp1 |
---|
125 | C real gkwake |
---|
126 | real ztmst,pvar(NDLO2,4),ztauf(NDLO2,klev+1) |
---|
127 | real zrtmst,zdelp,zb,zc,zbet |
---|
128 | real zconb,zabsv,zzd1,ratio,zust,zvst,zdis,ztemp |
---|
129 | C |
---|
130 | REAL ZTAU(NDLO2,klev+1), |
---|
131 | * ZSTAB(NDLO2,klev+1), |
---|
132 | * ZVPH(NDLO2,klev+1), |
---|
133 | * ZRHO(NDLO2,klev+1), |
---|
134 | * ZRI(NDLO2,klev+1), |
---|
135 | * ZpsI(NDLO2,klev+1), |
---|
136 | * Zzdep(NDLO2,klev) |
---|
137 | REAL ZDUDT(NDLO2), |
---|
138 | * ZDVDT(NDLO2), |
---|
139 | * ZDTDT(NDLO2), |
---|
140 | * ZDEDT(NDLO2), |
---|
141 | * ZVIDIS(NDLO2), |
---|
142 | * ZTFR(NDLO2), |
---|
143 | * Znu(NDLO2), |
---|
144 | * Zd1(NDLO2), |
---|
145 | * Zd2(NDLO2), |
---|
146 | * Zdmod(NDLO2) |
---|
147 | C |
---|
148 | C------------------------------------------------------------------ |
---|
149 | C |
---|
150 | C* 1. INITIALIZATION |
---|
151 | C -------------- |
---|
152 | C |
---|
153 | 100 CONTINUE |
---|
154 | C |
---|
155 | C ------------------------------------------------------------------ |
---|
156 | C |
---|
157 | C* 1.1 COMPUTATIONAL CONSTANTS |
---|
158 | C ----------------------- |
---|
159 | C |
---|
160 | 110 CONTINUE |
---|
161 | C |
---|
162 | kfdia=NDLO2 |
---|
163 | |
---|
164 | c ZTMST=TWODT |
---|
165 | c IF(NSTEP.EQ.NSTART) ZTMST=0.5*TWODT |
---|
166 | KLEVM1=KLEV-1 |
---|
167 | ZTMST=PTSPHY |
---|
168 | ZRTMST=1./ZTMST |
---|
169 | C ------------------------------------------------------------------ |
---|
170 | C |
---|
171 | 120 CONTINUE |
---|
172 | C |
---|
173 | C ------------------------------------------------------------------ |
---|
174 | C |
---|
175 | C* 1.3 CHECK WHETHER ROW CONTAINS POINT FOR PRINTING |
---|
176 | C --------------------------------------------- |
---|
177 | C |
---|
178 | 130 CONTINUE |
---|
179 | C |
---|
180 | C ------------------------------------------------------------------ |
---|
181 | C |
---|
182 | C* 2. PRECOMPUTE BASIC STATE VARIABLES. |
---|
183 | C* ---------- ----- ----- ---------- |
---|
184 | C* DEFINE LOW LEVEL WIND, PROJECT WINDS IN PLANE OF |
---|
185 | C* LOW LEVEL WIND, DETERMINE SECTOR IN WHICH TO TAKE |
---|
186 | C* THE VARIANCE AND SET INDICATOR FOR CRITICAL LEVELS. |
---|
187 | C |
---|
188 | 200 CONTINUE |
---|
189 | C |
---|
190 | C |
---|
191 | C |
---|
192 | CALL OROSETUP |
---|
193 | * ( klon, klev , KTEST |
---|
194 | * , IKCRIT, IKCRITH, ICRIT, ISECT, IKHLIM, ikenvh,IKNU,iknu2 |
---|
195 | * , PAPHM1, PAPM1 , PUM1 , PVM1 , PTM1 , PGEOM1, pvaror |
---|
196 | * , ZRHO , ZRI , ZSTAB , ZTAU , ZVPH , zpsi, zzdep |
---|
197 | * , PULOW, PVLOW |
---|
198 | * , ptheta,pgamma,znu ,zd1, zd2, zdmod ) |
---|
199 | C |
---|
200 | C |
---|
201 | C |
---|
202 | C*********************************************************** |
---|
203 | C |
---|
204 | C |
---|
205 | C* 3. COMPUTE LOW LEVEL STRESSES USING SUBCRITICAL AND |
---|
206 | C* SUPERCRITICAL FORMS.COMPUTES ANISOTROPY COEFFICIENT |
---|
207 | C* AS MEASURE OF OROGRAPHIC TWODIMENSIONALITY. |
---|
208 | C |
---|
209 | 300 CONTINUE |
---|
210 | C |
---|
211 | CALL GWSTRESS |
---|
212 | * ( klon , klev |
---|
213 | * , IKCRIT, ISECT, IKHLIM, KTEST, IKCRITH, ICRIT, ikenvh, IKNU |
---|
214 | * , ZRHO , ZSTAB, ZVPH , PVAR , pvaror, psig |
---|
215 | * , ZTFR , ZTAU |
---|
216 | * , pgeom1,pgamma,zd1,zd2,zdmod,znu) |
---|
217 | C |
---|
218 | C* 4. COMPUTE STRESS PROFILE. |
---|
219 | C* ------- ------ -------- |
---|
220 | C |
---|
221 | 400 CONTINUE |
---|
222 | C |
---|
223 | C |
---|
224 | CALL GWPROFIL |
---|
225 | * ( klon , klev |
---|
226 | * , kgwd , kdx , KTEST |
---|
227 | * , IKCRIT, IKCRITH, ICRIT , ikenvh, IKNU |
---|
228 | * ,iknu2 , pAPHM1, ZRHO , ZSTAB , ZTFR , ZVPH |
---|
229 | * , ZRI , ZTAU , ztauf |
---|
230 | * , zdmod , znu , psig , pgamma , pvaror ) |
---|
231 | C |
---|
232 | C |
---|
233 | C* 5. COMPUTE TENDENCIES. |
---|
234 | C* ------------------- |
---|
235 | C |
---|
236 | 500 CONTINUE |
---|
237 | C |
---|
238 | C EXPLICIT SOLUTION AT ALL LEVELS FOR THE GRAVITY WAVE |
---|
239 | C IMPLICIT SOLUTION FOR THE BLOCKED LEVELS |
---|
240 | |
---|
241 | DO 510 JL=KIDIA,KFDIA |
---|
242 | ZVIDIS(JL)=0.0 |
---|
243 | ZDUDT(JL)=0.0 |
---|
244 | ZDVDT(JL)=0.0 |
---|
245 | ZDTDT(JL)=0.0 |
---|
246 | 510 CONTINUE |
---|
247 | C |
---|
248 | ILEVP1=KLEV+1 |
---|
249 | C |
---|
250 | C |
---|
251 | DO 524 JK=1,klev |
---|
252 | C |
---|
253 | CDIR$ IVDEP |
---|
254 | C |
---|
255 | C GKWAKE=0.5 |
---|
256 | C |
---|
257 | C NOW SET IN SUGWD.F |
---|
258 | C |
---|
259 | DO 523 JL=1,KGWD |
---|
260 | JI=KDX(JL) |
---|
261 | ZDELP=pAPHM1(Ji,JK+1)-pAPHM1(Ji,JK) |
---|
262 | ZTEMP=-g*(ZTAU(Ji,JK+1)-ZTAU(Ji,JK))/(ZVPH(Ji,ILEVP1)*ZDELP) |
---|
263 | ZDUDT(JI)=(PULOW(JI)*Zd1(ji)-pvlow(ji)*zd2(ji))*ztemp/zdmod(ji) |
---|
264 | ZDVDT(JI)=(pvLOW(JI)*Zd1(ji)+pulow(ji)*zd2(ji))*ztemp/zdmod(ji) |
---|
265 | if(jk.ge.ikenvh(ji)) then |
---|
266 | zb=1.0-0.18*pgamma(ji)-0.04*pgamma(ji)**2 |
---|
267 | zc=0.48*pgamma(ji)+0.3*pgamma(ji)**2 |
---|
268 | zconb=2.*ztmst*GKWAKE*psig(ji)/(4.*pvaror(ji)) |
---|
269 | zabsv=sqrt(PUM1(JI,JK)**2+PVM1(JI,JK)**2)/2. |
---|
270 | zzd1=zb*cos(zpsi(ji,jk))**2+zc*sin(zpsi(ji,jk))**2 |
---|
271 | ratio=(cos(zpsi(ji,jk))**2+pgamma(ji)*sin(zpsi(ji,jk))**2)/ |
---|
272 | * (pgamma(ji)*cos(zpsi(ji,jk))**2+sin(zpsi(ji,jk))**2) |
---|
273 | zbet=max(0.,2.-1./ratio)*zconb*zzdep(ji,jk)*zzd1*zabsv |
---|
274 | zdudt(ji)=-pum1(ji,jk)/ztmst |
---|
275 | zdvdt(ji)=-pvm1(ji,jk)/ztmst |
---|
276 | zdudt(ji)=zdudt(ji)*(zbet/(1.+zbet)) |
---|
277 | zdvdt(ji)=zdvdt(ji)*(zbet/(1.+zbet)) |
---|
278 | end if |
---|
279 | PVOM(JI,JK)=ZDUDT(JI) |
---|
280 | PVOL(JI,JK)=ZDVDT(JI) |
---|
281 | ZUST=PUM1(JI,JK)+ZTMST*ZDUDT(JI) |
---|
282 | ZVST=PVM1(JI,JK)+ZTMST*ZDVDT(JI) |
---|
283 | ZDIS=0.5*(PUM1(JI,JK)**2+PVM1(JI,JK)**2-ZUST**2-ZVST**2) |
---|
284 | ZDEDT(JI)=ZDIS/ZTMST |
---|
285 | ZVIDIS(JI)=ZVIDIS(JI)+ZDIS*ZDELP |
---|
286 | ZDTDT(JI)=ZDEDT(JI)/cpp |
---|
287 | PTE(JI,JK)=ZDTDT(JI) |
---|
288 | |
---|
289 | 523 CONTINUE |
---|
290 | |
---|
291 | 524 CONTINUE |
---|
292 | C |
---|
293 | C |
---|
294 | |
---|
295 | END SUBROUTINE ORODRAG |
---|
296 | |
---|
297 | END MODULE orodrag_mod |
---|