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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24 - (hide annotations)
Wed Mar 3 13:23:49 2010 UTC (14 years, 2 months ago) by guez
File size: 10350 byte(s)
Created directory "phylmd/Radlwsw". Split "radlwsw.f" in files
containing a single procedure.

Removed variable "itaufinp1" in "leapfrog".

1 guez 24 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     REAL*8 PALBD(KDLON,2)
43     REAL*8 PCG(KDLON,2,KFLEV)
44     REAL*8 PCLD(KDLON,KFLEV)
45     REAL*8 PDSIG(KDLON,KFLEV)
46     REAL*8 POMEGA(KDLON,2,KFLEV)
47     REAL*8 PRAYL(KDLON)
48     REAL*8 PSEC(KDLON)
49     REAL*8 PTAU(KDLON,2,KFLEV)
50     C
51     REAL*8 PRAY1(KDLON,KFLEV+1)
52     REAL*8 PRAY2(KDLON,KFLEV+1)
53     REAL*8 PREFZ(KDLON,2,KFLEV+1)
54     REAL*8 PRJ(KDLON,6,KFLEV+1)
55     REAL*8 PRK(KDLON,6,KFLEV+1)
56     REAL*8 PRMUE(KDLON,KFLEV+1)
57     REAL*8 PCGAZ(KDLON,KFLEV)
58     REAL*8 PPIZAZ(KDLON,KFLEV)
59     REAL*8 PTAUAZ(KDLON,KFLEV)
60     REAL*8 PTRA1(KDLON,KFLEV+1)
61     REAL*8 PTRA2(KDLON,KFLEV+1)
62     C
63     C* LOCAL VARIABLES:
64     C
65     REAL*8 ZC1I(KDLON,KFLEV+1)
66     REAL*8 ZCLEQ(KDLON,KFLEV)
67     REAL*8 ZCLEAR(KDLON)
68     REAL*8 ZCLOUD(KDLON)
69     REAL*8 ZGG(KDLON)
70     REAL*8 ZREF(KDLON)
71     REAL*8 ZRE1(KDLON)
72     REAL*8 ZRE2(KDLON)
73     REAL*8 ZRMUZ(KDLON)
74     REAL*8 ZRNEB(KDLON)
75     REAL*8 ZR21(KDLON)
76     REAL*8 ZR22(KDLON)
77     REAL*8 ZR23(KDLON)
78     REAL*8 ZSS1(KDLON)
79     REAL*8 ZTO1(KDLON)
80     REAL*8 ZTR(KDLON,2,KFLEV+1)
81     REAL*8 ZTR1(KDLON)
82     REAL*8 ZTR2(KDLON)
83     REAL*8 ZW(KDLON)
84     C
85     INTEGER jk, jl, ja, jkl, jklp1, jkm1, jaj
86     REAL*8 ZFACOA, ZFACOC, ZCORAE, ZCORCD
87     REAL*8 ZMUE, ZGAP, ZWW, ZTO, ZDEN, ZDEN1
88     REAL*8 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