LMDZ
radlsw.F90
Go to the documentation of this file.
1 SUBROUTINE radlsw &
2  &( kidia, kfdia , klon , ktdia, klev , kmode, kaer, kbox, nbox &
3  &, ndump, klwrad &
4  &, prii0 &
5  &, paer , palbd , palbp, paph , pap &
6  &, pcco2, pfrcl , pdp , pemis, pemiw , plsm , pmu0, pozon &
7  &, pq , pqiwp , pqlwp, psqiw, psqlw , pqs , pqrain, praint &
8  &, prlvri,prlvrl, pth , pt , pts , pnbas, pntop &
9  &, pemit, pfct , pflt , pfcs , pfls , pfrsod, psudu, puvdf, pparf &
10  &, pfdct, pfuct , pfdlt, pfult, pfdcs , pfucs , pfdls, pfuls &
11  &, ztau , ztauint &
12  &, aswbox, olrbox, slwbox, sswbox, taubox, pclbx &
13 ! #DB &, k2iii, k2jjj &
14  &)
15 
16 !**** *RADLSW* - INTERFACE TO ECMWF LW AND SW RADIATION SCHEMES
17 
18 ! PURPOSE.
19 ! --------
20 ! CONTROLS RADIATION COMPUTATIONS
21 
22 !** INTERFACE.
23 ! ----------
24 
25 ! EXPLICIT ARGUMENTS :
26 ! --------------------
27 ! PAER : (KLON,6,KLEV) ; OPTICAL THICKNESS OF THE AEROSOLS
28 ! PALBD : (KLON,NSW) ; SURF. SW ALBEDO FOR DIFFUSE RADIATION
29 ! PALBP : (KLON,NSW) ; SURF. SW ALBEDO FOR PARALLEL RADIATION
30 ! PAPH : (KLON,KLEV+1) ; HALF LEVEL PRESSURE
31 ! PAP : (KLON,KLEV) ; FULL LEVEL PRESSURE
32 ! PCCO2 : ; CONCENTRATION IN CO2 (PA/PA)
33 ! PFRCL : (KLON,KLEV) ; CLOUD FRACTIONAL COVER
34 ! PDP : (KLON,KLEV) ; LAYER PRESSURE THICKNESS
35 ! PEMIS : (KLON) ; SURFACE LW EMISSIVITY
36 ! PEMIW : (KLON) ; SURFACE LW WINDOW EMISSIVITY
37 ! PLSM : (KLON) ; LAND-SEA MASK
38 ! PMU0 : (KLON) ; SOLAR ANGLE
39 ! PNBAS : (KLON) ; INDEX OF BASE OF CONVECTIVE LAYER
40 ! PNTOP : (KLON) ; INDEX OF TOP OF CONVECTIVE LAYER
41 ! POZON : (KLON,KLEV) ; CONCENTRATION IN OZONE (PA/PA)
42 ! PQ : (KLON,KLEV) ; SPECIFIC HUMIDITY PA/PA
43 ! PQIWP : (KLON,KLEV) ; SOLID WATER KG/KG
44 ! PQLWP : (KLON,KLEV) ; LIQUID WATER KG/KG
45 ! PQS : (KLON,KLEV) ; SATURATION WATER VAPOR KG/KG
46 ! PQRAIN : (KLON,KLEV) ; RAIN WATER KG/KG
47 ! PRAINT : (KLON,KLEV) ; RAIN RATE (m/s)
48 ! PRLVRI : (KLON,KLEV) ; RELATIVE VARIANCE OF ICE WATER
49 ! PRLVRL : (KLON,KLEV) ; RELATIVE VARIANCE OF LIQUID WATER
50 ! PTH : (KLON,KLEV+1) ; HALF LEVEL TEMPERATURE
51 ! PT : (KLON,KLEV) ; FULL LEVEL TEMPERATURE
52 ! PTS : (KLON) ; SURFACE TEMPERATURE
53 ! ==== OUTPUTS ===
54 ! PFCT : (KLON,KLEV+1) ; CLEAR-SKY LW NET FLUXES
55 ! PFLT : (KLON,KLEV+1) ; TOTAL LW NET FLUXES
56 ! PFCS : (KLON,KLEV+1) ; CLEAR-SKY SW NET FLUXES
57 ! PFLS : (KLON,KLEV+1) ; TOTAL SW NET FLUXES
58 ! PFRSOD : (KLON) ; TOTAL-SKY SURFACE SW DOWNWARD FLUX
59 ! PEMIT : (KLON) ; SURFACE TOTAL LONGWAVE EMISSIVITY
60 ! PSUDU : (KLON) ; SOLAR RADIANCE IN SUN'S DIRECTION
61 ! PUVDF : (KLON) ; SURFACE DOWNWARD U.V. RADIATION
62 ! PPARF : (KLON) ; PHOTOSYNTHETICALLY ACTIVE RADIATION
63 
64 ! IMPLICIT ARGUMENTS : NONE
65 ! --------------------
66 
67 ! METHOD.
68 ! -------
69 ! SEE DOCUMENTATION
70 
71 ! EXTERNALS.
72 ! ----------
73 
74 ! REFERENCE.
75 ! ----------
76 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
77 
78 ! AUTHORS.
79 ! --------
80 ! J.-J. MORCRETTE *ECMWF*
81 
82 ! MODIFICATIONS.
83 ! --------------
84 ! ORIGINAL : 88-02-04
85 ! J.-J. MORCRETTE 94-11-15 DIRECT/DIFFUSE SURFACE ALBEDO
86 ! 08/96: J.-J. Morcrette/Ph. Dandin: tests of eff. radius param.
87 ! 9909 : JJMorcrette effect.radius + inhomogeneity factors
88 ! JJMorcrette 990128 : sunshine duration
89 ! JJMorcrette : 990831 RRTM-140gp
90 !-----------------------------------------------------------------------
91 
92 #include "tsmbkind.h"
93 
94 !USE YOMCT3 , ONLY : NSTEP
95 USE yomcst , ONLY : rg ,rd ,rtt ,rpi
96 USE yoerad , ONLY : nsw ,lrrtm ,linhom, &
98  &niceopt, nliqopt, novlp , nhowinh, rminice
99 USE yoelw , ONLY : nsil ,ntra ,nua ,tstand ,xp
100 USE yoesw , ONLY : ryfwca ,ryfwcb ,ryfwcc ,ryfwcd ,&
110  &rlinli
111 USE yoerdu , ONLY : nuaer ,ntraer ,replog ,repsc ,diff
112 USE yoerdi , ONLY : repclc
113 USE yoethf , ONLY : rtice
114 USE yoephli , ONLY : lphylin
115 USE yoerrtwn , ONLY : ng ,nspa ,nspb ,wavenum1 ,&
117 USE yoedbug , ONLY : ldebug
118 
119 
120 IMPLICIT NONE
121 
122 
123 ! DUMMY INTEGER SCALARS
124 integer_m :: kaer
125 integer_m :: kfdia
126 integer_m :: kidia
127 integer_m :: klev
128 integer_m :: klon
129 integer_m :: kmode
130 integer_m :: ktdia
131 integer_m :: kbox
132 integer_m :: nbox
133 integer_m :: ndump, klwrad
134 
135 ! DUMMY REAL SCALARS
136 real_b :: prii0
137 
138 
139 
140 ! -----------------------------------------------------------------
141 
142 !* 0.1 ARGUMENTS.
143 ! ----------
144 real_b :: palbd(klon,nsw) , palbp(klon,nsw)
145 real_b :: pemis(klon) , pemiw(klon)
146 real_b :: plsm(klon) , pmu0(klon)
147 real_b :: pcco2 , pozon(klon,klev)
148 real_b :: pts(klon) , pnbas(klon) , pntop(klon)
149 real_b :: pt(klon,klev) , pap(klon,klev)
150 real_b :: pth(klon,klev+1), paph(klon,klev+1)
151 real_b :: pdp(klon,klev)
152 real_b :: pq(klon,klev) , pqs(klon,klev)
153 real_b :: pqiwp(klon,klev), pqlwp(klon,klev), pqrain(klon,klev)
154 real_b :: praint(klon,klev)
155 real_b :: prlvri(klon,klev),prlvrl(klon,klev)
156 real_b :: psqiw(klon,klev), psqlw(klon,klev)
157 real_b :: pfrcl(klon,klev), pclfr(klon,klev), pclbx(klon,100,klev)
158 real_b :: paer(klon,6,klev)
159 
160 ! #DB integer :: k2iii(KLON),k2jjj(KLON),kio,kjo
161 
162 ! ==== COMPUTED IN RADLSW ===
163 real_b :: pfcs(klon,klev+1), pfct(klon,klev+1)
164 real_b :: pfls(klon,klev+1), pflt(klon,klev+1)
165 real_b :: pfrsod(klon) , pemit(klon)
166 real_b :: psudu(klon) , puvdf(klon) , pparf(klon)
167 real_b :: pfdct(klon,klev+1), pfuct(klon,klev+1)
168 real_b :: pfdlt(klon,klev+1), pfult(klon,klev+1)
169 real_b :: pfdcs(klon,klev+1), pfucs(klon,klev+1)
170 real_b :: pfdls(klon,klev+1), pfuls(klon,klev+1)
171 
172 real_b :: aswbox(klon, 100), olrbox(klon, 100)
173 real_b :: slwbox(klon, 100), sswbox(klon, 100), taubox(klon, 100)
174 
175 ! -----------------------------------------------------------------
176 
177 !* 0.2 LOCAL ARRAYS.
178 ! -------------
179 ! -----------------------------------------------------------------
180 
181 !-- ARRAYS FOR LOCAL VARIABLES -----------------------------------------
182 
183 integer_m :: ibas(klon) , itop(klon)
184 
185 ! #DB integer :: jkjllw, jkjlsw, JAERmin, JAERmax, jTAUCLDmin, jTAUCLDmax
186 ! #DB real :: PAERmin, PAERmax, TAUCLDmin, TAUCLDmax
187 
188 real_b ::&
189  &zalbd(klon,nsw) , zalbp(klon,nsw)&
190  &, zcg(klon,nsw,klev) , zomega(klon,nsw,klev)&
191  &, ztau(klon,nsw,klev) &
192  &, ztaucld(klon,klev,16), ztclear(klon)
193 real_b ::&
194  &zcldld(klon,klev) , zcldlu(klon,klev)&
195  &, zcldsw(klon,klev) , zcld0(klon,klev)&
196  &, zdt0(klon) &
197  &, zemis(klon) , zemiw(klon)&
198  &, zflux(klon,2,klev+1) , zfluc(klon,2,klev+1)&
199  &, zfiwp(klon) , zflwp(klon) , zfrwp(klon)&
200  &, ziwc(klon) , zlwc(klon)&
201  &, zbicfu(klon) , zkicfu1(klon) , zkicfu2(klon)&
202 !cc , ZRWC(KLON)
203  &, zmu0(klon) , zoz(klon,klev) , zozn(klon,klev)&
204  &, zozon(klon,klev) , zpmb(klon,klev+1), zpsol(klon)&
205  &, ztave(klon,klev) , ztl(klon,klev+1)&
206  &, zview(klon)
207 real_b ::&
208  &zfcdwn(klon,klev+1), zfcup(klon,klev+1)&
209  &, zfsdwn(klon,klev+1), zfsup(klon,klev+1)&
210  &, zfsupn(klon) , zfsupv(klon)&
211  &, zfcupn(klon) , zfcupv(klon)&
212  &, zfsdnn(klon) , zfsdnv(klon)&
213  &, zfcdnn(klon) , zfcdnv(klon)&
214  &, zcoolr(klon,klev) , zcoolc(klon,klev)&
215  &, zheatr(klon,klev) , zheatc(klon,klev)
216 real_b ::&
217  &zalfice(klon) , zgamice(klon) , zbice(klon), zdesr(klon) &
218  &, zradip(klon) , zradlp(klon) , zcfudg(klon)&
219 !cc , ZRADRD(KLON)
220  &, zraint(klon) , zres(klon)&
221  &, ztice(klon) , zemit(klon) , ztauint(klon)
222 real_b :: zsudu(klon) , zuvdf(klon) , zparf(klon), zcol(klon) &
223  &, ztcc(klon) , ztca(klon)
224 
225 !-- box-type arrays
226 
227 real_b :: cpfcs(klon,klev+1) , cpfct(klon,klev+1)
228 real_b :: cpfls(klon,klev+1) , cpflt(klon,klev+1)
229 real_b :: cpfrsod(klon) , cpemit(klon)
230 real_b :: cpsudu(klon) , cpuvdf(klon) , cpparf(klon)
231 real_b :: cpfdct(klon,klev+1), cpfuct(klon,klev+1)
232 real_b :: cpfdlt(klon,klev+1), cpfult(klon,klev+1)
233 real_b :: cpfdcs(klon,klev+1), cpfucs(klon,klev+1)
234 real_b :: cpfdls(klon,klev+1), cpfuls(klon,klev+1)
235 
236 ! LOCAL INTEGER SCALARS
237 integer_m :: ikl, jae, jk, jkl, jklp1, jkp1, jl, jnu, jrtm, jsw &
238  &, nboxl, icbox, imov, indlay
239 
240 ! LOCAL LOGICAL SCALARS
241 LOGICAL :: LLINTRP
242 
243 ! LOCAL REAL SCALARS
244 real_b :: zasymx, zdiffd, zgi, zgl, zgr, ziwgkg, zlwgkg,&
245  &zmsaid, zmsaiu, zmsald, zmsalu, zmtconv, &
246  &zmtfudg, zlwfudg, zswfudg, zmultl, zoi, zol, zomgmx, zor, &
247  &zrmuz, zrwgkg, ztaud, ztaumx, ztempc, &
248  &ztoi, ztol, ztor, zzfiwp, zzflwp, zdpog, zpodt
249 real_b :: zalnd, zasea, zd, zden, zntot, znum, zratio, zcoeff, z1radi,&
250  &z1radl, zbetai, zomgi, zomgp, zfdel, zwght, zvi, zvl, zvr
251 real_b :: zasw, zolr, zslw, zssw, zmulti, zaiwc, zbiwc,&
252  &zdice, zfsr, zlgiwc, ztcels, ztblay, zaddplk, zplanck
253 real_b :: ztol1, ztoi1, ztor1
254 
255 
256 ! -----------------------------------------------------------------
257 
258 ! #DB kio = 66
259 ! #DB kjo = 53
260 
261 !if (NDUMP.LE.3) then
262 ! JL=KIDIA
263 ! DO jk=1,klev
264 ! print 9104,jk,PAPH(JL,JK),PTH(JL,JK),PAP(JL,JK),PT(JL,JK)&
265 ! & ,PDP(JL,JK)&
266 ! & ,PQ(JL,JK),PFRCL(JL,JK),PQIWP(JL,JK),PQLWP(JL,JK)&
267 ! & ,POZON(JL,JK),PQS(JL,JK)
268 9104 format(1x,i3,f9.1,f8.2,f9.1,f8.2,f9.1,e10.3,f7.4,4e10.3)
269 ! ENDDO
270 ! jk=klev+1
271 ! print 9104,jk,PAPH(JL,JK),PTH(JL,JK)
272 ! print 9105,PTS(JL),(PALBD(JL,JSW),PALBP(JL,JSW),JSW=1,NSW)
273 9105 FORMAT(13x,f8.2,12f8.4)
274 !end if
275 
276 !print *,'NICEOPT, NLIQOPT, NRADIP, NRADLP',NICEOPT,NLIQOPT,NRADIP,NRADLP
277 
278 !-- compute total cloud cover
279 DO jl=kidia,kfdia
280  ztcc(jl)=1.-pfrcl(jl,1)
281  ztca(jl)=0.
282 END DO
283 DO jk=2,klev
284  DO jl=kidia,kfdia
285  ztcc(jl)=ztcc(jl)*(1.-max(pfrcl(jl,jk),pfrcl(jl,jk-1))) &
286  & /(1.-min(pfrcl(jl,jk-1),1.-repclc))
287  END DO
288 END DO
289 DO jl=kidia,kfdia
290  ztcc(jl)=1.-ztcc(jl)
291 END DO
292 
293 !JL=KIDIA
294 !print 9106,ZTCC(JL)
295 9106 format(1x,'TCC :',f7.4)
296 !print 9107,LINHOM,NHOWINH
297 9107 format(1x,'LINHOM=',l8,' NHOWINH=',i2)
298 
299 
300 
301 
302 
303 
304 !* 1. SET-UP INPUT QUANTITIES FOR RADIATION
305 ! -------------------------------------
306 
307 IF (.NOT.linhom) THEN
308  zmtfudg=1.0_jprb
309  zmtconv=1.0_jprb
310  zswfudg=1.0_jprb
311  zlwfudg=1.0_jprb
312 ELSE IF (linhom) THEN
313  IF (nhowinh.EQ.1) THEN
314  zmtfudg=0.7_jprb
315  zmtconv=0.7_jprb
316  zswfudg=0.7_jprb
317  zlwfudg=0.7_jprb
318  ELSE
319  zmtfudg=1.0_jprb
320  zmtconv=1.0_jprb
321  zswfudg=1.0_jprb
322  zlwfudg=1.0_jprb
323  ENDIF
324 ENDIF
325 !print 9108,LINHOM,NHOWINH,ZSWFUDG
326 9108 format(1x,'LINHOM=',l8,' NHOWINH=',i2,' FUDG=',f4.2)
327 
328 DO jl = kidia,kfdia
329  zfcup(jl,klev+1) = _zero_
330  zfcdwn(jl,klev+1) = replog
331  zfsup(jl,klev+1) = _zero_
332  zfsdwn(jl,klev+1) = replog
333  zflux(jl,1,klev+1) = _zero_
334  zflux(jl,2,klev+1) = _zero_
335  zfluc(jl,1,klev+1) = _zero_
336  zfluc(jl,2,klev+1) = _zero_
337  zfsdnn(jl) = _zero_
338  zfsdnv(jl) = _zero_
339  zfcdnn(jl) = _zero_
340  zfcdnv(jl) = _zero_
341  zfsupn(jl) = _zero_
342  zfsupv(jl) = _zero_
343  zfcupn(jl) = _zero_
344  zfcupv(jl) = _zero_
345  zpsol(jl) = paph(jl,klev+1)
346  zpmb(jl,1) = zpsol(jl) / 100._jprb
347  zdt0(jl) = pts(jl) - pth(jl,klev+1)
348  psudu(jl) = _zero_
349  puvdf(jl) = _zero_
350  pparf(jl) = _zero_
351  zsudu(jl) = _zero_
352  ibas(jl) = int( 0.01_jprb + pnbas(jl) )
353  itop(jl) = int( 0.01_jprb + pntop(jl) )
354 ENDDO
355 
356 DO jk=1,klev+1
357  DO jl=kidia,kfdia
358  cpfls(jl,jk) = _zero_
359  cpflt(jl,jk) = _zero_
360  cpfcs(jl,jk) = _zero_
361  cpfct(jl,jk) = _zero_
362  cpfdct(jl,jk) = _zero_
363  cpfuct(jl,jk) = _zero_
364  cpfdlt(jl,jk) = _zero_
365  cpfult(jl,jk) = _zero_
366  cpfdcs(jl,jk) = _zero_
367  cpfucs(jl,jk) = _zero_
368  cpfdls(jl,jk) = _zero_
369  cpfuls(jl,jk) = _zero_
370  ENDDO
371 ENDDO
372 
373 DO jl = kidia,kfdia
374  cpfrsod(jl) = _zero_
375  cpemit(jl) = _zero_
376  cpsudu(jl) = _zero_
377  cpuvdf(jl) = _zero_
378  cpparf(jl) = _zero_
379 END DO
380 
381 
382 !* 1.1 INITIALIZE VARIOUS FIELDS
383 ! -------------------------
384 
385 
386 DO jsw=1,nsw
387  DO jl = kidia,kfdia
388  zalbd(jl,jsw)=palbd(jl,jsw)
389  zalbp(jl,jsw)=palbp(jl,jsw)
390  ENDDO
391 ENDDO
392 DO jl = kidia,kfdia
393  zemis(jl) =pemis(jl)
394  zemiw(jl) =pemiw(jl)
395  zmu0(jl) =pmu0(jl)
396  zuvdf(jl) = _zero_
397  zsudu(jl) = _zero_
398  zparf(jl) = _zero_
399 ENDDO
400 
401 DO jk = 1 , klev
402  jkp1 = jk + 1
403  jkl = klev+ 1 - jk
404  jklp1 = jkl + 1
405  DO jl = kidia,kfdia
406  zpmb(jl,jk+1)=paph(jl,jkl)/100._jprb
407  zoz(jl,jk) = pozon(jl,jkl) * 46.6968_jprb / rg
408  zozon(jl,jk) = pozon(jl,jkl)
409  zcld0(jl,jk) = _zero_
410  zfcup(jl,jk) = _zero_
411  zfcdwn(jl,jk) = _zero_
412  zfsup(jl,jk) = _zero_
413  zfsdwn(jl,jk) = _zero_
414  zflux(jl,1,jk) = _zero_
415  zflux(jl,2,jk) = _zero_
416  zfluc(jl,1,jk) = _zero_
417  zfluc(jl,2,jk) = _zero_
418  ENDDO
419 ENDDO
420 
421 
422 !** INPUTS ARE FULL LEVEL TEMPERATURES + SURFACE TEMPERATURE
423 ! INTERPOLATION TO GET HALF-LEVEL TEMPERATURES FOLLOWS
424 ! WHAT IS DONE IN *RADINT* AND *RADHEAT*
425 
426 !* LLINTRP=.T. Half-level temperatures on the coarse grid are
427 ! vertically interpolated linearly with horizontal
428 ! sampled pressure from the full-level temperatures
429 ! of the sampled grid.
430 
431 !* LLINTRP=.F. Half-level temperatures are those horizontally
432 ! sampled on the coarse grid
433 
434 llintrp=.false.
435 IF (llintrp) THEN
436  DO jk=2,klev
437  DO jl=kidia,kfdia
438  pth(jl,jk)=(pt(jl,jk-1)*pap(jl,jk-1)&
439  &*(pap(jl,jk)-paph(jl,jk))&
440  &+pt(jl,jk)*pap(jl,jk)*(paph(jl,jk)-pap(jl,jk-1)))&
441  &*(_one_/(paph(jl,jk)*(pap(jl,jk)-pap(jl,jk-1))))
442  ENDDO
443  ENDDO
444  IF (ltempds) THEN
445  DO jl=kidia,kfdia
446  pth(jl,1)= pt(jl,1)-pap(jl,1)*(pt(jl,1)-pth(jl,2))&
447  &/(pap(jl,1)-paph(jl,2))
448  pth(jl,klev+1)=pt(jl,klev)&
449  & +(paph(jl,klev+1)-pap(jl,klev))&
450  & *(pt(jl,klev)-pth(jl,klev))&
451  & /(pap(jl,klev)-paph(jl,klev))
452  ENDDO
453  ELSE
454  DO jl=kidia,kfdia
455  pth(jl,1)= pt(jl,1)-pap(jl,1)*(pt(jl,1)-pth(jl,2))&
456  &/(pap(jl,1)-paph(jl,2))
457  pth(jl,klev+1)= pts(jl)
458  ENDDO
459  ENDIF
460 ENDIF
461 
462 DO jk=1,klev
463  jkl=klev+1-jk
464  jklp1=jkl+1
465  DO jl=kidia,kfdia
466  ztl(jl,jk)=pth(jl,jklp1)
467  ztave(jl,jk)=pt(jl,jkl)
468  ENDDO
469 ENDDO
470 DO jl=kidia,kfdia
471  ztl(jl,klev+1)= pth(jl,1)
472  zpmb(jl,klev+1) = paph(jl,1)/100._jprb
473 ENDDO
474 !***
475 
476 ! ------------------------------------------------------------------
477 
478 !* 2. CLOUD AND AEROSOL PARAMETERS
479 ! ----------------------------
480 
481 nboxl=1
482 IF (kbox.EQ.1) THEN
483  CALL col2box &
484  & ( kidia, kfdia, klon, klev, nbox, novlp &
485  & , pfrcl, pclbx &
486  & )
487  nboxl=nbox
488 END IF
489 zwght=1./float(nboxl)
490 
491 !-- initialise box-type outputs OLR, ASW, SDLW, SDSW, TAU
492 DO icbox=1,nboxl
493  DO jl=kidia,kfdia
494  olrbox(jl,icbox)=_zero_
495  aswbox(jl,icbox)=_zero_
496  slwbox(jl,icbox)=_zero_
497  sswbox(jl,icbox)=_zero_
498  taubox(jl,icbox)=_zero_
499  END DO
500 END DO
501 
502 DO icbox=1,nboxl
503  IF (kbox.EQ.1) THEN
504  DO jk=1,klev
505  DO jl=kidia,kfdia
506  pclfr(jl,jk)=pclbx(jl,icbox,jk)
507  END DO
508  END DO
509 
510  ELSE
511  DO jk=1,klev
512  DO jl=kidia,kfdia
513  pclfr(jl,jk)=pfrcl(jl,jk)
514  END DO
515  END DO
516  END IF
517  DO jl=kidia,kfdia
518  psudu(jl) = _zero_
519  ztauint(jl) = _zero_
520  END DO
521 
522 !-- compute total cloud cover for that particular calculation
523  DO jl=kidia,kfdia
524  zcol(jl)=1.-pclfr(jl,1)
525  END DO
526  DO jk=2,klev
527  DO jl=kidia,kfdia
528  zcol(jl)=zcol(jl)*(1.-max(pclfr(jl,jk),pclfr(jl,jk-1))) &
529  & /(1.-min(pclfr(jl,jk-1),1.-repclc))
530  END DO
531  END DO
532  DO jl=kidia,kfdia
533  zcol(jl)=1.-zcol(jl)
534  END DO
535 
536 
537 
538 
539 
540 
541 DO jk = 1 , klev
542  ikl = klev + 1 - jk
543 
544 ! 2.1 INITIALIZE OPTICAL PROPERTIES TO CLEAR SKY VALUES
545 ! -------------------------------------------------
546 
547  DO jsw = 1,nsw
548  DO jl = kidia,kfdia
549  ztau(jl,jsw,jk) = _zero_
550  zomega(jl,jsw,jk)= _one_
551  zcg(jl,jsw,jk) = _zero_
552  ENDDO
553  ENDDO
554  DO jl = kidia,kfdia
555  zcldsw(jl,jk) = _zero_
556  zcldld(jl,jk) = _zero_
557  zcldlu(jl,jk) = _zero_
558  ENDDO
559 
560 
561 ! 2.2 CLOUD ICE AND LIQUID CONTENT AND PATH
562 ! -------------------------------------
563 
564  DO jl = kidia,kfdia
565 ! PCLFR(JL,IKL)=MAX(REPSC,MIN(PCLFR(JL,IKL),_ONE_-REPSC))
566  pclfr(jl,ikl)=max( _zero_ ,min( pclfr(jl,ikl), _one_ ))
567 
568 ! --- LIQUID WATER CONTENT (g.m-3) AND LIQUID WATER PATH (g.m-2)
569  zlwgkg=max(pqlwp(jl,ikl)*1000._jprb,_zero_)
570  ziwgkg=max(pqiwp(jl,ikl)*1000._jprb,_zero_)
571 !! IF (PCLFR(JL,IKL) > (_TWO_*REPCLC)) THEN
572 !! ZLWGKG=ZLWGKG/PCLFR(JL,IKL)
573 !! ZIWGKG=ZIWGKG/PCLFR(JL,IKL)
574 !! IF (PCLFR(JL,IKL) > REPCLC) THEN
575  IF (pclfr(jl,ikl) > 15.e-06_jprb) THEN
576  zlwgkg=zlwgkg/pfrcl(jl,ikl)
577  ziwgkg=ziwgkg/pfrcl(jl,ikl)
578  ELSE
579  zlwgkg=_zero_
580  ziwgkg=_zero_
581  ENDIF
582 
583 ! --- RAIN LIQUID WATER CONTENT (g.m-3) AND LIQUID WATER PATH (g.m-2)
584 ! IF (PRAINT(JL,IKL).GT.(2.*REPCLC)) THEN
585 ! ZRWGKG=MAX(PQRAIN(JL,IKL)*1000., 0.0)
586 ! ZRAINT(JL)=PRAINT(JL,IKL)*3600.*1000.
587 !- no radiative effect of rain (for the moment)
588 ! ZRWGKG=0.
589 ! ZRAINT(JL)=0.
590 ! ===========================================================
591 
592 ! Modifications Martin et al.
593 ! ELSE
594  zrwgkg=_zero_
595  zraint(jl)=_zero_
596 ! END IF
597 
598  IF (ibas(jl) /= 1.AND. itop(jl) /= 1 ) THEN
599  zcfudg(jl)=zmtconv
600  ELSE
601  zcfudg(jl)=zmtfudg
602  ENDIF
603 
604  zdpog=pdp(jl,ikl)/rg
605  zflwp(jl)= zlwgkg*zdpog
606  zfiwp(jl)= ziwgkg*zdpog
607  zfrwp(jl)= zrwgkg*zdpog
608  zpodt=pap(jl,ikl)/(rd*pt(jl,ikl))
609  zlwc(jl)=zlwgkg*zpodt
610  ziwc(jl)=ziwgkg*zpodt
611 ! ZRWC(JL)=ZRWGKG*ZPODT
612 
613 ! --- EFFECTIVE RADIUS FOR WATER, ICE AND RAIN PARTICLES
614 
615  IF (nradlp.EQ.0) THEN
616 ! very old parametrization as f(pressure)
617  zradlp(jl)=10._jprb + (100000._jprb-pap(jl,ikl))*3.5e-04_jprb
618 
619  ELSE IF (nradlp.EQ.1) THEN
620 ! old simple distinction between land (10) and ocean (13)
621  IF (plsm(jl) < _half_) THEN
622  zradlp(jl)=13._jprb
623  ELSE
624  zradlp(jl)=10._jprb
625  ENDIF
626 
627  ELSE IF (nradlp.EQ.2) THEN
628 !-- based on Martin et al., 1994, JAS
629  IF (plsm(jl) < _half_) THEN
630  zasea=150._jprb
631  zd=0.33_jprb
632  zntot=-1.15e-03_jprb*zasea*zasea+0.963_jprb*zasea+5.30_jprb
633  ELSE
634  zalnd=900._jprb
635 ! ZALND=600._JPRB
636 ! ZALND=300._JPRB
637 ! ZALND=1200._JPRB
638  zd=0.43_jprb
639  zntot=-2.10e-04_jprb*zalnd*zalnd+0.568_jprb*zalnd-27.9_jprb
640  ENDIF
641 
642  znum=3._jprb*zlwc(jl)*(1._jprb+3._jprb*zd*zd)**2
643  zden=4._jprb*rpi*zntot*(1._jprb+zd*zd)**3
644  zradlp(jl)=100.*(znum/zden)**0.333_jprb
645 
646 ! 9001 format(1x,I3,1E13.5,F5.0,F5.2,f8.2,3E13.5)
647  zradlp(jl)=max(zradlp(jl), 4._jprb)
648  zradlp(jl)=min(zradlp(jl),16._jprb)
649  END IF
650 ! print *,'ZRADLP(JL) for JK=',JK,ZRADLP(JL)
651 
652 ! ===========================================================
653 ! ___________________________________________________________
654 
655 ! rain drop from : unused as ZRAINT is 0.
656 ! ZRADRD(JL)=500._JPRB*ZRAINT(JL)**0.22_JPRB
657 ! IF (ZFLWP(JL).GT.0.) THEN
658 ! ZRADRD(JL)=ZRADLP(JL)+ZRADRD(JL)
659 ! END IF
660 
661 !- ice particle effective radius =f(T) from Liou and Ou (1994)
662 
663  IF (pt(jl,ikl) < rtice) THEN
664  ztempc=pt(jl,ikl)-rtt
665  ELSE
666  ztempc=rtice-rtt
667  ENDIF
668 
669  zradip(jl)=326.3_jprb+ztempc*(12.42_jprb + ztempc*(0.197_jprb + ztempc*&
670  &0.0012_jprb))
671  zdesr(jl)=2._jprb*zradip(jl)
672 ! print *,'ZRADIP(JL) for JK=',JK,ZRADIP(JL),ZDESR(JL)
673 
674  IF (nradip.EQ. 0) THEN
675  zradip(jl)= 40._jprb
676  zdesr(jl)=2._jprb*zradip(jl)
677 ! print *,'ZRADIP(JL) for JK=',JK,ZRADIP(JL),ZDESR(JL)
678 
679  ELSE IF (nradip.EQ. 1) THEN
680 !-- old formulation based on temperature (40-130microns)
681  zradip(jl)=max(zradip(jl),40._jprb)
682  zdesr(jl)=2._jprb*zradip(jl)
683 ! print *,'ZRADIP(JL) for JK=',JK,ZRADIP(JL),ZDESR(JL)
684 
685  ELSE IF (nradip.EQ. 2) THEN
686 !-- formulation following Jakob, Klein modifications to ice content
687  zradip(jl)=max(zradip(jl),30._jprb)
688  zradip(jl)=min(zradip(jl),60._jprb)
689  zdesr(jl)=2._jprb*zradip(jl)
690 ! print *,'ZRADIP(JL) for JK=',JK,ZRADIP(JL),ZDESR(JL)
691 
692 !-- new Sun and Rikus, 1999 D_ice = f(T, IWC)
693  ELSE IF (nradip.EQ. 3 .AND. ziwc(jl).GT. _zero_ ) THEN
694  ztempc=pt(jl,ikl)-83.15_jprb
695  ztcels=pt(jl,ikl)-rtt
696  zfsr = 1.2351_jprb +0.0105_jprb * ztcels
697 ! Sun & Rikus, 1999
698 ! ZLGIWC=LOG10( REPCLC + ZIWC(JL))
699 ! ZAIWC=26.1571_JPRB / ( ABS(ZLGIWC) **0.5995_JPRB )
700 ! ZBIWC=0.6402_JPRB + 0.1810_JPRB * ZLGIWC
701 ! Sun, 2001
702  zaiwc = 45.8966_jprb * ziwc(jl)**0.2214_jprb
703  zbiwc = 0.7957_jprb * ziwc(jl)**0.2535_jprb
704  zdesr(jl) = zfsr * (zaiwc + zbiwc*ztempc)
705  zdesr(jl) = min( max( zdesr(jl), rminice ), 350._jprb)
706  zradip(jl)= 0.5 * zdesr(jl)
707 ! print *,'ZRADIP(JL) for JK=',JK,ZRADIP(JL),ZDESR(JL)
708  END IF
709 
710 !-- ERA-15 definition of effective radii
711  IF (klwrad.EQ.2 .AND. nsw.EQ.2) THEN
712  zradip(jl)=40._jprb
713  zradlp(jl)=10._jprb + (100000._jprb-pap(jl,ikl))*3.5_jprb
714 ! ZSWFUDG=1._JPRB
715 ! ZLWFUDG=1._JPRB
716  lowasyf=.false.
717  loifuec=.false.
718  lrrtm=.false.
719  zdesr(jl)=2._jprb*zradip(jl)
720 ! print *,'ZRADIP(JL) for JK=',JK,ZRADIP(JL),ZDESR(JL)
721  END IF
722 
723  ENDDO
724 
725 
726 
727 ! 2.3 CLOUD SHORTWAVE OPTICAL PROPERTIES
728 ! ----------------------------------
729 
730 ! -------------------------
731 ! --+ SW OPTICAL PARAMETERS + Water clouds after Fouquart (1987)
732 ! ------------------------- Ice clouds (Ebert, Curry, 1992)
733 
734  DO jsw=1,nsw
735  DO jl = kidia,kfdia
736  ztol=_zero_
737  zgl =_zero_
738  zol =_zero_
739  ztoi=_zero_
740  zgi =_zero_
741  zoi =_zero_
742  ztor=_zero_
743  zgr =_zero_
744  zor =_zero_
745  IF (zflwp(jl)+zfiwp(jl)+zfrwp(jl) /= _zero_) THEN
746  IF (zflwp(jl) /= _zero_) THEN
747  IF (nliqopt.NE.0 ) THEN
748 !-- SW: Slingo, 1989
749  ztol = zflwp(jl)*(raswca(jsw)+raswcb(jsw)/zradlp(jl))
750  zgl = raswce(jsw)+raswcf(jsw)*zradlp(jl)
751  zol = 1. - raswcc(jsw)-raswcd(jsw)*zradlp(jl)
752  ELSE
753 !-- SW: Fouquart, 1991
754  ztol = zflwp(jl)*(ryfwca(jsw)+ryfwcb(jsw)/zradlp(jl))
755  zgl = ryfwcf(jsw)
756  zol = ryfwcc(jsw)-ryfwcd(jsw)*exp(-ryfwce(jsw)*ztol)
757  ENDIF
758  ENDIF
759 
760  IF (zfiwp(jl) /= _zero_) THEN
761  IF (niceopt.LE.1) THEN
762 !-- SW: Ebert-Curry
763  ztoi = zfiwp(jl)*(rebcua(jsw)+rebcub(jsw)/zradip(jl))
764  zgi = rebcue(jsw)+rebcuf(jsw)*zradip(jl)
765  zoi = _one_ - rebcuc(jsw)-rebcud(jsw)*zradip(jl)
766 
767  ELSE IF (niceopt.EQ.2) THEN
768 !-- SW: Fu-Liou, 1993
769  z1radi = 0.5 / zradip(jl)
770  zbetai = rflaa0(jsw)+z1radi* rflaa1(jsw)
771  ztoi = zfiwp(jl) * zbetai
772  zomgi= rflbb0(jsw)+zradip(jl)*(rflbb1(jsw) + zradip(jl) &
773  & *(rflbb2(jsw)+zradip(jl)* rflbb3(jsw) ))
774  zoi = _one_ - zomgi
775  zomgp= rflcc0(jsw)+zradip(jl)*(rflcc1(jsw) + zradip(jl) &
776  & *(rflcc2(jsw)+zradip(jl)* rflcc3(jsw) ))
777  zfdel= rfldd0(jsw)+zradip(jl)*(rfldd1(jsw) + zradip(jl) &
778  & *(rfldd2(jsw)+zradip(jl)* rfldd3(jsw) ))
779  zgi = ((1.-zfdel)*zomgp + zfdel*3.) / 3.
780 
781  ELSE IF (niceopt.EQ.3) THEN
782 !-- SW: Fu 1996
783  z1radi = _one_ / zdesr(jl)
784  zbetai = rfuaa0(jsw)+z1radi* rfuaa1(jsw)
785  ztoi = zfiwp(jl) * zbetai
786  zomgi= rfubb0(jsw)+zdesr(jl)*(rfubb1(jsw) + zdesr(jl) &
787  & *(rfubb2(jsw)+zdesr(jl)* rfubb3(jsw) ))
788  zoi = _one_ - zomgi
789  zgi = rfucc0(jsw)+zdesr(jl)*(rfucc1(jsw) + zdesr(jl) &
790  & *(rfucc2(jsw)+zdesr(jl)* rfucc3(jsw) ))
791 
792  ENDIF
793  ENDIF
794 
795 ! IF (ZFRWP(JL) .NE. 0.) THEN
796 ! ZTOR= ZFRWP(JL)*0.003_JPRB*_JPRBZRAINT(JL)**(-0.22_JPRB)
797 ! ZOR = 1._JPRB - RROMA(JSW)*ZRAINT(JL)**RROMB(JSW)
798 ! ZGR = RRASY(JSW)
799 ! END IF
800 
801 ! - MIX of WATER and ICE CLOUDS
802 ! ZTAUMX= ZTOL + ZTOI + ZTOR
803 ! ZOMGMX= ZTOL*ZOL + ZTOI*ZOI + ZTOR*ZOR
804 ! ZASYMX= ZTOL*ZOL*ZGL + ZTOI*ZOI*ZGI + ZTOR*ZOR*ZGR
805 !
806 ! ZASYMX= ZASYMX/ZOMGMX
807 ! ZOMGMX= ZOMGMX/ZTAUMX
808 
809  IF (.NOT.linhom .OR. (linhom .AND. nhowinh.EQ.1) ) THEN
810  zvl=zswfudg
811  zvi=zswfudg
812  zvr=0.
813  ztaumx= ztol*zvl + ztoi*zvi + ztor*zvr
814  zomgmx= ztol*zvl*zol + ztoi*zvi*zoi + ztor*zvr*zor
815  zasymx= ztol*zvl*zol*zgl + ztoi*zvi*zoi*zgi + ztor*zvr*zor*zgr
816  zasymx= zasymx/zomgmx
817  zomgmx= zomgmx/ztaumx
818  ELSE IF (linhom .AND. nhowinh.EQ.2) THEN
819  zvl=psqlw(jl,ikl)
820  zvi=psqiw(jl,ikl)
821  zvr=0.
822  ztaumx= ztol*zvl + ztoi*zvi + ztor*zvr
823  zomgmx= ztol*zvl*zol + ztoi*zvi*zoi + ztor*zvr*zor
824  zasymx= ztol*zvl*zol*zgl + ztoi*zvi*zoi*zgi + ztor*zvr*zor*zgr
825  zasymx= zasymx/zomgmx
826  zomgmx= zomgmx/ztaumx
827  ELSE IF (linhom .AND. nhowinh.EQ.3) THEN
828  zvl=prlvrl(jl,ikl)
829  zvi=prlvri(jl,ikl)
830  zvr=0.
831  ztol1 = ztol/(1.+zvl)
832  ztoi1 = ztoi/(1.+zvi)
833  ztor1 = ztor/(1.+zvr)
834  ztaumx= ztol1 + ztoi1 + ztor1
835  zoi=zoi/(1.+zvi*(1.-zoi))
836  zgi=zgi*(1.+zvi*(1.-zoi))/(1.+zvi*(1.-zoi*zgi))
837  zol=zol/(1.+zvl*(1.-zol))
838  zgl=zgl*(1.+zvl*(1.-zol))/(1.+zvl*(1.-zol*zgl))
839 
840  zomgmx= ztol1*zol + ztoi1*zoi + ztor1*zor
841  zasymx= ztol1*zol*zgl + ztoi1*zoi*zgi + ztor1*zor*zgr
842  zasymx= zasymx/zomgmx
843  zomgmx= zomgmx/ztaumx
844  END IF
845 ! print 9009,JK,JL,JSW,ZSWFUDG,PSQLW(JL,IKL),PSQIW(JL,IKL) &
846 ! & , PRLVRL(JL,IKL),PRLVRI(JL,IKL),ZTOL,ZOL,ZGL,ZTOI,ZOI,ZGI &
847 ! & , ZTAUMX,ZOMGMX,ZASYMX
848 9009 format(1x,3i3,14e13.6)
849 
850 ! --- SW FINAL CLOUD OPTICAL PARAMETERS
851 
852  zcldsw(jl,jk) = pclfr(jl,ikl)
853  ztau(jl,jsw,jk) = ztaumx
854  zomega(jl,jsw,jk)= zomgmx
855  zcg(jl,jsw,jk) = zasymx
856  ENDIF
857 
858 ! #DB jkjlsw = 0
859 ! #DB IF (ZTAU(JL,JSW,JK) .LT.00..OR.ZTAU(JL,JSW,JK) .GT.75. .OR. &
860 ! #DB & (k2iii(JL) .EQ.kio.AND.k2jjj(JL) .EQ.kjo) ) THEN
861 ! #DB IF (mod(jkjlsw,20).EQ.0) &
862 ! #DB & write(6,575) NLIQOPT,NICEOPT
863 ! #DB 575 format('IN RADLSW: CLOUD SHrtWAVE OPTICAL PROPERTIES ' &
864 ! #DB & ,3x,' NLIQOPT =',I3,' NICEOPT =',I3,/ &
865 ! #DB & ,' i j JL JK',7x,'ZTAU',5x,'ZCLDSW',6x,'ZDESR' &
866 ! #DB & ,5x,'PRLVRL',5x,'PRLVRI',6x,'PQIWP',6x,'PQLWP',3x,'JSW')
867 ! #DB jkjlsw=jkjlsw+1
868 ! #DB write(6,603) k2iii(JL),k2jjj(JL),JL,IKL,ZTAU(JL,JSW,JK) ,ZCLDSW(JL,JK) , ZDESR(JL) &
869 ! #DB & ,PRLVRL(JL,IKL),PRLVRI(JL,IKL) &
870 ! #DB & ,PQIWP(JL,IKL), PQLWP(JL,IKL),JSW
871 ! #DB 603 format(4i5,7e11.3,I6)
872 ! #DB ENDIF
873 
874  ENDDO
875  ENDDO
876 
877  DO jl=kidia,kfdia
878  ztauint(jl)=ztauint(jl)+ztau(jl,1,jk)
879  END DO
880 
881 
882 !JL=KIDIA
883 !print 9109,JK,ZCLDSW(JL,JK),ZRADLP(JL),ZRADIP(JL) &
884 ! & , (ZTAU(JL,JSW,JK),ZOMEGA(JL,JSW,JK),ZCG(JL,JSW,JK),JSW=1,NSW)
885 9109 format(1x,'ClOptProp: ',i2,f7.4,2f6.1,6(1x,f7.2,1x,f7.4,1x,f6.3))
886 !print *,'Radlsw after SW cloud optical properties for level JK=',JK
887 
888 
889 
890 ! 2.4 CLOUD LONGWAVE OPTICAL PROPERTIES FOR EC-OPE
891 ! --------------------------------------------
892 
893 ! -------------------------
894 ! --+ LW OPTICAL PARAMETERS + Water (and Ice) from Smith and Shi (1992)
895 ! ------------------------- Ice clouds (Ebert, Curry, 1992)
896 
897  IF (.NOT.lrrtm) THEN
898 
899  DO jl = kidia,kfdia
900  zalfice(jl)=_zero_
901  zgamice(jl)=_zero_
902  zbice(jl)=_zero_
903  ztice(jl)=(pt(jl,ikl)-tstand)/tstand
904  zbicfu(jl)=_zero_
905  zkicfu1(jl)=_zero_
906  zkicfu2(jl)=_zero_
907  ENDDO
908 
909  DO jnu= 1,nsil
910  DO jl = kidia,kfdia
911  zres(jl) = xp(1,jnu)+ztice(jl)*(xp(2,jnu)+ztice(jl)*(xp(3,&
912  &jnu)&
913  &+ztice(jl)*(xp(4,jnu)+ztice(jl)*(xp(5,jnu)+ztice(jl)*(xp(6,&
914  &jnu)&
915  &)))))
916  zbice(jl) = zbice(jl) + zres(jl)
917  zgamice(jl) = zgamice(jl) + rebcui(jnu)*zres(jl)
918  zalfice(jl) = zalfice(jl) + rebcuj(jnu)*zres(jl)
919  ENDDO
920  ENDDO
921 
922 !-- Fu et al. (1998) with M'91 LW scheme
923  DO jrtm=1,16
924  DO jl=kidia,kfdia
925  IF (pt(jl,ikl) < 339._jprb .AND. pt(jl,ikl) >= 160._jprb) THEN
926  indlay=pt(jl,ikl)-159._jprb
927  ztblay =pt(jl,ikl)-int(pt(jl,ikl))
928  ELSE IF (pt(jl,ikl) >= 339._jprb ) THEN
929  indlay=180
930  ztblay =pt(jl,ikl)-339._jprb
931  ELSE IF (pt(jl,ikl) < 160._jprb) THEN
932  indlay=1
933  ztblay =pt(jl,ikl)-160._jprb
934  END IF
935  zaddplk = totplnk(indlay+1,jrtm)-totplnk(indlay,jrtm)
936  zplanck = delwave(jrtm) * (totplnk(indlay,jrtm) + ztblay*zaddplk)
937  zbicfu(jl) = zbicfu(jl) + zplanck
938 
939  IF (ziwc(jl) > _zero_ ) THEN
940 ! ice cloud spectral emissivity a la Fu & Liou (1993)
941  zratio= 0.5 / zradip(jl)
942  zmsaid = rfulio(jrtm,1) + zratio&
943  &*(rfulio(jrtm,2) + zratio*rfulio(jrtm,3))
944  zkicfu1(jl) = zkicfu1(jl)+ zmsaid*zplanck
945 
946 ! ice cloud spectral emissivity a la Fu et al (1998)
947  z1radi = _one_ / zdesr(jl)
948  zmsaid = rfueta(jrtm,1) + z1radi&
949  &*(rfueta(jrtm,2) + z1radi*rfueta(jrtm,3))
950  zkicfu2(jl) = zkicfu2(jl)+ zmsaid*zplanck
951  END IF
952  END DO
953  END DO
954 
955  DO jl = kidia,kfdia
956  zgamice(jl) = zgamice(jl) / zbice(jl)
957  zalfice(jl) = zalfice(jl) / zbice(jl)
958  zkicfu1(jl) = zkicfu1(jl) / zbicfu(jl)
959  zkicfu2(jl) = zkicfu2(jl) / zbicfu(jl)
960 
961  IF (zflwp(jl)+zfiwp(jl) /= _zero_) THEN
962 
963  IF (klwrad.EQ.2) THEN
964 ! ice cloud emissivity a la Smith-Shi
965  zmulti=1.2_jprb-0.006_jprb*zradip(jl)
966  zmsaid= 0.113_jprb*zmulti
967  zmsaiu= 0.093_jprb*zmulti
968  zmultl=1.2_jprb-0.006_jprb*zradlp(jl)
969  zmsald= 0.158_jprb*zmultl
970  zmsalu= 0.130_jprb*zmultl
971  zzflwp= zflwp(jl)
972  zzfiwp= zfiwp(jl)
973 
974  ELSE IF (klwrad.EQ.0) THEN
975 
976  IF (nliqopt.EQ.0) THEN
977 ! water cloud emissivity a la Smith & Shi (1992)
978  zmultl=1.2_jprb-0.006_jprb*zradlp(jl)
979  zmsald= 0.158_jprb*zmultl
980  zmsalu= 0.130_jprb*zmultl
981 
982  ELSE
983 ! water cloud emissivity a la Savijarvi (1997)
984  zmsalu= 0.2441_jprb-0.0105_jprb*zradlp(jl)
985  zmsald= 1.2154_jprb*zmsalu
986 
987  END IF
988 
989  IF (niceopt.EQ.0) THEN
990 ! ice cloud emissivity a la Smith & Shi (1992)
991  zmulti=1.2_jprb-0.006_jprb*zradip(jl)
992  zmsaid= 0.113_jprb*zmulti
993  zmsaiu= 0.093_jprb*zmulti
994 
995  ELSE IF (niceopt.EQ.1) THEN
996 ! ice cloud emissivity a la Ebert & Curry (1992)
997  zmsaid= 1.66_jprb*(zalfice(jl)+zgamice(jl)/zradip(jl))
998  zmsaiu= zmsaid
999 
1000  ELSE IF (niceopt.EQ.2) THEN
1001 ! ice cloud emissivity a la Fu & Liou (1993)
1002  zmsaid= 1.66_jprb*zkicfu1(jl)
1003  zmsaiu= zmsaid
1004 
1005  ELSE IF (niceopt.EQ.3) THEN
1006 ! ice cloud emissivity a la Fu et al. (1998)
1007  zmsaid= 1.66_jprb*zkicfu2(jl)
1008  zmsaiu= zmsaid
1009  END IF
1010 
1011 ! introduce inhomogeneity factor also in LW
1012  zzflwp= zflwp(jl) * zlwfudg
1013  zzfiwp= zfiwp(jl) * zlwfudg
1014  END IF
1015 
1016 ! effective cloudiness accounting for condensed water
1017  zcldld(jl,jk) = pclfr(jl,ikl)*(_one_-exp(-zmsald*zzflwp-zmsaid* &
1018  &zzfiwp))
1019  zcldlu(jl,jk) = pclfr(jl,ikl)*(_one_-exp(-zmsalu*zzflwp-zmsaiu* &
1020  &zzfiwp))
1021 
1022  END IF
1023  ENDDO
1024 
1025 ! print *,'Radlsw after LW0 cloud optical properties for level JK=',JK
1026 
1027  ELSE
1028 
1029 ! 2.5 CLOUD LONGWAVE OPTICAL PROPERTIES FOR RRTM
1030 ! ------------------------------------------
1031 
1032 ! -------------------------
1033 ! --+ LW OPTICAL PARAMETERS + Water (and Ice) from Savijarvi (1998)
1034 ! ------------------------- Ice clouds (Ebert, Curry, 1992)
1035 
1036 ! No need for a fixed diffusivity factor, accounted for spectrally below
1037 ! The detailed spectral structure does not require defining upward and
1038 ! downward effective optical properties
1039 
1040 ! #DB jkjllw=0
1041 
1042  DO jrtm=1,16
1043  DO jl = kidia,kfdia
1044  ztaucld(jl,jk,jrtm) = _zero_
1045  zmsald = _zero_
1046  zmsaid = _zero_
1047 
1048  IF (zflwp(jl)+zfiwp(jl) /= _zero_) THEN
1049 
1050  IF (nliqopt.EQ.0) THEN
1051 ! water cloud total emissivity a la Smith and Shi (1992)
1052  zmultl=1.2_jprb-0.006_jprb*zradlp(jl)
1053  zmsald= 0.144_jprb*zmultl / 1.66_jprb
1054 
1055  ELSE IF (nliqopt.EQ.1) THEN
1056 ! water cloud spectral emissivity a la Savijarvi (1997)
1057  zmsald= rhsavi(jrtm,1) + zradlp(jl)&
1058  &*(rhsavi(jrtm,2) + zradlp(jl)*rhsavi(jrtm,3))
1059 
1060  ELSE IF (nliqopt.EQ.2) THEN
1061 ! water cloud spectral emissivity a la Lindner and Li (2000)
1062  z1radl = _one_ / zradlp(jl)
1063 ! ZMSALD = RLINLI(JRTM,1) + Z1RADL*(RLINLI(JRTM,2) + Z1RADL*&
1064 ! & (RLINLI(JRTM,3) + Z1RADL*(RLINLI(JRTM,4) + Z1RADL*&
1065 ! & RLINLI(JRTM,5) )))
1066 
1067  zmsald = rlinli(jrtm,1)+zradlp(jl)*rlinli(jrtm,2)+ z1radl*&
1068  & (rlinli(jrtm,3) + z1radl*(rlinli(jrtm,4) + z1radl*&
1069  & rlinli(jrtm,5) ))
1070 
1071  END IF
1072 
1073  IF (niceopt.EQ.0) THEN
1074 ! ice cloud emissivity a la Smith & Shi (1992)
1075  zmulti=1.2_jprb-0.006_jprb*zradip(jl)
1076  zmsaid= 0.108_jprb*zmulti / 1.66_jprb
1077 
1078  ELSE IF (niceopt.EQ.1) THEN
1079 ! ice cloud spectral emissivity a la Ebert-Curry (1992)
1080  zmsaid= rebcuh(jrtm)+rebcug(jrtm)/zradip(jl)
1081 
1082  ELSE IF (niceopt.EQ.2) THEN
1083 ! ice cloud spectral emissivity a la Fu & Liou (1993)
1084  zratio= 0.5 / zradip(jl)
1085  zmsaid = rfulio(jrtm,1) + zratio&
1086  &*(rfulio(jrtm,2) + zratio*rfulio(jrtm,3))
1087 
1088  ELSE IF (niceopt.EQ.3) THEN
1089 ! ice cloud spectral emissivity a la Fu et al (1998)
1090  z1radi = _one_ / zdesr(jl)
1091  zmsaid = rfueta(jrtm,1) + z1radi&
1092  &*(rfueta(jrtm,2) + z1radi*rfueta(jrtm,3))
1093 
1094  END IF
1095 
1096  IF (.NOT.linhom .OR. (linhom .AND. nhowinh.EQ.1) ) THEN
1097  zvl=zlwfudg
1098  zvi=zlwfudg
1099  ELSE IF (linhom .AND. nhowinh.EQ.2) THEN
1100  zvl=psqlw(jl,ikl)
1101  zvi=psqiw(jl,ikl)
1102  ELSE IF (linhom .AND. nhowinh.EQ.3) THEN
1103  zvl=_one_/(_one_+prlvrl(jl,ikl))
1104  zvi=_one_/(_one_+prlvri(jl,ikl))
1105  END IF
1106 
1107  ztaud = zvl*zmsald*zflwp(jl)+zvi*zmsaid*zfiwp(jl)
1108 
1109 ! #DB write(30,333) ZTAUD,ZVL,ZMSALD,ZFLWP(JL),ZVI,ZMSAID,ZFIWP(JL),PQIWP(JL,IKL),PQLWP(JL,IKL)
1110 ! #DB 333 format(9e14.6)
1111 
1112 ! Diffusivity correction within clouds a la Savijarvi
1113 ! ZDIFFD=MIN(MAX(1.517_JPRB-0.156_JPRB*LOG(ZTAUD) , _ONE_) , _TWO_)
1114 
1115  zdiffd=1.66_jprb
1116  ztaucld(jl,jk,jrtm) = max(_zero_,ztaud*zdiffd)
1117  ENDIF
1118 
1119 ! #DB IF (ZTAUCLD(JL,JK,JRTM).LT.00..OR.ZTAUCLD(JL,JK,JRTM).GT.75. .OR. &
1120 ! #DB & (k2iii(JL) .EQ.kio.AND.k2jjj(JL) .EQ.kjo) ) THEN
1121 ! #DB IF (mod(jkjllw,20).EQ.0) &
1122 ! #DB & write(6,600) JRTM,NLIQOPT,NICEOPT
1123 ! #DB 600 format('IN RADLSW: CLOUD LONGWAVE OPTICAL PROPERTIES FOR RRTM, JRTM =',I3 &
1124 ! #DB & ,' NLIQOPT =',I3,' NICEOPT =',I3,/ &
1125 ! #DB & ,' i j JL JK',7x,'ZTAU' ,6x,'ZFLWP' ,6x,'ZFIWP' &
1126 ! #DB & , 5x,'ZRADLP',5x,'ZRADIP',6x,'PQIWP',6x,'PQLWP')
1127 ! #DB jkjllw=jkjllw+1
1128 ! #DB write(6,601) k2iii(JL),k2jjj(JL),JL,IKL,ZTAUCLD(JL,JK,JRTM), ZFLWP(JL) , ZFIWP(JL) &
1129 ! #DB & ,ZRADLP(JL) ,ZRADIP(JL) &
1130 ! #DB & ,PQIWP(JL,IKL), PQLWP(JL,IKL)
1131 ! #DB 601 format(4i5,10e11.3)
1132 ! #DB ENDIF
1133 
1134  ENDDO
1135  ENDDO
1136 ! print *,'Radlsw after LW1 cloud optical properties for level JK=',JK
1137 
1138  ENDIF
1139 
1140 ENDDO
1141 
1142 nuaer = nua
1143 ntraer = ntra
1144 
1145 ! ------------------------------------------------------------------
1146 
1147 !* 2.6 DIFFUSIVITY FACTOR OR SATELLITE VIEWING ANGLE
1148 ! ---------------------------------------------
1149 
1150 
1151 DO jl = kidia,kfdia
1152  zview(jl) = diff
1153  zemit(jl) = _zero_
1154 ENDDO
1155 
1156 ! ------------------------------------------------------------------
1157 
1158 !* 3. CALL LONGWAVE RADIATION CODE
1159 ! ----------------------------
1160 
1161 
1162 !* 3.1 FULL LONGWAVE RADIATION COMPUTATIONS
1163 ! ------------------------------------
1164 
1165 !print *,'Just before calling the radiation schemes'
1166 !JL=KIDIA
1167 !DO JK=1,KLEV
1168 ! IKL=KLEV+1-JK
1169 ! PRINT 9311,JK,PCLFR(JL,IKL),ZCLDLD(JL,JK),ZTAUCLD(JL,JK,1) &
1170 ! & ,(ZTAU(JL,JSW,JK),ZOMEGA(JL,JSW,JK),ZCG(JL,JSW,JK),JSW=1,NSW) &
1171 ! & ,(PAER(JL,JAE,JK),JAE=1,6)
1172 9311 format(1x,i2,2f8.5,26e12.5)
1173 !END DO
1174 !print *,'KLWRAD=',KLWRAD,' LPHYLIN: ',LPHYLIN,' LRRTM: ',LRRTM
1175 
1176 IF (.NOT.lphylin) THEN
1177  IF ( .NOT. lrrtm) THEN
1178 
1179 
1180  IF (klwrad .EQ. 2) THEN
1181  CALL olw &
1182  & ( kidia, kfdia , klon , klev &
1183  & , pcco2, zcldld, zcldlu &
1184  & , pdp , zdt0 , zemis &
1185  & , paph , pozon , pth &
1186  & , paer , pt , zview , pq &
1187  & , zcoolr,zcoolc, zflux, zfluc &
1188  & )
1189 
1190  ELSE IF (klwrad .EQ. 0) THEN
1191 
1192  CALL lw &
1193  &( kidia , kfdia , klon , klev , kmode &
1194  &, pcco2 , zcldld, zcldlu &
1195  &, pdp , zdt0 , zemis , zemiw &
1196  &, zpmb , pozon , ztl &
1197  &, paer , ztave , zview , pq &
1198  &, zcoolr, zcoolc, zemit , zflux, zfluc &
1199  &)
1200 
1201  END IF
1202 
1203  ELSE
1204 
1205 
1206 !* 3.2 FULL LONGWAVE RADIATION COMPUTATIONS - RRTM
1207 ! ------------------------------------ ----
1208 
1209 ! i) pass POZN (ozone mmr concentration) to RRTM; remove pressure
1210 ! weighting applied to POZON in driverMC (below)
1211 ! ii) pass ZEMIS and ZEMIW to RRTM; return ZEMIT from RRTM
1212 ! iii)pass ZTAUCLD, cloud optical depths (water+ice) to RRTM,
1213 ! computed from equations above
1214 ! iv) pass ECRT arrays to RRTM arrays in interface routine ECRTATM
1215 ! in module rrtm_ecrt.f
1216 
1217  DO jl = kidia,kfdia
1218  DO jk = 1, klev
1219  zozn(jl,jk) = pozon(jl,jk)/pdp(jl,jk)
1220  ENDDO
1221  ENDDO
1222 
1223 ! #DB jkjllw = 0
1224 ! #DB DO JL = KIDIA,KFDIA
1225 ! #DB DO JK = 1, KLEV
1226 ! #DB IKL = KLEV + 1 - JK
1227 ! #DB JAERmin=1
1228 ! #DB JAERmax=6
1229 ! #DB PAERmin=1000.
1230 ! #DB PAERmax=0.
1231 ! #DB jTAUCLDmin=1
1232 ! #DB jTAUCLDmax=16
1233 ! #DB TAUCLDmin=1000.
1234 ! #DB TAUCLDmax=0.
1235 ! #DB DO JRTM=1,16
1236 ! #DB IF (ZTAUCLD(JL,JK,JRTM).LT.TAUCLDmin) THEN
1237 ! #DB jTAUCLDmin=JRTM
1238 ! #DB TAUCLDmin=ZTAUCLD(JL,JK,JRTM)
1239 ! #DB END IF
1240 ! #DB IF (ZTAUCLD(JL,JK,JRTM).GT.TAUCLDmax) THEN
1241 ! #DB jTAUCLDmax=JRTM
1242 ! #DB TAUCLDmax=ZTAUCLD(JL,JK,JRTM)
1243 ! #DB END IF
1244 ! #DB ENDDO
1245 ! #DB DO JAE =1,6
1246 ! #DB IF (PAER(JL,JAE,JK).LT.PAERmin) THEN
1247 ! #DB JAERmin=JAE
1248 ! #DB PAERmin=PAER(JL,JAE,JK)
1249 ! #DB END IF
1250 ! #DB IF (PAER(JL,JAE,JK).GT.PAERmax) THEN
1251 ! #DB JAERmax=JAE
1252 ! #DB PAERmax=PAER(JL,JAE,JK)
1253 ! #DB END IF
1254 ! #DB ENDDO
1255 ! #DB IF (TAUCLDmin.LT.0..OR.TAUCLDmax.GT.75.) THEN
1256 ! #DB IF (mod(jkjllw,20).EQ.0) &
1257 ! #DB & write(6,515)
1258 ! #DB 515 format('IN RADLSW: BEFORE RRTM_RRTM_140GP CALL',/ &
1259 ! #DB & ,' i j JL JK',7x,'ZOZN',5x,'ZCLDSW' &
1260 ! #DB & ,4x,'ZTAUCLDmin',4x,'ZTAUCLDmax' &
1261 ! #DB & ,4x,'PAERmin',4x,'PAERmax',6x,'PQIWP',6x,'PQLWP',9x,'PQ')
1262 ! #DB jkjllw = jkjllw + 1
1263 ! #DB write(6,602) k2iii(JL),k2jjj(JL),JL,JK,ZOZN(JL,JK),ZCLDSW(JL,JK) &
1264 ! #DB & ,jTAUCLDmin,ZTAUCLD(JL,JK,jTAUCLDmin) &
1265 ! #DB & ,jTAUCLDmax,ZTAUCLD(JL,JK,jTAUCLDmax) &
1266 ! #DB & ,PAER(JL,JAERmin,JK),PAER(JL,JAERmax,JK) &
1267 ! #DB & ,PQIWP(JL,IKL),PQLWP(JL,IKL),PQ(JL,IKL)
1268 ! #DB 602 format(4i5,2e11.3,2(i3,e11.3),8e11.3)
1269 ! #DB ENDIF
1270 ! #DB ENDDO
1271 ! #DB ENDDO
1272 
1273 ! print *,'Just before calling RRTM'
1274 
1275  CALL rrtm_rrtm_140gp &
1276  &( kidia , kfdia , klon , klev &
1277  &, paer , paph , pap &
1278  &, pts , pth , pt &
1279  &, zemis , zemiw &
1280  &, pq , pcco2 , zozn , zcldsw , ztaucld &
1281  &, zemit , zflux , zfluc , ztclear &
1282  &)
1283 
1284 ! print *,'just after RRTM'
1285 
1286  ENDIF
1287 ELSE
1288  zcoolr(:,:) = _zero_
1289  zcoolc(:,:) = _zero_
1290  zemit(:) = _zero_
1291  zflux(:,:,:)= _zero_
1292  zfluc(:,:,:)= _zero_
1293 ENDIF
1294 
1295 ! ------------------------------------------------------------------
1296 
1297 !* 4. CALL SHORTWAVE RADIATION CODE
1298 ! -----------------------------
1299 
1300 
1301 zrmuz=_zero_
1302 DO jl = kidia,kfdia
1303  zrmuz = max(zrmuz, zmu0(jl))
1304 ENDDO
1305 
1306 IF (zrmuz > _zero_) THEN
1307 !print *,'CALL SW'
1308 
1309  CALL sw &
1310  &( kidia , kfdia , klon , klev , kaer &
1311  &, prii0 , pcco2 , zpsol , zalbd , zalbp , pq , pqs &
1312  &, zmu0 , zcg , zcldsw, pdp , zomega, zoz , zpmb &
1313  &, ztau , ztave , paer &
1314  &, zheatr, zfsdwn, zfsup , zheatc, zfcdwn, zfcup &
1315  &, zfsdnn, zfsdnv, zfsupn, zfsupv &
1316  &, zfcdnn, zfcdnv, zfcupn, zfcupv &
1317  &, zsudu , zuvdf , zparf &
1318  &)
1319 
1320 ! print *,'just after SW'
1321 ! JL=KIDIA
1322 ! print *,'just after SW UV & PAR ',ZUVDF(JL),ZPARF(JL)
1323 
1324 ENDIF
1325 
1326 ! #DB jkjlsw = 0
1327 ! #DB DO JL = KIDIA,KFDIA
1328 ! #DB DO JK = 1,KLEV
1329 ! #DB IF (k2iii(JL).EQ.kio.AND.k2jjj(JL).EQ.kjo) THEN
1330 ! #DB IF (mod(jkjlsw,20).EQ.0) &
1331 ! #DB write(6,525)
1332 ! #DB 525 format('IN RADLSW: AFTER SW CALL',/ &
1333 ! #DB & ,' i j JL JK' &
1334 ! #DB & ,4x,'ZFCDWN',5x,'ZFCUP' ,4x,'ZFSDNN',4x,'ZFCDNN' &
1335 ! #DB & ,4x,'ZFSDNV',4x,'ZFSUPN',4x,'ZFSUPV',4x,'ZFCDNN' &
1336 ! #DB & ,4x,'ZFCDNV',4x,'ZFCUPN',4x,'ZFCUPV')
1337 ! #DB jkjlsw = jkjlsw + 1
1338 ! #DB write(6,605) k2iii(JL),k2jjj(JL),JL,JK,ZFCDWN(JL,JK),ZFCUP(JL,JK) &
1339 ! #DB & ,ZFSDNN(JL),ZFCDNN(JL),ZFSDNV(JL),ZFSUPN(JL),ZFSUPV(JL) &
1340 ! #DB & ,ZFCDNN(JL),ZFCDNV(JL),ZFCUPN(JL),ZFCUPV(JL)
1341 ! #DB 605 format(4i5,11e10.3)
1342 ! #DB ENDIF
1343 ! #DB ENDDO
1344 ! #DB ENDDO
1345 
1346 ! ------------------------------------------------------------------
1347 
1348 !* 5. FILL UP THE MODEL NET LW AND SW RADIATIVE FLUXES
1349 ! ------------------------------------------------
1350 
1351 
1352 DO jkl = 1 , klev+1
1353  jk = klev+1 + 1 - jkl
1354  DO jl = kidia,kfdia
1355 ! print 9506,JK,ZFSDWN(JL,JK),ZFSUP(JL,JK),ZFLUX(JL,1,JK),ZFLUX(JL,2,JK) &
1356 ! & , ZFCDWN(JL,JK),ZFCUP(JL,JK),ZFLUC(JL,1,JK),ZFLUC(JL,2,JK)
1357 9506 format(1x,i3,8f10.3)
1358 
1359  cpfls(jl,jkl) =cpfls(jl,jkl) +zwght*(zfsdwn(jl,jk) - zfsup(jl,jk))
1360  cpflt(jl,jkl) =cpflt(jl,jkl) +zwght*(- zflux(jl,1,jk) - zflux(jl,2,jk))
1361  cpfcs(jl,jkl) =cpfcs(jl,jkl) +zwght*(zfcdwn(jl,jk) - zfcup(jl,jk))
1362  cpfct(jl,jkl) =cpfct(jl,jkl) +zwght*(- zfluc(jl,1,jk) - zfluc(jl,2,jk))
1363  cpfdct(jl,jkl)=cpfdct(jl,jkl)+zwght*zfluc(jl,2,jk)
1364  cpfuct(jl,jkl)=cpfuct(jl,jkl)+zwght*zfluc(jl,1,jk)
1365  cpfdlt(jl,jkl)=cpfdlt(jl,jkl)+zwght*zflux(jl,2,jk)
1366  cpfult(jl,jkl)=cpfult(jl,jkl)+zwght*zflux(jl,1,jk)
1367  cpfdcs(jl,jkl)=cpfdcs(jl,jkl)+zwght*zfcdwn(jl,jk)
1368  cpfucs(jl,jkl)=cpfucs(jl,jkl)+zwght*zfcup(jl,jk)
1369  cpfdls(jl,jkl)=cpfdls(jl,jkl)+zwght*zfsdwn(jl,jk)
1370  cpfuls(jl,jkl)=cpfuls(jl,jkl)+zwght*zfsup(jl,jk)
1371  ENDDO
1372 ENDDO
1373 
1374 DO jl = kidia,kfdia
1375 ! print 9507,ZFSDWN(JL,1),ZSUDU(JL),ZUVDF(JL),ZPARF(JL)
1376 9507 format(1x,'SW Global Normal UV & PAR:',5f10.3)
1377 
1378  cpfrsod(jl) = cpfrsod(jl) + zwght*zfsdwn(jl,1)
1379  cpemit(jl) = cpemit(jl) + zwght*zemit(jl)
1380  cpsudu(jl) = cpsudu(jl) + zwght*zsudu(jl)
1381  cpuvdf(jl) = cpuvdf(jl) + zwght*zuvdf(jl)
1382  cpparf(jl) = cpparf(jl) + zwght*zparf(jl)
1383 
1384  aswbox(jl,icbox) = -zfsdwn(jl,klev+1) + zfsup(jl,klev+1)
1385  olrbox(jl,icbox) = -zflux(jl,1,klev+1)
1386  slwbox(jl,icbox) = -zflux(jl,2,1)
1387  sswbox(jl,icbox) = -zfsdwn(jl,1)
1388  taubox(jl,icbox) = ztauint(jl)
1389  ztca(jl) = ztca(jl) + zwght*zcol(jl)
1390 ! print 9508,ICBOX,ASWBOX(JL,ICBOX),OLRBOX(JL,ICBOX),SLWBOX(JL,ICBOX) &
1391 ! & ,SSWBOX(JL,ICBOX),TAUBOX(JL,ICBOX),ZCOL(JL),ZTCA(JL),ZTCC(JL)
1392 9508 format(1x,'radlsw',i3,5f10.3,1x,3f7.4)
1393 ENDDO
1394 
1395 
1396 ENDDO
1397 !
1398 !-- end of box-type calculations
1399 !
1400 
1401 DO jk = 1 , klev+1
1402  DO jl = kidia,kfdia
1403  pfls(jl,jk) = cpfls(jl,jk)
1404  pflt(jl,jk) = cpflt(jl,jk)
1405  pfcs(jl,jk) = cpfcs(jl,jk)
1406  pfct(jl,jk) = cpfct(jl,jk)
1407  pfdct(jl,jk) = cpfdct(jl,jk)
1408  pfuct(jl,jk) = cpfuct(jl,jk)
1409  pfdlt(jl,jk) = cpfdlt(jl,jk)
1410  pfult(jl,jk) = cpfult(jl,jk)
1411  pfdcs(jl,jk) = cpfdcs(jl,jk)
1412  pfucs(jl,jk) = cpfucs(jl,jk)
1413  pfdls(jl,jk) = cpfdls(jl,jk)
1414  pfuls(jl,jk) = cpfuls(jl,jk)
1415  ENDDO
1416 ENDDO
1417 
1418 DO jl = kidia,kfdia
1419  pfrsod(jl) = cpfrsod(jl)
1420  pemit(jl) = cpemit(jl)
1421  psudu(jl) = cpsudu(jl)
1422  puvdf(jl) = cpuvdf(jl)
1423  pparf(jl) = cpparf(jl)
1424 ENDDO
1425 
1426 !-- re-organize the box-tyoe output arrays in decreasing order of TAU
1427 DO jl=kidia,kfdia
1428  DO icbox=2,nbox
1429  ztoi=taubox(jl,icbox)
1430  DO imov=icbox-1,1,-1
1431  IF(taubox(jl,imov).LE.ztoi) GO TO 8001
1432  taubox(jl,imov+1)=taubox(jl,imov)
1433  END DO
1434  imov=0
1435 8001 CONTINUE
1436  taubox(jl,imov+1)=ztoi
1437  END DO
1438 END DO
1439 
1440 !-- re-organize the box-type output arrays in decreasing order of ASW
1441 DO jl=kidia,kfdia
1442  DO icbox=2,nbox
1443  zasw=aswbox(jl,icbox)
1444  DO imov=icbox-1,1,-1
1445  IF(aswbox(jl,imov).LE.zasw) GO TO 8002
1446  aswbox(jl,imov+1)=aswbox(jl,imov)
1447  END DO
1448  imov=0
1449 8002 CONTINUE
1450  aswbox(jl,imov+1)=zasw
1451  END DO
1452 END DO
1453 
1454 !-- re-organize the box-tyoe output arrays in decreasing order of -OLR
1455 DO jl=kidia,kfdia
1456  DO icbox=2,nbox
1457  zolr=olrbox(jl,icbox)
1458  DO imov=icbox-1,1,-1
1459  IF(olrbox(jl,imov).LE.zolr) GO TO 8003
1460  olrbox(jl,imov+1)=olrbox(jl,imov)
1461  END DO
1462  imov=0
1463 8003 CONTINUE
1464  olrbox(jl,imov+1)=zolr
1465  END DO
1466 END DO
1467 
1468 !-- re-organize the box-tyoe output arrays in decreasing order of SLW
1469 DO jl=kidia,kfdia
1470  DO icbox=2,nbox
1471  zslw=slwbox(jl,icbox)
1472  DO imov=icbox-1,1,-1
1473  IF(slwbox(jl,imov).LE.zslw) GO TO 8004
1474  slwbox(jl,imov+1)=slwbox(jl,imov)
1475  END DO
1476  imov=0
1477 8004 CONTINUE
1478  slwbox(jl,imov+1)=zslw
1479  END DO
1480 END DO
1481 
1482 !-- re-organize the box-type output arrays in decreasing order of -SSW
1483 DO jl=kidia,kfdia
1484  DO icbox=2,nbox
1485  zssw=sswbox(jl,icbox)
1486  DO imov=icbox-1,1,-1
1487  IF(sswbox(jl,imov).LE.zssw) GO TO 8005
1488  sswbox(jl,imov+1)=sswbox(jl,imov)
1489  END DO
1490  imov=0
1491 8005 CONTINUE
1492  sswbox(jl,imov+1)=zssw
1493  END DO
1494 END DO
1495 
1496 !-- put all arrays as positive numbers for plotting
1497 DO jl=kidia,kfdia
1498  DO icbox=1,nbox
1499  aswbox(jl,icbox)=-aswbox(jl,icbox)
1500  olrbox(jl,icbox)=-olrbox(jl,icbox)
1501  sswbox(jl,icbox)=-sswbox(jl,icbox)
1502  END DO
1503 END DO
1504 
1505 ! --------------------------------------------------------------
1506 
1507 RETURN
1508 END SUBROUTINE radlsw
subroutine sw(KIDIA, KFDIA, KLON, KLEV, KAER, PSCT, PCARDI, PPSOL, PALBD, PALBP, PWV, PQS, PRMU0, PCG, PCLDSW, PDP, POMEGA, POZ, PPMB, PTAU, PTAVE, PAER, PFDOWN, PFUP, PCDOWN, PCUP, PFDNN, PFDNV, PFUPN, PFUPV, PCDNN, PCDNV, PCUPN, PCUPV, PSUDU, PUVDF, PPARF, PPARCF, PDIFFS, PDIRFS, LRDUST, PPIZA_DST, PCGA_DST, PTAUREL_DST)
Definition: sw.F90:13
real(kind=jprb) tstand
Definition: yoelw.F90:36
INTERFACE SUBROUTINE RRTM_ECRT_140GP pcco2
real(kind=jprb), dimension(6) rebcua
Definition: yoesw.F90:39
real(kind=jprb) rpi
Definition: yomcst.F90:15
real(kind=jprb), dimension(6) ryfwcb
Definition: yoesw.F90:33
real(kind=jprb), dimension(6) ryfwcc
Definition: yoesw.F90:34
INTERFACE SUBROUTINE RRTM_ECRT_140GP pth
Definition: yoesw.F90:1
real(kind=jprb), dimension(16) wavenum2
Definition: yoerrtwn.F90:16
real(kind=jprb), dimension(6) rfubb1
Definition: yoesw.F90:76
real(kind=jprb), dimension(16, 3) rfueta
Definition: yoesw.F90:57
real(kind=jprb), dimension(6) ryfwcd
Definition: yoesw.F90:35
real(kind=jprb), dimension(6) rflbb2
Definition: yoesw.F90:66
real(kind=jprb) rd
Definition: yomcst.F90:39
real(kind=jprb), dimension(6) rflbb1
Definition: yoesw.F90:65
Definition: yoelw.F90:1
integer(kind=jpim) nsil
Definition: yoelw.F90:14
real(kind=jprb), dimension(6) raswce
Definition: yoesw.F90:54
real(kind=jprb), dimension(6) rflcc3
Definition: yoesw.F90:71
integer, save kidia
Definition: dimphy.F90:6
subroutine lw(KIDIA, KFDIA, KLON, KLEV, KMODE, PCCO2, PCLDLD, PCLDLU, PDP, PDT0, PEMIS, PEMIW, PPMB, PQOF, PTL, PAER, PTAVE, PVIEW, PWV, PEMIT, PFLUX, PFLUC)
Definition: lw.F90:9
real(kind=jprb), dimension(6) rflbb3
Definition: yoesw.F90:67
integer, save klon
Definition: dimphy.F90:3
real(kind=jprb), dimension(6) rebcuc
Definition: yoesw.F90:41
real(kind=jprb) rtice
Definition: yoethf.F90:30
real(kind=jprb), dimension(6) raswcb
Definition: yoesw.F90:51
real(kind=jprb), dimension(6) rebcuf
Definition: yoesw.F90:44
integer(kind=jpim) novlp
Definition: yoerad.F90:24
integer(kind=jpim) nua
Definition: yoelw.F90:19
integer, save klev
Definition: dimphy.F90:7
logical lphylin
Definition: yoephli.F90:13
real(kind=jprb), dimension(6) rfucc2
Definition: yoesw.F90:81
real(kind=jprb) rtt
Definition: yomcst.F90:65
real(kind=jprb) rg
Definition: yomcst.F90:29
real(kind=jprb), dimension(6) ryfwcf
Definition: yoesw.F90:37
Definition: yoerdi.F90:1
real(kind=jprb), dimension(6) rflcc1
Definition: yoesw.F90:69
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
Definition: calcul_STDlev.h:26
real(kind=jprb), dimension(6) rebcud
Definition: yoesw.F90:42
real(kind=jprb), dimension(6) rfucc1
Definition: yoesw.F90:80
real(kind=jprb), dimension(6) rfldd3
Definition: yoesw.F90:86
subroutine radlsw(KIDIA, KFDIA, KLON, KLEV, KMODE, KAER, PRII0, PAER, PALBD, PALBP, PAPH, PAP, PCCNL, PCCNO, PCCO2, PCLFR, PDP, PEMIS, PEMIW, PLSM, PMU0, POZON, PQ, PQIWP, PQLWP, PQS, PQRAIN, PRAINT, PTH, PT, PTS, PNBAS, PNTOP, PREF_LIQ, PREF_ICE, PEMIT, PFCT, PFLT, PFCS, PFLS, PFRSOD, PSUDU, PUVDF, PPARF, PPARCF, PTINCF, PSFSWDIR, PSFSWDIF, PFSDNN, PFSDNV, LRDUST, PPIZA_DST, PCGA_DST, PTAUREL_DST, PTAU_LW, PFLUX, PFLUC, PFSDN, PFSUP, PFSCDN, PFSCUP)
Definition: radlsw.F90:16
logical lowhsss
Definition: yoerad.F90:45
real(kind=jprb), dimension(6, 6) xp
Definition: yoelw.F90:39
integer, save kfdia
Definition: dimphy.F90:5
real(kind=jprb), dimension(181) totplk16
Definition: yoerrtwn.F90:20
real(kind=jprb), dimension(16) rebcuh
Definition: yoesw.F90:46
real(kind=jprb), dimension(16) rebcug
Definition: yoesw.F90:45
logical linhom
Definition: yoerad.F90:50
integer(kind=jpim) nliqopt
Definition: yoerad.F90:34
real(kind=jprb), dimension(6) ryfwca
Definition: yoesw.F90:32
logical loifuec
Definition: yoerad.F90:46
real(kind=jprb), dimension(16, 3) rhsavi
Definition: yoesw.F90:59
logical ldebug
Definition: yoedbug.F90:14
logical lowasyf
Definition: yoerad.F90:44
real(kind=jprb), dimension(6) rebcub
Definition: yoesw.F90:40
integer(kind=jpim), dimension(16) nspb
Definition: yoerrtwn.F90:13
Definition: yoerad.F90:1
integer(kind=jpim), dimension(16) ng
Definition: yoerrtwn.F90:11
integer(kind=jpim) nuaer
Definition: yoerdu.F90:13
logical ltempds
Definition: yoerad.F90:54
real(kind=jprb), dimension(6) rflcc0
Definition: yoesw.F90:68
real(kind=jprb), dimension(6) ryfwce
Definition: yoesw.F90:36
real(kind=jprb), dimension(6) rfuaa1
Definition: yoesw.F90:74
real(kind=jprb), dimension(6) rfucc0
Definition: yoesw.F90:79
!$Header!integer nvarmx zd
Definition: gradsdef.h:20
real(kind=jprb), dimension(6) rfldd2
Definition: yoesw.F90:85
!$Header!c c INCLUDE fxyprim h c c c Fonctions in line c c REAL fyprim REAL rj c c il faut la calculer avant d appeler ces fonctions c c c Fonctions a changer selon x(x) et y(y) choisis.c-----------------------------------------------------------------c c.....ici
integer(kind=jpim), dimension(16) nspa
Definition: yoerrtwn.F90:12
real(kind=jprb), dimension(6) rebcuj
Definition: yoesw.F90:48
subroutine col2box(KIDIA, KFDIA, KLON, KLEV, KBOX, KOVLP, PCLFR, PCLBX)
Definition: col2box.F90:5
subroutine olw(KIDIA, KFDIA, KLON, KLEV, PCCO2, PCLDLD, PCLDLU, PDP, PDT0, PEMIS, PAPH, PQOF, PTH, PAER, PT, PVIEW, PWV, PCOLR, PCOLC, PFLUX, PFLUC)
Definition: olw.F90:9
real(kind=jprb) replog
Definition: yoerdu.F90:19
subroutine rrtm_rrtm_140gp(KIDIA, KFDIA, KLON, KLEV, PAER, PAPH, PAP, PTS, PTH, PT, P_ZEMIS, P_ZEMIW, PQ, PCCO2, POZN, PCLDF, PTAUCLD, PTAU_LW, PEMIT, PFLUX, PFLUC, PTCLEAR)
real(kind=jprb), dimension(6) rfubb2
Definition: yoesw.F90:77
real(kind=jprb), dimension(6) rfuaa0
Definition: yoesw.F90:73
integer(kind=jpim) niceopt
Definition: yoerad.F90:33
real(kind=jprb), dimension(6) rfldd1
Definition: yoesw.F90:84
real(kind=jprb), dimension(181, 16) totplnk
Definition: yoerrtwn.F90:19
integer(kind=jpim) nradlp
Definition: yoerad.F90:36
INTERFACE SUBROUTINE RRTM_ECRT_140GP paph
real(kind=jprb), dimension(6) rflaa1
Definition: yoesw.F90:63
real(kind=jprb), dimension(6) rfucc3
Definition: yoesw.F90:82
real(kind=jprb), dimension(6) raswcc
Definition: yoesw.F90:52
real(kind=jprb), dimension(16, 3) rfulio
Definition: yoesw.F90:58
real(kind=jprb), dimension(6) rflbb0
Definition: yoesw.F90:64
real(kind=jprb), dimension(16) delwave
Definition: yoerrtwn.F90:17
real(kind=jprb), dimension(6) rfubb3
Definition: yoesw.F90:78
logical lrrtm
Definition: yoerad.F90:52
INTERFACE SUBROUTINE RRTM_ECRT_140GP pt
INTERFACE SUBROUTINE RRTM_ECRT_140GP pap
integer(kind=jpim) ntra
Definition: yoelw.F90:18
integer(kind=jpim) ntraer
Definition: yoerdu.F90:14
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pts
integer(kind=jpim) nradip
Definition: yoerad.F90:35
real(kind=jprb) diff
Definition: yoerdu.F90:25
real(kind=jprb) repclc
Definition: yoerdi.F90:21
Definition: yomcst.F90:1
Definition: yoethf.F90:1
real(kind=jprb) repsc
Definition: yoerdu.F90:20
real(kind=jprb), dimension(6) raswcf
Definition: yoesw.F90:55
real(kind=jprb), dimension(6) rfldd0
Definition: yoesw.F90:83
real(kind=jprb), dimension(16) wavenum1
Definition: yoerrtwn.F90:15
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pq
Definition: yoerdu.F90:1
real(kind=jprb), dimension(6) rebcue
Definition: yoesw.F90:43
real(kind=jprb), dimension(6) rflcc2
Definition: yoesw.F90:70
real(kind=jprb), dimension(6) rflaa0
Definition: yoesw.F90:62
real(kind=jprb), dimension(6) raswcd
Definition: yoesw.F90:53
real(kind=jprb), dimension(6) raswca
Definition: yoesw.F90:50
real(kind=jprb), dimension(6) rebcui
Definition: yoesw.F90:47
real(kind=jprb), dimension(6) rfubb0
Definition: yoesw.F90:75