4 & psct , pcardi, pcldsw, ppmb , ppsol, prmu0, ptave, pwv,&
5 & paki , pcld , pclear, pdsig, pfact, prmu , psec , pud &
70 INTEGER(KIND=JPIM),
INTENT(IN) :: KLON
71 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
72 INTEGER(KIND=JPIM),
INTENT(IN) :: KIDIA
73 INTEGER(KIND=JPIM),
INTENT(IN) :: KFDIA
74 REAL(KIND=JPRB) ,
INTENT(IN) :: PSCT
75 REAL(KIND=JPRB) ,
INTENT(IN) :: PCARDI
76 REAL(KIND=JPRB) ,
INTENT(IN) :: PCLDSW(klon,klev)
77 REAL(KIND=JPRB) ,
INTENT(IN) :: PPMB(klon,klev+1)
78 REAL(KIND=JPRB) ,
INTENT(IN) :: PPSOL(klon)
79 REAL(KIND=JPRB) ,
INTENT(IN) :: PRMU0(klon)
80 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAVE(klon,klev)
81 REAL(KIND=JPRB) ,
INTENT(IN) :: PWV(klon,klev)
82 REAL(KIND=JPRB) ,
INTENT(OUT) :: PAKI(klon,2,nsw)
83 REAL(KIND=JPRB) ,
INTENT(INOUT) :: PCLD(klon,klev)
84 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCLEAR(klon)
85 REAL(KIND=JPRB) ,
INTENT(OUT) :: PDSIG(klon,klev)
86 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFACT(klon)
87 REAL(KIND=JPRB) ,
INTENT(OUT) :: PRMU(klon)
88 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSEC(klon)
89 REAL(KIND=JPRB) ,
INTENT(OUT) :: PUD(klon,5,klev+1)
95 INTEGER(KIND=JPIM) :: INUIR
101 INTEGER(KIND=JPIM) :: IIND(2)
102 REAL(KIND=JPRB) :: ZC1J(klon,klev+1),ZCLEAR(klon),ZCLOUD(klon)&
103 & , ZN175(KLON), ZN190(KLON), ZO175(KLON)&
104 & , ZO190(KLON), ZSIGN(KLON)&
105 & , ZR(KLON,2) , ZSIGO(KLON), ZUD(KLON,2)
107 INTEGER(KIND=JPIM) :: JA, JK, JKL, JKLP1, JKP1, JL, JNU
109 REAL(KIND=JPRB) :: ZDSCO2, ZDSH2O, ZFPPW, ZRTH, ZRTU, ZWH2O, ZALPHA1
110 REAL(KIND=JPRB) :: ZHOOK_HANDLE
112 #include "swtt1.intfb.h"
128 pud(jl,1,klev+1)=0.0_jprb
129 pud(jl,2,klev+1)=0.0_jprb
130 pud(jl,3,klev+1)=0.0_jprb
131 pud(jl,4,klev+1)=0.0_jprb
132 pud(jl,5,klev+1)=0.0_jprb
133 pfact(jl)= prmu0(jl) * psct
137 psec(jl)=1.0_jprb/prmu(jl)
138 zc1j(jl,klev+1)=0.0_jprb
147 zo175(jl) = ppsol(jl)**
rpdu1
148 zo190(jl) = ppsol(jl)**
rpdh1
149 zsigo(jl) = ppsol(jl)
163 zwh2o = max(pwv(jl,jkl) ,
repscq )
165 zsign(jl) = 100._jprb * ppmb(jl,jkp1)
166 pdsig(jl,jk) = (zsigo(jl) - zsign(jl))/ppsol(jl)
167 zn175(jl) = zsign(jl) **
rpdu1
168 zn190(jl) = zsign(jl) **
rpdh1
169 zdsco2 = zo175(jl) - zn175(jl)
170 zdsh2o = zo190(jl) - zn190(jl)
171 pud(jl,1,jk) =
rpnh * zdsh2o * zwh2o * zrth
172 pud(jl,2,jk) =
rpnu * zdsco2 * pcardi * zrtu
174 zfppw=1.6078_jprb*zwh2o/(1.0_jprb+0.608_jprb*zwh2o)
175 pud(jl,4,jk)=pud(jl,1,jk)*zfppw
176 pud(jl,5,jk)=pud(jl,1,jk)*(1.0_jprb-zfppw)
177 zud(jl,1) = zud(jl,1) + pud(jl,1,jk)
178 zud(jl,2) = zud(jl,2) + pud(jl,2,jk)
179 zsigo(jl) = zsign(jl)
180 zo175(jl) = zn175(jl)
181 zo190(jl) = zn190(jl)
188 zclear(jl)=zclear(jl)&
189 & *(1.0_jprb-max(pcldsw(jl,jkl),zcloud(jl)))&
190 & /(1.0_jprb-min(zcloud(jl),1.0_jprb-
repsec))
191 zc1j(jl,jkl)= 1.0_jprb - zclear(jl)
192 zcloud(jl) = pcldsw(jl,jkl)
194 zcloud(jl) = max(pcldsw(jl,jkl),zcloud(jl))
195 zc1j(jl,jkl) = zcloud(jl)
197 zclear(jl) = zclear(jl)*(1.0_jprb-pcldsw(jl,jkl))
198 zcloud(jl) = 1.0_jprb - zclear(jl)
199 zc1j(jl,jkl) = zcloud(jl)
200 ELSEIF (
novlp == 4)
THEN
202 zclear(jl)=zclear(jl)*( &
203 & zalpha1*(1.0_jprb-max(pcldsw(jl,jkl),zcloud(jl))) &
204 & /(1.0_jprb-min(zcloud(jl),1.0_jprb-
repsec)) &
205 & +(1.0_jprb-zalpha1)*(1.0_jprb-pcldsw(jl,jkl)) )
206 zc1j(jl,jkl) = 1.0_jprb - zclear(jl)
207 zcloud(jl) = pcldsw(jl,jkl)
214 pclear(jl)=1.0_jprb-zc1j(jl,1)
218 IF (pclear(jl) < 1.0_jprb)
THEN
219 pcld(jl,jk)=pcldsw(jl,jk)/(1.0_jprb-pclear(jl))
223 pcld(jl,jk)=max(0.0_jprb,min(1.0_jprb,pcld(jl,jk)))
232 zud(jl,ja) = zud(jl,ja) * psec(jl)
238 ELSEIF (nsw == 6)
THEN
244 CALL swtt1 ( kidia,kfdia,klon, jnu, 2, iind,&
250 paki(jl,ja,jnu) = -log( zr(jl,ja) ) / zud(jl,ja)
real(kind=jprb), dimension(:), allocatable ra1ovlp
subroutine swtt1(KIDIA, KFDIA, KLON, KNU, KABS, KIND, PU, PTR)
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
subroutine swu(KIDIA, KFDIA, KLON, KLEV, PSCT, PCARDI, PCLDSW, PPMB, PPSOL, PRMU0, PTAVE, PWV, PAKI, PCLD, PCLEAR, PDSIG, PFACT, PRMU, PSEC, PUD)