source: LMDZ6/trunk/libf/phylmd/rrtm/swclr.F90 @ 5308

Last change on this file since 5308 was 5294, checked in by Laurent Fairhead, 2 days ago

Keeping clesphys.h was not the right solution
LF

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 15.1 KB
Line 
1SUBROUTINE SWCLR &
2 & ( KIDIA , KFDIA , KLON  , KLEV  , KAER  , KNU,&
3 & PAER  , PALBP , PDSIG , PRAYL , PSEC,&
4 & PCGAZ , PPIZAZ, PRAY1 , PRAY2 , PREFZ , PRJ,&
5 & PRK   , PRMU0 , PTAUAZ, PTRA1 , PTRA2 , PTRCLR, &
6!++MODIFCODE
7  & LDDUST,PPIZA_DST, PCGA_DST, PTAU_DST )
8!--MODIFCODE
9
10!**** *SWCLR* - CLEAR-SKY COLUMN COMPUTATIONS
11
12!     PURPOSE.
13!     --------
14!           COMPUTES THE REFLECTIVITY AND TRANSMISSIVITY IN CASE OF
15!     CLEAR-SKY COLUMN
16
17!**   INTERFACE.
18!     ----------
19
20!          *SWCLR* IS CALLED EITHER FROM *SW1S*
21!                                OR FROM *SWNI*
22
23!        IMPLICIT ARGUMENTS :
24!        --------------------
25
26!     ==== INPUTS ===
27!     ==== OUTPUTS ===
28
29!     METHOD.
30!     -------
31
32!     EXTERNALS.
33!     ----------
34
35!          NONE
36
37!     REFERENCE.
38!     ----------
39
40!        SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
41!        DOCUMENTATION, AND FOUQUART AND BONNEL (1980)
42
43!     AUTHOR.
44!     -------
45!        JEAN-JACQUES MORCRETTE  *ECMWF*
46
47!     MODIFICATIONS.
48!     --------------
49!        ORIGINAL : 94-11-15
50!        Modified : 96-03-19 JJM-PhD (loop 107 in absence of aerosols)
51!        JJMorcrette 990128 : sunshine duration
52!        JJMorcrette 990128 : sunshine duration
53!        99-05-25   JJMorcrette    Revised aerosols
54!        JJMorcrette 001218 : 6 spectral intervals
55!        03-10-10 Deborah Salmond and Marta Janiskova Optimisation
56!        M.Hamrud      01-Oct-2003 CY28 Cleaning
57!        A.Grini (Meteo-France: 2005-11-10)
58!        Y.Seity 05-10-10 : add add 3 optional arg. for dust SW properties
59!        Y.Seity 06-09-09 : add modset from O.Thouron (MesoNH) under NOVLP tests
60!        O.Boucher fev.2014: modification sur les aerosols pour utiliser les variables DST
61!     ------------------------------------------------------------------
62
63USE PARKIND1  ,ONLY : JPIM     ,JPRB
64USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
65
66USE YOESW    , ONLY : RTAUA    ,RPIZA    ,RCGA
67!USE YOERAD   , ONLY : NOVLP    ,NSW
68! NSW mis dans .def MPL 20140211
69USE YOERAD   , ONLY : NOVLP   
70USE YOERDI   , ONLY : REPCLC
71USE YOERDU   , ONLY : REPSCT
72! Temporary fix waiting for cleaner interface (or not)
73USE clesphys_mod_h, ONLY: NSW
74
75IMPLICIT NONE
76!!INCLUDE "clesphys.h"
77
78INTEGER(KIND=JPIM),INTENT(IN)    :: KLON
79INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV
80INTEGER(KIND=JPIM),INTENT(IN)    :: KIDIA
81INTEGER(KIND=JPIM),INTENT(IN)    :: KFDIA
82INTEGER(KIND=JPIM),INTENT(IN)    :: KAER
83INTEGER(KIND=JPIM),INTENT(IN)    :: KNU
84REAL(KIND=JPRB)   ,INTENT(IN)    :: PAER(KLON,6,KLEV)
85REAL(KIND=JPRB)   ,INTENT(IN)    :: PALBP(KLON,NSW)
86REAL(KIND=JPRB)   ,INTENT(IN)    :: PDSIG(KLON,KLEV)
87REAL(KIND=JPRB)   ,INTENT(IN)    :: PRAYL(KLON)
88REAL(KIND=JPRB)   ,INTENT(IN)    :: PSEC(KLON)
89!++MODIFCODE
90LOGICAL           ,INTENT(IN)    :: LDDUST                   ! flag for DUST
91REAL(KIND=JPRB)   ,INTENT(IN)    :: PPIZA_DST(KLON,KLEV)
92REAL(KIND=JPRB)   ,INTENT(IN)    :: PCGA_DST(KLON,KLEV)
93REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_DST(KLON,KLEV)
94!--MODIFCODE
95REAL(KIND=JPRB)   ,INTENT(OUT)   :: PCGAZ(KLON,KLEV)
96REAL(KIND=JPRB)   ,INTENT(OUT)   :: PPIZAZ(KLON,KLEV)
97REAL(KIND=JPRB)   ,INTENT(OUT)   :: PRAY1(KLON,KLEV+1)
98REAL(KIND=JPRB)   ,INTENT(OUT)   :: PRAY2(KLON,KLEV+1)
99REAL(KIND=JPRB)   ,INTENT(OUT)   :: PREFZ(KLON,2,KLEV+1)
100REAL(KIND=JPRB)   ,INTENT(OUT)   :: PRJ(KLON,6,KLEV+1)
101REAL(KIND=JPRB)   ,INTENT(OUT)   :: PRK(KLON,6,KLEV+1)
102REAL(KIND=JPRB)   ,INTENT(OUT)   :: PRMU0(KLON,KLEV+1)
103REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTAUAZ(KLON,KLEV)
104REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTRA1(KLON,KLEV+1)
105REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTRA2(KLON,KLEV+1)
106REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTRCLR(KLON)
107!     ------------------------------------------------------------------
108
109!*       0.1   ARGUMENTS
110!              ---------
111
112!     ------------------------------------------------------------------
113
114!              ------------
115
116REAL(KIND=JPRB) :: ZC0I(KLON,KLEV+1)&
117 & ,  ZCLE0(KLON,KLEV), ZCLEAR(KLON) &
118 & ,  ZR21(KLON)&
119 & ,  ZR23(KLON) , ZSS0(KLON) , ZSCAT(KLON)&
120 & ,  ZTR(KLON,2,KLEV+1) 
121
122INTEGER(KIND=JPIM) :: IKL, JA, JAE, JAJ, JK, JKL, JKLP1, JKM1, JL, INU1
123
124REAL(KIND=JPRB) :: ZBMU0, ZBMU1, ZCORAE, ZDEN, ZDEN1, ZFACOA,&
125 & ZFF, ZGAP, ZGAR, ZMU1, ZMUE, ZRATIO, ZRE11, &
126 & ZTO, ZTRAY, ZWW, ZDENB   
127REAL(KIND=JPRB) :: ZRR,ZMU0,ZI2MU1,ZIMU1,ZIDEN,ZIDEN1
128REAL(KIND=JPRB) :: ZHOOK_HANDLE
129!++MODIFCODE
130REAL(KIND=JPRB) ::ZFACOA_NEW(KLON,KLEV)
131!--MODIFCODE
132
133
134!     ------------------------------------------------------------------
135
136!*         1.    OPTICAL PARAMETERS FOR AEROSOLS AND RAYLEIGH
137!                --------------------------------------------
138
139IF (LHOOK) CALL DR_HOOK('SWCLR',0,ZHOOK_HANDLE)
140DO JK = 1 , KLEV+1
141  DO JA = 1 , 6
142    DO JL = KIDIA,KFDIA
143      PRJ(JL,JA,JK) = 0.0_JPRB
144      PRK(JL,JA,JK) = 0.0_JPRB
145    ENDDO
146  ENDDO
147ENDDO
148
149! ------   NB: 'PAER' AEROSOLS ARE ENTERED FROM TOP TO BOTTOM
150
151DO JK = 1 , KLEV
152  IKL=KLEV+1-JK
153  DO JL = KIDIA,KFDIA
154    PCGAZ(JL,JK) = 0.0_JPRB
155    PPIZAZ(JL,JK) =  0.0_JPRB
156    PTAUAZ(JL,JK) = 0.0_JPRB
157    ZFACOA_NEW(JL,JK) = 0.0_JPRB
158  ENDDO
159
160!++MODIFCODE 
161!--OB on fait passer les aerosols LMDZ dans la variable DST
162  IF(NOVLP < 5)THEN !ECMWF VERSION
163!  DO JAE=1,6
164      DO JL = KIDIA,KFDIA
165!        PTAUAZ(JL,JK)=PTAUAZ(JL,JK)+PAER(JL,JAE,IKL)*RTAUA(KNU,JAE)
166        PTAUAZ(JL,JK)=PTAU_DST(JL,IKL)
167!        PPIZAZ(JL,JK)=PPIZAZ(JL,JK)+PAER(JL,JAE,IKL)&
168!         & * RTAUA(KNU,JAE)*RPIZA(KNU,JAE) 
169        PPIZAZ(JL,JK)=PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL)
170!        PCGAZ(JL,JK) =  PCGAZ(JL,JK) +PAER(JL,JAE,IKL)&
171!         & * RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE) 
172        PCGAZ(JL,JK)=PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)
173      ENDDO
174!    ENDDO
175  ELSE ! MESONH VERSION
176!--OB on utilise directement les aerosols LMDZ
177!     DO JAE=1,6
178        DO JL = KIDIA,KFDIA
179           !Special optical properties for dust
180!           IF (LDDUST.AND.(JAE==3)) THEN
181           !Ponderation of aerosol optical properties:first step
182           !ti
183!            PTAUAZ(JL,JK)=PTAUAZ(JL,JK) + PAER(JL,JAE,IKL) * PTAUREL_DST(JL,IKL)
184            PTAUAZ(JL,JK)= PTAU_DST(JL,IKL)
185           !wi*ti
186!             PPIZAZ(JL,JK)=PPIZAZ(JL,JK) + PAER(JL,JAE,IKL)  &
187!                   & *PTAUREL_DST(JL,IKL)*PPIZA_DST(JL,IKL)
188             PPIZAZ(JL,JK)=PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL)
189           !wi*ti*gi
190!             PCGAZ(JL,JK) = PCGAZ(JL,JK) + PAER(JL,JAE,IKL) &
191!                &  *PTAUREL_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)
192             PCGAZ(JL,JK) = PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)
193           !wi*ti*(gi**2)
194!             ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+PAER(JL, JAE, IKL)&
195!                & *PTAUREL_DST(JL,IKL) *PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)*&
196!                & PCGA_DST(JL,IKL)
197             ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+&
198                & PTAU_DST(JL,IKL) *PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)*&
199                & PCGA_DST(JL,IKL)
200!           ELSE
201           !Ponderation of aerosol optical properties:first step
202           !ti
203!             PTAUAZ(JL,JK)=PTAUAZ(JL,JK)+PAER(JL, JAE, IKL)*RTAUA(KNU,JAE)
204           !wi*ti
205!             PPIZAZ(JL,JK)=PPIZAZ(JL,JK)+PAER(JL, JAE, IKL)&
206!                &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)
207           !wi*ti*gi
208!             PCGAZ(JL,JK) =  PCGAZ(JL,JK) +PAER(JL, JAE, IKL)&
209!                &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE)
210           !wi*ti*(gi**2)
211!             ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+PAER(JL, JAE, IKL)&
212!                &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE)*RCGA(KNU,JAE)
213!           ENDIF
214        ENDDO
215!     ENDDO
216  ENDIF
217!--MODIFCODE 
218
219!++MODIFCODE 
220  IF (NOVLP < 5) then !ECMWF VERSION
221   DO JL = KIDIA,KFDIA
222    IF (KAER /= 0) THEN
223      PCGAZ(JL,JK)=PCGAZ(JL,JK)/PPIZAZ(JL,JK)
224      PPIZAZ(JL,JK)=PPIZAZ(JL,JK)/PTAUAZ(JL,JK)
225!!!! wrong  ZRATIO = ZTRAY / (ZTRAY + PTAUAZ(JL,JK))
226!--     
227      ZGAR = PCGAZ(JL,JK)
228      ZFF = ZGAR * ZGAR
229
230!-- bug-fix: ZRATIO must be defined from the transformed value of optical thickness
231! MPLFH : ZTRAY N'EST PAS INITIALISE !!!!! A REVOIR (MPL)
232      ZTRAY= PRAYL(JL) * PDSIG(JL,JK)
233!     print *,'>>>>>>> swclr: ZTRAY ',ZTRAY
234      ZDENB = ZTRAY + PTAUAZ(JL,JK)*(1.0_JPRB-PPIZAZ(JL,JK)*ZFF)
235      ZRATIO=ZTRAY/ZDENB
236 !--     
237      PTAUAZ(JL,JK)=ZTRAY+PTAUAZ(JL,JK)*(1.0_JPRB-PPIZAZ(JL,JK)*ZFF)
238      PCGAZ(JL,JK) = ZGAR * (1.0_JPRB - ZRATIO) / (1.0_JPRB + ZGAR)
239      PPIZAZ(JL,JK) =ZRATIO+(1.0_JPRB-ZRATIO)*PPIZAZ(JL,JK)*(1.0_JPRB-ZFF)&
240       & / (1.0_JPRB - PPIZAZ(JL,JK) * ZFF) 
241    ELSE
242      ZTRAY = PRAYL(JL) * PDSIG(JL,JK)
243      PTAUAZ(JL,JK) = ZTRAY
244      PCGAZ(JL,JK) = 0.0_JPRB
245      PPIZAZ(JL,JK) = 1.0_JPRB-REPSCT
246    ENDIF
247  ENDDO
248  ELSE !MESONH VERSION
249   DO JL = KIDIA,KFDIA
250    IF (KAER /= 0) THEN
251      ZTRAY = PRAYL(JL) * PDSIG(JL,JK)
252      ZRATIO =PPIZAZ(JL,JK)+ZTRAY
253      !Ponderation G**2
254      ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)/ZRATIO
255      !Ponderation w
256      PPIZAZ(JL,JK)=ZRATIO/(PTAUAZ(JL,JK)+ZTRAY)
257      !Ponderation g
258      PCGAZ(JL,JK)=PCGAZ(JL,JK)/ZRATIO
259      !Ponderation+delta-modified parameters tau
260      PTAUAZ(JL,JK)=(ZTRAY+PTAUAZ(JL,JK))*&
261       &  (1.0_JPRB-PPIZAZ(JL,JK)*ZFACOA_NEW(JL,JK))
262      !delta-modified parameters w
263      PPIZAZ(JL,JK)=PPIZAZ(JL,JK)*(1.0_JPRB-ZFACOA_NEW(JL,JK))/&
264          & (1.0_JPRB-ZFACOA_NEW(JL,JK)*PPIZAZ(JL,JK))     
265      !delta-modified parameters g
266      PCGAZ(JL,JK)=PCGAZ(JL,JK)/(1.0_JPRB+PCGAZ(JL,JK))
267     
268    ELSE
269      ZTRAY = PRAYL(JL) * PDSIG(JL,JK)
270      ZFACOA_NEW(JL,JK)= 0.0_JPRB
271      PTAUAZ(JL,JK) = ZTRAY
272      PCGAZ(JL,JK) = 0.0_JPRB
273      PPIZAZ(JL,JK) = 1.0_JPRB-REPSCT
274    ENDIF
275   ENDDO   
276  ENDIF
277!--MODIFCODE 
278 
279ENDDO
280
281!     ------------------------------------------------------------------
282
283!*         2.    TOTAL EFFECTIVE CLOUDINESS ABOVE A GIVEN LEVEL
284!                ----------------------------------------------
285
286DO JL = KIDIA,KFDIA
287  ZR23(JL) = 0.0_JPRB
288  ZC0I(JL,KLEV+1) = 0.0_JPRB
289  ZCLEAR(JL) = 1.0_JPRB
290  ZSCAT(JL) = 0.0_JPRB
291ENDDO
292
293JK = 1
294JKL = KLEV+1 - JK
295JKLP1 = JKL + 1
296DO JL = KIDIA,KFDIA
297!++MODIFCODE
298  IF (NOVLP >= 5) THEN
299   ZFACOA = PTAUAZ(JL,JK)
300   ZCORAE = ZFACOA *  PSEC(JL)
301  ELSE
302   ZFACOA = 1.0_JPRB - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL)
303   ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL)
304  ENDIF
305!--MODIFCODE
306  ZR21(JL) = EXP(-ZCORAE   )
307  ZSS0(JL) = 1.0_JPRB-ZR21(JL)
308  ZCLE0(JL,JKL) = ZSS0(JL)
309
310  IF (NOVLP == 1 .OR. NOVLP == 4) THEN
311!* maximum-random     
312    ZCLEAR(JL) = ZCLEAR(JL)&
313     & *(1.0_JPRB-MAX(ZSS0(JL),ZSCAT(JL)))&
314     & /(1.0_JPRB-MIN(ZSCAT(JL),1.0_JPRB-REPCLC)) 
315    ZC0I(JL,JKL) = 1.0_JPRB - ZCLEAR(JL)
316    ZSCAT(JL) = ZSS0(JL)
317  ELSEIF (NOVLP == 2) THEN
318!* maximum
319    ZSCAT(JL) = MAX( ZSS0(JL) , ZSCAT(JL) )
320    ZC0I(JL,JKL) = ZSCAT(JL)
321!++MODIFCODE
322  ELSEIF ((NOVLP == 3).OR.(NOVLP  >=  5)) THEN
323!--MODIFCODE
324!* random
325    ZCLEAR(JL)=ZCLEAR(JL)*(1.0_JPRB-ZSS0(JL))
326    ZSCAT(JL) = 1.0_JPRB - ZCLEAR(JL)
327    ZC0I(JL,JKL) = ZSCAT(JL)
328  ENDIF
329ENDDO
330
331DO JK = 2 , KLEV
332  JKL = KLEV+1 - JK
333  JKLP1 = JKL + 1
334  DO JL = KIDIA,KFDIA
335!++MODIFCODE
336    IF (NOVLP >= 5) THEN
337     ZFACOA = PTAUAZ(JL,JK)
338     ZCORAE = ZFACOA *  PSEC(JL)
339    ELSE
340    ZFACOA = 1.0_JPRB - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL)
341    ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL)
342    ENDIF
343!--MODIFCODE
344    ZR21(JL) = EXP(-ZCORAE   )
345    ZSS0(JL) = 1.0_JPRB-ZR21(JL)
346    ZCLE0(JL,JKL) = ZSS0(JL)
347
348    IF (NOVLP == 1 .OR. NOVLP == 4) THEN
349!* maximum-random     
350      ZCLEAR(JL) = ZCLEAR(JL)&
351       & *(1.0_JPRB-MAX(ZSS0(JL),ZSCAT(JL)))&
352       & /(1.0_JPRB-MIN(ZSCAT(JL),1.0_JPRB-REPCLC)) 
353      ZC0I(JL,JKL) = 1.0_JPRB - ZCLEAR(JL)
354      ZSCAT(JL) = ZSS0(JL)
355    ELSEIF (NOVLP == 2) THEN
356!* maximum
357      ZSCAT(JL) = MAX( ZSS0(JL) , ZSCAT(JL) )
358      ZC0I(JL,JKL) = ZSCAT(JL)
359!++MODIFCODE
360    ELSEIF ((NOVLP == 3).OR.(NOVLP >= 5)) THEN
361!--MODIFCODE
362!* random
363      ZCLEAR(JL)=ZCLEAR(JL)*(1.0_JPRB-ZSS0(JL))
364      ZSCAT(JL) = 1.0_JPRB - ZCLEAR(JL)
365      ZC0I(JL,JKL) = ZSCAT(JL)
366    ENDIF
367  ENDDO
368ENDDO
369
370!     ------------------------------------------------------------------
371
372!*         3.    REFLECTIVITY/TRANSMISSIVITY FOR PURE SCATTERING
373!                -----------------------------------------------
374
375DO JL = KIDIA,KFDIA
376  PRAY1(JL,KLEV+1) = 0.0_JPRB
377  PRAY2(JL,KLEV+1) = 0.0_JPRB
378  PREFZ(JL,2,1) = PALBP(JL,KNU)
379  PREFZ(JL,1,1) = PALBP(JL,KNU)
380  PTRA1(JL,KLEV+1) = 1.0_JPRB
381  PTRA2(JL,KLEV+1) = 1.0_JPRB
382ENDDO
383
384DO JK = 2 , KLEV+1
385  JKM1 = JK-1
386  DO JL = KIDIA,KFDIA
387
388!     ------------------------------------------------------------------
389
390!*         3.1  EQUIVALENT ZENITH ANGLE
391!               -----------------------
392
393    ZMUE = (1.0_JPRB-ZC0I(JL,JK)) * PSEC(JL)+ ZC0I(JL,JK) * 1.66_JPRB
394    PRMU0(JL,JK) = 1.0_JPRB/ZMUE
395    ZMU0=PRMU0(JL,JK)
396
397!     ------------------------------------------------------------------
398
399!*         3.2  REFLECT./TRANSMISSIVITY DUE TO RAYLEIGH AND AEROSOLS
400!               ----------------------------------------------------
401
402    ZGAP = PCGAZ(JL,JKM1)
403    ZBMU0 = 0.5_JPRB - 0.75_JPRB * ZGAP *ZMU0
404    ZWW = PPIZAZ(JL,JKM1)
405    ZTO = PTAUAZ(JL,JKM1)
406    ZDEN = 1.0_JPRB + (1.0_JPRB - ZWW + ZBMU0 * ZWW) * ZTO * ZMUE &
407     & + (1-ZWW) * (1.0_JPRB - ZWW +2.0_JPRB*ZBMU0*ZWW)*ZTO*ZTO*ZMUE*ZMUE 
408    ZIDEN=1.0_JPRB / ZDEN
409    PRAY1(JL,JKM1) = ZBMU0 * ZWW * ZTO * ZMUE * ZIDEN
410    PTRA1(JL,JKM1) = ZIDEN
411
412    ZMU1 = 0.5_JPRB
413    ZIMU1=2.0_JPRB
414    ZI2MU1=4.0_JPRB
415    ZBMU1 = 0.5_JPRB - 0.75_JPRB * ZGAP * ZMU1
416    ZDEN1= 1.0_JPRB + (1.0_JPRB - ZWW + ZBMU1 * ZWW) * ZTO * ZIMU1 &
417     & + (1-ZWW) * (1.0_JPRB - ZWW +2.0_JPRB*ZBMU1*ZWW)*ZTO*ZTO*ZI2MU1 
418    ZIDEN1=1.0_JPRB / ZDEN1
419    PRAY2(JL,JKM1) = ZBMU1 * ZWW * ZTO * ZIMU1 *ZIDEN1
420    PTRA2(JL,JKM1) = ZIDEN1
421
422    ZRR=1.0_JPRB/(1.0_JPRB-PRAY2(JL,JKM1)*PREFZ(JL,1,JKM1))
423    PREFZ(JL,1,JK) = PRAY1(JL,JKM1)&
424     & + PREFZ(JL,1,JKM1) * PTRA1(JL,JKM1)&
425     & * PTRA2(JL,JKM1)&
426     & *ZRR 
427
428    ZTR(JL,1,JKM1) = PTRA1(JL,JKM1)&
429     & *ZRR 
430
431    PREFZ(JL,2,JK) = PRAY1(JL,JKM1)&
432     & + PREFZ(JL,2,JKM1) * PTRA1(JL,JKM1)&
433     & * PTRA2(JL,JKM1)   
434
435    ZTR(JL,2,JKM1) = PTRA1(JL,JKM1)
436
437  ENDDO
438ENDDO
439DO JL = KIDIA,KFDIA
440  ZMUE = (1.0_JPRB-ZC0I(JL,1))*PSEC(JL)+ZC0I(JL,1)*1.66_JPRB
441  PRMU0(JL,1)=1.0_JPRB/ZMUE
442  PTRCLR(JL)=1.0_JPRB-ZC0I(JL,1)
443ENDDO
444
445!     ------------------------------------------------------------------
446
447!*         3.5    REFLECT./TRANSMISSIVITY BETWEEN SURFACE AND LEVEL
448!                 -------------------------------------------------
449
450IF (NSW <= 4) THEN
451  INU1=1
452ELSEIF (NSW == 6) THEN
453  INU1=3
454ENDIF   
455
456IF (KNU <= INU1) THEN
457  JAJ = 2
458  DO JL = KIDIA,KFDIA
459    PRJ(JL,JAJ,KLEV+1) = 1.0_JPRB
460    PRK(JL,JAJ,KLEV+1) = PREFZ(JL, 1,KLEV+1)
461  ENDDO
462
463  DO JK = 1 , KLEV
464    JKL = KLEV+1 - JK
465    JKLP1 = JKL + 1
466    DO JL = KIDIA,KFDIA
467      ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL,  1,JKL)
468      PRJ(JL,JAJ,JKL) = ZRE11
469      PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL,  1,JKL)
470    ENDDO
471  ENDDO
472
473ELSE
474
475  DO JAJ = 1 , 2
476    DO JL = KIDIA,KFDIA
477      PRJ(JL,JAJ,KLEV+1) = 1.0_JPRB
478      PRK(JL,JAJ,KLEV+1) = PREFZ(JL,JAJ,KLEV+1)
479    ENDDO
480
481    DO JK = 1 , KLEV
482      JKL = KLEV+1 - JK
483      JKLP1 = JKL + 1
484      DO JL = KIDIA,KFDIA
485        ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL,JAJ,JKL)
486        PRJ(JL,JAJ,JKL) = ZRE11
487        PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL,JAJ,JKL)
488      ENDDO
489    ENDDO
490  ENDDO
491
492ENDIF
493
494!     ------------------------------------------------------------------
495
496IF (LHOOK) CALL DR_HOOK('SWCLR',1,ZHOOK_HANDLE)
497END SUBROUTINE SWCLR
Note: See TracBrowser for help on using the repository browser.