/[lmdze]/trunk/libf/phylmd/Radlwsw/swr.f
ViewVC logotype

Contents of /trunk/libf/phylmd/Radlwsw/swr.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 71 - (show annotations)
Mon Jul 8 18:12:18 2013 UTC (10 years, 9 months ago) by guez
File size: 10760 byte(s)
No reason to call inidissip in ce0l.

In inidissip, set random seed to 1 beacuse PGI compiler does not
accept all zeros.

dq was computed needlessly in caladvtrac. Arguments masse and dq of
calfis not used.

Replaced real*8 by double precision.

Pass arrays with inverted order of vertical levels to conflx instead
of creating local variables for this inside conflx.

1 SUBROUTINE SWR ( KNU
2 S , PALBD , PCG , PCLD , PDSIG, POMEGA, PRAYL
3 S , PSEC , PTAU
4 S , PCGAZ , PPIZAZ, PRAY1, PRAY2, PREFZ , PRJ , PRK , PRMUE
5 S , PTAUAZ, PTRA1 , PTRA2 )
6 use dimens_m
7 use dimphy
8 use raddim
9 use radepsi
10 use radopt
11 IMPLICIT none
12 C
13 C ------------------------------------------------------------------
14 C PURPOSE.
15 C --------
16 C COMPUTES THE REFLECTIVITY AND TRANSMISSIVITY IN CASE OF
17 C CONTINUUM SCATTERING
18 C
19 C METHOD.
20 C -------
21 C
22 C 1. COMPUTES CONTINUUM FLUXES CORRESPONDING TO AEROSOL
23 C OR/AND RAYLEIGH SCATTERING (NO MOLECULAR GAS ABSORPTION)
24 C
25 C REFERENCE.
26 C ----------
27 C
28 C SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
29 C DOCUMENTATION, AND FOUQUART AND BONNEL (1980)
30 C
31 C AUTHOR.
32 C -------
33 C JEAN-JACQUES MORCRETTE *ECMWF*
34 C
35 C MODIFICATIONS.
36 C --------------
37 C ORIGINAL : 89-07-14
38 C ------------------------------------------------------------------
39 C* ARGUMENTS:
40 C
41 INTEGER KNU
42 DOUBLE PRECISION PALBD(KDLON,2)
43 DOUBLE PRECISION PCG(KDLON,2,KFLEV)
44 DOUBLE PRECISION PCLD(KDLON,KFLEV)
45 DOUBLE PRECISION PDSIG(KDLON,KFLEV)
46 DOUBLE PRECISION POMEGA(KDLON,2,KFLEV)
47 DOUBLE PRECISION PRAYL(KDLON)
48 DOUBLE PRECISION PSEC(KDLON)
49 DOUBLE PRECISION PTAU(KDLON,2,KFLEV)
50 C
51 DOUBLE PRECISION PRAY1(KDLON,KFLEV+1)
52 DOUBLE PRECISION PRAY2(KDLON,KFLEV+1)
53 DOUBLE PRECISION PREFZ(KDLON,2,KFLEV+1)
54 DOUBLE PRECISION PRJ(KDLON,6,KFLEV+1)
55 DOUBLE PRECISION PRK(KDLON,6,KFLEV+1)
56 DOUBLE PRECISION PRMUE(KDLON,KFLEV+1)
57 DOUBLE PRECISION PCGAZ(KDLON,KFLEV)
58 DOUBLE PRECISION PPIZAZ(KDLON,KFLEV)
59 DOUBLE PRECISION PTAUAZ(KDLON,KFLEV)
60 DOUBLE PRECISION PTRA1(KDLON,KFLEV+1)
61 DOUBLE PRECISION PTRA2(KDLON,KFLEV+1)
62 C
63 C* LOCAL VARIABLES:
64 C
65 DOUBLE PRECISION ZC1I(KDLON,KFLEV+1)
66 DOUBLE PRECISION ZCLEQ(KDLON,KFLEV)
67 DOUBLE PRECISION ZCLEAR(KDLON)
68 DOUBLE PRECISION ZCLOUD(KDLON)
69 DOUBLE PRECISION ZGG(KDLON)
70 DOUBLE PRECISION ZREF(KDLON)
71 DOUBLE PRECISION ZRE1(KDLON)
72 DOUBLE PRECISION ZRE2(KDLON)
73 DOUBLE PRECISION ZRMUZ(KDLON)
74 DOUBLE PRECISION ZRNEB(KDLON)
75 DOUBLE PRECISION ZR21(KDLON)
76 DOUBLE PRECISION ZR22(KDLON)
77 DOUBLE PRECISION ZR23(KDLON)
78 DOUBLE PRECISION ZSS1(KDLON)
79 DOUBLE PRECISION ZTO1(KDLON)
80 DOUBLE PRECISION ZTR(KDLON,2,KFLEV+1)
81 DOUBLE PRECISION ZTR1(KDLON)
82 DOUBLE PRECISION ZTR2(KDLON)
83 DOUBLE PRECISION ZW(KDLON)
84 C
85 INTEGER jk, jl, ja, jkl, jklp1, jkm1, jaj
86 DOUBLE PRECISION ZFACOA, ZFACOC, ZCORAE, ZCORCD
87 DOUBLE PRECISION ZMUE, ZGAP, ZWW, ZTO, ZDEN, ZDEN1
88 DOUBLE PRECISION ZMU1, ZRE11, ZBMU0, ZBMU1
89 C
90 C ------------------------------------------------------------------
91 C
92 C* 1. INITIALIZATION
93 C --------------
94 C
95 100 CONTINUE
96 C
97 DO 103 JK = 1 , KFLEV+1
98 DO 102 JA = 1 , 6
99 DO 101 JL = 1, KDLON
100 PRJ(JL,JA,JK) = 0.
101 PRK(JL,JA,JK) = 0.
102 101 CONTINUE
103 102 CONTINUE
104 103 CONTINUE
105 C
106 C
107 C ------------------------------------------------------------------
108 C
109 C* 2. TOTAL EFFECTIVE CLOUDINESS ABOVE A GIVEN LEVEL
110 C ----------------------------------------------
111 C
112 200 CONTINUE
113 C
114 DO 201 JL = 1, KDLON
115 ZR23(JL) = 0.
116 ZC1I(JL,KFLEV+1) = 0.
117 ZCLEAR(JL) = 1.
118 ZCLOUD(JL) = 0.
119 201 CONTINUE
120 C
121 JK = 1
122 JKL = KFLEV+1 - JK
123 JKLP1 = JKL + 1
124 DO 202 JL = 1, KDLON
125 ZFACOA = 1. - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL)
126 ZFACOC = 1. - POMEGA(JL,KNU,JKL) * PCG(JL,KNU,JKL)
127 S * PCG(JL,KNU,JKL)
128 ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL)
129 ZCORCD = ZFACOC * PTAU(JL,KNU,JKL) * PSEC(JL)
130 ZR21(JL) = EXP(-ZCORAE )
131 ZR22(JL) = EXP(-ZCORCD )
132 ZSS1(JL) = PCLD(JL,JKL)*(1.0-ZR21(JL)*ZR22(JL))
133 S + (1.0-PCLD(JL,JKL))*(1.0-ZR21(JL))
134 ZCLEQ(JL,JKL) = ZSS1(JL)
135 C
136 IF (NOVLP.EQ.1) THEN
137 c* maximum-random
138 ZCLEAR(JL) = ZCLEAR(JL)
139 S *(1.0-MAX(ZSS1(JL),ZCLOUD(JL)))
140 S /(1.0-MIN(ZCLOUD(JL),1.-ZEPSEC))
141 ZC1I(JL,JKL) = 1.0 - ZCLEAR(JL)
142 ZCLOUD(JL) = ZSS1(JL)
143 ELSE IF (NOVLP.EQ.2) THEN
144 C* maximum
145 ZCLOUD(JL) = MAX( ZSS1(JL) , ZCLOUD(JL) )
146 ZC1I(JL,JKL) = ZCLOUD(JL)
147 ELSE IF (NOVLP.EQ.3) THEN
148 c* random
149 ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - ZSS1(JL))
150 ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
151 ZC1I(JL,JKL) = ZCLOUD(JL)
152 END IF
153 202 CONTINUE
154 C
155 DO 205 JK = 2 , KFLEV
156 JKL = KFLEV+1 - JK
157 JKLP1 = JKL + 1
158 DO 204 JL = 1, KDLON
159 ZFACOA = 1. - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL)
160 ZFACOC = 1. - POMEGA(JL,KNU,JKL) * PCG(JL,KNU,JKL)
161 S * PCG(JL,KNU,JKL)
162 ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL)
163 ZCORCD = ZFACOC * PTAU(JL,KNU,JKL) * PSEC(JL)
164 ZR21(JL) = EXP(-ZCORAE )
165 ZR22(JL) = EXP(-ZCORCD )
166 ZSS1(JL) = PCLD(JL,JKL)*(1.0-ZR21(JL)*ZR22(JL))
167 S + (1.0-PCLD(JL,JKL))*(1.0-ZR21(JL))
168 ZCLEQ(JL,JKL) = ZSS1(JL)
169 c
170 IF (NOVLP.EQ.1) THEN
171 c* maximum-random
172 ZCLEAR(JL) = ZCLEAR(JL)
173 S *(1.0-MAX(ZSS1(JL),ZCLOUD(JL)))
174 S /(1.0-MIN(ZCLOUD(JL),1.-ZEPSEC))
175 ZC1I(JL,JKL) = 1.0 - ZCLEAR(JL)
176 ZCLOUD(JL) = ZSS1(JL)
177 ELSE IF (NOVLP.EQ.2) THEN
178 C* maximum
179 ZCLOUD(JL) = MAX( ZSS1(JL) , ZCLOUD(JL) )
180 ZC1I(JL,JKL) = ZCLOUD(JL)
181 ELSE IF (NOVLP.EQ.3) THEN
182 c* random
183 ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - ZSS1(JL))
184 ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
185 ZC1I(JL,JKL) = ZCLOUD(JL)
186 END IF
187 204 CONTINUE
188 205 CONTINUE
189 C
190 C ------------------------------------------------------------------
191 C
192 C* 3. REFLECTIVITY/TRANSMISSIVITY FOR PURE SCATTERING
193 C -----------------------------------------------
194 C
195 300 CONTINUE
196 C
197 DO 301 JL = 1, KDLON
198 PRAY1(JL,KFLEV+1) = 0.
199 PRAY2(JL,KFLEV+1) = 0.
200 PREFZ(JL,2,1) = PALBD(JL,KNU)
201 PREFZ(JL,1,1) = PALBD(JL,KNU)
202 PTRA1(JL,KFLEV+1) = 1.
203 PTRA2(JL,KFLEV+1) = 1.
204 301 CONTINUE
205 C
206 DO 346 JK = 2 , KFLEV+1
207 JKM1 = JK-1
208 DO 342 JL = 1, KDLON
209 ZRNEB(JL)= PCLD(JL,JKM1)
210 ZRE1(JL)=0.
211 ZTR1(JL)=0.
212 ZRE2(JL)=0.
213 ZTR2(JL)=0.
214 C
215 C
216 C ------------------------------------------------------------------
217 C
218 C* 3.1 EQUIVALENT ZENITH ANGLE
219 C -----------------------
220 C
221 310 CONTINUE
222 C
223 ZMUE = (1.-ZC1I(JL,JK)) * PSEC(JL)
224 S + ZC1I(JL,JK) * 1.66
225 PRMUE(JL,JK) = 1./ZMUE
226 C
227 C
228 C ------------------------------------------------------------------
229 C
230 C* 3.2 REFLECT./TRANSMISSIVITY DUE TO RAYLEIGH AND AEROSOLS
231 C ----------------------------------------------------
232 C
233 320 CONTINUE
234 C
235 ZGAP = PCGAZ(JL,JKM1)
236 ZBMU0 = 0.5 - 0.75 * ZGAP / ZMUE
237 ZWW = PPIZAZ(JL,JKM1)
238 ZTO = PTAUAZ(JL,JKM1)
239 ZDEN = 1. + (1. - ZWW + ZBMU0 * ZWW) * ZTO * ZMUE
240 S + (1-ZWW) * (1. - ZWW +2.*ZBMU0*ZWW)*ZTO*ZTO*ZMUE*ZMUE
241 PRAY1(JL,JKM1) = ZBMU0 * ZWW * ZTO * ZMUE / ZDEN
242 PTRA1(JL,JKM1) = 1. / ZDEN
243 c PRINT *,' LOOP 342 ** 3 ** JL=',JL,PRAY1(JL,JKM1),PTRA1(JL,JKM1)
244 C
245 ZMU1 = 0.5
246 ZBMU1 = 0.5 - 0.75 * ZGAP * ZMU1
247 ZDEN1= 1. + (1. - ZWW + ZBMU1 * ZWW) * ZTO / ZMU1
248 S + (1-ZWW) * (1. - ZWW +2.*ZBMU1*ZWW)*ZTO*ZTO/ZMU1/ZMU1
249 PRAY2(JL,JKM1) = ZBMU1 * ZWW * ZTO / ZMU1 / ZDEN1
250 PTRA2(JL,JKM1) = 1. / ZDEN1
251 C
252 C
253 C ------------------------------------------------------------------
254 C
255 C* 3.3 EFFECT OF CLOUD LAYER
256 C ---------------------
257 C
258 330 CONTINUE
259 C
260 ZW(JL) = POMEGA(JL,KNU,JKM1)
261 ZTO1(JL) = PTAU(JL,KNU,JKM1)/ZW(JL)
262 S + PTAUAZ(JL,JKM1)/PPIZAZ(JL,JKM1)
263 ZR21(JL) = PTAU(JL,KNU,JKM1) + PTAUAZ(JL,JKM1)
264 ZR22(JL) = PTAU(JL,KNU,JKM1) / ZR21(JL)
265 ZGG(JL) = ZR22(JL) * PCG(JL,KNU,JKM1)
266 S + (1. - ZR22(JL)) * PCGAZ(JL,JKM1)
267 C Modif PhD - JJM 19/03/96 pour erreurs arrondis
268 C machine
269 C PHD PROTECTION ZW(JL) = ZR21(JL) / ZTO1(JL)
270 IF (ZW(JL).EQ.1. .AND. PPIZAZ(JL,JKM1).EQ.1.) THEN
271 ZW(JL)=1.
272 ELSE
273 ZW(JL) = ZR21(JL) / ZTO1(JL)
274 END IF
275 ZREF(JL) = PREFZ(JL,1,JKM1)
276 ZRMUZ(JL) = PRMUE(JL,JK)
277 342 CONTINUE
278 C
279 CALL SWDE(ZGG , ZREF , ZRMUZ , ZTO1 , ZW,
280 S ZRE1 , ZRE2 , ZTR1 , ZTR2)
281 C
282 DO 345 JL = 1, KDLON
283 C
284 PREFZ(JL,1,JK) = (1.-ZRNEB(JL)) * (PRAY1(JL,JKM1)
285 S + PREFZ(JL,1,JKM1) * PTRA1(JL,JKM1)
286 S * PTRA2(JL,JKM1)
287 S / (1.-PRAY2(JL,JKM1)*PREFZ(JL,1,JKM1)))
288 S + ZRNEB(JL) * ZRE2(JL)
289 C
290 ZTR(JL,1,JKM1) = ZRNEB(JL) * ZTR2(JL) + (PTRA1(JL,JKM1)
291 S / (1.-PRAY2(JL,JKM1)*PREFZ(JL,1,JKM1)))
292 S * (1.-ZRNEB(JL))
293 C
294 PREFZ(JL,2,JK) = (1.-ZRNEB(JL)) * (PRAY1(JL,JKM1)
295 S + PREFZ(JL,2,JKM1) * PTRA1(JL,JKM1)
296 S * PTRA2(JL,JKM1) )
297 S + ZRNEB(JL) * ZRE1(JL)
298 C
299 ZTR(JL,2,JKM1) = ZRNEB(JL) * ZTR1(JL)
300 S + PTRA1(JL,JKM1) * (1.-ZRNEB(JL))
301 C
302 345 CONTINUE
303 346 CONTINUE
304 DO 347 JL = 1, KDLON
305 ZMUE = (1.-ZC1I(JL,1))*PSEC(JL)+ZC1I(JL,1)*1.66
306 PRMUE(JL,1)=1./ZMUE
307 347 CONTINUE
308 C
309 C
310 C ------------------------------------------------------------------
311 C
312 C* 3.5 REFLECT./TRANSMISSIVITY BETWEEN SURFACE AND LEVEL
313 C -------------------------------------------------
314 C
315 350 CONTINUE
316 C
317 IF (KNU.EQ.1) THEN
318 JAJ = 2
319 DO 351 JL = 1, KDLON
320 PRJ(JL,JAJ,KFLEV+1) = 1.
321 PRK(JL,JAJ,KFLEV+1) = PREFZ(JL, 1,KFLEV+1)
322 351 CONTINUE
323 C
324 DO 353 JK = 1 , KFLEV
325 JKL = KFLEV+1 - JK
326 JKLP1 = JKL + 1
327 DO 352 JL = 1, KDLON
328 ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL, 1,JKL)
329 PRJ(JL,JAJ,JKL) = ZRE11
330 PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL, 1,JKL)
331 352 CONTINUE
332 353 CONTINUE
333 354 CONTINUE
334 C
335 ELSE
336 C
337 DO 358 JAJ = 1 , 2
338 DO 355 JL = 1, KDLON
339 PRJ(JL,JAJ,KFLEV+1) = 1.
340 PRK(JL,JAJ,KFLEV+1) = PREFZ(JL,JAJ,KFLEV+1)
341 355 CONTINUE
342 C
343 DO 357 JK = 1 , KFLEV
344 JKL = KFLEV+1 - JK
345 JKLP1 = JKL + 1
346 DO 356 JL = 1, KDLON
347 ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL,JAJ,JKL)
348 PRJ(JL,JAJ,JKL) = ZRE11
349 PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL,JAJ,JKL)
350 356 CONTINUE
351 357 CONTINUE
352 358 CONTINUE
353 C
354 END IF
355 C
356 C ------------------------------------------------------------------
357 C
358 RETURN
359 END

  ViewVC Help
Powered by ViewVC 1.1.21