source: LMDZ.3.3/branches/rel-LF/libf/phylmd/radlwsw.F @ 520

Last change on this file since 520 was 517, checked in by lmdzadmin, 20 years ago

Inclusion des modifications de O. Boucher et de J. Quaas pour le calcul des
premiers effets directs et indirects dus aux aerosols
LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 198.2 KB
Line 
1      SUBROUTINE radlwsw(dist, rmu0, fract,
2     .                  paprs, pplay,tsol,albedo, alblw, t,q,wo,
3     .                  cldfra, cldemi, cldtaupd,
4     .                  heat,heat0,cool,cool0,radsol,albpla,
5     .                  topsw,toplw,solsw,sollw,
6     .                  sollwdown,
7     .                  topsw0,toplw0,solsw0,sollw0,
8     .                  lwdn0, lwdn, lwup0, lwup,
9     .                  swdn0, swdn, swup0, swup,
10     .                  ok_ade, ok_aie,
11     .                  tau_ae, piz_ae, cg_ae,
12     .                  topswad, solswad,
13     .                  cldtaupi, topswai, solswai)
14c     
15      IMPLICIT none
16c======================================================================
17c Auteur(s): Z.X. Li (LMD/CNRS) date: 19960719
18c Objet: interface entre le modele et les rayonnements
19c Arguments:
20c dist-----input-R- distance astronomique terre-soleil
21c rmu0-----input-R- cosinus de l'angle zenithal
22c fract----input-R- duree d'ensoleillement normalisee
23c co2_ppm--input-R- concentration du gaz carbonique (en ppm)
24c solaire--input-R- constante solaire (W/m**2)
25c paprs----input-R- pression a inter-couche (Pa)
26c pplay----input-R- pression au milieu de couche (Pa)
27c tsol-----input-R- temperature du sol (en K)
28c albedo---input-R- albedo du sol (entre 0 et 1)
29c t--------input-R- temperature (K)
30c q--------input-R- vapeur d'eau (en kg/kg)
31c wo-------input-R- contenu en ozone (en cm.atm)
32c cldfra---input-R- fraction nuageuse (entre 0 et 1)
33c cldtaupd---input-R- epaisseur optique des nuages dans le visible (present-day value)
34c cldemi---input-R- emissivite des nuages dans l'IR (entre 0 et 1)
35c ok_ade---input-L- apply the Aerosol Direct Effect or not?
36c ok_aie---input-L- apply the Aerosol Indirect Effect or not?
37c tau_ae, piz_ae, cg_ae-input-R- aerosol optical properties (calculated in aeropt.F)
38c cldtaupi-input-R- epaisseur optique des nuages dans le visible
39c                   calculated for pre-industrial (pi) aerosol concentrations, i.e. with smaller
40c                   droplet concentration, thus larger droplets, thus generally cdltaupi cldtaupd
41c                   it is needed for the diagnostics of the aerosol indirect radiative forcing     
42c
43c heat-----output-R- echauffement atmospherique (visible) (K/jour)
44c cool-----output-R- refroidissement dans l'IR (K/jour)
45c radsol---output-R- bilan radiatif net au sol (W/m**2) (+ vers le bas)
46c albpla---output-R- albedo planetaire (entre 0 et 1)
47c topsw----output-R- flux solaire net au sommet de l'atm.
48c toplw----output-R- ray. IR montant au sommet de l'atmosphere
49c solsw----output-R- flux solaire net a la surface
50c sollw----output-R- ray. IR montant a la surface
51c solswad---output-R- ray. solaire net absorbe a la surface (aerosol dir)
52c topswad---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol dir)
53c solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind)
54c topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind)
55c
56c ATTENTION: swai and swad have to be interpreted in the following manner:
57c ---------
58c ok_ade=F & ok_aie=F -both are zero
59c ok_ade=T & ok_aie=F -aerosol direct forcing is F_{AD} = topsw-topswad
60c                        indirect is zero
61c ok_ade=F & ok_aie=T -aerosol indirect forcing is F_{AI} = topsw-topswai
62c                        direct is zero
63c ok_ade=T & ok_aie=T -aerosol indirect forcing is F_{AI} = topsw-topswai
64c                        aerosol direct forcing is F_{AD} = topswai-topswad
65c
66     
67c======================================================================
68#include "dimensions.h"
69#include "dimphy.h"
70#include "raddim.h"
71#include "YOETHF.h"
72c
73      real rmu0(klon), fract(klon), dist
74cIM   real co2_ppm
75cIM   real solaire
76#include "clesphys.h"
77c
78      real paprs(klon,klev+1), pplay(klon,klev)
79      real albedo(klon), alblw(klon), tsol(klon)
80      real t(klon,klev), q(klon,klev), wo(klon,klev)
81      real cldfra(klon,klev), cldemi(klon,klev), cldtaupd(klon,klev)
82      real heat(klon,klev), cool(klon,klev)
83      real heat0(klon,klev), cool0(klon,klev)
84      real radsol(klon), topsw(klon), toplw(klon)
85      real solsw(klon), sollw(klon), albpla(klon)
86      real topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)
87      real sollwdown(klon)
88cccIM
89      REAL*8 ZFSUP(KDLON,KFLEV+1)
90      REAL*8 ZFSDN(KDLON,KFLEV+1)
91      REAL*8 ZFSUP0(KDLON,KFLEV+1)
92      REAL*8 ZFSDN0(KDLON,KFLEV+1)
93cIM
94cIM
95cIM   real sollwdownclr(klon) !LWdnSFCclr
96cIM   real toplwdown(klon) !LWdnTOA
97cIM   real toplwdownclr(klon) !LWdnTOAclr
98      REAL*8 ZFLUP(KDLON,KFLEV+1)
99      REAL*8 ZFLDN(KDLON,KFLEV+1)
100      REAL*8 ZFLUP0(KDLON,KFLEV+1)
101      REAL*8 ZFLDN0(KDLON,KFLEV+1)
102c
103      REAL*8 zx_alpha1, zx_alpha2
104c
105#include "YOMCST.h"
106c
107      INTEGER k, kk, i, j, iof, nb_gr
108      EXTERNAL lw, sw
109c
110cIM ctes ds clesphys.h  REAL*8 RCO2, RCH4, RN2O, RCFC11, RCFC12
111      REAL*8 PSCT
112c
113      REAL*8 PALBD(kdlon,2), PALBP(kdlon,2)
114      REAL*8 PEMIS(kdlon), PDT0(kdlon), PVIEW(kdlon)
115      REAL*8 PPSOL(kdlon), PDP(kdlon,klev)
116      REAL*8 PTL(kdlon,kflev+1), PPMB(kdlon,kflev+1)
117      REAL*8 PTAVE(kdlon,kflev)
118      REAL*8 PWV(kdlon,kflev), PQS(kdlon,kflev), POZON(kdlon,kflev)
119      REAL*8 PAER(kdlon,kflev,5)
120      REAL*8 PCLDLD(kdlon,kflev)
121      REAL*8 PCLDLU(kdlon,kflev)
122      REAL*8 PCLDSW(kdlon,kflev)
123      REAL*8 PTAU(kdlon,2,kflev)
124      REAL*8 POMEGA(kdlon,2,kflev)
125      REAL*8 PCG(kdlon,2,kflev)
126c
127      REAL*8 zfract(kdlon), zrmu0(kdlon), zdist
128c
129      REAL*8 zheat(kdlon,kflev), zcool(kdlon,kflev)
130      REAL*8 zheat0(kdlon,kflev), zcool0(kdlon,kflev)
131      REAL*8 ztopsw(kdlon), ztoplw(kdlon)
132      REAL*8 zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon)
133cIM BEG
134      REAL*8 zsollwdown(kdlon)
135cIM   REAL*8 zsollwdown(kdlon), zsollwdownclr(kdlon)
136cIM   REAL*8 ztoplwdown(kdlon), ztoplwdownclr(kdlon)
137cIM END
138      REAL*8 ztopsw0(kdlon), ztoplw0(kdlon)
139      REAL*8 zsolsw0(kdlon), zsollw0(kdlon)
140      REAL*8 zznormcp
141cIM 080304   REAL swdn(klon,2),swdn0(klon,2),swup(klon,2),swup0(klon,2)
142      REAL swdn(klon,kflev+1),swdn0(klon,kflev+1)
143      REAL swup(klon,kflev+1),swup0(klon,kflev+1)
144cIM BEG
145      REAL lwdn(klon,kflev+1),lwdn0(klon,kflev+1)
146      REAL lwup(klon,kflev+1),lwup0(klon,kflev+1)
147cIM END
148c-OB
149cjq the following quantities are needed for the aerosol radiative forcings
150
151      real topswad(klon), solswad(klon) ! output: aerosol direct forcing at TOA and surface
152      real topswai(klon), solswai(klon) ! output: aerosol indirect forcing atTOA and surface
153      real tau_ae(klon,klev,2), piz_ae(klon,klev,2), cg_ae(klon,klev,2) ! aerosol optical properties (see aeropt.F)
154      real cldtaupi(klon,klev)  ! cloud optical thickness for pre-industrial aerosol concentrations
155                                ! (i.e., with a smaller droplet concentrationand thus larger droplet radii)
156      logical ok_ade, ok_aie    ! switches whether to use aerosol direct (indirect) effects or not
157      real*8 tauae(kdlon,kflev,2) ! aer opt properties
158      real*8 pizae(kdlon,kflev,2)
159      real*8 cgae(kdlon,kflev,2)
160      REAL*8 PTAUA(kdlon,2,kflev) ! present-day value of cloud opt thickness (PTAU is pre-industrial value), local use
161      REAL*8 POMEGAA(kdlon,2,kflev) ! dito for single scatt albedo
162      REAL*8 ztopswad(kdlon), zsolswad(kdlon) ! Aerosol direct forcing at TOAand surface
163      REAL*8 ztopswai(kdlon), zsolswai(kdlon) ! dito, indirect
164cjq-end
165     
166c
167c-------------------------------------------
168      nb_gr = klon / kdlon
169      IF (nb_gr*kdlon .NE. klon) THEN
170         PRINT*, "kdlon mauvais:", klon, kdlon, nb_gr
171         CALL abort
172      ENDIF
173      IF (kflev .NE. klev) THEN
174          PRINT*, "kflev differe de klev, kflev, klev"
175          CALL abort
176      ENDIF
177c-------------------------------------------
178      DO k = 1, klev
179      DO i = 1, klon
180         heat(i,k)=0.
181         cool(i,k)=0.
182         heat0(i,k)=0.
183         cool0(i,k)=0.
184      ENDDO
185      ENDDO
186c
187      zdist = dist
188c
189cIM anciennes valeurs
190c     RCO2 = co2_ppm * 1.0e-06  * 44.011/28.97
191c
192cIM : on met RCO2, RCH4, RN2O, RCFC11 et RCFC12 dans clesphys.h /lecture ds conf_phys.F90
193c     RCH4 = 1.65E-06* 16.043/28.97
194c     RN2O = 306.E-09* 44.013/28.97
195c     RCFC11 = 280.E-12* 137.3686/28.97
196c     RCFC12 = 484.E-12* 120.9140/28.97
197cIM anciennes valeurs
198c     RCH4 = 1.72E-06* 16.043/28.97
199c     RN2O = 310.E-09* 44.013/28.97
200c
201c     PRINT*,'IMradlwsw : solaire, co2= ', solaire, co2_ppm
202      PSCT = solaire/zdist/zdist
203c
204      DO 99999 j = 1, nb_gr
205      iof = kdlon*(j-1)
206c
207      DO i = 1, kdlon
208         zfract(i) = fract(iof+i)
209         zrmu0(i) = rmu0(iof+i)
210         PALBD(i,1) = albedo(iof+i)
211!         PALBD(i,2) = albedo(iof+i)
212         PALBD(i,2) = alblw(iof+i)
213         PALBP(i,1) = albedo(iof+i)
214!         PALBP(i,2) = albedo(iof+i)
215         PALBP(i,2) = alblw(iof+i)
216cIM cf. JLD pour etre en accord avec ORCHIDEE il faut mettre PEMIS(i) = 0.96
217         PEMIS(i) = 1.0
218         PVIEW(i) = 1.66
219         PPSOL(i) = paprs(iof+i,1)
220         zx_alpha1 = (paprs(iof+i,1)-pplay(iof+i,2))
221     .             / (pplay(iof+i,1)-pplay(iof+i,2))
222         zx_alpha2 = 1.0 - zx_alpha1
223         PTL(i,1) = t(iof+i,1) * zx_alpha1 + t(iof+i,2) * zx_alpha2
224         PTL(i,klev+1) = t(iof+i,klev)
225         PDT0(i) = tsol(iof+i) - PTL(i,1)
226      ENDDO
227      DO k = 2, kflev
228      DO i = 1, kdlon
229         PTL(i,k) = (t(iof+i,k)+t(iof+i,k-1))*0.5
230      ENDDO
231      ENDDO
232      DO k = 1, kflev
233      DO i = 1, kdlon
234         PDP(i,k) = paprs(iof+i,k)-paprs(iof+i,k+1)
235         PTAVE(i,k) = t(iof+i,k)
236         PWV(i,k) = MAX (q(iof+i,k), 1.0e-12)
237         PQS(i,k) = PWV(i,k)
238c wo:    cm.atm (epaisseur en cm dans la situation standard)
239c POZON: kg/kg
240         POZON(i,k) = MAX(wo(iof+i,k),1.0e-12)*RG/46.6968
241     .               /(paprs(iof+i,k)-paprs(iof+i,k+1))
242     .               *(paprs(iof+i,1)/101325.0)
243         PCLDLD(i,k) = cldfra(iof+i,k)*cldemi(iof+i,k)
244         PCLDLU(i,k) = cldfra(iof+i,k)*cldemi(iof+i,k)
245         PCLDSW(i,k) = cldfra(iof+i,k)
246         PTAU(i,1,k) = MAX(cldtaupi(iof+i,k), 1.0e-05)! 1e-12 serait instable
247         PTAU(i,2,k) = MAX(cldtaupi(iof+i,k), 1.0e-05)! pour 32-bit machines
248         POMEGA(i,1,k) = 0.9999 - 5.0e-04 * EXP(-0.5 * PTAU(i,1,k))
249         POMEGA(i,2,k) = 0.9988 - 2.5e-03 * EXP(-0.05 * PTAU(i,2,k))
250         PCG(i,1,k) = 0.865
251         PCG(i,2,k) = 0.910
252c-OB
253cjq Introduced for aerosol indirect forcings.
254cjq The following values use the cloud optical thickness calculated from
255cjq present-day aerosol concentrations whereas the quantities without the
256cjq "A" at the end are for pre-industial (natural-only) aerosol concentrations
257cjq
258         PTAUA(i,1,k) = MAX(cldtaupd(iof+i,k), 1.0e-05)! 1e-12 serait instable
259         PTAUA(i,2,k) = MAX(cldtaupd(iof+i,k), 1.0e-05)! pour 32-bit machines
260         POMEGAA(i,1,k) = 0.9999 - 5.0e-04 * EXP(-0.5 * PTAUA(i,1,k))
261         POMEGAA(i,2,k) = 0.9988 - 2.5e-03 * EXP(-0.05 * PTAUA(i,2,k))
262cjq-end
263      ENDDO
264      ENDDO
265c
266      DO k = 1, kflev+1
267      DO i = 1, kdlon
268         PPMB(i,k) = paprs(iof+i,k)/100.0
269      ENDDO
270      ENDDO
271c
272      DO kk = 1, 5
273      DO k = 1, kflev
274      DO i = 1, kdlon
275         PAER(i,k,kk) = 1.0E-15
276      ENDDO
277      ENDDO
278      ENDDO
279c-OB
280      DO k = 1, kflev
281      DO i = 1, kdlon
282        tauae(i,k,1)=tau_ae(iof+i,k,1)
283        pizae(i,k,1)=piz_ae(iof+i,k,1)
284        cgae(i,k,1) =cg_ae(iof+i,k,1)
285        tauae(i,k,2)=tau_ae(iof+i,k,2)
286        pizae(i,k,2)=piz_ae(iof+i,k,2)
287        cgae(i,k,2) =cg_ae(iof+i,k,2)
288      ENDDO
289      ENDDO
290c
291c======================================================================
292cIM ctes ds clesphys.h   CALL LW(RCO2,RCH4,RN2O,RCFC11,RCFC12,
293      CALL LW(
294     .        PPMB, PDP,
295     .        PPSOL,PDT0,PEMIS,
296     .        PTL, PTAVE, PWV, POZON, PAER,
297     .        PCLDLD,PCLDLU,
298     .        PVIEW,
299     .        zcool, zcool0,
300     .        ztoplw,zsollw,ztoplw0,zsollw0,
301     .        zsollwdown,
302cIM  .        zsollwdown,zsollwdownclr,
303cIM  .        ztoplwdown,ztoplwdownclr)
304     .        ZFLUP, ZFLDN, ZFLUP0,ZFLDN0)
305cIM ctes ds clesphys.h   CALL SW(PSCT, RCO2, zrmu0, zfract,
306      CALL SW(PSCT, zrmu0, zfract,
307     S        PPMB, PDP,
308     S        PPSOL, PALBD, PALBP,
309     S        PTAVE, PWV, PQS, POZON, PAER,
310     S        PCLDSW, PTAU, POMEGA, PCG,
311     S        zheat, zheat0,
312     S        zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,
313     S        ZFSUP,ZFSDN,ZFSUP0,ZFSDN0,
314     S        tauae, pizae, cgae, ! aerosol optical properties
315     s        PTAUA, POMEGAA,
316     s        ztopswad,zsolswad,ztopswai,zsolswai, ! diagnosed aerosol forcing
317     J        ok_ade, ok_aie) ! apply aerosol effects or not?
318
319c======================================================================
320      DO i = 1, kdlon
321         radsol(iof+i) = zsolsw(i) + zsollw(i)
322         topsw(iof+i) = ztopsw(i)
323         toplw(iof+i) = ztoplw(i)
324         solsw(iof+i) = zsolsw(i)
325         sollw(iof+i) = zsollw(i)
326         sollwdown(iof+i) = zsollwdown(i)
327cIM
328cIM      sollwdownclr(iof+i) = zsollwdownclr(i)
329cIM BEG
330cIM      toplwdown(iof+i) = ztoplwdown(i)
331cIM      toplwdownclr(iof+i) = ztoplwdownclr(i)
332cIM END
333cIM 110304 BEG
334         DO k = 1, kflev+1
335         lwdn0 ( iof+i,k)   = ZFLDN0 ( i,k)
336         lwdn  ( iof+i,k)   = ZFLDN  ( i,k)
337         lwup0 ( iof+i,k)   = ZFLUP0 ( i,k)
338         lwup  ( iof+i,k)   = ZFLUP  ( i,k)
339         ENDDO
340cIM 110304 END
341         topsw0(iof+i) = ztopsw0(i)
342         toplw0(iof+i) = ztoplw0(i)
343         solsw0(iof+i) = zsolsw0(i)
344         sollw0(iof+i) = zsollw0(i)
345         albpla(iof+i) = zalbpla(i)
346cIM 080304 BEG
347         DO k = 1, kflev+1
348         swdn0 ( iof+i,k)   = ZFSDN0 ( i,k)
349         swdn  ( iof+i,k)   = ZFSDN  ( i,k)
350         swup0 ( iof+i,k)   = ZFSUP0 ( i,k)
351         swup  ( iof+i,k)   = ZFSUP  ( i,k)
352         ENDDO !k=1, kflev+1
353cIM 080304 END
354c        swdn0 ( iof+i,1)   = ZFSDN0 ( i,1 )
355c        swdn0 ( iof+i,2)   = ZFSDN0 ( i,kflev + 1 )
356c        swdn  ( iof+i,1)   = ZFSDN  ( i,1 )
357c        swdn  ( iof+i,2)   = ZFSDN  ( i,kflev + 1 )
358c        swup0 ( iof+i,1)   = ZFSUP0 ( i,1 )
359c        swup0 ( iof+i,2)   = ZFSUP0 ( i,kflev + 1 )
360c        swup  ( iof+i,1)   = ZFSUP  ( i,1 )
361c        swup  ( iof+i,2)   = ZFSUP  ( i,kflev + 1 )
362      ENDDO
363cjq-transform the aerosol forcings, if they have
364cjq to be calculated
365      IF (ok_ade) THEN
366      DO i = 1, kdlon
367         topswad(iof+i) = ztopswad(i)
368         solswad(iof+i) = zsolswad(i)
369      ENDDO
370      ELSE
371      DO i = 1, kdlon
372         topswad(iof+i) = 0.0
373         solswad(iof+i) = 0.0
374      ENDDO
375      ENDIF
376      IF (ok_aie) THEN
377      DO i = 1, kdlon
378         topswai(iof+i) = ztopswai(i)
379         solswai(iof+i) = zsolswai(i)
380      ENDDO
381      ELSE
382      DO i = 1, kdlon
383         topswai(iof+i) = 0.0
384         solswai(iof+i) = 0.0
385      ENDDO
386      ENDIF
387cjq-end
388      DO k = 1, kflev
389c      DO i = 1, kdlon
390c         heat(iof+i,k) = zheat(i,k)
391c         cool(iof+i,k) = zcool(i,k)
392c         heat0(iof+i,k) = zheat0(i,k)
393c         cool0(iof+i,k) = zcool0(i,k)
394c      ENDDO
395      DO i = 1, kdlon
396C        scale factor to take into account the difference between
397C        dry air and watter vapour scpecific heat capacity
398         zznormcp=1.0+RVTMP2*PWV(i,k)
399         heat(iof+i,k) = zheat(i,k)/zznormcp
400         cool(iof+i,k) = zcool(i,k)/zznormcp
401         heat0(iof+i,k) = zheat0(i,k)/zznormcp
402         cool0(iof+i,k) = zcool0(i,k)/zznormcp
403      ENDDO
404      ENDDO
405c
40699999 CONTINUE
407      RETURN
408      END
409cIM ctes ds clesphys.h   SUBROUTINE SW(PSCT, RCO2, PRMU0, PFRAC,
410      SUBROUTINE SW(PSCT, PRMU0, PFRAC,
411     S              PPMB, PDP,
412     S              PPSOL, PALBD, PALBP,
413     S              PTAVE, PWV, PQS, POZON, PAER,
414     S              PCLDSW, PTAU, POMEGA, PCG,
415     S              PHEAT, PHEAT0,
416     S              PALBPLA,PTOPSW,PSOLSW,PTOPSW0,PSOLSW0,
417     S              ZFSUP,ZFSDN,ZFSUP0,ZFSDN0,
418     S              tauae, pizae, cgae,
419     s              PTAUA, POMEGAA,
420     S              PTOPSWAD,PSOLSWAD,PTOPSWAI,PSOLSWAI,
421     J              ok_ade, ok_aie )
422     
423      IMPLICIT none
424
425#include "dimensions.h"
426#include "dimphy.h"
427#include "raddim.h"
428#include "YOMCST.h"
429C
430C     ------------------------------------------------------------------
431C
432C     PURPOSE.
433C     --------
434C
435C          THIS ROUTINE COMPUTES THE SHORTWAVE RADIATION FLUXES IN TWO
436C     SPECTRAL INTERVALS FOLLOWING FOUQUART AND BONNEL (1980).
437C
438C     METHOD.
439C     -------
440C
441C          1. COMPUTES ABSORBER AMOUNTS                 (SWU)
442C          2. COMPUTES FLUXES IN 1ST SPECTRAL INTERVAL  (SW1S)
443C          3. COMPUTES FLUXES IN 2ND SPECTRAL INTERVAL  (SW2S)
444C
445C     REFERENCE.
446C     ----------
447C
448C        SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
449C        DOCUMENTATION, AND FOUQUART AND BONNEL (1980)
450C
451C     AUTHOR.
452C     -------
453C        JEAN-JACQUES MORCRETTE  *ECMWF*
454C
455C     MODIFICATIONS.
456C     --------------
457C        ORIGINAL : 89-07-14
458C        95-01-01   J.-J. MORCRETTE  Direct/Diffuse Albedo
459c        03-11-27   J. QUAAS Introduce aerosol forcings (based on BOUCHER)
460C     ------------------------------------------------------------------
461C
462C* ARGUMENTS:
463C
464      REAL*8 PSCT  ! constante solaire (valeur conseillee: 1370)
465cIM ctes ds clesphys.h   REAL*8 RCO2  ! concentration CO2 (IPCC: 353.E-06*44.011/28.97)
466#include "clesphys.h"
467C
468      REAL*8 PPSOL(KDLON)        ! SURFACE PRESSURE (PA)
469      REAL*8 PDP(KDLON,KFLEV)    ! LAYER THICKNESS (PA)
470      REAL*8 PPMB(KDLON,KFLEV+1) ! HALF-LEVEL PRESSURE (MB)
471C
472      REAL*8 PRMU0(KDLON)  ! COSINE OF ZENITHAL ANGLE
473      REAL*8 PFRAC(KDLON)  ! fraction de la journee
474C
475      REAL*8 PTAVE(KDLON,KFLEV)  ! LAYER TEMPERATURE (K)
476      REAL*8 PWV(KDLON,KFLEV)    ! SPECIFIC HUMIDITY (KG/KG)
477      REAL*8 PQS(KDLON,KFLEV)    ! SATURATED WATER VAPOUR (KG/KG)
478      REAL*8 POZON(KDLON,KFLEV)  ! OZONE CONCENTRATION (KG/KG)
479      REAL*8 PAER(KDLON,KFLEV,5) ! AEROSOLS' OPTICAL THICKNESS
480C
481      REAL*8 PALBD(KDLON,2)  ! albedo du sol (lumiere diffuse)
482      REAL*8 PALBP(KDLON,2)  ! albedo du sol (lumiere parallele)
483C
484      REAL*8 PCLDSW(KDLON,KFLEV)    ! CLOUD FRACTION
485      REAL*8 PTAU(KDLON,2,KFLEV)    ! CLOUD OPTICAL THICKNESS
486      REAL*8 PCG(KDLON,2,KFLEV)     ! ASYMETRY FACTOR
487      REAL*8 POMEGA(KDLON,2,KFLEV)  ! SINGLE SCATTERING ALBEDO
488C
489      REAL*8 PHEAT(KDLON,KFLEV) ! SHORTWAVE HEATING (K/DAY)
490      REAL*8 PHEAT0(KDLON,KFLEV)! SHORTWAVE HEATING (K/DAY) clear-sky
491      REAL*8 PALBPLA(KDLON)     ! PLANETARY ALBEDO
492      REAL*8 PTOPSW(KDLON)      ! SHORTWAVE FLUX AT T.O.A.
493      REAL*8 PSOLSW(KDLON)      ! SHORTWAVE FLUX AT SURFACE
494      REAL*8 PTOPSW0(KDLON)     ! SHORTWAVE FLUX AT T.O.A. (CLEAR-SKY)
495      REAL*8 PSOLSW0(KDLON)     ! SHORTWAVE FLUX AT SURFACE (CLEAR-SKY)
496C
497C* LOCAL VARIABLES:
498C
499      REAL*8 ZOZ(KDLON,KFLEV)
500      REAL*8 ZAKI(KDLON,2)     
501      REAL*8 ZCLD(KDLON,KFLEV)
502      REAL*8 ZCLEAR(KDLON)
503      REAL*8 ZDSIG(KDLON,KFLEV)
504      REAL*8 ZFACT(KDLON)
505      REAL*8 ZFD(KDLON,KFLEV+1)
506      REAL*8 ZFDOWN(KDLON,KFLEV+1)
507      REAL*8 ZFU(KDLON,KFLEV+1)
508      REAL*8 ZFUP(KDLON,KFLEV+1)
509      REAL*8 ZRMU(KDLON)
510      REAL*8 ZSEC(KDLON)
511      REAL*8 ZUD(KDLON,5,KFLEV+1)
512      REAL*8 ZCLDSW0(KDLON,KFLEV)
513c
514      REAL*8 ZFSUP(KDLON,KFLEV+1)
515      REAL*8 ZFSDN(KDLON,KFLEV+1)
516      REAL*8 ZFSUP0(KDLON,KFLEV+1)
517      REAL*8 ZFSDN0(KDLON,KFLEV+1)
518C
519      INTEGER inu, jl, jk, i, k, kpl1
520c
521      INTEGER swpas  ! Every swpas steps, sw is calculated
522      PARAMETER(swpas=1)
523c
524      INTEGER itapsw
525      LOGICAL appel1er
526      DATA itapsw /0/
527      DATA appel1er /.TRUE./
528cjq-Introduced for aerosol forcings
529      real*8 flag_aer
530      logical ok_ade, ok_aie    ! use aerosol forcings or not?
531      real*8 tauae(kdlon,kflev,2)  ! aerosol optical properties
532      real*8 pizae(kdlon,kflev,2)  ! (see aeropt.F)
533      real*8 cgae(kdlon,kflev,2)   ! -"-
534      REAL*8 PTAUA(KDLON,2,KFLEV)    ! CLOUD OPTICAL THICKNESS (pre-industrial value)
535      REAL*8 POMEGAA(KDLON,2,KFLEV)  ! SINGLE SCATTERING ALBEDO
536      REAL*8 PTOPSWAD(KDLON)     ! SHORTWAVE FLUX AT T.O.A.(+AEROSOL DIR)
537      REAL*8 PSOLSWAD(KDLON)     ! SHORTWAVE FLUX AT SURFACE(+AEROSOL DIR)
538      REAL*8 PTOPSWAI(KDLON)     ! SHORTWAVE FLUX AT T.O.A.(+AEROSOL IND)
539      REAL*8 PSOLSWAI(KDLON)     ! SHORTWAVE FLUX AT SURFACE(+AEROSOL IND)
540cjq - Fluxes including aerosol effects
541      REAL*8 ZFSUPAD(KDLON,KFLEV+1)
542      REAL*8 ZFSDNAD(KDLON,KFLEV+1)
543      REAL*8 ZFSUPAI(KDLON,KFLEV+1)
544      REAL*8 ZFSDNAI(KDLON,KFLEV+1)
545      SAVE ZFSUPAD, ZFSDNAD, ZFSUPAI, ZFSDNAI ! aerosol fluxes
546cjq-end
547     
548c
549      IF (appel1er) THEN
550         PRINT*, 'SW calling frequency : ', swpas
551         PRINT*, "   In general, it should be 1"
552         appel1er = .FALSE.
553      ENDIF
554C     ------------------------------------------------------------------
555      IF (MOD(itapsw,swpas).EQ.0) THEN
556c
557      DO JK = 1 , KFLEV
558      DO JL = 1, KDLON
559         ZCLDSW0(JL,JK) = 0.0
560         ZOZ(JL,JK) = POZON(JL,JK)*46.6968/RG
561     .               *PDP(JL,JK)*(101325.0/PPSOL(JL))
562      ENDDO
563      ENDDO
564C
565C
566c clear-sky:
567cIM ctes ds clesphys.h  CALL SWU(PSCT,RCO2,ZCLDSW0,PPMB,PPSOL,
568      CALL SWU(PSCT,ZCLDSW0,PPMB,PPSOL,
569     S         PRMU0,PFRAC,PTAVE,PWV,
570     S         ZAKI,ZCLD,ZCLEAR,ZDSIG,ZFACT,ZRMU,ZSEC,ZUD)
571      INU = 1
572      CALL SW1S(INU,
573     S     PAER, flag_aer, tauae, pizae, cgae,
574     S     PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZCLDSW0,
575     S     ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD,
576     S     ZFD, ZFU)
577      INU = 2
578      CALL SW2S(INU,
579     S     PAER, flag_aer, tauae, pizae, cgae,
580     S     ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZCLDSW0,
581     S     ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD,
582     S     PWV, PQS,
583     S     ZFDOWN, ZFUP)
584      DO JK = 1 , KFLEV+1
585      DO JL = 1, KDLON
586         ZFSUP0(JL,JK) = (ZFUP(JL,JK)   + ZFU(JL,JK)) * ZFACT(JL)
587         ZFSDN0(JL,JK) = (ZFDOWN(JL,JK) + ZFD(JL,JK)) * ZFACT(JL)
588      ENDDO
589      ENDDO
590     
591      flag_aer=0.0
592      CALL SWU(PSCT,PCLDSW,PPMB,PPSOL,
593     S         PRMU0,PFRAC,PTAVE,PWV,
594     S         ZAKI,ZCLD,ZCLEAR,ZDSIG,ZFACT,ZRMU,ZSEC,ZUD)
595      INU = 1
596      CALL SW1S(INU,
597     S     PAER, flag_aer, tauae, pizae, cgae,
598     S     PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW,
599     S     ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD,
600     S     ZFD, ZFU)
601      INU = 2
602      CALL SW2S(INU,
603     S     PAER, flag_aer, tauae, pizae, cgae,
604     S     ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW,
605     S     ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD,
606     S     PWV, PQS,
607     S    ZFDOWN, ZFUP)
608
609c cloudy-sky:
610     
611      DO JK = 1 , KFLEV+1
612      DO JL = 1, KDLON
613         ZFSUP(JL,JK) = (ZFUP(JL,JK)   + ZFU(JL,JK)) * ZFACT(JL)
614         ZFSDN(JL,JK) = (ZFDOWN(JL,JK) + ZFD(JL,JK)) * ZFACT(JL)
615      ENDDO
616      ENDDO
617     
618c     
619      IF (ok_ade) THEN
620c
621c cloudy-sky + aerosol dir OB
622      flag_aer=1.0
623      CALL SWU(PSCT,PCLDSW,PPMB,PPSOL,
624     S         PRMU0,PFRAC,PTAVE,PWV,
625     S         ZAKI,ZCLD,ZCLEAR,ZDSIG,ZFACT,ZRMU,ZSEC,ZUD)
626      INU = 1
627      CALL SW1S(INU,
628     S     PAER, flag_aer, tauae, pizae, cgae,
629     S     PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW,
630     S     ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD,
631     S     ZFD, ZFU)
632      INU = 2
633      CALL SW2S(INU,
634     S     PAER, flag_aer, tauae, pizae, cgae,
635     S     ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW,
636     S     ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD,
637     S     PWV, PQS,
638     S    ZFDOWN, ZFUP)
639      DO JK = 1 , KFLEV+1
640      DO JL = 1, KDLON
641         ZFSUPAD(JL,JK) = ZFSUP(JL,JK)
642         ZFSDNAD(JL,JK) = ZFSDN(JL,JK)
643         ZFSUP(JL,JK) = (ZFUP(JL,JK)   + ZFU(JL,JK)) * ZFACT(JL)
644         ZFSDN(JL,JK) = (ZFDOWN(JL,JK) + ZFD(JL,JK)) * ZFACT(JL)
645      ENDDO
646      ENDDO
647     
648      ENDIF ! ok_ade
649     
650      IF (ok_aie) THEN
651         
652cjq   cloudy-sky + aerosol direct + aerosol indirect
653      flag_aer=1.0
654      CALL SWU(PSCT,PCLDSW,PPMB,PPSOL,
655     S         PRMU0,PFRAC,PTAVE,PWV,
656     S         ZAKI,ZCLD,ZCLEAR,ZDSIG,ZFACT,ZRMU,ZSEC,ZUD)
657      INU = 1
658      CALL SW1S(INU,
659     S     PAER, flag_aer, tauae, pizae, cgae,
660     S     PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW,
661     S     ZDSIG, POMEGAA, ZOZ, ZRMU, ZSEC, PTAUA, ZUD,
662     S     ZFD, ZFU)
663      INU = 2
664      CALL SW2S(INU,
665     S     PAER, flag_aer, tauae, pizae, cgae,
666     S     ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW,
667     S     ZDSIG, POMEGAA, ZOZ, ZRMU, ZSEC, PTAUA, ZUD,
668     S     PWV, PQS,
669     S    ZFDOWN, ZFUP)
670      DO JK = 1 , KFLEV+1
671      DO JL = 1, KDLON
672         ZFSUPAI(JL,JK) = ZFSUP(JL,JK)
673         ZFSDNAI(JL,JK) = ZFSDN(JL,JK)         
674         ZFSUP(JL,JK) = (ZFUP(JL,JK)   + ZFU(JL,JK)) * ZFACT(JL)
675         ZFSDN(JL,JK) = (ZFDOWN(JL,JK) + ZFD(JL,JK)) * ZFACT(JL)
676      ENDDO
677      ENDDO
678      ENDIF ! ok_aie     
679cjq -end
680     
681      itapsw = 0
682      ENDIF
683      itapsw = itapsw + 1
684C
685      DO k = 1, KFLEV
686         kpl1 = k+1
687         DO i = 1, KDLON
688            PHEAT(i,k) = -(ZFSUP(i,kpl1)-ZFSUP(i,k))
689     .                     -(ZFSDN(i,k)-ZFSDN(i,kpl1))
690            PHEAT(i,k) = PHEAT(i,k) * RDAY*RG/RCPD / PDP(i,k)
691            PHEAT0(i,k) = -(ZFSUP0(i,kpl1)-ZFSUP0(i,k))
692     .                     -(ZFSDN0(i,k)-ZFSDN0(i,kpl1))
693            PHEAT0(i,k) = PHEAT0(i,k) * RDAY*RG/RCPD / PDP(i,k)
694         ENDDO
695      ENDDO
696      DO i = 1, KDLON
697         PALBPLA(i) = ZFSUP(i,KFLEV+1)/(ZFSDN(i,KFLEV+1)+1.0e-20)
698c
699         PSOLSW(i) = ZFSDN(i,1) - ZFSUP(i,1)
700         PTOPSW(i) = ZFSDN(i,KFLEV+1) - ZFSUP(i,KFLEV+1)
701c
702         PSOLSW0(i) = ZFSDN0(i,1) - ZFSUP0(i,1)
703         PTOPSW0(i) = ZFSDN0(i,KFLEV+1) - ZFSUP0(i,KFLEV+1)
704c-OB
705         PSOLSWAD(i) = ZFSDNAD(i,1) - ZFSUPAD(i,1)
706         PTOPSWAD(i) = ZFSDNAD(i,KFLEV+1) - ZFSUPAD(i,KFLEV+1)
707c
708         PSOLSWAI(i) = ZFSDNAI(i,1) - ZFSUPAI(i,1)
709         PTOPSWAI(i) = ZFSDNAI(i,KFLEV+1) - ZFSUPAI(i,KFLEV+1)
710c-fin
711      ENDDO
712C
713      RETURN
714      END
715c
716cIM ctes ds clesphys.h   SUBROUTINE SWU (PSCT,RCO2,PCLDSW,PPMB,PPSOL,PRMU0,PFRAC,
717      SUBROUTINE SWU (PSCT,PCLDSW,PPMB,PPSOL,PRMU0,PFRAC,
718     S                PTAVE,PWV,PAKI,PCLD,PCLEAR,PDSIG,PFACT,
719     S                PRMU,PSEC,PUD)
720      IMPLICIT none
721#include "dimensions.h"
722#include "dimphy.h"
723#include "raddim.h"
724#include "radepsi.h"
725#include "radopt.h"
726#include "YOMCST.h"
727C
728C* ARGUMENTS:
729C
730      REAL*8 PSCT
731cIM ctes ds clesphys.h   REAL*8 RCO2
732#include "clesphys.h"
733      REAL*8 PCLDSW(KDLON,KFLEV)
734      REAL*8 PPMB(KDLON,KFLEV+1)
735      REAL*8 PPSOL(KDLON)
736      REAL*8 PRMU0(KDLON)
737      REAL*8 PFRAC(KDLON)
738      REAL*8 PTAVE(KDLON,KFLEV)
739      REAL*8 PWV(KDLON,KFLEV)
740C
741      REAL*8 PAKI(KDLON,2)
742      REAL*8 PCLD(KDLON,KFLEV)
743      REAL*8 PCLEAR(KDLON)
744      REAL*8 PDSIG(KDLON,KFLEV)
745      REAL*8 PFACT(KDLON)
746      REAL*8 PRMU(KDLON)
747      REAL*8 PSEC(KDLON)
748      REAL*8 PUD(KDLON,5,KFLEV+1)
749C
750C* LOCAL VARIABLES:
751C
752      INTEGER IIND(2)
753      REAL*8 ZC1J(KDLON,KFLEV+1)
754      REAL*8 ZCLEAR(KDLON)
755      REAL*8 ZCLOUD(KDLON)
756      REAL*8 ZN175(KDLON)
757      REAL*8 ZN190(KDLON)
758      REAL*8 ZO175(KDLON)
759      REAL*8 ZO190(KDLON)
760      REAL*8 ZSIGN(KDLON)
761      REAL*8 ZR(KDLON,2)
762      REAL*8 ZSIGO(KDLON)
763      REAL*8 ZUD(KDLON,2)
764      REAL*8 ZRTH, ZRTU, ZWH2O, ZDSCO2, ZDSH2O, ZFPPW
765      INTEGER jl, jk, jkp1, jkl, jklp1, ja
766C
767C* Prescribed Data:
768c
769      REAL*8 ZPDH2O,ZPDUMG
770      SAVE ZPDH2O,ZPDUMG
771      REAL*8 ZPRH2O,ZPRUMG
772      SAVE ZPRH2O,ZPRUMG
773      REAL*8 RTDH2O,RTDUMG
774      SAVE RTDH2O,RTDUMG
775      REAL*8 RTH2O ,RTUMG
776      SAVE RTH2O ,RTUMG
777      DATA ZPDH2O,ZPDUMG / 0.8   , 0.75 /
778      DATA ZPRH2O,ZPRUMG / 30000., 30000. /
779      DATA RTDH2O,RTDUMG /  0.40  , 0.375 /
780      DATA RTH2O ,RTUMG  /  240.  , 240.  /
781C     ------------------------------------------------------------------
782C
783C*         1.     COMPUTES AMOUNTS OF ABSORBERS
784C                 -----------------------------
785C
786 100  CONTINUE
787C
788      IIND(1)=1
789      IIND(2)=2
790C     
791C
792C*         1.1    INITIALIZES QUANTITIES
793C                 ----------------------
794C
795 110  CONTINUE
796C
797      DO 111 JL = 1, KDLON
798      PUD(JL,1,KFLEV+1)=0.
799      PUD(JL,2,KFLEV+1)=0.
800      PUD(JL,3,KFLEV+1)=0.
801      PUD(JL,4,KFLEV+1)=0.
802      PUD(JL,5,KFLEV+1)=0.
803      PFACT(JL)= PRMU0(JL) * PFRAC(JL) * PSCT
804      PRMU(JL)=SQRT(1224.* PRMU0(JL) * PRMU0(JL) + 1.) / 35.
805      PSEC(JL)=1./PRMU(JL)
806      ZC1J(JL,KFLEV+1)=0.
807 111  CONTINUE
808C
809C*          1.3    AMOUNTS OF ABSORBERS
810C                  --------------------
811C
812 130  CONTINUE
813C
814      DO 131 JL= 1, KDLON
815      ZUD(JL,1) = 0.
816      ZUD(JL,2) = 0.
817      ZO175(JL) = PPSOL(JL)** (ZPDUMG+1.)
818      ZO190(JL) = PPSOL(JL)** (ZPDH2O+1.)
819      ZSIGO(JL) = PPSOL(JL)
820      ZCLEAR(JL)=1.
821      ZCLOUD(JL)=0.
822 131  CONTINUE
823C
824      DO 133 JK = 1 , KFLEV
825      JKP1 = JK + 1
826      JKL = KFLEV+1 - JK
827      JKLP1 = JKL+1
828      DO 132 JL = 1, KDLON
829      ZRTH=(RTH2O/PTAVE(JL,JK))**RTDH2O
830      ZRTU=(RTUMG/PTAVE(JL,JK))**RTDUMG
831      ZWH2O = MAX (PWV(JL,JK) , ZEPSCQ )
832      ZSIGN(JL) = 100. * PPMB(JL,JKP1)
833      PDSIG(JL,JK) = (ZSIGO(JL) - ZSIGN(JL))/PPSOL(JL)
834      ZN175(JL) = ZSIGN(JL) ** (ZPDUMG+1.)
835      ZN190(JL) = ZSIGN(JL) ** (ZPDH2O+1.)
836      ZDSCO2 = ZO175(JL) - ZN175(JL)
837      ZDSH2O = ZO190(JL) - ZN190(JL)
838      PUD(JL,1,JK) = 1./( 10.* RG * (ZPDH2O+1.) )/(ZPRH2O**ZPDH2O)
839     .             * ZDSH2O * ZWH2O  * ZRTH
840      PUD(JL,2,JK) = 1./( 10.* RG * (ZPDUMG+1.) )/(ZPRUMG**ZPDUMG)
841     .             * ZDSCO2 * RCO2 * ZRTU
842      ZFPPW=1.6078*ZWH2O/(1.+0.608*ZWH2O)
843      PUD(JL,4,JK)=PUD(JL,1,JK)*ZFPPW
844      PUD(JL,5,JK)=PUD(JL,1,JK)*(1.-ZFPPW)
845      ZUD(JL,1) = ZUD(JL,1) + PUD(JL,1,JK)
846      ZUD(JL,2) = ZUD(JL,2) + PUD(JL,2,JK)
847      ZSIGO(JL) = ZSIGN(JL)
848      ZO175(JL) = ZN175(JL)
849      ZO190(JL) = ZN190(JL)
850C     
851      IF (NOVLP.EQ.1) THEN
852         ZCLEAR(JL)=ZCLEAR(JL)
853     S               *(1.-MAX(PCLDSW(JL,JKL),ZCLOUD(JL)))
854     S               /(1.-MIN(ZCLOUD(JL),1.-ZEPSEC))
855         ZC1J(JL,JKL)= 1.0 - ZCLEAR(JL)
856         ZCLOUD(JL) = PCLDSW(JL,JKL)
857      ELSE IF (NOVLP.EQ.2) THEN
858         ZCLOUD(JL) = MAX(PCLDSW(JL,JKL),ZCLOUD(JL))
859         ZC1J(JL,JKL) = ZCLOUD(JL)
860      ELSE IF (NOVLP.EQ.3) THEN
861         ZCLEAR(JL) = ZCLEAR(JL)*(1.-PCLDSW(JL,JKL))
862         ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
863         ZC1J(JL,JKL) = ZCLOUD(JL)
864      END IF
865 132  CONTINUE
866 133  CONTINUE
867      DO 134 JL=1, KDLON
868      PCLEAR(JL)=1.-ZC1J(JL,1)
869 134  CONTINUE
870      DO 136 JK=1,KFLEV
871      DO 135 JL=1, KDLON
872      IF (PCLEAR(JL).LT.1.) THEN
873         PCLD(JL,JK)=PCLDSW(JL,JK)/(1.-PCLEAR(JL))
874      ELSE
875         PCLD(JL,JK)=0.
876      END IF
877 135  CONTINUE
878 136  CONTINUE           
879C     
880C
881C*         1.4    COMPUTES CLEAR-SKY GREY ABSORPTION COEFFICIENTS
882C                 -----------------------------------------------
883C
884 140  CONTINUE
885C
886      DO 142 JA = 1,2
887      DO 141 JL = 1, KDLON
888      ZUD(JL,JA) = ZUD(JL,JA) * PSEC(JL)
889 141  CONTINUE
890 142  CONTINUE
891C
892      CALL SWTT1(2, 2, IIND, ZUD, ZR)
893C
894      DO 144 JA = 1,2
895      DO 143 JL = 1, KDLON
896      PAKI(JL,JA) = -LOG( ZR(JL,JA) ) / ZUD(JL,JA)
897 143  CONTINUE
898 144  CONTINUE
899C
900C
901C     ------------------------------------------------------------------
902C
903      RETURN
904      END
905      SUBROUTINE SW1S ( KNU
906     S  ,  PAER  , flag_aer, tauae, pizae, cgae
907     S  ,  PALBD , PALBP, PCG  , PCLD , PCLEAR, PCLDSW
908     S  ,  PDSIG , POMEGA, POZ  , PRMU , PSEC , PTAU  , PUD 
909     S  ,  PFD   , PFU)
910      IMPLICIT none
911#include "dimensions.h"
912#include "dimphy.h"
913#include "raddim.h"
914C
915C     ------------------------------------------------------------------
916C     PURPOSE.
917C     --------
918C
919C          THIS ROUTINE COMPUTES THE SHORTWAVE RADIATION FLUXES IN TWO
920C     SPECTRAL INTERVALS FOLLOWING FOUQUART AND BONNEL (1980).
921C
922C     METHOD.
923C     -------
924C
925C          1. COMPUTES UPWARD AND DOWNWARD FLUXES CORRESPONDING TO
926C     CONTINUUM SCATTERING
927C          2. MULTIPLY BY OZONE TRANSMISSION FUNCTION
928C
929C     REFERENCE.
930C     ----------
931C
932C        SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
933C        DOCUMENTATION, AND FOUQUART AND BONNEL (1980)
934C
935C     AUTHOR.
936C     -------
937C        JEAN-JACQUES MORCRETTE  *ECMWF*
938C
939C     MODIFICATIONS.
940C     --------------
941C        ORIGINAL : 89-07-14
942C        94-11-15   J.-J. MORCRETTE    DIRECT/DIFFUSE ALBEDO
943C     ------------------------------------------------------------------
944C
945C* ARGUMENTS:
946C
947      INTEGER KNU
948c-OB
949      real*8 flag_aer
950      real*8 tauae(kdlon,kflev,2)
951      real*8 pizae(kdlon,kflev,2)
952      real*8 cgae(kdlon,kflev,2)
953      REAL*8 PAER(KDLON,KFLEV,5)
954      REAL*8 PALBD(KDLON,2)
955      REAL*8 PALBP(KDLON,2)
956      REAL*8 PCG(KDLON,2,KFLEV) 
957      REAL*8 PCLD(KDLON,KFLEV)
958      REAL*8 PCLDSW(KDLON,KFLEV)
959      REAL*8 PCLEAR(KDLON)
960      REAL*8 PDSIG(KDLON,KFLEV)
961      REAL*8 POMEGA(KDLON,2,KFLEV)
962      REAL*8 POZ(KDLON,KFLEV)
963      REAL*8 PRMU(KDLON)
964      REAL*8 PSEC(KDLON)
965      REAL*8 PTAU(KDLON,2,KFLEV)
966      REAL*8 PUD(KDLON,5,KFLEV+1)
967C
968      REAL*8 PFD(KDLON,KFLEV+1)
969      REAL*8 PFU(KDLON,KFLEV+1)
970C
971C* LOCAL VARIABLES:
972C
973      INTEGER IIND(4)
974C     
975      REAL*8 ZCGAZ(KDLON,KFLEV)
976      REAL*8 ZDIFF(KDLON)
977      REAL*8 ZDIRF(KDLON)       
978      REAL*8 ZPIZAZ(KDLON,KFLEV)
979      REAL*8 ZRAYL(KDLON)
980      REAL*8 ZRAY1(KDLON,KFLEV+1)
981      REAL*8 ZRAY2(KDLON,KFLEV+1)
982      REAL*8 ZREFZ(KDLON,2,KFLEV+1)
983      REAL*8 ZRJ(KDLON,6,KFLEV+1)
984      REAL*8 ZRJ0(KDLON,6,KFLEV+1)
985      REAL*8 ZRK(KDLON,6,KFLEV+1)
986      REAL*8 ZRK0(KDLON,6,KFLEV+1)
987      REAL*8 ZRMUE(KDLON,KFLEV+1)
988      REAL*8 ZRMU0(KDLON,KFLEV+1)
989      REAL*8 ZR(KDLON,4)
990      REAL*8 ZTAUAZ(KDLON,KFLEV)
991      REAL*8 ZTRA1(KDLON,KFLEV+1)
992      REAL*8 ZTRA2(KDLON,KFLEV+1)
993      REAL*8 ZW(KDLON,4)
994C
995      INTEGER jl, jk, k, jaj, ikm1, ikl
996c
997c Prescribed Data:
998c
999      REAL*8 RSUN(2)
1000      SAVE RSUN
1001      REAL*8 RRAY(2,6)
1002      SAVE RRAY
1003      DATA RSUN(1) / 0.441676 /
1004      DATA RSUN(2) / 0.558324 /
1005      DATA (RRAY(1,K),K=1,6) /
1006     S .428937E-01, .890743E+00,-.288555E+01,
1007     S .522744E+01,-.469173E+01, .161645E+01/
1008      DATA (RRAY(2,K),K=1,6) /
1009     S .697200E-02, .173297E-01,-.850903E-01,
1010     S .248261E+00,-.302031E+00, .129662E+00/
1011C     ------------------------------------------------------------------
1012C
1013C*         1.     FIRST SPECTRAL INTERVAL (0.25-0.68 MICRON)
1014C                 ----------------------- ------------------
1015C
1016 100  CONTINUE
1017C
1018C
1019C*         1.1    OPTICAL THICKNESS FOR RAYLEIGH SCATTERING
1020C                 -----------------------------------------
1021C
1022 110  CONTINUE
1023C
1024      DO 111 JL = 1, KDLON
1025      ZRAYL(JL) =  RRAY(KNU,1) + PRMU(JL) * (RRAY(KNU,2) + PRMU(JL)
1026     S          * (RRAY(KNU,3) + PRMU(JL) * (RRAY(KNU,4) + PRMU(JL)
1027     S          * (RRAY(KNU,5) + PRMU(JL) *  RRAY(KNU,6)       ))))
1028 111  CONTINUE
1029C
1030C
1031C     ------------------------------------------------------------------
1032C
1033C*         2.    CONTINUUM SCATTERING CALCULATIONS
1034C                ---------------------------------
1035C
1036 200  CONTINUE
1037C
1038C*         2.1   CLEAR-SKY FRACTION OF THE COLUMN
1039C                --------------------------------
1040
1041 210  CONTINUE
1042C
1043      CALL SWCLR ( KNU
1044     S  , PAER   , flag_aer, tauae, pizae, cgae
1045     S  , PALBP  , PDSIG , ZRAYL, PSEC
1046     S  , ZCGAZ  , ZPIZAZ, ZRAY1 , ZRAY2, ZREFZ, ZRJ0
1047     S  , ZRK0   , ZRMU0 , ZTAUAZ, ZTRA1, ZTRA2)
1048C
1049C
1050C*         2.2   CLOUDY FRACTION OF THE COLUMN
1051C                -----------------------------
1052C
1053 220  CONTINUE
1054C
1055      CALL SWR ( KNU
1056     S  , PALBD ,PCG   ,PCLD  ,PDSIG ,POMEGA,ZRAYL
1057     S  , PSEC  ,PTAU
1058     S  , ZCGAZ ,ZPIZAZ,ZRAY1 ,ZRAY2 ,ZREFZ ,ZRJ  ,ZRK,ZRMUE
1059     S  , ZTAUAZ,ZTRA1 ,ZTRA2)
1060C
1061C
1062C     ------------------------------------------------------------------
1063C
1064C*         3.    OZONE ABSORPTION
1065C                ----------------
1066C
1067 300  CONTINUE
1068C
1069      IIND(1)=1
1070      IIND(2)=3
1071      IIND(3)=1
1072      IIND(4)=3
1073C     
1074C
1075C*         3.1   DOWNWARD FLUXES
1076C                ---------------
1077C
1078 310  CONTINUE
1079C
1080      JAJ = 2
1081C
1082      DO 311 JL = 1, KDLON
1083      ZW(JL,1)=0.
1084      ZW(JL,2)=0.
1085      ZW(JL,3)=0.
1086      ZW(JL,4)=0.
1087      PFD(JL,KFLEV+1)=((1.-PCLEAR(JL))*ZRJ(JL,JAJ,KFLEV+1)
1088     S     + PCLEAR(JL) *ZRJ0(JL,JAJ,KFLEV+1)) * RSUN(KNU)
1089 311  CONTINUE
1090      DO 314 JK = 1 , KFLEV
1091      IKL = KFLEV+1-JK
1092      DO 312 JL = 1, KDLON
1093      ZW(JL,1)=ZW(JL,1)+PUD(JL,1,IKL)/ZRMUE(JL,IKL)
1094      ZW(JL,2)=ZW(JL,2)+POZ(JL,  IKL)/ZRMUE(JL,IKL)
1095      ZW(JL,3)=ZW(JL,3)+PUD(JL,1,IKL)/ZRMU0(JL,IKL)
1096      ZW(JL,4)=ZW(JL,4)+POZ(JL,  IKL)/ZRMU0(JL,IKL)
1097 312  CONTINUE
1098C
1099      CALL SWTT1(KNU, 4, IIND, ZW, ZR)
1100C
1101      DO 313 JL = 1, KDLON
1102      ZDIFF(JL) = ZR(JL,1)*ZR(JL,2)*ZRJ(JL,JAJ,IKL)
1103      ZDIRF(JL) = ZR(JL,3)*ZR(JL,4)*ZRJ0(JL,JAJ,IKL)
1104      PFD(JL,IKL) = ((1.-PCLEAR(JL)) * ZDIFF(JL)
1105     S                  +PCLEAR(JL)  * ZDIRF(JL)) * RSUN(KNU)
1106 313  CONTINUE
1107 314  CONTINUE
1108C
1109C
1110C*         3.2   UPWARD FLUXES
1111C                -------------
1112C
1113 320  CONTINUE
1114C
1115      DO 325 JL = 1, KDLON
1116      PFU(JL,1) = ((1.-PCLEAR(JL))*ZDIFF(JL)*PALBD(JL,KNU)
1117     S               + PCLEAR(JL) *ZDIRF(JL)*PALBP(JL,KNU))
1118     S          * RSUN(KNU)
1119 325  CONTINUE
1120C
1121      DO 328 JK = 2 , KFLEV+1
1122      IKM1=JK-1
1123      DO 326 JL = 1, KDLON
1124      ZW(JL,1)=ZW(JL,1)+PUD(JL,1,IKM1)*1.66
1125      ZW(JL,2)=ZW(JL,2)+POZ(JL,  IKM1)*1.66
1126      ZW(JL,3)=ZW(JL,3)+PUD(JL,1,IKM1)*1.66
1127      ZW(JL,4)=ZW(JL,4)+POZ(JL,  IKM1)*1.66
1128 326  CONTINUE
1129C
1130      CALL SWTT1(KNU, 4, IIND, ZW, ZR)
1131C
1132      DO 327 JL = 1, KDLON
1133      ZDIFF(JL) = ZR(JL,1)*ZR(JL,2)*ZRK(JL,JAJ,JK)
1134      ZDIRF(JL) = ZR(JL,3)*ZR(JL,4)*ZRK0(JL,JAJ,JK)
1135      PFU(JL,JK) = ((1.-PCLEAR(JL)) * ZDIFF(JL)
1136     S                 +PCLEAR(JL)  * ZDIRF(JL)) * RSUN(KNU)
1137 327  CONTINUE
1138 328  CONTINUE
1139C
1140C     ------------------------------------------------------------------
1141C
1142      RETURN
1143      END
1144      SUBROUTINE SW2S ( KNU
1145     S  ,  PAER  , flag_aer, tauae, pizae, cgae
1146     S  ,  PAKI, PALBD, PALBP, PCG   , PCLD, PCLEAR, PCLDSW
1147     S  ,  PDSIG ,POMEGA,POZ , PRMU , PSEC  , PTAU
1148     S  ,  PUD   ,PWV , PQS
1149     S  ,  PFDOWN,PFUP                                            )
1150      IMPLICIT none
1151#include "dimensions.h"
1152#include "dimphy.h"
1153#include "raddim.h"
1154#include "radepsi.h"
1155C
1156C     ------------------------------------------------------------------
1157C     PURPOSE.
1158C     --------
1159C
1160C          THIS ROUTINE COMPUTES THE SHORTWAVE RADIATION FLUXES IN THE
1161C     SECOND SPECTRAL INTERVAL FOLLOWING FOUQUART AND BONNEL (1980).
1162C
1163C     METHOD.
1164C     -------
1165C
1166C          1. COMPUTES REFLECTIVITY/TRANSMISSIVITY CORRESPONDING TO
1167C     CONTINUUM SCATTERING
1168C          2. COMPUTES REFLECTIVITY/TRANSMISSIVITY CORRESPONDING FOR
1169C     A GREY MOLECULAR ABSORPTION
1170C          3. LAPLACE TRANSFORM ON THE PREVIOUS TO GET EFFECTIVE AMOUNTS
1171C     OF ABSORBERS
1172C          4. APPLY H2O AND U.M.G. TRANSMISSION FUNCTIONS
1173C          5. MULTIPLY BY OZONE TRANSMISSION FUNCTION
1174C
1175C     REFERENCE.
1176C     ----------
1177C
1178C        SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
1179C        DOCUMENTATION, AND FOUQUART AND BONNEL (1980)
1180C
1181C     AUTHOR.
1182C     -------
1183C        JEAN-JACQUES MORCRETTE  *ECMWF*
1184C
1185C     MODIFICATIONS.
1186C     --------------
1187C        ORIGINAL : 89-07-14
1188C        94-11-15   J.-J. MORCRETTE    DIRECT/DIFFUSE ALBEDO
1189C     ------------------------------------------------------------------
1190C* ARGUMENTS:
1191C
1192      INTEGER KNU
1193c-OB
1194      real*8 flag_aer
1195      real*8 tauae(kdlon,kflev,2)
1196      real*8 pizae(kdlon,kflev,2)
1197      real*8 cgae(kdlon,kflev,2)
1198      REAL*8 PAER(KDLON,KFLEV,5)
1199      REAL*8 PAKI(KDLON,2)
1200      REAL*8 PALBD(KDLON,2)
1201      REAL*8 PALBP(KDLON,2)
1202      REAL*8 PCG(KDLON,2,KFLEV)
1203      REAL*8 PCLD(KDLON,KFLEV)
1204      REAL*8 PCLDSW(KDLON,KFLEV)
1205      REAL*8 PCLEAR(KDLON)
1206      REAL*8 PDSIG(KDLON,KFLEV)
1207      REAL*8 POMEGA(KDLON,2,KFLEV)
1208      REAL*8 POZ(KDLON,KFLEV)
1209      REAL*8 PQS(KDLON,KFLEV)
1210      REAL*8 PRMU(KDLON)
1211      REAL*8 PSEC(KDLON)
1212      REAL*8 PTAU(KDLON,2,KFLEV)
1213      REAL*8 PUD(KDLON,5,KFLEV+1)
1214      REAL*8 PWV(KDLON,KFLEV)
1215C
1216      REAL*8 PFDOWN(KDLON,KFLEV+1)
1217      REAL*8 PFUP(KDLON,KFLEV+1)
1218C
1219C* LOCAL VARIABLES:
1220C
1221      INTEGER IIND2(2), IIND3(3)
1222      REAL*8 ZCGAZ(KDLON,KFLEV)
1223      REAL*8 ZFD(KDLON,KFLEV+1)
1224      REAL*8 ZFU(KDLON,KFLEV+1)
1225      REAL*8 ZG(KDLON)
1226      REAL*8 ZGG(KDLON)
1227      REAL*8 ZPIZAZ(KDLON,KFLEV)
1228      REAL*8 ZRAYL(KDLON)
1229      REAL*8 ZRAY1(KDLON,KFLEV+1)
1230      REAL*8 ZRAY2(KDLON,KFLEV+1)
1231      REAL*8 ZREF(KDLON)
1232      REAL*8 ZREFZ(KDLON,2,KFLEV+1)
1233      REAL*8 ZRE1(KDLON)
1234      REAL*8 ZRE2(KDLON)
1235      REAL*8 ZRJ(KDLON,6,KFLEV+1)
1236      REAL*8 ZRJ0(KDLON,6,KFLEV+1)
1237      REAL*8 ZRK(KDLON,6,KFLEV+1)
1238      REAL*8 ZRK0(KDLON,6,KFLEV+1)
1239      REAL*8 ZRL(KDLON,8)
1240      REAL*8 ZRMUE(KDLON,KFLEV+1)
1241      REAL*8 ZRMU0(KDLON,KFLEV+1)
1242      REAL*8 ZRMUZ(KDLON)
1243      REAL*8 ZRNEB(KDLON)
1244      REAL*8 ZRUEF(KDLON,8)
1245      REAL*8 ZR1(KDLON)
1246      REAL*8 ZR2(KDLON,2)
1247      REAL*8 ZR3(KDLON,3)
1248      REAL*8 ZR4(KDLON)
1249      REAL*8 ZR21(KDLON)
1250      REAL*8 ZR22(KDLON)
1251      REAL*8 ZS(KDLON)
1252      REAL*8 ZTAUAZ(KDLON,KFLEV)
1253      REAL*8 ZTO1(KDLON)
1254      REAL*8 ZTR(KDLON,2,KFLEV+1)
1255      REAL*8 ZTRA1(KDLON,KFLEV+1)
1256      REAL*8 ZTRA2(KDLON,KFLEV+1)
1257      REAL*8 ZTR1(KDLON)
1258      REAL*8 ZTR2(KDLON)
1259      REAL*8 ZW(KDLON)   
1260      REAL*8 ZW1(KDLON)
1261      REAL*8 ZW2(KDLON,2)
1262      REAL*8 ZW3(KDLON,3)
1263      REAL*8 ZW4(KDLON)
1264      REAL*8 ZW5(KDLON)
1265C
1266      INTEGER jl, jk, k, jaj, ikm1, ikl, jn, jabs, jkm1
1267      INTEGER jref, jkl, jklp1, jajp, jkki, jkkp4, jn2j, iabs
1268      REAL*8 ZRMUM1, ZWH2O, ZCNEB, ZAA, ZBB, ZRKI, ZRE11
1269C
1270C* Prescribed Data:
1271C
1272      REAL*8 RSUN(2)
1273      SAVE RSUN
1274      REAL*8 RRAY(2,6)
1275      SAVE RRAY
1276      DATA RSUN(1) / 0.441676 /
1277      DATA RSUN(2) / 0.558324 /
1278      DATA (RRAY(1,K),K=1,6) /
1279     S .428937E-01, .890743E+00,-.288555E+01,
1280     S .522744E+01,-.469173E+01, .161645E+01/
1281      DATA (RRAY(2,K),K=1,6) /
1282     S .697200E-02, .173297E-01,-.850903E-01,
1283     S .248261E+00,-.302031E+00, .129662E+00/
1284C
1285C     ------------------------------------------------------------------
1286C
1287C*         1.     SECOND SPECTRAL INTERVAL (0.68-4.00 MICRON)
1288C                 -------------------------------------------
1289C
1290 100  CONTINUE
1291C
1292C
1293C*         1.1    OPTICAL THICKNESS FOR RAYLEIGH SCATTERING
1294C                 -----------------------------------------
1295C
1296 110  CONTINUE
1297C
1298      DO 111 JL = 1, KDLON
1299      ZRMUM1 = 1. - PRMU(JL)
1300      ZRAYL(JL) =  RRAY(KNU,1) + ZRMUM1   * (RRAY(KNU,2) + ZRMUM1
1301     S          * (RRAY(KNU,3) + ZRMUM1   * (RRAY(KNU,4) + ZRMUM1
1302     S          * (RRAY(KNU,5) + ZRMUM1   *  RRAY(KNU,6)     ))))
1303 111  CONTINUE
1304C
1305C
1306C     ------------------------------------------------------------------
1307C
1308C*         2.    CONTINUUM SCATTERING CALCULATIONS
1309C                ---------------------------------
1310C
1311 200  CONTINUE
1312C
1313C*         2.1   CLEAR-SKY FRACTION OF THE COLUMN
1314C                --------------------------------
1315
1316 210  CONTINUE
1317C
1318      CALL SWCLR ( KNU
1319     S  , PAER   , flag_aer, tauae, pizae, cgae
1320     S  , PALBP  , PDSIG , ZRAYL, PSEC
1321     S  , ZCGAZ  , ZPIZAZ, ZRAY1 , ZRAY2, ZREFZ, ZRJ0
1322     S  , ZRK0   , ZRMU0 , ZTAUAZ, ZTRA1, ZTRA2)
1323C
1324C
1325C*         2.2   CLOUDY FRACTION OF THE COLUMN
1326C                -----------------------------
1327C
1328 220  CONTINUE
1329C
1330      CALL SWR ( KNU
1331     S  , PALBD , PCG   , PCLD , PDSIG, POMEGA, ZRAYL
1332     S  , PSEC  , PTAU
1333     S  , ZCGAZ , ZPIZAZ, ZRAY1, ZRAY2, ZREFZ , ZRJ  , ZRK, ZRMUE
1334     S  , ZTAUAZ, ZTRA1 , ZTRA2)
1335C
1336C
1337C     ------------------------------------------------------------------
1338C
1339C*         3.    SCATTERING CALCULATIONS WITH GREY MOLECULAR ABSORPTION
1340C                ------------------------------------------------------
1341C
1342 300  CONTINUE
1343C
1344      JN = 2
1345C
1346      DO 361 JABS=1,2
1347C
1348C
1349C*         3.1  SURFACE CONDITIONS
1350C               ------------------
1351C
1352 310  CONTINUE
1353C
1354      DO 311 JL = 1, KDLON
1355      ZREFZ(JL,2,1) = PALBD(JL,KNU)
1356      ZREFZ(JL,1,1) = PALBD(JL,KNU)
1357 311  CONTINUE
1358C
1359C
1360C*         3.2  INTRODUCING CLOUD EFFECTS
1361C               -------------------------
1362C
1363 320  CONTINUE
1364C
1365      DO 324 JK = 2 , KFLEV+1
1366      JKM1 = JK - 1
1367      IKL=KFLEV+1-JKM1
1368      DO 322 JL = 1, KDLON
1369      ZRNEB(JL) = PCLD(JL,JKM1)
1370      IF (JABS.EQ.1 .AND. ZRNEB(JL).GT.2.*ZEELOG) THEN
1371         ZWH2O=MAX(PWV(JL,JKM1),ZEELOG)
1372         ZCNEB=MAX(ZEELOG,MIN(ZRNEB(JL),1.-ZEELOG))
1373         ZBB=PUD(JL,JABS,JKM1)*PQS(JL,JKM1)/ZWH2O
1374         ZAA=MAX((PUD(JL,JABS,JKM1)-ZCNEB*ZBB)/(1.-ZCNEB),ZEELOG)
1375      ELSE
1376         ZAA=PUD(JL,JABS,JKM1)
1377         ZBB=ZAA
1378      END IF
1379      ZRKI = PAKI(JL,JABS)
1380      ZS(JL) = EXP(-ZRKI * ZAA * 1.66)
1381      ZG(JL) = EXP(-ZRKI * ZAA / ZRMUE(JL,JK))
1382      ZTR1(JL) = 0.
1383      ZRE1(JL) = 0.
1384      ZTR2(JL) = 0.
1385      ZRE2(JL) = 0.
1386C
1387      ZW(JL)= POMEGA(JL,KNU,JKM1)
1388      ZTO1(JL) = PTAU(JL,KNU,JKM1) / ZW(JL)
1389     S               + ZTAUAZ(JL,JKM1) / ZPIZAZ(JL,JKM1)
1390     S               + ZBB * ZRKI
1391
1392      ZR21(JL) = PTAU(JL,KNU,JKM1) + ZTAUAZ(JL,JKM1)
1393      ZR22(JL) = PTAU(JL,KNU,JKM1) / ZR21(JL)
1394      ZGG(JL) = ZR22(JL) * PCG(JL,KNU,JKM1)
1395     S              + (1. - ZR22(JL)) * ZCGAZ(JL,JKM1)
1396      ZW(JL) = ZR21(JL) / ZTO1(JL)
1397      ZREF(JL) = ZREFZ(JL,1,JKM1)
1398      ZRMUZ(JL) = ZRMUE(JL,JK)
1399 322  CONTINUE
1400C
1401      CALL SWDE(ZGG, ZREF, ZRMUZ, ZTO1, ZW,
1402     S          ZRE1, ZRE2, ZTR1, ZTR2)
1403C
1404      DO 323 JL = 1, KDLON
1405C
1406      ZREFZ(JL,2,JK) = (1.-ZRNEB(JL)) * (ZRAY1(JL,JKM1)
1407     S               + ZREFZ(JL,2,JKM1) * ZTRA1(JL,JKM1)
1408     S               * ZTRA2(JL,JKM1) ) * ZG(JL) * ZS(JL)
1409     S               + ZRNEB(JL) * ZRE1(JL)
1410C
1411      ZTR(JL,2,JKM1)=ZRNEB(JL)*ZTR1(JL)
1412     S              + (ZTRA1(JL,JKM1)) * ZG(JL) * (1.-ZRNEB(JL))
1413C
1414      ZREFZ(JL,1,JK)=(1.-ZRNEB(JL))*(ZRAY1(JL,JKM1)
1415     S                  +ZREFZ(JL,1,JKM1)*ZTRA1(JL,JKM1)*ZTRA2(JL,JKM1)
1416     S             /(1.-ZRAY2(JL,JKM1)*ZREFZ(JL,1,JKM1)))*ZG(JL)*ZS(JL)
1417     S             + ZRNEB(JL) * ZRE2(JL)
1418C
1419      ZTR(JL,1,JKM1)= ZRNEB(JL) * ZTR2(JL)
1420     S              + (ZTRA1(JL,JKM1)/(1.-ZRAY2(JL,JKM1)
1421     S              * ZREFZ(JL,1,JKM1)))
1422     S              * ZG(JL) * (1. -ZRNEB(JL))
1423C
1424 323  CONTINUE
1425 324  CONTINUE
1426C
1427C*         3.3  REFLECT./TRANSMISSIVITY BETWEEN SURFACE AND LEVEL
1428C               -------------------------------------------------
1429C
1430 330  CONTINUE
1431C
1432      DO 351 JREF=1,2
1433C
1434      JN = JN + 1
1435C
1436      DO 331 JL = 1, KDLON
1437      ZRJ(JL,JN,KFLEV+1) = 1.
1438      ZRK(JL,JN,KFLEV+1) = ZREFZ(JL,JREF,KFLEV+1)
1439 331  CONTINUE
1440C
1441      DO 333 JK = 1 , KFLEV
1442      JKL = KFLEV+1 - JK
1443      JKLP1 = JKL + 1
1444      DO 332 JL = 1, KDLON
1445      ZRE11 = ZRJ(JL,JN,JKLP1) * ZTR(JL,JREF,JKL)
1446      ZRJ(JL,JN,JKL) = ZRE11
1447      ZRK(JL,JN,JKL) = ZRE11 * ZREFZ(JL,JREF,JKL)
1448 332  CONTINUE
1449 333  CONTINUE
1450 351  CONTINUE
1451 361  CONTINUE
1452C
1453C
1454C     ------------------------------------------------------------------
1455C
1456C*         4.    INVERT GREY AND CONTINUUM FLUXES
1457C                --------------------------------
1458C
1459 400  CONTINUE
1460C
1461C
1462C*         4.1   UPWARD (ZRK) AND DOWNWARD (ZRJ) PSEUDO-FLUXES
1463C                ---------------------------------------------
1464C
1465 410  CONTINUE
1466C
1467      DO 414 JK = 1 , KFLEV+1
1468      DO 413 JAJ = 1 , 5 , 2
1469      JAJP = JAJ + 1
1470      DO 412 JL = 1, KDLON
1471      ZRJ(JL,JAJ,JK)=        ZRJ(JL,JAJ,JK) - ZRJ(JL,JAJP,JK)
1472      ZRK(JL,JAJ,JK)=        ZRK(JL,JAJ,JK) - ZRK(JL,JAJP,JK)
1473      ZRJ(JL,JAJ,JK)= MAX( ZRJ(JL,JAJ,JK) , ZEELOG )
1474      ZRK(JL,JAJ,JK)= MAX( ZRK(JL,JAJ,JK) , ZEELOG )
1475 412  CONTINUE
1476 413  CONTINUE
1477 414  CONTINUE
1478C
1479      DO 417 JK = 1 , KFLEV+1
1480      DO 416 JAJ = 2 , 6 , 2
1481      DO 415 JL = 1, KDLON
1482      ZRJ(JL,JAJ,JK)= MAX( ZRJ(JL,JAJ,JK) , ZEELOG )
1483      ZRK(JL,JAJ,JK)= MAX( ZRK(JL,JAJ,JK) , ZEELOG )
1484 415  CONTINUE
1485 416  CONTINUE
1486 417  CONTINUE
1487C
1488C*         4.2    EFFECTIVE ABSORBER AMOUNTS BY INVERSE LAPLACE
1489C                 ---------------------------------------------
1490C
1491 420  CONTINUE
1492C
1493      DO 437 JK = 1 , KFLEV+1
1494      JKKI = 1
1495      DO 425 JAJ = 1 , 2
1496      IIND2(1)=JAJ
1497      IIND2(2)=JAJ
1498      DO 424 JN = 1 , 2
1499      JN2J = JN + 2 * JAJ
1500      JKKP4 = JKKI + 4
1501C
1502C*         4.2.1  EFFECTIVE ABSORBER AMOUNTS
1503C                 --------------------------
1504C
1505 4210 CONTINUE
1506C
1507      DO 4211 JL = 1, KDLON
1508      ZW2(JL,1) = LOG( ZRJ(JL,JN,JK) / ZRJ(JL,JN2J,JK))
1509     S                               / PAKI(JL,JAJ)
1510      ZW2(JL,2) = LOG( ZRK(JL,JN,JK) / ZRK(JL,JN2J,JK))
1511     S                               / PAKI(JL,JAJ)
1512 4211 CONTINUE
1513C
1514C*         4.2.2  TRANSMISSION FUNCTION
1515C                 ---------------------
1516C
1517 4220 CONTINUE
1518C
1519      CALL SWTT1(KNU, 2, IIND2, ZW2, ZR2)
1520C
1521      DO 4221 JL = 1, KDLON
1522      ZRL(JL,JKKI) = ZR2(JL,1)
1523      ZRUEF(JL,JKKI) = ZW2(JL,1)
1524      ZRL(JL,JKKP4) = ZR2(JL,2)
1525      ZRUEF(JL,JKKP4) = ZW2(JL,2)
1526 4221 CONTINUE
1527C
1528      JKKI=JKKI+1
1529 424  CONTINUE
1530 425  CONTINUE
1531C
1532C*         4.3    UPWARD AND DOWNWARD FLUXES WITH H2O AND UMG ABSORPTION
1533C                 ------------------------------------------------------
1534C
1535 430  CONTINUE
1536C
1537      DO 431 JL = 1, KDLON
1538      PFDOWN(JL,JK) = ZRJ(JL,1,JK) * ZRL(JL,1) * ZRL(JL,3)
1539     S              + ZRJ(JL,2,JK) * ZRL(JL,2) * ZRL(JL,4)
1540      PFUP(JL,JK)   = ZRK(JL,1,JK) * ZRL(JL,5) * ZRL(JL,7)
1541     S              + ZRK(JL,2,JK) * ZRL(JL,6) * ZRL(JL,8)
1542 431  CONTINUE
1543 437  CONTINUE
1544C
1545C
1546C     ------------------------------------------------------------------
1547C
1548C*         5.    MOLECULAR ABSORPTION ON CLEAR-SKY FLUXES
1549C                ----------------------------------------
1550C
1551 500  CONTINUE
1552C
1553C
1554C*         5.1   DOWNWARD FLUXES
1555C                ---------------
1556C
1557 510  CONTINUE
1558C
1559      JAJ = 2
1560      IIND3(1)=1
1561      IIND3(2)=2
1562      IIND3(3)=3
1563C     
1564      DO 511 JL = 1, KDLON
1565      ZW3(JL,1)=0.
1566      ZW3(JL,2)=0.
1567      ZW3(JL,3)=0.
1568      ZW4(JL)  =0.
1569      ZW5(JL)  =0.
1570      ZR4(JL)  =1.
1571      ZFD(JL,KFLEV+1)= ZRJ0(JL,JAJ,KFLEV+1)
1572 511  CONTINUE
1573      DO 514 JK = 1 , KFLEV
1574      IKL = KFLEV+1-JK
1575      DO 512 JL = 1, KDLON
1576      ZW3(JL,1)=ZW3(JL,1)+PUD(JL,1,IKL)/ZRMU0(JL,IKL)
1577      ZW3(JL,2)=ZW3(JL,2)+PUD(JL,2,IKL)/ZRMU0(JL,IKL)
1578      ZW3(JL,3)=ZW3(JL,3)+POZ(JL,  IKL)/ZRMU0(JL,IKL)
1579      ZW4(JL)  =ZW4(JL)  +PUD(JL,4,IKL)/ZRMU0(JL,IKL)
1580      ZW5(JL)  =ZW5(JL)  +PUD(JL,5,IKL)/ZRMU0(JL,IKL)
1581 512  CONTINUE
1582C
1583      CALL SWTT1(KNU, 3, IIND3, ZW3, ZR3)
1584C
1585      DO 513 JL = 1, KDLON
1586C     ZR4(JL) = EXP(-RSWCE*ZW4(JL)-RSWCP*ZW5(JL))
1587      ZFD(JL,IKL) = ZR3(JL,1)*ZR3(JL,2)*ZR3(JL,3)*ZR4(JL)
1588     S            * ZRJ0(JL,JAJ,IKL)
1589 513  CONTINUE
1590 514  CONTINUE
1591C
1592C
1593C*         5.2   UPWARD FLUXES
1594C                -------------
1595C
1596 520  CONTINUE
1597C
1598      DO 525 JL = 1, KDLON
1599      ZFU(JL,1) = ZFD(JL,1)*PALBP(JL,KNU)
1600 525  CONTINUE
1601C
1602      DO 528 JK = 2 , KFLEV+1
1603      IKM1=JK-1
1604      DO 526 JL = 1, KDLON
1605      ZW3(JL,1)=ZW3(JL,1)+PUD(JL,1,IKM1)*1.66
1606      ZW3(JL,2)=ZW3(JL,2)+PUD(JL,2,IKM1)*1.66
1607      ZW3(JL,3)=ZW3(JL,3)+POZ(JL,  IKM1)*1.66
1608      ZW4(JL)  =ZW4(JL)  +PUD(JL,4,IKM1)*1.66
1609      ZW5(JL)  =ZW5(JL)  +PUD(JL,5,IKM1)*1.66
1610 526  CONTINUE
1611C
1612      CALL SWTT1(KNU, 3, IIND3, ZW3, ZR3)
1613C
1614      DO 527 JL = 1, KDLON
1615C     ZR4(JL) = EXP(-RSWCE*ZW4(JL)-RSWCP*ZW5(JL))
1616      ZFU(JL,JK) = ZR3(JL,1)*ZR3(JL,2)*ZR3(JL,3)*ZR4(JL)
1617     S           * ZRK0(JL,JAJ,JK)
1618 527  CONTINUE
1619 528  CONTINUE
1620C
1621C
1622C     ------------------------------------------------------------------
1623C
1624C*         6.     INTRODUCTION OF OZONE AND H2O CONTINUUM ABSORPTION
1625C                 --------------------------------------------------
1626C
1627 600  CONTINUE
1628      IABS=3
1629C
1630C*         6.1    DOWNWARD FLUXES
1631C                 ---------------
1632C
1633 610  CONTINUE
1634      DO 611 JL = 1, KDLON
1635      ZW1(JL)=0.
1636      ZW4(JL)=0.
1637      ZW5(JL)=0.
1638      ZR1(JL)=0.
1639      PFDOWN(JL,KFLEV+1) = ((1.-PCLEAR(JL))*PFDOWN(JL,KFLEV+1)
1640     S                   + PCLEAR(JL) * ZFD(JL,KFLEV+1)) * RSUN(KNU)
1641 611  CONTINUE
1642C
1643      DO 614 JK = 1 , KFLEV
1644      IKL=KFLEV+1-JK
1645      DO 612 JL = 1, KDLON
1646      ZW1(JL) = ZW1(JL)+POZ(JL,  IKL)/ZRMUE(JL,IKL)
1647      ZW4(JL) = ZW4(JL)+PUD(JL,4,IKL)/ZRMUE(JL,IKL)
1648      ZW5(JL) = ZW5(JL)+PUD(JL,5,IKL)/ZRMUE(JL,IKL)
1649C     ZR4(JL) = EXP(-RSWCE*ZW4(JL)-RSWCP*ZW5(JL))
1650 612  CONTINUE
1651C
1652      CALL SWTT(KNU, IABS, ZW1, ZR1)
1653C
1654      DO 613 JL = 1, KDLON
1655      PFDOWN(JL,IKL) = ((1.-PCLEAR(JL))*ZR1(JL)*ZR4(JL)*PFDOWN(JL,IKL)
1656     S                     +PCLEAR(JL)*ZFD(JL,IKL)) * RSUN(KNU)
1657 613  CONTINUE
1658 614  CONTINUE
1659C
1660C
1661C*         6.2    UPWARD FLUXES
1662C                 -------------
1663C
1664 620  CONTINUE
1665      DO 621 JL = 1, KDLON
1666      PFUP(JL,1) = ((1.-PCLEAR(JL))*ZR1(JL)*ZR4(JL) * PFUP(JL,1)
1667     S                 +PCLEAR(JL)*ZFU(JL,1)) * RSUN(KNU)
1668 621  CONTINUE
1669C
1670      DO 624 JK = 2 , KFLEV+1
1671      IKM1=JK-1
1672      DO 622 JL = 1, KDLON
1673      ZW1(JL) = ZW1(JL)+POZ(JL  ,IKM1)*1.66
1674      ZW4(JL) = ZW4(JL)+PUD(JL,4,IKM1)*1.66
1675      ZW5(JL) = ZW5(JL)+PUD(JL,5,IKM1)*1.66
1676C     ZR4(JL) = EXP(-RSWCE*ZW4(JL)-RSWCP*ZW5(JL))
1677 622  CONTINUE
1678C
1679      CALL SWTT(KNU, IABS, ZW1, ZR1)
1680C
1681      DO 623 JL = 1, KDLON
1682      PFUP(JL,JK) = ((1.-PCLEAR(JL))*ZR1(JL)*ZR4(JL) * PFUP(JL,JK)
1683     S                 +PCLEAR(JL)*ZFU(JL,JK)) * RSUN(KNU)
1684 623  CONTINUE
1685 624  CONTINUE
1686C
1687C     ------------------------------------------------------------------
1688C
1689      RETURN
1690      END
1691      SUBROUTINE SWCLR  ( KNU
1692     S  , PAER  , flag_aer, tauae, pizae, cgae
1693     S  , PALBP , PDSIG , PRAYL , PSEC
1694     S  , PCGAZ , PPIZAZ, PRAY1 , PRAY2 , PREFZ , PRJ 
1695     S  , PRK   , PRMU0 , PTAUAZ, PTRA1 , PTRA2                   )
1696      IMPLICIT none
1697#include "dimensions.h"
1698#include "dimphy.h"
1699#include "raddim.h"
1700#include "radepsi.h"
1701#include "radopt.h"
1702C
1703C     ------------------------------------------------------------------
1704C     PURPOSE.
1705C     --------
1706C           COMPUTES THE REFLECTIVITY AND TRANSMISSIVITY IN CASE OF
1707C     CLEAR-SKY COLUMN
1708C
1709C     REFERENCE.
1710C     ----------
1711C
1712C        SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
1713C        DOCUMENTATION, AND FOUQUART AND BONNEL (1980)
1714C
1715C     AUTHOR.
1716C     -------
1717C        JEAN-JACQUES MORCRETTE  *ECMWF*
1718C
1719C     MODIFICATIONS.
1720C     --------------
1721C        ORIGINAL : 94-11-15
1722C     ------------------------------------------------------------------
1723C* ARGUMENTS:
1724C
1725      INTEGER KNU
1726c-OB
1727      real*8 flag_aer
1728      real*8 tauae(kdlon,kflev,2)
1729      real*8 pizae(kdlon,kflev,2)
1730      real*8 cgae(kdlon,kflev,2)
1731      REAL*8 PAER(KDLON,KFLEV,5)
1732      REAL*8 PALBP(KDLON,2)
1733      REAL*8 PDSIG(KDLON,KFLEV)
1734      REAL*8 PRAYL(KDLON)
1735      REAL*8 PSEC(KDLON)
1736C
1737      REAL*8 PCGAZ(KDLON,KFLEV)     
1738      REAL*8 PPIZAZ(KDLON,KFLEV)
1739      REAL*8 PRAY1(KDLON,KFLEV+1)
1740      REAL*8 PRAY2(KDLON,KFLEV+1)
1741      REAL*8 PREFZ(KDLON,2,KFLEV+1)
1742      REAL*8 PRJ(KDLON,6,KFLEV+1)
1743      REAL*8 PRK(KDLON,6,KFLEV+1)
1744      REAL*8 PRMU0(KDLON,KFLEV+1)
1745      REAL*8 PTAUAZ(KDLON,KFLEV)
1746      REAL*8 PTRA1(KDLON,KFLEV+1)
1747      REAL*8 PTRA2(KDLON,KFLEV+1)
1748C
1749C* LOCAL VARIABLES:
1750C
1751      REAL*8 ZC0I(KDLON,KFLEV+1)       
1752      REAL*8 ZCLE0(KDLON,KFLEV)
1753      REAL*8 ZCLEAR(KDLON)
1754      REAL*8 ZR21(KDLON)
1755      REAL*8 ZR23(KDLON)
1756      REAL*8 ZSS0(KDLON)
1757      REAL*8 ZSCAT(KDLON)
1758      REAL*8 ZTR(KDLON,2,KFLEV+1)
1759C
1760      INTEGER jl, jk, ja, jae, jkl, jklp1, jaj, jkm1, in
1761      REAL*8 ZTRAY, ZGAR, ZRATIO, ZFF, ZFACOA, ZCORAE
1762      REAL*8 ZMUE, ZGAP, ZWW, ZTO, ZDEN, ZMU1, ZDEN1
1763      REAL*8 ZBMU0, ZBMU1, ZRE11
1764C
1765C* Prescribed Data for Aerosols:
1766C
1767      REAL*8 TAUA(2,5), RPIZA(2,5), RCGA(2,5)
1768      SAVE TAUA, RPIZA, RCGA
1769      DATA ((TAUA(IN,JA),JA=1,5),IN=1,2) /
1770     S .730719, .912819, .725059, .745405, .682188 ,
1771     S .730719, .912819, .725059, .745405, .682188 /
1772      DATA ((RPIZA(IN,JA),JA=1,5),IN=1,2) /
1773     S .872212, .982545, .623143, .944887, .997975 ,
1774     S .872212, .982545, .623143, .944887, .997975 /
1775      DATA ((RCGA (IN,JA),JA=1,5),IN=1,2) /
1776     S .647596, .739002, .580845, .662657, .624246 ,
1777     S .647596, .739002, .580845, .662657, .624246 /
1778C     ------------------------------------------------------------------
1779C
1780C*         1.    OPTICAL PARAMETERS FOR AEROSOLS AND RAYLEIGH
1781C                --------------------------------------------
1782C
1783 100  CONTINUE
1784C
1785      DO 103 JK = 1 , KFLEV+1
1786      DO 102 JA = 1 , 6
1787      DO 101 JL = 1, KDLON
1788      PRJ(JL,JA,JK) = 0.
1789      PRK(JL,JA,JK) = 0.
1790 101  CONTINUE
1791 102  CONTINUE
1792 103  CONTINUE
1793C
1794      DO 108 JK = 1 , KFLEV
1795c-OB
1796c      DO 104 JL = 1, KDLON
1797c      PCGAZ(JL,JK) = 0.
1798c      PPIZAZ(JL,JK) =  0.
1799c      PTAUAZ(JL,JK) = 0.
1800c 104  CONTINUE
1801c-OB
1802c      DO 106 JAE=1,5
1803c      DO 105 JL = 1, KDLON
1804c      PTAUAZ(JL,JK)=PTAUAZ(JL,JK)
1805c     S        +PAER(JL,JK,JAE)*TAUA(KNU,JAE)
1806c      PPIZAZ(JL,JK)=PPIZAZ(JL,JK)+PAER(JL,JK,JAE)
1807c     S        * TAUA(KNU,JAE)*RPIZA(KNU,JAE)
1808c      PCGAZ(JL,JK) =  PCGAZ(JL,JK) +PAER(JL,JK,JAE)
1809c     S        * TAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE)
1810c 105  CONTINUE
1811c 106  CONTINUE
1812c-OB
1813      DO 105 JL = 1, KDLON
1814      PTAUAZ(JL,JK)=flag_aer * tauae(JL,JK,KNU)
1815      PPIZAZ(JL,JK)=flag_aer * pizae(JL,JK,KNU)
1816      PCGAZ (JL,JK)=flag_aer * cgae(JL,JK,KNU)
1817 105  CONTINUE
1818C
1819      IF (flag_aer.GT.0) THEN
1820c-OB
1821      DO 107 JL = 1, KDLON
1822c         PCGAZ(JL,JK)=PCGAZ(JL,JK)/PPIZAZ(JL,JK)
1823c         PPIZAZ(JL,JK)=PPIZAZ(JL,JK)/PTAUAZ(JL,JK)
1824         ZTRAY = PRAYL(JL) * PDSIG(JL,JK)
1825         ZRATIO = ZTRAY / (ZTRAY + PTAUAZ(JL,JK))
1826         ZGAR = PCGAZ(JL,JK)
1827         ZFF = ZGAR * ZGAR
1828         PTAUAZ(JL,JK)=ZTRAY+PTAUAZ(JL,JK)*(1.-PPIZAZ(JL,JK)*ZFF)
1829         PCGAZ(JL,JK) = ZGAR * (1. - ZRATIO) / (1. + ZGAR)
1830         PPIZAZ(JL,JK) =ZRATIO+(1.-ZRATIO)*PPIZAZ(JL,JK)*(1.-ZFF)
1831     S                       / (1. - PPIZAZ(JL,JK) * ZFF)
1832 107  CONTINUE
1833      ELSE
1834      DO JL = 1, KDLON
1835         ZTRAY = PRAYL(JL) * PDSIG(JL,JK)
1836         PTAUAZ(JL,JK) = ZTRAY
1837         PCGAZ(JL,JK) = 0.
1838         PPIZAZ(JL,JK) = 1.-REPSCT
1839      END DO
1840      END IF   ! check flag_aer
1841c     107  CONTINUE
1842c      PRINT 9107,JK,((PAER(JL,JK,JAE),JAE=1,5)
1843c     $ ,PTAUAZ(JL,JK),PPIZAZ(JL,JK),PCGAZ(JL,JK),JL=1,KDLON)
1844c 9107 FORMAT(1X,'SWCLR_107',I3,8E12.5)
1845C
1846 108  CONTINUE
1847C
1848C     ------------------------------------------------------------------
1849C
1850C*         2.    TOTAL EFFECTIVE CLOUDINESS ABOVE A GIVEN LEVEL
1851C                ----------------------------------------------
1852C
1853 200  CONTINUE
1854C
1855      DO 201 JL = 1, KDLON
1856      ZR23(JL) = 0.
1857      ZC0I(JL,KFLEV+1) = 0.
1858      ZCLEAR(JL) = 1.
1859      ZSCAT(JL) = 0.
1860 201  CONTINUE
1861C
1862      JK = 1
1863      JKL = KFLEV+1 - JK
1864      JKLP1 = JKL + 1
1865      DO 202 JL = 1, KDLON
1866      ZFACOA = 1. - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL)
1867      ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL)
1868      ZR21(JL) = EXP(-ZCORAE   )
1869      ZSS0(JL) = 1.-ZR21(JL)
1870      ZCLE0(JL,JKL) = ZSS0(JL)
1871C
1872      IF (NOVLP.EQ.1) THEN
1873c* maximum-random
1874         ZCLEAR(JL) = ZCLEAR(JL)
1875     S                  *(1.0-MAX(ZSS0(JL),ZSCAT(JL)))
1876     S                  /(1.0-MIN(ZSCAT(JL),1.-ZEPSEC))
1877         ZC0I(JL,JKL) = 1.0 - ZCLEAR(JL)
1878         ZSCAT(JL) = ZSS0(JL)
1879      ELSE IF (NOVLP.EQ.2) THEN
1880C* maximum
1881         ZSCAT(JL) = MAX( ZSS0(JL) , ZSCAT(JL) )
1882         ZC0I(JL,JKL) = ZSCAT(JL)
1883      ELSE IF (NOVLP.EQ.3) THEN
1884c* random
1885         ZCLEAR(JL)=ZCLEAR(JL)*(1.0-ZSS0(JL))
1886         ZSCAT(JL) = 1.0 - ZCLEAR(JL)
1887         ZC0I(JL,JKL) = ZSCAT(JL)
1888      END IF
1889 202  CONTINUE
1890C
1891      DO 205 JK = 2 , KFLEV
1892      JKL = KFLEV+1 - JK
1893      JKLP1 = JKL + 1
1894      DO 204 JL = 1, KDLON
1895      ZFACOA = 1. - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL)
1896      ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL)
1897      ZR21(JL) = EXP(-ZCORAE   )
1898      ZSS0(JL) = 1.-ZR21(JL)
1899      ZCLE0(JL,JKL) = ZSS0(JL)
1900c     
1901      IF (NOVLP.EQ.1) THEN
1902c* maximum-random
1903         ZCLEAR(JL) = ZCLEAR(JL)
1904     S                  *(1.0-MAX(ZSS0(JL),ZSCAT(JL)))
1905     S                  /(1.0-MIN(ZSCAT(JL),1.-ZEPSEC))
1906         ZC0I(JL,JKL) = 1.0 - ZCLEAR(JL)
1907         ZSCAT(JL) = ZSS0(JL)
1908      ELSE IF (NOVLP.EQ.2) THEN
1909C* maximum
1910         ZSCAT(JL) = MAX( ZSS0(JL) , ZSCAT(JL) )
1911         ZC0I(JL,JKL) = ZSCAT(JL)
1912      ELSE IF (NOVLP.EQ.3) THEN
1913c* random
1914         ZCLEAR(JL)=ZCLEAR(JL)*(1.0-ZSS0(JL))
1915         ZSCAT(JL) = 1.0 - ZCLEAR(JL)
1916         ZC0I(JL,JKL) = ZSCAT(JL)
1917      END IF                 
1918 204  CONTINUE
1919 205  CONTINUE
1920C
1921C     ------------------------------------------------------------------
1922C
1923C*         3.    REFLECTIVITY/TRANSMISSIVITY FOR PURE SCATTERING
1924C                -----------------------------------------------
1925C
1926 300  CONTINUE
1927C
1928      DO 301 JL = 1, KDLON
1929      PRAY1(JL,KFLEV+1) = 0.
1930      PRAY2(JL,KFLEV+1) = 0.
1931      PREFZ(JL,2,1) = PALBP(JL,KNU)
1932      PREFZ(JL,1,1) = PALBP(JL,KNU)
1933      PTRA1(JL,KFLEV+1) = 1.
1934      PTRA2(JL,KFLEV+1) = 1.
1935 301  CONTINUE
1936C
1937      DO 346 JK = 2 , KFLEV+1
1938      JKM1 = JK-1
1939      DO 342 JL = 1, KDLON
1940C
1941C
1942C     ------------------------------------------------------------------
1943C
1944C*         3.1  EQUIVALENT ZENITH ANGLE
1945C               -----------------------
1946C
1947 310  CONTINUE
1948C
1949      ZMUE = (1.-ZC0I(JL,JK)) * PSEC(JL)
1950     S            + ZC0I(JL,JK) * 1.66
1951      PRMU0(JL,JK) = 1./ZMUE
1952C
1953C
1954C     ------------------------------------------------------------------
1955C
1956C*         3.2  REFLECT./TRANSMISSIVITY DUE TO RAYLEIGH AND AEROSOLS
1957C               ----------------------------------------------------
1958C
1959 320  CONTINUE
1960C
1961      ZGAP = PCGAZ(JL,JKM1)
1962      ZBMU0 = 0.5 - 0.75 * ZGAP / ZMUE
1963      ZWW = PPIZAZ(JL,JKM1)
1964      ZTO = PTAUAZ(JL,JKM1)
1965      ZDEN = 1. + (1. - ZWW + ZBMU0 * ZWW) * ZTO * ZMUE
1966     S       + (1-ZWW) * (1. - ZWW +2.*ZBMU0*ZWW)*ZTO*ZTO*ZMUE*ZMUE
1967      PRAY1(JL,JKM1) = ZBMU0 * ZWW * ZTO * ZMUE / ZDEN
1968      PTRA1(JL,JKM1) = 1. / ZDEN
1969C
1970      ZMU1 = 0.5
1971      ZBMU1 = 0.5 - 0.75 * ZGAP * ZMU1
1972      ZDEN1= 1. + (1. - ZWW + ZBMU1 * ZWW) * ZTO / ZMU1
1973     S       + (1-ZWW) * (1. - ZWW +2.*ZBMU1*ZWW)*ZTO*ZTO/ZMU1/ZMU1
1974      PRAY2(JL,JKM1) = ZBMU1 * ZWW * ZTO / ZMU1 / ZDEN1
1975      PTRA2(JL,JKM1) = 1. / ZDEN1
1976C
1977C
1978C
1979      PREFZ(JL,1,JK) = (PRAY1(JL,JKM1)
1980     S               + PREFZ(JL,1,JKM1) * PTRA1(JL,JKM1)
1981     S               * PTRA2(JL,JKM1)
1982     S               / (1.-PRAY2(JL,JKM1)*PREFZ(JL,1,JKM1)))
1983C
1984      ZTR(JL,1,JKM1) = (PTRA1(JL,JKM1)
1985     S               / (1.-PRAY2(JL,JKM1)*PREFZ(JL,1,JKM1)))
1986C
1987      PREFZ(JL,2,JK) = (PRAY1(JL,JKM1)
1988     S               + PREFZ(JL,2,JKM1) * PTRA1(JL,JKM1)
1989     S               * PTRA2(JL,JKM1) )
1990C
1991      ZTR(JL,2,JKM1) = PTRA1(JL,JKM1)
1992C
1993 342  CONTINUE
1994 346  CONTINUE
1995      DO 347 JL = 1, KDLON
1996      ZMUE = (1.-ZC0I(JL,1))*PSEC(JL)+ZC0I(JL,1)*1.66
1997      PRMU0(JL,1)=1./ZMUE
1998 347  CONTINUE
1999C
2000C
2001C     ------------------------------------------------------------------
2002C
2003C*         3.5    REFLECT./TRANSMISSIVITY BETWEEN SURFACE AND LEVEL
2004C                 -------------------------------------------------
2005C
2006 350  CONTINUE
2007C
2008      IF (KNU.EQ.1) THEN
2009      JAJ = 2
2010      DO 351 JL = 1, KDLON
2011      PRJ(JL,JAJ,KFLEV+1) = 1.
2012      PRK(JL,JAJ,KFLEV+1) = PREFZ(JL, 1,KFLEV+1)
2013 351  CONTINUE
2014C
2015      DO 353 JK = 1 , KFLEV
2016      JKL = KFLEV+1 - JK
2017      JKLP1 = JKL + 1
2018      DO 352 JL = 1, KDLON
2019      ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL,  1,JKL)
2020      PRJ(JL,JAJ,JKL) = ZRE11
2021      PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL,  1,JKL)
2022 352  CONTINUE
2023 353  CONTINUE
2024 354  CONTINUE
2025C
2026      ELSE
2027C
2028      DO 358 JAJ = 1 , 2
2029      DO 355 JL = 1, KDLON
2030      PRJ(JL,JAJ,KFLEV+1) = 1.
2031      PRK(JL,JAJ,KFLEV+1) = PREFZ(JL,JAJ,KFLEV+1)
2032 355  CONTINUE
2033C
2034      DO 357 JK = 1 , KFLEV
2035      JKL = KFLEV+1 - JK
2036      JKLP1 = JKL + 1
2037      DO 356 JL = 1, KDLON
2038      ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL,JAJ,JKL)
2039      PRJ(JL,JAJ,JKL) = ZRE11
2040      PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL,JAJ,JKL)
2041 356  CONTINUE
2042 357  CONTINUE
2043 358  CONTINUE
2044C
2045      END IF
2046C
2047C     ------------------------------------------------------------------
2048C
2049      RETURN
2050      END
2051      SUBROUTINE SWR ( KNU
2052     S  , PALBD , PCG   , PCLD , PDSIG, POMEGA, PRAYL
2053     S  , PSEC  , PTAU
2054     S  , PCGAZ , PPIZAZ, PRAY1, PRAY2, PREFZ , PRJ  , PRK , PRMUE
2055     S  , PTAUAZ, PTRA1 , PTRA2 )
2056      IMPLICIT none
2057#include "dimensions.h"
2058#include "dimphy.h"
2059#include "raddim.h"
2060#include "radepsi.h"
2061#include "radopt.h"
2062C
2063C     ------------------------------------------------------------------
2064C     PURPOSE.
2065C     --------
2066C           COMPUTES THE REFLECTIVITY AND TRANSMISSIVITY IN CASE OF
2067C     CONTINUUM SCATTERING
2068C
2069C     METHOD.
2070C     -------
2071C
2072C          1. COMPUTES CONTINUUM FLUXES CORRESPONDING TO AEROSOL
2073C     OR/AND RAYLEIGH SCATTERING (NO MOLECULAR GAS ABSORPTION)
2074C
2075C     REFERENCE.
2076C     ----------
2077C
2078C        SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
2079C        DOCUMENTATION, AND FOUQUART AND BONNEL (1980)
2080C
2081C     AUTHOR.
2082C     -------
2083C        JEAN-JACQUES MORCRETTE  *ECMWF*
2084C
2085C     MODIFICATIONS.
2086C     --------------
2087C        ORIGINAL : 89-07-14
2088C     ------------------------------------------------------------------
2089C* ARGUMENTS:
2090C
2091      INTEGER KNU
2092      REAL*8 PALBD(KDLON,2)
2093      REAL*8 PCG(KDLON,2,KFLEV)
2094      REAL*8 PCLD(KDLON,KFLEV)
2095      REAL*8 PDSIG(KDLON,KFLEV)
2096      REAL*8 POMEGA(KDLON,2,KFLEV)
2097      REAL*8 PRAYL(KDLON)
2098      REAL*8 PSEC(KDLON)
2099      REAL*8 PTAU(KDLON,2,KFLEV)
2100C
2101      REAL*8 PRAY1(KDLON,KFLEV+1)
2102      REAL*8 PRAY2(KDLON,KFLEV+1)
2103      REAL*8 PREFZ(KDLON,2,KFLEV+1)
2104      REAL*8 PRJ(KDLON,6,KFLEV+1)
2105      REAL*8 PRK(KDLON,6,KFLEV+1)
2106      REAL*8 PRMUE(KDLON,KFLEV+1)
2107      REAL*8 PCGAZ(KDLON,KFLEV)
2108      REAL*8 PPIZAZ(KDLON,KFLEV)
2109      REAL*8 PTAUAZ(KDLON,KFLEV)
2110      REAL*8 PTRA1(KDLON,KFLEV+1)
2111      REAL*8 PTRA2(KDLON,KFLEV+1)
2112C
2113C* LOCAL VARIABLES:
2114C
2115      REAL*8 ZC1I(KDLON,KFLEV+1)
2116      REAL*8 ZCLEQ(KDLON,KFLEV)
2117      REAL*8 ZCLEAR(KDLON)
2118      REAL*8 ZCLOUD(KDLON)
2119      REAL*8 ZGG(KDLON)
2120      REAL*8 ZREF(KDLON)
2121      REAL*8 ZRE1(KDLON)
2122      REAL*8 ZRE2(KDLON)
2123      REAL*8 ZRMUZ(KDLON)
2124      REAL*8 ZRNEB(KDLON)
2125      REAL*8 ZR21(KDLON)
2126      REAL*8 ZR22(KDLON)
2127      REAL*8 ZR23(KDLON)
2128      REAL*8 ZSS1(KDLON)
2129      REAL*8 ZTO1(KDLON)
2130      REAL*8 ZTR(KDLON,2,KFLEV+1)
2131      REAL*8 ZTR1(KDLON)
2132      REAL*8 ZTR2(KDLON)
2133      REAL*8 ZW(KDLON)
2134C
2135      INTEGER jk, jl, ja, jkl, jklp1, jkm1, jaj
2136      REAL*8 ZFACOA, ZFACOC, ZCORAE, ZCORCD
2137      REAL*8 ZMUE, ZGAP, ZWW, ZTO, ZDEN, ZDEN1
2138      REAL*8 ZMU1, ZRE11, ZBMU0, ZBMU1
2139C
2140C     ------------------------------------------------------------------
2141C
2142C*         1.    INITIALIZATION
2143C                --------------
2144C
2145 100  CONTINUE
2146C
2147      DO 103 JK = 1 , KFLEV+1
2148      DO 102 JA = 1 , 6
2149      DO 101 JL = 1, KDLON
2150      PRJ(JL,JA,JK) = 0.
2151      PRK(JL,JA,JK) = 0.
2152 101  CONTINUE
2153 102  CONTINUE
2154 103  CONTINUE
2155C
2156C
2157C     ------------------------------------------------------------------
2158C
2159C*         2.    TOTAL EFFECTIVE CLOUDINESS ABOVE A GIVEN LEVEL
2160C                ----------------------------------------------
2161C
2162 200  CONTINUE
2163C
2164      DO 201 JL = 1, KDLON
2165      ZR23(JL) = 0.
2166      ZC1I(JL,KFLEV+1) = 0.
2167      ZCLEAR(JL) = 1.
2168      ZCLOUD(JL) = 0.
2169 201  CONTINUE
2170C
2171      JK = 1
2172      JKL = KFLEV+1 - JK
2173      JKLP1 = JKL + 1
2174      DO 202 JL = 1, KDLON
2175      ZFACOA = 1. - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL)
2176      ZFACOC = 1. - POMEGA(JL,KNU,JKL) * PCG(JL,KNU,JKL)
2177     S                                 * PCG(JL,KNU,JKL)
2178      ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL)
2179      ZCORCD = ZFACOC * PTAU(JL,KNU,JKL) * PSEC(JL)
2180      ZR21(JL) = EXP(-ZCORAE   )
2181      ZR22(JL) = EXP(-ZCORCD   )
2182      ZSS1(JL) = PCLD(JL,JKL)*(1.0-ZR21(JL)*ZR22(JL))
2183     S               + (1.0-PCLD(JL,JKL))*(1.0-ZR21(JL))
2184      ZCLEQ(JL,JKL) = ZSS1(JL)
2185C
2186      IF (NOVLP.EQ.1) THEN
2187c* maximum-random
2188         ZCLEAR(JL) = ZCLEAR(JL)
2189     S                  *(1.0-MAX(ZSS1(JL),ZCLOUD(JL)))
2190     S                  /(1.0-MIN(ZCLOUD(JL),1.-ZEPSEC))
2191         ZC1I(JL,JKL) = 1.0 - ZCLEAR(JL)
2192         ZCLOUD(JL) = ZSS1(JL)
2193      ELSE IF (NOVLP.EQ.2) THEN
2194C* maximum
2195         ZCLOUD(JL) = MAX( ZSS1(JL) , ZCLOUD(JL) )
2196         ZC1I(JL,JKL) = ZCLOUD(JL)
2197      ELSE IF (NOVLP.EQ.3) THEN
2198c* random
2199         ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - ZSS1(JL))
2200         ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
2201         ZC1I(JL,JKL) = ZCLOUD(JL)
2202      END IF
2203 202  CONTINUE
2204C
2205      DO 205 JK = 2 , KFLEV
2206      JKL = KFLEV+1 - JK
2207      JKLP1 = JKL + 1
2208      DO 204 JL = 1, KDLON
2209      ZFACOA = 1. - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL)
2210      ZFACOC = 1. - POMEGA(JL,KNU,JKL) * PCG(JL,KNU,JKL)
2211     S                                 * PCG(JL,KNU,JKL)
2212      ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL)
2213      ZCORCD = ZFACOC * PTAU(JL,KNU,JKL) * PSEC(JL)
2214      ZR21(JL) = EXP(-ZCORAE   )
2215      ZR22(JL) = EXP(-ZCORCD   )
2216      ZSS1(JL) = PCLD(JL,JKL)*(1.0-ZR21(JL)*ZR22(JL))
2217     S               + (1.0-PCLD(JL,JKL))*(1.0-ZR21(JL))
2218      ZCLEQ(JL,JKL) = ZSS1(JL)
2219c     
2220      IF (NOVLP.EQ.1) THEN
2221c* maximum-random
2222         ZCLEAR(JL) = ZCLEAR(JL)
2223     S                  *(1.0-MAX(ZSS1(JL),ZCLOUD(JL)))
2224     S                  /(1.0-MIN(ZCLOUD(JL),1.-ZEPSEC))
2225         ZC1I(JL,JKL) = 1.0 - ZCLEAR(JL)
2226         ZCLOUD(JL) = ZSS1(JL)
2227      ELSE IF (NOVLP.EQ.2) THEN
2228C* maximum
2229         ZCLOUD(JL) = MAX( ZSS1(JL) , ZCLOUD(JL) )
2230         ZC1I(JL,JKL) = ZCLOUD(JL)
2231      ELSE IF (NOVLP.EQ.3) THEN
2232c* random
2233         ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - ZSS1(JL))
2234         ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
2235         ZC1I(JL,JKL) = ZCLOUD(JL)
2236      END IF
2237 204  CONTINUE
2238 205  CONTINUE
2239C
2240C     ------------------------------------------------------------------
2241C
2242C*         3.    REFLECTIVITY/TRANSMISSIVITY FOR PURE SCATTERING
2243C                -----------------------------------------------
2244C
2245 300  CONTINUE
2246C
2247      DO 301 JL = 1, KDLON
2248      PRAY1(JL,KFLEV+1) = 0.
2249      PRAY2(JL,KFLEV+1) = 0.
2250      PREFZ(JL,2,1) = PALBD(JL,KNU)
2251      PREFZ(JL,1,1) = PALBD(JL,KNU)
2252      PTRA1(JL,KFLEV+1) = 1.
2253      PTRA2(JL,KFLEV+1) = 1.
2254 301  CONTINUE
2255C
2256      DO 346 JK = 2 , KFLEV+1
2257      JKM1 = JK-1
2258      DO 342 JL = 1, KDLON
2259      ZRNEB(JL)= PCLD(JL,JKM1)
2260      ZRE1(JL)=0.
2261      ZTR1(JL)=0.
2262      ZRE2(JL)=0.
2263      ZTR2(JL)=0.
2264C
2265C
2266C     ------------------------------------------------------------------
2267C
2268C*         3.1  EQUIVALENT ZENITH ANGLE
2269C               -----------------------
2270C
2271 310  CONTINUE
2272C
2273      ZMUE = (1.-ZC1I(JL,JK)) * PSEC(JL)
2274     S            + ZC1I(JL,JK) * 1.66
2275      PRMUE(JL,JK) = 1./ZMUE
2276C
2277C
2278C     ------------------------------------------------------------------
2279C
2280C*         3.2  REFLECT./TRANSMISSIVITY DUE TO RAYLEIGH AND AEROSOLS
2281C               ----------------------------------------------------
2282C
2283 320  CONTINUE
2284C
2285      ZGAP = PCGAZ(JL,JKM1)
2286      ZBMU0 = 0.5 - 0.75 * ZGAP / ZMUE
2287      ZWW = PPIZAZ(JL,JKM1)
2288      ZTO = PTAUAZ(JL,JKM1)
2289      ZDEN = 1. + (1. - ZWW + ZBMU0 * ZWW) * ZTO * ZMUE
2290     S       + (1-ZWW) * (1. - ZWW +2.*ZBMU0*ZWW)*ZTO*ZTO*ZMUE*ZMUE
2291      PRAY1(JL,JKM1) = ZBMU0 * ZWW * ZTO * ZMUE / ZDEN
2292      PTRA1(JL,JKM1) = 1. / ZDEN
2293c      PRINT *,' LOOP 342 ** 3 ** JL=',JL,PRAY1(JL,JKM1),PTRA1(JL,JKM1)
2294C
2295      ZMU1 = 0.5
2296      ZBMU1 = 0.5 - 0.75 * ZGAP * ZMU1
2297      ZDEN1= 1. + (1. - ZWW + ZBMU1 * ZWW) * ZTO / ZMU1
2298     S       + (1-ZWW) * (1. - ZWW +2.*ZBMU1*ZWW)*ZTO*ZTO/ZMU1/ZMU1
2299      PRAY2(JL,JKM1) = ZBMU1 * ZWW * ZTO / ZMU1 / ZDEN1
2300      PTRA2(JL,JKM1) = 1. / ZDEN1
2301C
2302C
2303C     ------------------------------------------------------------------
2304C
2305C*         3.3  EFFECT OF CLOUD LAYER
2306C               ---------------------
2307C
2308 330  CONTINUE
2309C
2310      ZW(JL) = POMEGA(JL,KNU,JKM1)
2311      ZTO1(JL) = PTAU(JL,KNU,JKM1)/ZW(JL)
2312     S         + PTAUAZ(JL,JKM1)/PPIZAZ(JL,JKM1)
2313      ZR21(JL) = PTAU(JL,KNU,JKM1) + PTAUAZ(JL,JKM1)
2314      ZR22(JL) = PTAU(JL,KNU,JKM1) / ZR21(JL)
2315      ZGG(JL) = ZR22(JL) * PCG(JL,KNU,JKM1)
2316     S              + (1. - ZR22(JL)) * PCGAZ(JL,JKM1)
2317C Modif PhD - JJM 19/03/96 pour erreurs arrondis
2318C machine
2319C PHD PROTECTION ZW(JL) = ZR21(JL) / ZTO1(JL)
2320      IF (ZW(JL).EQ.1. .AND. PPIZAZ(JL,JKM1).EQ.1.) THEN
2321         ZW(JL)=1.
2322      ELSE
2323         ZW(JL) = ZR21(JL) / ZTO1(JL)
2324      END IF
2325      ZREF(JL) = PREFZ(JL,1,JKM1)
2326      ZRMUZ(JL) = PRMUE(JL,JK)
2327 342  CONTINUE
2328C
2329      CALL SWDE(ZGG  , ZREF  , ZRMUZ , ZTO1 , ZW,
2330     S          ZRE1 , ZRE2  , ZTR1  , ZTR2)
2331C
2332      DO 345 JL = 1, KDLON
2333C
2334      PREFZ(JL,1,JK) = (1.-ZRNEB(JL)) * (PRAY1(JL,JKM1)
2335     S               + PREFZ(JL,1,JKM1) * PTRA1(JL,JKM1)
2336     S               * PTRA2(JL,JKM1)
2337     S               / (1.-PRAY2(JL,JKM1)*PREFZ(JL,1,JKM1)))
2338     S               + ZRNEB(JL) * ZRE2(JL)
2339C
2340      ZTR(JL,1,JKM1) = ZRNEB(JL) * ZTR2(JL) + (PTRA1(JL,JKM1)
2341     S               / (1.-PRAY2(JL,JKM1)*PREFZ(JL,1,JKM1)))
2342     S               * (1.-ZRNEB(JL))
2343C
2344      PREFZ(JL,2,JK) = (1.-ZRNEB(JL)) * (PRAY1(JL,JKM1)
2345     S               + PREFZ(JL,2,JKM1) * PTRA1(JL,JKM1)
2346     S               * PTRA2(JL,JKM1) )
2347     S               + ZRNEB(JL) * ZRE1(JL)
2348C
2349      ZTR(JL,2,JKM1) = ZRNEB(JL) * ZTR1(JL)
2350     S               + PTRA1(JL,JKM1) * (1.-ZRNEB(JL))
2351C
2352 345  CONTINUE
2353 346  CONTINUE
2354      DO 347 JL = 1, KDLON
2355      ZMUE = (1.-ZC1I(JL,1))*PSEC(JL)+ZC1I(JL,1)*1.66
2356      PRMUE(JL,1)=1./ZMUE
2357 347  CONTINUE
2358C
2359C
2360C     ------------------------------------------------------------------
2361C
2362C*         3.5    REFLECT./TRANSMISSIVITY BETWEEN SURFACE AND LEVEL
2363C                 -------------------------------------------------
2364C
2365 350  CONTINUE
2366C
2367      IF (KNU.EQ.1) THEN
2368      JAJ = 2
2369      DO 351 JL = 1, KDLON
2370      PRJ(JL,JAJ,KFLEV+1) = 1.
2371      PRK(JL,JAJ,KFLEV+1) = PREFZ(JL, 1,KFLEV+1)
2372 351  CONTINUE
2373C
2374      DO 353 JK = 1 , KFLEV
2375      JKL = KFLEV+1 - JK
2376      JKLP1 = JKL + 1
2377      DO 352 JL = 1, KDLON
2378      ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL,  1,JKL)
2379      PRJ(JL,JAJ,JKL) = ZRE11
2380      PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL,  1,JKL)
2381 352  CONTINUE
2382 353  CONTINUE
2383 354  CONTINUE
2384C
2385      ELSE
2386C
2387      DO 358 JAJ = 1 , 2
2388      DO 355 JL = 1, KDLON
2389      PRJ(JL,JAJ,KFLEV+1) = 1.
2390      PRK(JL,JAJ,KFLEV+1) = PREFZ(JL,JAJ,KFLEV+1)
2391 355  CONTINUE
2392C
2393      DO 357 JK = 1 , KFLEV
2394      JKL = KFLEV+1 - JK
2395      JKLP1 = JKL + 1
2396      DO 356 JL = 1, KDLON
2397      ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL,JAJ,JKL)
2398      PRJ(JL,JAJ,JKL) = ZRE11
2399      PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL,JAJ,JKL)
2400 356  CONTINUE
2401 357  CONTINUE
2402 358  CONTINUE
2403C
2404      END IF
2405C
2406C     ------------------------------------------------------------------
2407C
2408      RETURN
2409      END
2410      SUBROUTINE SWDE (PGG,PREF,PRMUZ,PTO1,PW,
2411     S                 PRE1,PRE2,PTR1,PTR2)
2412      IMPLICIT none
2413#include "dimensions.h"
2414#include "dimphy.h"
2415#include "raddim.h"
2416C
2417C     ------------------------------------------------------------------
2418C     PURPOSE.
2419C     --------
2420C           COMPUTES THE REFLECTIVITY AND TRANSMISSIVITY OF A CLOUDY
2421C     LAYER USING THE DELTA-EDDINGTON'S APPROXIMATION.
2422C
2423C     METHOD.
2424C     -------
2425C
2426C          STANDARD DELTA-EDDINGTON LAYER CALCULATIONS.
2427C
2428C     REFERENCE.
2429C     ----------
2430C
2431C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
2432C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
2433C
2434C     AUTHOR.
2435C     -------
2436C        JEAN-JACQUES MORCRETTE  *ECMWF*
2437C
2438C     MODIFICATIONS.
2439C     --------------
2440C        ORIGINAL : 88-12-15
2441C     ------------------------------------------------------------------
2442C* ARGUMENTS:
2443C
2444      REAL*8 PGG(KDLON)   ! ASSYMETRY FACTOR
2445      REAL*8 PREF(KDLON)  ! REFLECTIVITY OF THE UNDERLYING LAYER
2446      REAL*8 PRMUZ(KDLON) ! COSINE OF SOLAR ZENITH ANGLE
2447      REAL*8 PTO1(KDLON)  ! OPTICAL THICKNESS
2448      REAL*8 PW(KDLON)    ! SINGLE SCATTERING ALBEDO
2449      REAL*8 PRE1(KDLON)  ! LAYER REFLECTIVITY (NO UNDERLYING-LAYER REFLECTION)
2450      REAL*8 PRE2(KDLON)  ! LAYER REFLECTIVITY
2451      REAL*8 PTR1(KDLON)  ! LAYER TRANSMISSIVITY (NO UNDERLYING-LAYER REFLECTION)
2452      REAL*8 PTR2(KDLON)  ! LAYER TRANSMISSIVITY
2453C
2454C* LOCAL VARIABLES:
2455C
2456      INTEGER jl
2457      REAL*8 ZFF, ZGP, ZTOP, ZWCP, ZDT, ZX1, ZWM
2458      REAL*8 ZRM2, ZRK, ZX2, ZRP, ZALPHA, ZBETA, ZARG
2459      REAL*8 ZEXMU0, ZARG2, ZEXKP, ZEXKM, ZXP2P, ZXM2P, ZAP2B, ZAM2B
2460      REAL*8 ZA11, ZA12, ZA13, ZA21, ZA22, ZA23
2461      REAL*8 ZDENA, ZC1A, ZC2A, ZRI0A, ZRI1A
2462      REAL*8 ZRI0B, ZRI1B
2463      REAL*8 ZB21, ZB22, ZB23, ZDENB, ZC1B, ZC2B
2464      REAL*8 ZRI0C, ZRI1C, ZRI0D, ZRI1D
2465C     ------------------------------------------------------------------
2466C
2467C*         1.      DELTA-EDDINGTON CALCULATIONS
2468C
2469 100  CONTINUE
2470C
2471      DO 131 JL   =   1, KDLON
2472C
2473C*         1.1     SET UP THE DELTA-MODIFIED PARAMETERS
2474C
2475 110  CONTINUE
2476C
2477      ZFF = PGG(JL)*PGG(JL)
2478      ZGP = PGG(JL)/(1.+PGG(JL))
2479      ZTOP = (1.- PW(JL) * ZFF) * PTO1(JL)
2480      ZWCP = (1-ZFF)* PW(JL) /(1.- PW(JL) * ZFF)
2481      ZDT = 2./3.
2482      ZX1 = 1.-ZWCP*ZGP
2483      ZWM = 1.-ZWCP
2484      ZRM2 =  PRMUZ(JL) * PRMUZ(JL)
2485      ZRK = SQRT(3.*ZWM*ZX1)
2486      ZX2 = 4.*(1.-ZRK*ZRK*ZRM2)
2487      ZRP=ZRK/ZX1
2488      ZALPHA = 3.*ZWCP*ZRM2*(1.+ZGP*ZWM)/ZX2
2489      ZBETA = 3.*ZWCP* PRMUZ(JL) *(1.+3.*ZGP*ZRM2*ZWM)/ZX2
2490CMAF      ZARG=MIN(ZTOP/PRMUZ(JL),200.)
2491      ZARG=MIN(ZTOP/PRMUZ(JL),2.0d+2)
2492      ZEXMU0=EXP(-ZARG)
2493CMAF      ZARG2=MIN(ZRK*ZTOP,200.)
2494      ZARG2=MIN(ZRK*ZTOP,2.0d+2)
2495      ZEXKP=EXP(ZARG2)
2496      ZEXKM = 1./ZEXKP
2497      ZXP2P = 1.+ZDT*ZRP
2498      ZXM2P = 1.-ZDT*ZRP
2499      ZAP2B = ZALPHA+ZDT*ZBETA
2500      ZAM2B = ZALPHA-ZDT*ZBETA
2501C
2502C*         1.2     WITHOUT REFLECTION FROM THE UNDERLYING LAYER
2503C
2504 120  CONTINUE
2505C
2506      ZA11 = ZXP2P
2507      ZA12 = ZXM2P
2508      ZA13 = ZAP2B
2509      ZA22 = ZXP2P*ZEXKP
2510      ZA21 = ZXM2P*ZEXKM
2511      ZA23 = ZAM2B*ZEXMU0
2512      ZDENA = ZA11 * ZA22 - ZA21 * ZA12
2513      ZC1A = (ZA22*ZA13-ZA12*ZA23)/ZDENA
2514      ZC2A = (ZA11*ZA23-ZA21*ZA13)/ZDENA
2515      ZRI0A = ZC1A+ZC2A-ZALPHA
2516      ZRI1A = ZRP*(ZC1A-ZC2A)-ZBETA
2517      PRE1(JL) = (ZRI0A-ZDT*ZRI1A)/ PRMUZ(JL)
2518      ZRI0B = ZC1A*ZEXKM+ZC2A*ZEXKP-ZALPHA*ZEXMU0
2519      ZRI1B = ZRP*(ZC1A*ZEXKM-ZC2A*ZEXKP)-ZBETA*ZEXMU0
2520      PTR1(JL) = ZEXMU0+(ZRI0B+ZDT*ZRI1B)/ PRMUZ(JL)
2521C
2522C*         1.3     WITH REFLECTION FROM THE UNDERLYING LAYER
2523C
2524 130  CONTINUE
2525C
2526      ZB21 = ZA21- PREF(JL) *ZXP2P*ZEXKM
2527      ZB22 = ZA22- PREF(JL) *ZXM2P*ZEXKP
2528      ZB23 = ZA23- PREF(JL) *ZEXMU0*(ZAP2B - PRMUZ(JL) )
2529      ZDENB = ZA11 * ZB22 - ZB21 * ZA12
2530      ZC1B = (ZB22*ZA13-ZA12*ZB23)/ZDENB
2531      ZC2B = (ZA11*ZB23-ZB21*ZA13)/ZDENB
2532      ZRI0C = ZC1B+ZC2B-ZALPHA
2533      ZRI1C = ZRP*(ZC1B-ZC2B)-ZBETA
2534      PRE2(JL) = (ZRI0C-ZDT*ZRI1C) / PRMUZ(JL)
2535      ZRI0D = ZC1B*ZEXKM + ZC2B*ZEXKP - ZALPHA*ZEXMU0
2536      ZRI1D = ZRP * (ZC1B*ZEXKM - ZC2B*ZEXKP) - ZBETA*ZEXMU0
2537      PTR2(JL) = ZEXMU0 + (ZRI0D + ZDT*ZRI1D) / PRMUZ(JL)
2538C
2539 131  CONTINUE
2540      RETURN
2541      END
2542      SUBROUTINE SWTT (KNU,KA,PU,PTR)
2543      IMPLICIT none
2544#include "dimensions.h"
2545#include "dimphy.h"
2546#include "raddim.h"
2547C
2548C-----------------------------------------------------------------------
2549C     PURPOSE.
2550C     --------
2551C           THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
2552C     ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN THE TWO SPECTRAL
2553C     INTERVALS.
2554C
2555C     METHOD.
2556C     -------
2557C
2558C          TRANSMISSION FUNCTION ARE COMPUTED USING PADE APPROXIMANTS
2559C     AND HORNER'S ALGORITHM.
2560C
2561C     REFERENCE.
2562C     ----------
2563C
2564C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
2565C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
2566C
2567C     AUTHOR.
2568C     -------
2569C        JEAN-JACQUES MORCRETTE  *ECMWF*
2570C
2571C     MODIFICATIONS.
2572C     --------------
2573C        ORIGINAL : 88-12-15
2574C-----------------------------------------------------------------------
2575C
2576C* ARGUMENTS
2577C
2578      INTEGER KNU     ! INDEX OF THE SPECTRAL INTERVAL
2579      INTEGER KA      ! INDEX OF THE ABSORBER
2580      REAL*8 PU(KDLON)  ! ABSORBER AMOUNT
2581C
2582      REAL*8 PTR(KDLON) ! TRANSMISSION FUNCTION
2583C
2584C* LOCAL VARIABLES:
2585C
2586      REAL*8 ZR1(KDLON), ZR2(KDLON)
2587      INTEGER jl, i,j
2588C
2589C* Prescribed Data:
2590C
2591      REAL*8 APAD(2,3,7), BPAD(2,3,7), D(2,3)
2592      SAVE APAD, BPAD, D
2593      DATA ((APAD(1,I,J),I=1,3),J=1,7) /
2594     S 0.912418292E+05, 0.000000000E-00, 0.925887084E-04,
2595     S 0.723613782E+05, 0.000000000E-00, 0.129353723E-01,
2596     S 0.596037057E+04, 0.000000000E-00, 0.800821928E+00,
2597     S 0.000000000E-00, 0.000000000E-00, 0.242715973E+02,
2598     S 0.000000000E-00, 0.000000000E-00, 0.878331486E+02,
2599     S 0.000000000E-00, 0.000000000E-00, 0.191559725E+02,
2600     S 0.000000000E-00, 0.000000000E-00, 0.000000000E+00 /
2601      DATA ((APAD(2,I,J),I=1,3),J=1,7) /
2602     S 0.376655383E-08, 0.739646016E-08, 0.410177786E+03,
2603     S 0.978576773E-04, 0.131849595E-03, 0.672595424E+02,
2604     S 0.387714006E+00, 0.437772681E+00, 0.000000000E-00,
2605     S 0.118461660E+03, 0.151345118E+03, 0.000000000E-00,
2606     S 0.119079797E+04, 0.233628890E+04, 0.000000000E-00,
2607     S 0.293353397E+03, 0.797219934E+03, 0.000000000E-00,
2608     S 0.000000000E+00, 0.000000000E+00, 0.000000000E+00 /
2609C
2610      DATA ((BPAD(1,I,J),I=1,3),J=1,7) /
2611     S 0.912418292E+05, 0.000000000E-00, 0.925887084E-04,
2612     S 0.724555318E+05, 0.000000000E-00, 0.131812683E-01,
2613     S 0.602593328E+04, 0.000000000E-00, 0.812706117E+00,
2614     S 0.100000000E+01, 0.000000000E-00, 0.249863591E+02,
2615     S 0.000000000E-00, 0.000000000E-00, 0.931071925E+02,
2616     S 0.000000000E-00, 0.000000000E-00, 0.252233437E+02,
2617     S 0.000000000E-00, 0.000000000E-00, 0.100000000E+01 /
2618      DATA ((BPAD(2,I,J),I=1,3),J=1,7) /
2619     S 0.376655383E-08, 0.739646016E-08, 0.410177786E+03,
2620     S 0.979023421E-04, 0.131861712E-03, 0.731185438E+02,
2621     S 0.388611139E+00, 0.437949001E+00, 0.100000000E+01,
2622     S 0.120291383E+03, 0.151692730E+03, 0.000000000E+00,
2623     S 0.130531005E+04, 0.237071130E+04, 0.000000000E+00,
2624     S 0.415049409E+03, 0.867914360E+03, 0.000000000E+00,
2625     S 0.100000000E+01, 0.100000000E+01, 0.000000000E+00 /
2626c
2627      DATA (D(1,I),I=1,3) / 0.00, 0.00, 0.00 /
2628      DATA (D(2,I),I=1,3) / 0.000000000, 0.000000000, 0.800000000 /
2629C
2630C-----------------------------------------------------------------------
2631C
2632C*         1.      HORNER'S ALGORITHM TO COMPUTE TRANSMISSION FUNCTION
2633C
2634 100  CONTINUE
2635C
2636      DO 201 JL = 1, KDLON
2637      ZR1(JL) = APAD(KNU,KA,1) + PU(JL) * (APAD(KNU,KA,2) + PU(JL)
2638     S      * ( APAD(KNU,KA,3) + PU(JL) * (APAD(KNU,KA,4) + PU(JL)
2639     S      * ( APAD(KNU,KA,5) + PU(JL) * (APAD(KNU,KA,6) + PU(JL)
2640     S      * ( APAD(KNU,KA,7) ))))))
2641C
2642      ZR2(JL) = BPAD(KNU,KA,1) + PU(JL) * (BPAD(KNU,KA,2) + PU(JL)
2643     S      * ( BPAD(KNU,KA,3) + PU(JL) * (BPAD(KNU,KA,4) + PU(JL)
2644     S      * ( BPAD(KNU,KA,5) + PU(JL) * (BPAD(KNU,KA,6) + PU(JL)
2645     S      * ( BPAD(KNU,KA,7) ))))))
2646C     
2647C
2648C*         2.      ADD THE BACKGROUND TRANSMISSION
2649C
2650 200  CONTINUE
2651C
2652C
2653      PTR(JL) = (ZR1(JL) / ZR2(JL)) * (1. - D(KNU,KA)) + D(KNU,KA)
2654 201  CONTINUE
2655C
2656      RETURN
2657      END
2658      SUBROUTINE SWTT1(KNU,KABS,KIND, PU, PTR)
2659      IMPLICIT none
2660#include "dimensions.h"
2661#include "dimphy.h"
2662#include "raddim.h"
2663C
2664C-----------------------------------------------------------------------
2665C     PURPOSE.
2666C     --------
2667C           THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
2668C     ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN THE TWO SPECTRAL
2669C     INTERVALS.
2670C
2671C     METHOD.
2672C     -------
2673C
2674C          TRANSMISSION FUNCTION ARE COMPUTED USING PADE APPROXIMANTS
2675C     AND HORNER'S ALGORITHM.
2676C
2677C     REFERENCE.
2678C     ----------
2679C
2680C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
2681C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
2682C
2683C     AUTHOR.
2684C     -------
2685C        JEAN-JACQUES MORCRETTE  *ECMWF*
2686C
2687C     MODIFICATIONS.
2688C     --------------
2689C        ORIGINAL : 95-01-20
2690C-----------------------------------------------------------------------
2691C* ARGUMENTS:
2692C
2693      INTEGER KNU          ! INDEX OF THE SPECTRAL INTERVAL
2694      INTEGER KABS         ! NUMBER OF ABSORBERS
2695      INTEGER KIND(KABS)   ! INDICES OF THE ABSORBERS
2696      REAL*8 PU(KDLON,KABS)  ! ABSORBER AMOUNT
2697C
2698      REAL*8 PTR(KDLON,KABS) ! TRANSMISSION FUNCTION
2699C
2700C* LOCAL VARIABLES:
2701C
2702      REAL*8 ZR1(KDLON)
2703      REAL*8 ZR2(KDLON)
2704      REAL*8 ZU(KDLON)
2705      INTEGER jl, ja, i, j, ia
2706C
2707C* Prescribed Data:
2708C
2709      REAL*8 APAD(2,3,7), BPAD(2,3,7), D(2,3)
2710      SAVE APAD, BPAD, D
2711      DATA ((APAD(1,I,J),I=1,3),J=1,7) /
2712     S 0.912418292E+05, 0.000000000E-00, 0.925887084E-04,
2713     S 0.723613782E+05, 0.000000000E-00, 0.129353723E-01,
2714     S 0.596037057E+04, 0.000000000E-00, 0.800821928E+00,
2715     S 0.000000000E-00, 0.000000000E-00, 0.242715973E+02,
2716     S 0.000000000E-00, 0.000000000E-00, 0.878331486E+02,
2717     S 0.000000000E-00, 0.000000000E-00, 0.191559725E+02,
2718     S 0.000000000E-00, 0.000000000E-00, 0.000000000E+00 /
2719      DATA ((APAD(2,I,J),I=1,3),J=1,7) /
2720     S 0.376655383E-08, 0.739646016E-08, 0.410177786E+03,
2721     S 0.978576773E-04, 0.131849595E-03, 0.672595424E+02,
2722     S 0.387714006E+00, 0.437772681E+00, 0.000000000E-00,
2723     S 0.118461660E+03, 0.151345118E+03, 0.000000000E-00,
2724     S 0.119079797E+04, 0.233628890E+04, 0.000000000E-00,
2725     S 0.293353397E+03, 0.797219934E+03, 0.000000000E-00,
2726     S 0.000000000E+00, 0.000000000E+00, 0.000000000E+00 /
2727C
2728      DATA ((BPAD(1,I,J),I=1,3),J=1,7) /
2729     S 0.912418292E+05, 0.000000000E-00, 0.925887084E-04,
2730     S 0.724555318E+05, 0.000000000E-00, 0.131812683E-01,
2731     S 0.602593328E+04, 0.000000000E-00, 0.812706117E+00,
2732     S 0.100000000E+01, 0.000000000E-00, 0.249863591E+02,
2733     S 0.000000000E-00, 0.000000000E-00, 0.931071925E+02,
2734     S 0.000000000E-00, 0.000000000E-00, 0.252233437E+02,
2735     S 0.000000000E-00, 0.000000000E-00, 0.100000000E+01 /
2736      DATA ((BPAD(2,I,J),I=1,3),J=1,7) /
2737     S 0.376655383E-08, 0.739646016E-08, 0.410177786E+03,
2738     S 0.979023421E-04, 0.131861712E-03, 0.731185438E+02,
2739     S 0.388611139E+00, 0.437949001E+00, 0.100000000E+01,
2740     S 0.120291383E+03, 0.151692730E+03, 0.000000000E+00,
2741     S 0.130531005E+04, 0.237071130E+04, 0.000000000E+00,
2742     S 0.415049409E+03, 0.867914360E+03, 0.000000000E+00,
2743     S 0.100000000E+01, 0.100000000E+01, 0.000000000E+00 /
2744c
2745      DATA (D(1,I),I=1,3) / 0.00, 0.00, 0.00 /
2746      DATA (D(2,I),I=1,3) / 0.000000000, 0.000000000, 0.800000000 /
2747C-----------------------------------------------------------------------
2748C
2749C*         1.      HORNER'S ALGORITHM TO COMPUTE TRANSMISSION FUNCTION
2750C
2751 100  CONTINUE
2752C
2753      DO 202 JA = 1,KABS
2754      IA=KIND(JA)
2755      DO 201 JL = 1, KDLON
2756      ZU(JL) = PU(JL,JA)
2757      ZR1(JL) = APAD(KNU,IA,1) + ZU(JL) * (APAD(KNU,IA,2) + ZU(JL)
2758     S      * ( APAD(KNU,IA,3) + ZU(JL) * (APAD(KNU,IA,4) + ZU(JL)
2759     S      * ( APAD(KNU,IA,5) + ZU(JL) * (APAD(KNU,IA,6) + ZU(JL)
2760     S      * ( APAD(KNU,IA,7) ))))))
2761C
2762      ZR2(JL) = BPAD(KNU,IA,1) + ZU(JL) * (BPAD(KNU,IA,2) + ZU(JL)
2763     S      * ( BPAD(KNU,IA,3) + ZU(JL) * (BPAD(KNU,IA,4) + ZU(JL)
2764     S      * ( BPAD(KNU,IA,5) + ZU(JL) * (BPAD(KNU,IA,6) + ZU(JL)
2765     S      * ( BPAD(KNU,IA,7) ))))))
2766C     
2767C
2768C*         2.      ADD THE BACKGROUND TRANSMISSION
2769C
2770 200  CONTINUE
2771C
2772      PTR(JL,JA) = (ZR1(JL)/ZR2(JL)) * (1.-D(KNU,IA)) + D(KNU,IA)
2773 201  CONTINUE
2774 202  CONTINUE
2775C
2776      RETURN
2777      END
2778cIM ctes ds clesphys.h   SUBROUTINE LW(RCO2,RCH4,RN2O,RCFC11,RCFC12,
2779      SUBROUTINE LW(
2780     .              PPMB, PDP,
2781     .              PPSOL,PDT0,PEMIS,
2782     .              PTL, PTAVE, PWV, POZON, PAER,
2783     .              PCLDLD,PCLDLU,
2784     .              PVIEW,
2785     .              PCOLR, PCOLR0,
2786     .              PTOPLW,PSOLLW,PTOPLW0,PSOLLW0,
2787     .              psollwdown,
2788cIM  .              psollwdown,psollwdownclr,
2789cIM  .              ptoplwdown,ptoplwdownclr)
2790     .              plwup, plwdn, plwup0, plwdn0)
2791      IMPLICIT none
2792#include "dimensions.h"
2793#include "dimphy.h"
2794#include "raddim.h"
2795#include "raddimlw.h"
2796#include "YOMCST.h"
2797C
2798C-----------------------------------------------------------------------
2799C     METHOD.
2800C     -------
2801C
2802C          1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF
2803C     ABSORBERS.
2804C          2. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
2805C     GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
2806C          3. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
2807C     TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
2808C     BOUNDARIES.
2809C          4. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
2810C          5. INTRODUCES THE EFFECTS OF THE CLOUDS ON THE FLUXES.
2811C
2812C
2813C     REFERENCE.
2814C     ----------
2815C
2816C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
2817C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
2818C
2819C     AUTHOR.
2820C     -------
2821C        JEAN-JACQUES MORCRETTE  *ECMWF*
2822C
2823C     MODIFICATIONS.
2824C     --------------
2825C        ORIGINAL : 89-07-14
2826C-----------------------------------------------------------------------
2827cIM ctes ds clesphys.h
2828c     REAL*8 RCO2   ! CO2 CONCENTRATION (IPCC:353.E-06* 44.011/28.97)
2829c     REAL*8 RCH4   ! CH4 CONCENTRATION (IPCC: 1.72E-06* 16.043/28.97)
2830c     REAL*8 RN2O   ! N2O CONCENTRATION (IPCC: 310.E-09* 44.013/28.97)
2831c     REAL*8 RCFC11 ! CFC11 CONCENTRATION (IPCC: 280.E-12* 137.3686/28.97)
2832c     REAL*8 RCFC12 ! CFC12 CONCENTRATION (IPCC: 484.E-12* 120.9140/28.97)
2833#include "clesphys.h"
2834      REAL*8 PCLDLD(KDLON,KFLEV)  ! DOWNWARD EFFECTIVE CLOUD COVER
2835      REAL*8 PCLDLU(KDLON,KFLEV)  ! UPWARD EFFECTIVE CLOUD COVER
2836      REAL*8 PDP(KDLON,KFLEV)     ! LAYER PRESSURE THICKNESS (Pa)
2837      REAL*8 PDT0(KDLON)          ! SURFACE TEMPERATURE DISCONTINUITY (K)
2838      REAL*8 PEMIS(KDLON)         ! SURFACE EMISSIVITY
2839      REAL*8 PPMB(KDLON,KFLEV+1)  ! HALF LEVEL PRESSURE (mb)
2840      REAL*8 PPSOL(KDLON)         ! SURFACE PRESSURE (Pa)
2841      REAL*8 POZON(KDLON,KFLEV)   ! O3 CONCENTRATION (kg/kg)
2842      REAL*8 PTL(KDLON,KFLEV+1)   ! HALF LEVEL TEMPERATURE (K)
2843      REAL*8 PAER(KDLON,KFLEV,5)  ! OPTICAL THICKNESS OF THE AEROSOLS
2844      REAL*8 PTAVE(KDLON,KFLEV)   ! LAYER TEMPERATURE (K)
2845      REAL*8 PVIEW(KDLON)         ! COSECANT OF VIEWING ANGLE
2846      REAL*8 PWV(KDLON,KFLEV)     ! SPECIFIC HUMIDITY (kg/kg)
2847C
2848      REAL*8 PCOLR(KDLON,KFLEV)   ! LONG-WAVE TENDENCY (K/day)
2849      REAL*8 PCOLR0(KDLON,KFLEV)  ! LONG-WAVE TENDENCY (K/day) clear-sky
2850      REAL*8 PTOPLW(KDLON)        ! LONGWAVE FLUX AT T.O.A.
2851      REAL*8 PSOLLW(KDLON)        ! LONGWAVE FLUX AT SURFACE
2852      REAL*8 PTOPLW0(KDLON)       ! LONGWAVE FLUX AT T.O.A. (CLEAR-SKY)
2853      REAL*8 PSOLLW0(KDLON)       ! LONGWAVE FLUX AT SURFACE (CLEAR-SKY)
2854c Rajout LF
2855      real*8 psollwdown(kdlon)    ! LONGWAVE downwards flux at surface
2856c Rajout IM
2857cIM   real*8 psollwdownclr(kdlon) ! LONGWAVE CS downwards flux at surface
2858cIM   real*8 ptoplwdown(kdlon)    ! LONGWAVE downwards flux at T.O.A.
2859cIM   real*8 ptoplwdownclr(kdlon) ! LONGWAVE CS downwards flux at T.O.A.
2860cIM
2861      REAL*8 plwup(KDLON,KFLEV+1)  ! LW up total sky
2862      REAL*8 plwup0(KDLON,KFLEV+1) ! LW up clear sky
2863      REAL*8 plwdn(KDLON,KFLEV+1)  ! LW down total sky
2864      REAL*8 plwdn0(KDLON,KFLEV+1) ! LW down clear sky
2865C-------------------------------------------------------------------------
2866      REAL*8 ZABCU(KDLON,NUA,3*KFLEV+1)
2867      REAL*8 ZOZ(KDLON,KFLEV)
2868c
2869      REAL*8 ZFLUX(KDLON,2,KFLEV+1) ! RADIATIVE FLUXES (1:up; 2:down)
2870      REAL*8 ZFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES
2871      REAL*8 ZBINT(KDLON,KFLEV+1)            ! Intermediate variable
2872      REAL*8 ZBSUI(KDLON)                    ! Intermediate variable
2873      REAL*8 ZCTS(KDLON,KFLEV)               ! Intermediate variable
2874      REAL*8 ZCNTRB(KDLON,KFLEV+1,KFLEV+1)   ! Intermediate variable
2875      SAVE ZFLUX, ZFLUC, ZBINT, ZBSUI, ZCTS, ZCNTRB
2876c
2877      INTEGER ilim, i, k, kpl1
2878C
2879      INTEGER lw0pas ! Every lw0pas steps, clear-sky is done
2880      PARAMETER (lw0pas=1)
2881      INTEGER lwpas  ! Every lwpas steps, cloudy-sky is done
2882      PARAMETER (lwpas=1)
2883c
2884      INTEGER itaplw0, itaplw
2885      LOGICAL appel1er
2886      SAVE appel1er, itaplw0, itaplw
2887      DATA appel1er /.TRUE./
2888      DATA itaplw0,itaplw /0,0/
2889C     ------------------------------------------------------------------
2890      IF (appel1er) THEN
2891         PRINT*, "LW clear-sky calling frequency: ", lw0pas
2892         PRINT*, "LW cloudy-sky calling frequency: ", lwpas
2893         PRINT*, "   In general, they should be 1"
2894         appel1er=.FALSE.
2895      ENDIF
2896C
2897      IF (MOD(itaplw0,lw0pas).EQ.0) THEN
2898      DO k = 1, KFLEV  ! convertir ozone de kg/kg en pa/pa
2899      DO i = 1, KDLON
2900         ZOZ(i,k) = POZON(i,k)*PDP(i,k) * 28.9644/47.9942
2901      ENDDO
2902      ENDDO
2903cIM ctes ds clesphys.h   CALL LWU(RCO2,RCH4, RN2O, RCFC11, RCFC12,
2904      CALL LWU(
2905     S         PAER,PDP,PPMB,PPSOL,ZOZ,PTAVE,PVIEW,PWV,ZABCU)
2906      CALL LWBV(ILIM,PDP,PDT0,PEMIS,PPMB,PTL,PTAVE,ZABCU,
2907     S          ZFLUC,ZBINT,ZBSUI,ZCTS,ZCNTRB)
2908      itaplw0 = 0
2909      ENDIF
2910      itaplw0 = itaplw0 + 1
2911C
2912      IF (MOD(itaplw,lwpas).EQ.0) THEN
2913      CALL LWC(ILIM,PCLDLD,PCLDLU,PEMIS,
2914     S         ZFLUC,ZBINT,ZBSUI,ZCTS,ZCNTRB,
2915     S         ZFLUX)
2916      itaplw = 0
2917      ENDIF
2918      itaplw = itaplw + 1
2919C
2920      DO k = 1, KFLEV
2921         kpl1 = k+1
2922         DO i = 1, KDLON
2923            PCOLR(i,k) = ZFLUX(i,1,kpl1)+ZFLUX(i,2,kpl1)
2924     .                 - ZFLUX(i,1,k)-   ZFLUX(i,2,k)
2925            PCOLR(i,k) = PCOLR(i,k) * RDAY*RG/RCPD / PDP(i,k)
2926            PCOLR0(i,k) = ZFLUC(i,1,kpl1)+ZFLUC(i,2,kpl1)
2927     .                 - ZFLUC(i,1,k)-   ZFLUC(i,2,k)
2928            PCOLR0(i,k) = PCOLR0(i,k) * RDAY*RG/RCPD / PDP(i,k)
2929         ENDDO
2930      ENDDO
2931      DO i = 1, KDLON
2932         PSOLLW(i) = -ZFLUX(i,1,1)-ZFLUX(i,2,1)
2933         PTOPLW(i) = ZFLUX(i,1,KFLEV+1) + ZFLUX(i,2,KFLEV+1)
2934c
2935         PSOLLW0(i) = -ZFLUC(i,1,1)-ZFLUC(i,2,1)
2936         PTOPLW0(i) = ZFLUC(i,1,KFLEV+1) + ZFLUC(i,2,KFLEV+1)
2937         psollwdown(i) = -ZFLUX(i,2,1)
2938cIM
2939cIM      psollwdownclr(i) = -ZFLUC(i,2,1)
2940cIM      ptoplwdown(i) = ZFLUX(i,2,KFLEV+1)
2941cIM      ptoplwdownclr(i) = ZFLUC(i,2,KFLEV+1)
2942cIM
2943cIM attention aux signes !; LWtop >0, LWdn < 0
2944         DO k = 1, KFLEV+1
2945           plwup(i,k) = ZFLUX(i,1,k)
2946           plwup0(i,k) = ZFLUC(i,1,k)
2947           plwdn(i,k) = ZFLUX(i,2,k)
2948           plwdn0(i,k) = ZFLUC(i,2,k)
2949         ENDDO
2950      ENDDO
2951C     ------------------------------------------------------------------
2952      RETURN
2953      END
2954cIM ctes ds clesphys.h   SUBROUTINE LWU(RCO2, RCH4, RN2O, RCFC11, RCFC12,
2955      SUBROUTINE LWU(
2956     S               PAER,PDP,PPMB,PPSOL,POZ,PTAVE,PVIEW,PWV,
2957     S               PABCU)
2958      IMPLICIT none
2959#include "dimensions.h"
2960#include "dimphy.h"
2961#include "raddim.h"
2962#include "raddimlw.h"
2963#include "YOMCST.h"
2964#include "radepsi.h"
2965#include "radopt.h"
2966C
2967C     PURPOSE.
2968C     --------
2969C           COMPUTES ABSORBER AMOUNTS INCLUDING PRESSURE AND
2970C           TEMPERATURE EFFECTS
2971C
2972C     METHOD.
2973C     -------
2974C
2975C          1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF
2976C     ABSORBERS.
2977C
2978C
2979C     REFERENCE.
2980C     ----------
2981C
2982C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
2983C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
2984C
2985C     AUTHOR.
2986C     -------
2987C        JEAN-JACQUES MORCRETTE  *ECMWF*
2988C
2989C     MODIFICATIONS.
2990C     --------------
2991C        ORIGINAL : 89-07-14
2992C        Voigt lines (loop 404 modified) - JJM & PhD - 01/96
2993C-----------------------------------------------------------------------
2994C* ARGUMENTS:
2995cIM ctes ds clesphys.h
2996c     REAL*8 RCO2
2997c     REAL*8 RCH4, RN2O, RCFC11, RCFC12
2998#include "clesphys.h"
2999      REAL*8 PAER(KDLON,KFLEV,5)
3000      REAL*8 PDP(KDLON,KFLEV)
3001      REAL*8 PPMB(KDLON,KFLEV+1)
3002      REAL*8 PPSOL(KDLON)
3003      REAL*8 POZ(KDLON,KFLEV)
3004      REAL*8 PTAVE(KDLON,KFLEV)
3005      REAL*8 PVIEW(KDLON)
3006      REAL*8 PWV(KDLON,KFLEV)
3007C
3008      REAL*8 PABCU(KDLON,NUA,3*KFLEV+1) ! EFFECTIVE ABSORBER AMOUNTS
3009C
3010C-----------------------------------------------------------------------
3011C* LOCAL VARIABLES:
3012      REAL*8 ZABLY(KDLON,NUA,3*KFLEV+1)
3013      REAL*8 ZDUC(KDLON,3*KFLEV+1)
3014      REAL*8 ZPHIO(KDLON)
3015      REAL*8 ZPSC2(KDLON)
3016      REAL*8 ZPSC3(KDLON)
3017      REAL*8 ZPSH1(KDLON)
3018      REAL*8 ZPSH2(KDLON)
3019      REAL*8 ZPSH3(KDLON)
3020      REAL*8 ZPSH4(KDLON)
3021      REAL*8 ZPSH5(KDLON)
3022      REAL*8 ZPSH6(KDLON)
3023      REAL*8 ZPSIO(KDLON)
3024      REAL*8 ZTCON(KDLON)
3025      REAL*8 ZPHM6(KDLON)
3026      REAL*8 ZPSM6(KDLON)
3027      REAL*8 ZPHN6(KDLON)
3028      REAL*8 ZPSN6(KDLON)
3029      REAL*8 ZSSIG(KDLON,3*KFLEV+1)
3030      REAL*8 ZTAVI(KDLON)
3031      REAL*8 ZUAER(KDLON,Ninter)
3032      REAL*8 ZXOZ(KDLON)
3033      REAL*8 ZXWV(KDLON)
3034C
3035      INTEGER jl, jk, jkj, jkjr, jkjp, ig1
3036      INTEGER jki, jkip1, ja, jj
3037      INTEGER jkl, jkp1, jkk, jkjpn
3038      INTEGER jae1, jae2, jae3, jae, jjpn
3039      INTEGER ir, jc, jcp1
3040      REAL*8 zdpm, zupm, zupmh2o, zupmco2, zupmo3, zu6, zup
3041      REAL*8 zfppw, ztx, ztx2, zzably
3042      REAL*8 zcah1, zcbh1, zcah2, zcbh2, zcah3, zcbh3
3043      REAL*8 zcah4, zcbh4, zcah5, zcbh5, zcah6, zcbh6
3044      REAL*8 zcac8, zcbc8
3045      REAL*8 zalup, zdiff
3046c
3047      REAL*8 PVGCO2, PVGH2O, PVGO3
3048C
3049      REAL*8 R10E  ! DECIMAL/NATURAL LOG.FACTOR
3050      PARAMETER (R10E=0.4342945)
3051c
3052c Used Data Block:
3053c
3054      REAL*8 TREF
3055      SAVE TREF
3056      REAL*8 RT1(2)
3057      SAVE RT1
3058      REAL*8 RAER(5,5)
3059      SAVE RAER
3060      REAL*8 AT(8,3), BT(8,3)
3061      SAVE AT, BT
3062      REAL*8 OCT(4)
3063      SAVE OCT
3064      DATA TREF /250.0/
3065      DATA (RT1(IG1),IG1=1,2) / -0.577350269, +0.577350269 /
3066      DATA RAER / .038520, .037196, .040532, .054934, .038520
3067     1          , .12613 , .18313 , .10357 , .064106, .126130
3068     2          , .012579, .013649, .018652, .025181, .012579
3069     3          , .011890, .016142, .021105, .028908, .011890
3070     4          , .013792, .026810, .052203, .066338, .013792 /
3071      DATA (AT(1,IR),IR=1,3) /
3072     S 0.298199E-02,-.394023E-03,0.319566E-04 /
3073      DATA (BT(1,IR),IR=1,3) /
3074     S-0.106432E-04,0.660324E-06,0.174356E-06 /
3075      DATA (AT(2,IR),IR=1,3) /
3076     S 0.143676E-01,0.366501E-02,-.160822E-02 /
3077      DATA (BT(2,IR),IR=1,3) /
3078     S-0.553979E-04,-.101701E-04,0.920868E-05 /
3079      DATA (AT(3,IR),IR=1,3) /
3080     S 0.197861E-01,0.315541E-02,-.174547E-02 /
3081      DATA (BT(3,IR),IR=1,3) /
3082     S-0.877012E-04,0.513302E-04,0.523138E-06 /
3083      DATA (AT(4,IR),IR=1,3) /
3084     S 0.289560E-01,-.208807E-02,-.121943E-02 /
3085      DATA (BT(4,IR),IR=1,3) /
3086     S-0.165960E-03,0.157704E-03,-.146427E-04 /
3087      DATA (AT(5,IR),IR=1,3) /
3088     S 0.103800E-01,0.436296E-02,-.161431E-02 /
3089      DATA (BT(5,IR),IR=1,3) /
3090     S -.276744E-04,-.327381E-04,0.127646E-04 /
3091      DATA (AT(6,IR),IR=1,3) /
3092     S 0.868859E-02,-.972752E-03,0.000000E-00 /
3093      DATA (BT(6,IR),IR=1,3) /
3094     S -.278412E-04,-.713940E-06,0.117469E-05 /
3095      DATA (AT(7,IR),IR=1,3) /
3096     S 0.250073E-03,0.455875E-03,0.109242E-03 /
3097      DATA (BT(7,IR),IR=1,3) /
3098     S 0.199846E-05,-.216313E-05,0.175991E-06 /
3099      DATA (AT(8,IR),IR=1,3) /
3100     S 0.307423E-01,0.110879E-02,-.322172E-03 /
3101      DATA (BT(8,IR),IR=1,3) /
3102     S-0.108482E-03,0.258096E-05,-.814575E-06 /
3103c
3104      DATA OCT /-.326E-03, -.102E-05, .137E-02, -.535E-05/
3105C-----------------------------------------------------------------------
3106c
3107      IF (LEVOIGT) THEN
3108         PVGCO2= 60.
3109         PVGH2O= 30.
3110         PVGO3 =400.
3111      ELSE
3112         PVGCO2= 0.
3113         PVGH2O= 0.
3114         PVGO3 = 0.
3115      ENDIF
3116C
3117C
3118C*         2.    PRESSURE OVER GAUSS SUB-LEVELS
3119C                ------------------------------
3120C
3121 200  CONTINUE
3122C
3123      DO 201 JL = 1, KDLON
3124      ZSSIG(JL, 1 ) = PPMB(JL,1) * 100.
3125 201  CONTINUE
3126C
3127      DO 206 JK = 1 , KFLEV
3128      JKJ=(JK-1)*NG1P1+1
3129      JKJR = JKJ
3130      JKJP = JKJ + NG1P1
3131      DO 203 JL = 1, KDLON
3132      ZSSIG(JL,JKJP)=PPMB(JL,JK+1)* 100.
3133 203  CONTINUE
3134      DO 205 IG1=1,NG1
3135      JKJ=JKJ+1
3136      DO 204 JL = 1, KDLON
3137      ZSSIG(JL,JKJ)= (ZSSIG(JL,JKJR)+ZSSIG(JL,JKJP))*0.5
3138     S  + RT1(IG1) * (ZSSIG(JL,JKJP) - ZSSIG(JL,JKJR)) * 0.5
3139 204  CONTINUE
3140 205  CONTINUE
3141 206  CONTINUE
3142C
3143C-----------------------------------------------------------------------
3144C
3145C
3146C*         4.    PRESSURE THICKNESS AND MEAN PRESSURE OF SUB-LAYERS
3147C                --------------------------------------------------
3148C
3149 400  CONTINUE
3150C
3151      DO 402 JKI=1,3*KFLEV
3152      JKIP1=JKI+1
3153      DO 401 JL = 1, KDLON
3154      ZABLY(JL,5,JKI)=(ZSSIG(JL,JKI)+ZSSIG(JL,JKIP1))*0.5
3155      ZABLY(JL,3,JKI)=(ZSSIG(JL,JKI)-ZSSIG(JL,JKIP1))
3156     S                                 /(10.*RG)
3157 401  CONTINUE
3158 402  CONTINUE
3159C
3160      DO 406 JK = 1 , KFLEV
3161      JKP1=JK+1
3162      JKL = KFLEV+1 - JK
3163      DO 403 JL = 1, KDLON
3164      ZXWV(JL) = MAX (PWV(JL,JK) , ZEPSCQ )
3165      ZXOZ(JL) = MAX (POZ(JL,JK) / PDP(JL,JK) , ZEPSCO )
3166 403  CONTINUE
3167      JKJ=(JK-1)*NG1P1+1
3168      JKJPN=JKJ+NG1
3169      DO 405 JKK=JKJ,JKJPN
3170      DO 404 JL = 1, KDLON
3171      ZDPM = ZABLY(JL,3,JKK)
3172      ZUPM = ZABLY(JL,5,JKK)             * ZDPM / 101325.
3173      ZUPMCO2 = ( ZABLY(JL,5,JKK) + PVGCO2 ) * ZDPM / 101325.
3174      ZUPMH2O = ( ZABLY(JL,5,JKK) + PVGH2O ) * ZDPM / 101325.
3175      ZUPMO3  = ( ZABLY(JL,5,JKK) + PVGO3  ) * ZDPM / 101325.
3176      ZDUC(JL,JKK) = ZDPM
3177      ZABLY(JL,12,JKK) = ZXOZ(JL) * ZDPM
3178      ZABLY(JL,13,JKK) = ZXOZ(JL) * ZUPMO3
3179      ZU6 = ZXWV(JL) * ZUPM
3180      ZFPPW = 1.6078 * ZXWV(JL) / (1.+0.608*ZXWV(JL))
3181      ZABLY(JL,6,JKK) = ZXWV(JL) * ZUPMH2O
3182      ZABLY(JL,11,JKK) = ZU6 * ZFPPW
3183      ZABLY(JL,10,JKK) = ZU6 * (1.-ZFPPW)
3184      ZABLY(JL,9,JKK) = RCO2 * ZUPMCO2
3185      ZABLY(JL,8,JKK) = RCO2 * ZDPM
3186 404  CONTINUE
3187 405  CONTINUE
3188 406  CONTINUE
3189C
3190C-----------------------------------------------------------------------
3191C
3192C
3193C*         5.    CUMULATIVE ABSORBER AMOUNTS FROM TOP OF ATMOSPHERE
3194C                --------------------------------------------------
3195C
3196 500  CONTINUE
3197C
3198      DO 502 JA = 1, NUA
3199      DO 501 JL = 1, KDLON
3200      PABCU(JL,JA,3*KFLEV+1) = 0.
3201  501 CONTINUE
3202  502 CONTINUE
3203C
3204      DO 529 JK = 1 , KFLEV
3205      JJ=(JK-1)*NG1P1+1
3206      JJPN=JJ+NG1
3207      JKL=KFLEV+1-JK
3208C
3209C
3210C*         5.1  CUMULATIVE AEROSOL AMOUNTS FROM TOP OF ATMOSPHERE
3211C               --------------------------------------------------
3212C
3213 510  CONTINUE
3214C
3215      JAE1=3*KFLEV+1-JJ
3216      JAE2=3*KFLEV+1-(JJ+1)
3217      JAE3=3*KFLEV+1-JJPN
3218      DO 512 JAE=1,5
3219      DO 511 JL = 1, KDLON
3220      ZUAER(JL,JAE) = (RAER(JAE,1)*PAER(JL,JKL,1)
3221     S      +RAER(JAE,2)*PAER(JL,JKL,2)+RAER(JAE,3)*PAER(JL,JKL,3)
3222     S      +RAER(JAE,4)*PAER(JL,JKL,4)+RAER(JAE,5)*PAER(JL,JKL,5))
3223     S      /(ZDUC(JL,JAE1)+ZDUC(JL,JAE2)+ZDUC(JL,JAE3))
3224 511  CONTINUE
3225 512  CONTINUE
3226C
3227C
3228C
3229C*         5.2  INTRODUCES TEMPERATURE EFFECTS ON ABSORBER AMOUNTS
3230C               --------------------------------------------------
3231C
3232 520  CONTINUE
3233C
3234      DO 521 JL = 1, KDLON
3235      ZTAVI(JL)=PTAVE(JL,JKL)
3236      ZTCON(JL)=EXP(6.08*(296./ZTAVI(JL)-1.))
3237      ZTX=ZTAVI(JL)-TREF
3238      ZTX2=ZTX*ZTX
3239      ZZABLY = ZABLY(JL,6,JAE1)+ZABLY(JL,6,JAE2)+ZABLY(JL,6,JAE3)
3240CMAF      ZUP=MIN( MAX( 0.5*R10E*LOG( ZZABLY ) + 5., 0.), 6.0)
3241      ZUP=MIN( MAX( 0.5*R10E*LOG( ZZABLY ) + 5., 0.d+0), 6.d+0)
3242      ZCAH1=AT(1,1)+ZUP*(AT(1,2)+ZUP*(AT(1,3)))
3243      ZCBH1=BT(1,1)+ZUP*(BT(1,2)+ZUP*(BT(1,3)))
3244      ZPSH1(JL)=EXP( ZCAH1 * ZTX + ZCBH1 * ZTX2 )
3245      ZCAH2=AT(2,1)+ZUP*(AT(2,2)+ZUP*(AT(2,3)))
3246      ZCBH2=BT(2,1)+ZUP*(BT(2,2)+ZUP*(BT(2,3)))
3247      ZPSH2(JL)=EXP( ZCAH2 * ZTX + ZCBH2 * ZTX2 )
3248      ZCAH3=AT(3,1)+ZUP*(AT(3,2)+ZUP*(AT(3,3)))
3249      ZCBH3=BT(3,1)+ZUP*(BT(3,2)+ZUP*(BT(3,3)))
3250      ZPSH3(JL)=EXP( ZCAH3 * ZTX + ZCBH3 * ZTX2 )
3251      ZCAH4=AT(4,1)+ZUP*(AT(4,2)+ZUP*(AT(4,3)))
3252      ZCBH4=BT(4,1)+ZUP*(BT(4,2)+ZUP*(BT(4,3)))
3253      ZPSH4(JL)=EXP( ZCAH4 * ZTX + ZCBH4 * ZTX2 )
3254      ZCAH5=AT(5,1)+ZUP*(AT(5,2)+ZUP*(AT(5,3)))
3255      ZCBH5=BT(5,1)+ZUP*(BT(5,2)+ZUP*(BT(5,3)))
3256      ZPSH5(JL)=EXP( ZCAH5 * ZTX + ZCBH5 * ZTX2 )
3257      ZCAH6=AT(6,1)+ZUP*(AT(6,2)+ZUP*(AT(6,3)))
3258      ZCBH6=BT(6,1)+ZUP*(BT(6,2)+ZUP*(BT(6,3)))
3259      ZPSH6(JL)=EXP( ZCAH6 * ZTX + ZCBH6 * ZTX2 )
3260      ZPHM6(JL)=EXP(-5.81E-4 * ZTX - 1.13E-6 * ZTX2 )
3261      ZPSM6(JL)=EXP(-5.57E-4 * ZTX - 3.30E-6 * ZTX2 )
3262      ZPHN6(JL)=EXP(-3.46E-5 * ZTX + 2.05E-7 * ZTX2 )
3263      ZPSN6(JL)=EXP( 3.70E-3 * ZTX - 2.30E-6 * ZTX2 )
3264 521  CONTINUE
3265C
3266      DO 522 JL = 1, KDLON
3267      ZTAVI(JL)=PTAVE(JL,JKL)
3268      ZTX=ZTAVI(JL)-TREF
3269      ZTX2=ZTX*ZTX
3270      ZZABLY = ZABLY(JL,9,JAE1)+ZABLY(JL,9,JAE2)+ZABLY(JL,9,JAE3)
3271      ZALUP = R10E * LOG ( ZZABLY )
3272CMAF      ZUP   = MAX( 0.0 , 5.0 + 0.5 * ZALUP )
3273      ZUP   = MAX( 0.d+0 , 5.0 + 0.5 * ZALUP )
3274      ZPSC2(JL) = (ZTAVI(JL)/TREF) ** ZUP
3275      ZCAC8=AT(8,1)+ZUP*(AT(8,2)+ZUP*(AT(8,3)))
3276      ZCBC8=BT(8,1)+ZUP*(BT(8,2)+ZUP*(BT(8,3)))
3277      ZPSC3(JL)=EXP( ZCAC8 * ZTX + ZCBC8 * ZTX2 )
3278      ZPHIO(JL) = EXP( OCT(1) * ZTX + OCT(2) * ZTX2)
3279      ZPSIO(JL) = EXP( 2.* (OCT(3)*ZTX+OCT(4)*ZTX2))
3280 522  CONTINUE
3281C
3282      DO 524 JKK=JJ,JJPN
3283      JC=3*KFLEV+1-JKK
3284      JCP1=JC+1
3285      DO 523 JL = 1, KDLON
3286      ZDIFF = PVIEW(JL)
3287      PABCU(JL,10,JC)=PABCU(JL,10,JCP1)
3288     S                +ZABLY(JL,10,JC)           *ZDIFF
3289      PABCU(JL,11,JC)=PABCU(JL,11,JCP1)
3290     S                +ZABLY(JL,11,JC)*ZTCON(JL)*ZDIFF
3291C
3292      PABCU(JL,12,JC)=PABCU(JL,12,JCP1)
3293     S                +ZABLY(JL,12,JC)*ZPHIO(JL)*ZDIFF
3294      PABCU(JL,13,JC)=PABCU(JL,13,JCP1)
3295     S                +ZABLY(JL,13,JC)*ZPSIO(JL)*ZDIFF
3296C
3297      PABCU(JL,7,JC)=PABCU(JL,7,JCP1)
3298     S               +ZABLY(JL,9,JC)*ZPSC2(JL)*ZDIFF
3299      PABCU(JL,8,JC)=PABCU(JL,8,JCP1)
3300     S               +ZABLY(JL,9,JC)*ZPSC3(JL)*ZDIFF
3301      PABCU(JL,9,JC)=PABCU(JL,9,JCP1)
3302     S               +ZABLY(JL,9,JC)*ZPSC3(JL)*ZDIFF
3303C
3304      PABCU(JL,1,JC)=PABCU(JL,1,JCP1)
3305     S               +ZABLY(JL,6,JC)*ZPSH1(JL)*ZDIFF
3306      PABCU(JL,2,JC)=PABCU(JL,2,JCP1)
3307     S               +ZABLY(JL,6,JC)*ZPSH2(JL)*ZDIFF
3308      PABCU(JL,3,JC)=PABCU(JL,3,JCP1)
3309     S               +ZABLY(JL,6,JC)*ZPSH5(JL)*ZDIFF
3310      PABCU(JL,4,JC)=PABCU(JL,4,JCP1)
3311     S               +ZABLY(JL,6,JC)*ZPSH3(JL)*ZDIFF
3312      PABCU(JL,5,JC)=PABCU(JL,5,JCP1)
3313     S               +ZABLY(JL,6,JC)*ZPSH4(JL)*ZDIFF
3314      PABCU(JL,6,JC)=PABCU(JL,6,JCP1)
3315     S               +ZABLY(JL,6,JC)*ZPSH6(JL)*ZDIFF
3316C
3317      PABCU(JL,14,JC)=PABCU(JL,14,JCP1)
3318     S                +ZUAER(JL,1)    *ZDUC(JL,JC)*ZDIFF
3319      PABCU(JL,15,JC)=PABCU(JL,15,JCP1)
3320     S                +ZUAER(JL,2)    *ZDUC(JL,JC)*ZDIFF
3321      PABCU(JL,16,JC)=PABCU(JL,16,JCP1)
3322     S                +ZUAER(JL,3)    *ZDUC(JL,JC)*ZDIFF
3323      PABCU(JL,17,JC)=PABCU(JL,17,JCP1)
3324     S                +ZUAER(JL,4)    *ZDUC(JL,JC)*ZDIFF
3325      PABCU(JL,18,JC)=PABCU(JL,18,JCP1)
3326     S                +ZUAER(JL,5)    *ZDUC(JL,JC)*ZDIFF
3327C
3328      PABCU(JL,19,JC)=PABCU(JL,19,JCP1)
3329     S               +ZABLY(JL,8,JC)*RCH4/RCO2*ZPHM6(JL)*ZDIFF
3330      PABCU(JL,20,JC)=PABCU(JL,20,JCP1)
3331     S               +ZABLY(JL,9,JC)*RCH4/RCO2*ZPSM6(JL)*ZDIFF
3332      PABCU(JL,21,JC)=PABCU(JL,21,JCP1)
3333     S               +ZABLY(JL,8,JC)*RN2O/RCO2*ZPHN6(JL)*ZDIFF
3334      PABCU(JL,22,JC)=PABCU(JL,22,JCP1)
3335     S               +ZABLY(JL,9,JC)*RN2O/RCO2*ZPSN6(JL)*ZDIFF
3336C
3337      PABCU(JL,23,JC)=PABCU(JL,23,JCP1)
3338     S               +ZABLY(JL,8,JC)*RCFC11/RCO2         *ZDIFF
3339      PABCU(JL,24,JC)=PABCU(JL,24,JCP1)
3340     S               +ZABLY(JL,8,JC)*RCFC12/RCO2         *ZDIFF
3341 523  CONTINUE
3342 524  CONTINUE
3343C
3344 529  CONTINUE
3345C
3346C
3347      RETURN
3348      END
3349      SUBROUTINE LWBV(KLIM,PDP,PDT0,PEMIS,PPMB,PTL,PTAVE,PABCU,
3350     S                PFLUC,PBINT,PBSUI,PCTS,PCNTRB)
3351      IMPLICIT none
3352#include "dimensions.h"
3353#include "dimphy.h"
3354#include "raddim.h"
3355#include "raddimlw.h"
3356#include "YOMCST.h"
3357C
3358C     PURPOSE.
3359C     --------
3360C           TO COMPUTE THE PLANCK FUNCTION AND PERFORM THE
3361C           VERTICAL INTEGRATION. SPLIT OUT FROM LW FOR MEMORY
3362C           SAVING
3363C
3364C     METHOD.
3365C     -------
3366C
3367C          1. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
3368C     GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
3369C          2. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
3370C     TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
3371C     BOUNDARIES.
3372C          3. COMPUTES THE CLEAR-SKY COOLING RATES.
3373C
3374C     REFERENCE.
3375C     ----------
3376C
3377C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
3378C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
3379C
3380C     AUTHOR.
3381C     -------
3382C        JEAN-JACQUES MORCRETTE  *ECMWF*
3383C
3384C     MODIFICATIONS.
3385C     --------------
3386C        ORIGINAL : 89-07-14
3387C        MODIFICATION : 93-10-15 M.HAMRUD (SPLIT OUT FROM LW TO SAVE
3388C                                          MEMORY)
3389C-----------------------------------------------------------------------
3390C* ARGUMENTS:
3391      INTEGER KLIM
3392C
3393      REAL*8 PDP(KDLON,KFLEV)
3394      REAL*8 PDT0(KDLON)
3395      REAL*8 PEMIS(KDLON)
3396      REAL*8 PPMB(KDLON,KFLEV+1)
3397      REAL*8 PTL(KDLON,KFLEV+1)
3398      REAL*8 PTAVE(KDLON,KFLEV)
3399C
3400      REAL*8 PFLUC(KDLON,2,KFLEV+1)
3401C     
3402      REAL*8 PABCU(KDLON,NUA,3*KFLEV+1)
3403      REAL*8 PBINT(KDLON,KFLEV+1)
3404      REAL*8 PBSUI(KDLON)
3405      REAL*8 PCTS(KDLON,KFLEV)
3406      REAL*8 PCNTRB(KDLON,KFLEV+1,KFLEV+1)
3407C
3408C-------------------------------------------------------------------------
3409C
3410C* LOCAL VARIABLES:
3411      REAL*8 ZB(KDLON,Ninter,KFLEV+1)
3412      REAL*8 ZBSUR(KDLON,Ninter)
3413      REAL*8 ZBTOP(KDLON,Ninter)
3414      REAL*8 ZDBSL(KDLON,Ninter,KFLEV*2)
3415      REAL*8 ZGA(KDLON,8,2,KFLEV)
3416      REAL*8 ZGB(KDLON,8,2,KFLEV)
3417      REAL*8 ZGASUR(KDLON,8,2)
3418      REAL*8 ZGBSUR(KDLON,8,2)
3419      REAL*8 ZGATOP(KDLON,8,2)
3420      REAL*8 ZGBTOP(KDLON,8,2)
3421C
3422      INTEGER nuaer, ntraer
3423C     ------------------------------------------------------------------
3424C* COMPUTES PLANCK FUNCTIONS:
3425       CALL LWB(PDT0,PTAVE,PTL,
3426     S          ZB,PBINT,PBSUI,ZBSUR,ZBTOP,ZDBSL,
3427     S          ZGA,ZGB,ZGASUR,ZGBSUR,ZGATOP,ZGBTOP)
3428C     ------------------------------------------------------------------
3429C* PERFORMS THE VERTICAL INTEGRATION:
3430      NUAER = NUA
3431      NTRAER = NTRA
3432      CALL LWV(NUAER,NTRAER, KLIM
3433     R  , PABCU,ZB,PBINT,PBSUI,ZBSUR,ZBTOP,ZDBSL,PEMIS,PPMB,PTAVE
3434     R  , ZGA,ZGB,ZGASUR,ZGBSUR,ZGATOP,ZGBTOP
3435     S  , PCNTRB,PCTS,PFLUC)
3436C     ------------------------------------------------------------------
3437      RETURN
3438      END
3439      SUBROUTINE LWC(KLIM,PCLDLD,PCLDLU,PEMIS,PFLUC,
3440     R               PBINT,PBSUIN,PCTS,PCNTRB,
3441     S               PFLUX)
3442      IMPLICIT none
3443#include "dimensions.h"
3444#include "dimphy.h"
3445#include "raddim.h"
3446#include "radepsi.h"
3447#include "radopt.h"
3448C
3449C     PURPOSE.
3450C     --------
3451C           INTRODUCES CLOUD EFFECTS ON LONGWAVE FLUXES OR
3452C           RADIANCES
3453C
3454C        EXPLICIT ARGUMENTS :
3455C        --------------------
3456C     ==== INPUTS ===
3457C PBINT  : (KDLON,0:KFLEV)     ; HALF LEVEL PLANCK FUNCTION
3458C PBSUIN : (KDLON)             ; SURFACE PLANCK FUNCTION
3459C PCLDLD : (KDLON,KFLEV)       ; DOWNWARD EFFECTIVE CLOUD FRACTION
3460C PCLDLU : (KDLON,KFLEV)       ; UPWARD EFFECTIVE CLOUD FRACTION
3461C PCNTRB : (KDLON,KFLEV+1,KFLEV+1); CLEAR-SKY ENERGY EXCHANGE
3462C PCTS   : (KDLON,KFLEV)       ; CLEAR-SKY LAYER COOLING-TO-SPACE
3463C PEMIS  : (KDLON)             ; SURFACE EMISSIVITY
3464C PFLUC
3465C     ==== OUTPUTS ===
3466C PFLUX(KDLON,2,KFLEV)         ; RADIATIVE FLUXES :
3467C                     1  ==>  UPWARD   FLUX TOTAL
3468C                     2  ==>  DOWNWARD FLUX TOTAL
3469C
3470C     METHOD.
3471C     -------
3472C
3473C          1. INITIALIZES ALL FLUXES TO CLEAR-SKY VALUES
3474C          2. EFFECT OF ONE OVERCAST UNITY EMISSIVITY CLOUD LAYER
3475C          3. EFFECT OF SEMI-TRANSPARENT, PARTIAL OR MULTI-LAYERED
3476C     CLOUDS
3477C
3478C     REFERENCE.
3479C     ----------
3480C
3481C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
3482C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
3483C
3484C     AUTHOR.
3485C     -------
3486C        JEAN-JACQUES MORCRETTE  *ECMWF*
3487C
3488C     MODIFICATIONS.
3489C     --------------
3490C        ORIGINAL : 89-07-14
3491C        Voigt lines (loop 231 to 233)  - JJM & PhD - 01/96
3492C-----------------------------------------------------------------------
3493C* ARGUMENTS:
3494      INTEGER klim
3495      REAL*8 PFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES
3496      REAL*8 PBINT(KDLON,KFLEV+1)   ! HALF LEVEL PLANCK FUNCTION
3497      REAL*8 PBSUIN(KDLON)          ! SURFACE PLANCK FUNCTION
3498      REAL*8 PCNTRB(KDLON,KFLEV+1,KFLEV+1) !CLEAR-SKY ENERGY EXCHANGE
3499      REAL*8 PCTS(KDLON,KFLEV)      ! CLEAR-SKY LAYER COOLING-TO-SPACE
3500c
3501      REAL*8 PCLDLD(KDLON,KFLEV)
3502      REAL*8 PCLDLU(KDLON,KFLEV)
3503      REAL*8 PEMIS(KDLON)
3504C
3505      REAL*8 PFLUX(KDLON,2,KFLEV+1)
3506C-----------------------------------------------------------------------
3507C* LOCAL VARIABLES:
3508      INTEGER IMX(KDLON), IMXP(KDLON)
3509C
3510      REAL*8 ZCLEAR(KDLON),ZCLOUD(KDLON),ZDNF(KDLON,KFLEV+1,KFLEV+1)
3511     S  , ZFD(KDLON), ZFN10(KDLON), ZFU(KDLON)
3512     S  , ZUPF(KDLON,KFLEV+1,KFLEV+1)
3513      REAL*8 ZCLM(KDLON,KFLEV+1,KFLEV+1)
3514C
3515      INTEGER jk, jl, imaxc, imx1, imx2, jkj, jkp1, jkm1
3516      INTEGER jk1, jk2, jkc, jkcp1, jcloud
3517      INTEGER imxm1, imxp1
3518      REAL*8 zcfrac
3519C     ------------------------------------------------------------------
3520C
3521C*         1.     INITIALIZATION
3522C                 --------------
3523C
3524 100  CONTINUE
3525C
3526      IMAXC = 0
3527C
3528      DO 101 JL = 1, KDLON
3529      IMX(JL)=0
3530      IMXP(JL)=0
3531      ZCLOUD(JL) = 0.
3532 101  CONTINUE
3533C
3534C*         1.1    SEARCH THE LAYER INDEX OF THE HIGHEST CLOUD
3535C                 -------------------------------------------
3536C
3537 110  CONTINUE
3538C
3539      DO 112 JK = 1 , KFLEV
3540      DO 111 JL = 1, KDLON
3541      IMX1=IMX(JL)
3542      IMX2=JK
3543      IF (PCLDLU(JL,JK).GT.ZEPSC) THEN
3544         IMXP(JL)=IMX2
3545      ELSE
3546         IMXP(JL)=IMX1
3547      END IF
3548      IMAXC=MAX(IMXP(JL),IMAXC)
3549      IMX(JL)=IMXP(JL)
3550 111  CONTINUE
3551 112  CONTINUE
3552CGM*******
3553      IMAXC=KFLEV
3554CGM*******
3555C
3556      DO 114 JK = 1 , KFLEV+1
3557      DO 113 JL = 1, KDLON
3558      PFLUX(JL,1,JK) = PFLUC(JL,1,JK)
3559      PFLUX(JL,2,JK) = PFLUC(JL,2,JK)
3560 113  CONTINUE
3561 114  CONTINUE
3562C
3563C     ------------------------------------------------------------------
3564C
3565C*         2.      EFFECT OF CLOUDINESS ON LONGWAVE FLUXES
3566C                  ---------------------------------------
3567C
3568      IF (IMAXC.GT.0) THEN
3569C
3570         IMXP1 = IMAXC + 1
3571         IMXM1 = IMAXC - 1
3572C
3573C*         2.0     INITIALIZE TO CLEAR-SKY FLUXES
3574C                  ------------------------------
3575C
3576 200  CONTINUE
3577C
3578         DO 203 JK1=1,KFLEV+1
3579         DO 202 JK2=1,KFLEV+1
3580         DO 201 JL = 1, KDLON
3581         ZUPF(JL,JK2,JK1)=PFLUC(JL,1,JK1)
3582         ZDNF(JL,JK2,JK1)=PFLUC(JL,2,JK1)
3583 201     CONTINUE
3584 202     CONTINUE
3585 203     CONTINUE
3586C
3587C*         2.1     FLUXES FOR ONE OVERCAST UNITY EMISSIVITY CLOUD
3588C                  ----------------------------------------------
3589C
3590 210  CONTINUE
3591C
3592         DO 213 JKC = 1 , IMAXC
3593         JCLOUD=JKC
3594         JKCP1=JCLOUD+1
3595C
3596C*         2.1.1   ABOVE THE CLOUD
3597C                  ---------------
3598C
3599 2110 CONTINUE
3600C
3601         DO 2115 JK=JKCP1,KFLEV+1
3602         JKM1=JK-1
3603         DO 2111 JL = 1, KDLON
3604         ZFU(JL)=0.
3605 2111    CONTINUE
3606         IF (JK .GT. JKCP1) THEN
3607            DO 2113 JKJ=JKCP1,JKM1
3608            DO 2112 JL = 1, KDLON
3609            ZFU(JL) = ZFU(JL) + PCNTRB(JL,JK,JKJ)
3610 2112       CONTINUE
3611 2113       CONTINUE
3612         END IF
3613C
3614         DO 2114 JL = 1, KDLON
3615         ZUPF(JL,JKCP1,JK)=PBINT(JL,JK)-ZFU(JL)
3616 2114    CONTINUE
3617 2115    CONTINUE
3618C
3619C*         2.1.2   BELOW THE CLOUD
3620C                  ---------------
3621C
3622 2120 CONTINUE
3623C
3624         DO 2125 JK=1,JCLOUD
3625         JKP1=JK+1
3626         DO 2121 JL = 1, KDLON
3627         ZFD(JL)=0.
3628 2121    CONTINUE
3629C
3630         IF (JK .LT. JCLOUD) THEN
3631            DO 2123 JKJ=JKP1,JCLOUD
3632            DO 2122 JL = 1, KDLON
3633            ZFD(JL) = ZFD(JL) + PCNTRB(JL,JK,JKJ)
3634 2122       CONTINUE
3635 2123       CONTINUE
3636         END IF
3637         DO 2124 JL = 1, KDLON
3638         ZDNF(JL,JKCP1,JK)=-PBINT(JL,JK)-ZFD(JL)
3639 2124    CONTINUE
3640 2125    CONTINUE
3641C
3642 213     CONTINUE
3643C
3644C
3645C*         2.2     CLOUD COVER MATRIX
3646C                  ------------------
3647C
3648C*    ZCLM(JK1,JK2) IS THE OBSCURATION FACTOR BY CLOUD LAYERS BETWEEN
3649C     HALF-LEVELS JK1 AND JK2 AS SEEN FROM JK1
3650C
3651 220  CONTINUE
3652C
3653      DO 223 JK1 = 1 , KFLEV+1
3654      DO 222 JK2 = 1 , KFLEV+1
3655      DO 221 JL = 1, KDLON
3656      ZCLM(JL,JK1,JK2) = 0.
3657 221  CONTINUE
3658 222  CONTINUE
3659 223  CONTINUE
3660C
3661C
3662C
3663C*         2.4     CLOUD COVER BELOW THE LEVEL OF CALCULATION
3664C                  ------------------------------------------
3665C
3666 240  CONTINUE
3667C
3668      DO 244 JK1 = 2 , KFLEV+1
3669      DO 241 JL = 1, KDLON
3670      ZCLEAR(JL)=1.
3671      ZCLOUD(JL)=0.
3672 241  CONTINUE
3673      DO 243 JK = JK1 - 1 , 1 , -1
3674      DO 242 JL = 1, KDLON
3675      IF (NOVLP.EQ.1) THEN
3676c* maximum-random       
3677         ZCLEAR(JL)=ZCLEAR(JL)*(1.0-MAX(PCLDLU(JL,JK),ZCLOUD(JL)))
3678     *                        /(1.0-MIN(ZCLOUD(JL),1.-ZEPSEC))
3679         ZCLM(JL,JK1,JK) = 1.0 - ZCLEAR(JL)
3680         ZCLOUD(JL) = PCLDLU(JL,JK)
3681      ELSE IF (NOVLP.EQ.2) THEN
3682c* maximum     
3683         ZCLOUD(JL) = MAX(ZCLOUD(JL) , PCLDLU(JL,JK))
3684         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
3685      ELSE IF (NOVLP.EQ.3) THEN
3686c* random     
3687         ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - PCLDLU(JL,JK))
3688         ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
3689         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
3690      END IF
3691 242  CONTINUE
3692 243  CONTINUE
3693 244  CONTINUE
3694C
3695C
3696C*         2.5     CLOUD COVER ABOVE THE LEVEL OF CALCULATION
3697C                  ------------------------------------------
3698C
3699 250  CONTINUE
3700C
3701      DO 254 JK1 = 1 , KFLEV
3702      DO 251 JL = 1, KDLON
3703      ZCLEAR(JL)=1.
3704      ZCLOUD(JL)=0.
3705 251  CONTINUE
3706      DO 253 JK = JK1 , KFLEV
3707      DO 252 JL = 1, KDLON
3708      IF (NOVLP.EQ.1) THEN
3709c* maximum-random       
3710         ZCLEAR(JL)=ZCLEAR(JL)*(1.0-MAX(PCLDLD(JL,JK),ZCLOUD(JL)))
3711     *                        /(1.0-MIN(ZCLOUD(JL),1.-ZEPSEC))
3712         ZCLM(JL,JK1,JK) = 1.0 - ZCLEAR(JL)
3713         ZCLOUD(JL) = PCLDLD(JL,JK)
3714      ELSE IF (NOVLP.EQ.2) THEN
3715c* maximum     
3716         ZCLOUD(JL) = MAX(ZCLOUD(JL) , PCLDLD(JL,JK))
3717         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
3718      ELSE IF (NOVLP.EQ.3) THEN
3719c* random     
3720         ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - PCLDLD(JL,JK))
3721         ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
3722         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
3723      END IF
3724 252  CONTINUE
3725 253  CONTINUE
3726 254  CONTINUE
3727C
3728C
3729C
3730C*         3.      FLUXES FOR PARTIAL/MULTIPLE LAYERED CLOUDINESS
3731C                  ----------------------------------------------
3732C
3733 300  CONTINUE
3734C
3735C*         3.1     DOWNWARD FLUXES
3736C                  ---------------
3737C
3738 310  CONTINUE
3739C
3740      DO 311 JL = 1, KDLON
3741      PFLUX(JL,2,KFLEV+1) = 0.
3742 311  CONTINUE
3743C
3744      DO 317 JK1 = KFLEV , 1 , -1
3745C
3746C*                 CONTRIBUTION FROM CLEAR-SKY FRACTION
3747C
3748      DO 312 JL = 1, KDLON
3749      ZFD (JL) = (1. - ZCLM(JL,JK1,KFLEV)) * ZDNF(JL,1,JK1)
3750 312  CONTINUE
3751C
3752C*                 CONTRIBUTION FROM ADJACENT CLOUD
3753C
3754      DO 313 JL = 1, KDLON
3755      ZFD(JL) = ZFD(JL) + ZCLM(JL,JK1,JK1) * ZDNF(JL,JK1+1,JK1)
3756 313  CONTINUE
3757C
3758C*                 CONTRIBUTION FROM OTHER CLOUDY FRACTIONS
3759C
3760      DO 315 JK = KFLEV-1 , JK1 , -1
3761      DO 314 JL = 1, KDLON
3762      ZCFRAC = ZCLM(JL,JK1,JK+1) - ZCLM(JL,JK1,JK)
3763      ZFD(JL) =  ZFD(JL) + ZCFRAC * ZDNF(JL,JK+2,JK1)
3764 314  CONTINUE
3765 315  CONTINUE
3766C
3767      DO 316 JL = 1, KDLON
3768      PFLUX(JL,2,JK1) = ZFD (JL)
3769 316  CONTINUE
3770C
3771 317  CONTINUE
3772C
3773C
3774C
3775C
3776C*         3.2     UPWARD FLUX AT THE SURFACE
3777C                  --------------------------
3778C
3779 320  CONTINUE
3780C
3781      DO 321 JL = 1, KDLON
3782      PFLUX(JL,1,1) = PEMIS(JL)*PBSUIN(JL)-(1.-PEMIS(JL))*PFLUX(JL,2,1)
3783 321  CONTINUE
3784C
3785C
3786C
3787C*         3.3     UPWARD FLUXES
3788C                  -------------
3789C
3790 330  CONTINUE
3791C
3792      DO 337 JK1 = 2 , KFLEV+1
3793C
3794C*                 CONTRIBUTION FROM CLEAR-SKY FRACTION
3795C
3796      DO 332 JL = 1, KDLON
3797      ZFU (JL) = (1. - ZCLM(JL,JK1,1)) * ZUPF(JL,1,JK1)
3798 332  CONTINUE
3799C
3800C*                 CONTRIBUTION FROM ADJACENT CLOUD
3801C
3802      DO 333 JL = 1, KDLON
3803      ZFU(JL) =  ZFU(JL) + ZCLM(JL,JK1,JK1-1) * ZUPF(JL,JK1,JK1)
3804 333  CONTINUE
3805C
3806C*                 CONTRIBUTION FROM OTHER CLOUDY FRACTIONS
3807C
3808      DO 335 JK = 2 , JK1-1
3809      DO 334 JL = 1, KDLON
3810      ZCFRAC = ZCLM(JL,JK1,JK-1) - ZCLM(JL,JK1,JK)
3811      ZFU(JL) =  ZFU(JL) + ZCFRAC * ZUPF(JL,JK  ,JK1)
3812 334  CONTINUE
3813 335  CONTINUE
3814C
3815      DO 336 JL = 1, KDLON
3816      PFLUX(JL,1,JK1) = ZFU (JL)
3817 336  CONTINUE
3818C
3819 337  CONTINUE
3820C
3821C
3822      END IF
3823C
3824C
3825C*         2.3     END OF CLOUD EFFECT COMPUTATIONS
3826C
3827 230  CONTINUE
3828C
3829      IF (.NOT.LEVOIGT) THEN
3830        DO 231 JL = 1, KDLON
3831        ZFN10(JL) = PFLUX(JL,1,KLIM) + PFLUX(JL,2,KLIM)
3832 231    CONTINUE
3833        DO 233 JK = KLIM+1 , KFLEV+1
3834        DO 232 JL = 1, KDLON
3835        ZFN10(JL) = ZFN10(JL) + PCTS(JL,JK-1)
3836        PFLUX(JL,1,JK) = ZFN10(JL)
3837        PFLUX(JL,2,JK) = 0.0
3838 232    CONTINUE
3839 233    CONTINUE
3840      ENDIF
3841C
3842      RETURN
3843      END
3844      SUBROUTINE LWB(PDT0,PTAVE,PTL
3845     S  , PB,PBINT,PBSUIN,PBSUR,PBTOP,PDBSL
3846     S  , PGA,PGB,PGASUR,PGBSUR,PGATOP,PGBTOP)
3847      IMPLICIT none
3848#include "dimensions.h"
3849#include "dimphy.h"
3850#include "raddim.h"
3851#include "raddimlw.h"
3852C
3853C-----------------------------------------------------------------------
3854C     PURPOSE.
3855C     --------
3856C           COMPUTES PLANCK FUNCTIONS
3857C
3858C        EXPLICIT ARGUMENTS :
3859C        --------------------
3860C     ==== INPUTS ===
3861C PDT0   : (KDLON)             ; SURFACE TEMPERATURE DISCONTINUITY
3862C PTAVE  : (KDLON,KFLEV)       ; TEMPERATURE
3863C PTL    : (KDLON,0:KFLEV)     ; HALF LEVEL TEMPERATURE
3864C     ==== OUTPUTS ===
3865C PB     : (KDLON,Ninter,KFLEV+1); SPECTRAL HALF LEVEL PLANCK FUNCTION
3866C PBINT  : (KDLON,KFLEV+1)     ; HALF LEVEL PLANCK FUNCTION
3867C PBSUIN : (KDLON)             ; SURFACE PLANCK FUNCTION
3868C PBSUR  : (KDLON,Ninter)        ; SURFACE SPECTRAL PLANCK FUNCTION
3869C PBTOP  : (KDLON,Ninter)        ; TOP SPECTRAL PLANCK FUNCTION
3870C PDBSL  : (KDLON,Ninter,KFLEV*2); SUB-LAYER PLANCK FUNCTION GRADIENT
3871C PGA    : (KDLON,8,2,KFLEV); dB/dT-weighted LAYER PADE APPROXIMANTS
3872C PGB    : (KDLON,8,2,KFLEV); dB/dT-weighted LAYER PADE APPROXIMANTS
3873C PGASUR, PGBSUR (KDLON,8,2)   ; SURFACE PADE APPROXIMANTS
3874C PGATOP, PGBTOP (KDLON,8,2)   ; T.O.A. PADE APPROXIMANTS
3875C
3876C        IMPLICIT ARGUMENTS :   NONE
3877C        --------------------
3878C
3879C     METHOD.
3880C     -------
3881C
3882C          1. COMPUTES THE PLANCK FUNCTION ON ALL LEVELS AND HALF LEVELS
3883C     FROM A POLYNOMIAL DEVELOPMENT OF PLANCK FUNCTION
3884C
3885C     REFERENCE.
3886C     ----------
3887C
3888C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
3889C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS           "
3890C
3891C     AUTHOR.
3892C     -------
3893C        JEAN-JACQUES MORCRETTE  *ECMWF*
3894C
3895C     MODIFICATIONS.
3896C     --------------
3897C        ORIGINAL : 89-07-14
3898C
3899C-----------------------------------------------------------------------
3900C
3901C ARGUMENTS:
3902C
3903      REAL*8 PDT0(KDLON)
3904      REAL*8 PTAVE(KDLON,KFLEV)
3905      REAL*8 PTL(KDLON,KFLEV+1)
3906C
3907      REAL*8 PB(KDLON,Ninter,KFLEV+1) ! SPECTRAL HALF LEVEL PLANCK FUNCTION
3908      REAL*8 PBINT(KDLON,KFLEV+1) ! HALF LEVEL PLANCK FUNCTION
3909      REAL*8 PBSUIN(KDLON) ! SURFACE PLANCK FUNCTION
3910      REAL*8 PBSUR(KDLON,Ninter) ! SURFACE SPECTRAL PLANCK FUNCTION
3911      REAL*8 PBTOP(KDLON,Ninter) ! TOP SPECTRAL PLANCK FUNCTION
3912      REAL*8 PDBSL(KDLON,Ninter,KFLEV*2) ! SUB-LAYER PLANCK FUNCTION GRADIENT
3913      REAL*8 PGA(KDLON,8,2,KFLEV) ! dB/dT-weighted LAYER PADE APPROXIMANTS
3914      REAL*8 PGB(KDLON,8,2,KFLEV) ! dB/dT-weighted LAYER PADE APPROXIMANTS
3915      REAL*8 PGASUR(KDLON,8,2) ! SURFACE PADE APPROXIMANTS
3916      REAL*8 PGBSUR(KDLON,8,2) ! SURFACE PADE APPROXIMANTS
3917      REAL*8 PGATOP(KDLON,8,2) ! T.O.A. PADE APPROXIMANTS
3918      REAL*8 PGBTOP(KDLON,8,2) ! T.O.A. PADE APPROXIMANTS
3919C
3920C-------------------------------------------------------------------------
3921C*  LOCAL VARIABLES:
3922      INTEGER INDB(KDLON),INDS(KDLON)
3923      REAL*8 ZBLAY(KDLON,KFLEV),ZBLEV(KDLON,KFLEV+1)
3924      REAL*8 ZRES(KDLON),ZRES2(KDLON),ZTI(KDLON),ZTI2(KDLON)
3925c
3926      INTEGER jk, jl, ic, jnu, jf, jg
3927      INTEGER jk1, jk2
3928      INTEGER k, j, ixtox, indto, ixtx, indt
3929      INTEGER indsu, indtp
3930      REAL*8 zdsto1, zdstox, zdst1, zdstx
3931c
3932C* Quelques parametres:
3933      REAL*8 TSTAND
3934      PARAMETER (TSTAND=250.0)
3935      REAL*8 TSTP
3936      PARAMETER (TSTP=12.5)
3937      INTEGER MXIXT
3938      PARAMETER (MXIXT=10)
3939C
3940C* Used Data Block:
3941      REAL*8 TINTP(11)
3942      SAVE TINTP
3943      REAL*8 GA(11,16,3), GB(11,16,3)
3944      SAVE GA, GB
3945      REAL*8 XP(6,6)
3946      SAVE XP
3947c
3948      DATA TINTP / 187.5, 200., 212.5, 225., 237.5, 250.,
3949     S             262.5, 275., 287.5, 300., 312.5 /
3950C-----------------------------------------------------------------------
3951C-- WATER VAPOR -- INT.1 -- 0- 500 CM-1 -- FROM ABS225 ----------------
3952C
3953C
3954C
3955C
3956C-- R.D. -- G = - 0.2 SLA
3957C
3958C
3959C----- INTERVAL = 1 ----- T =  187.5
3960C
3961C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3962      DATA (GA( 1, 1,IC),IC=1,3) /
3963     S 0.63499072E-02,-0.99506586E-03, 0.00000000E+00/
3964      DATA (GB( 1, 1,IC),IC=1,3) /
3965     S 0.63499072E-02, 0.97222852E-01, 0.10000000E+01/
3966      DATA (GA( 1, 2,IC),IC=1,3) /
3967     S 0.77266491E-02,-0.11661515E-02, 0.00000000E+00/
3968      DATA (GB( 1, 2,IC),IC=1,3) /
3969     S 0.77266491E-02, 0.10681591E+00, 0.10000000E+01/
3970C
3971C----- INTERVAL = 1 ----- T =  200.0
3972C
3973C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3974      DATA (GA( 2, 1,IC),IC=1,3) /
3975     S 0.65566348E-02,-0.10184169E-02, 0.00000000E+00/
3976      DATA (GB( 2, 1,IC),IC=1,3) /
3977     S 0.65566348E-02, 0.98862238E-01, 0.10000000E+01/
3978      DATA (GA( 2, 2,IC),IC=1,3) /
3979     S 0.81323287E-02,-0.11886130E-02, 0.00000000E+00/
3980      DATA (GB( 2, 2,IC),IC=1,3) /
3981     S 0.81323287E-02, 0.10921298E+00, 0.10000000E+01/
3982C
3983C----- INTERVAL = 1 ----- T =  212.5
3984C
3985C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3986      DATA (GA( 3, 1,IC),IC=1,3) /
3987     S 0.67849730E-02,-0.10404730E-02, 0.00000000E+00/
3988      DATA (GB( 3, 1,IC),IC=1,3) /
3989     S 0.67849730E-02, 0.10061504E+00, 0.10000000E+01/
3990      DATA (GA( 3, 2,IC),IC=1,3) /
3991     S 0.86507620E-02,-0.12139929E-02, 0.00000000E+00/
3992      DATA (GB( 3, 2,IC),IC=1,3) /
3993     S 0.86507620E-02, 0.11198225E+00, 0.10000000E+01/
3994C
3995C----- INTERVAL = 1 ----- T =  225.0
3996C
3997C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3998      DATA (GA( 4, 1,IC),IC=1,3) /
3999     S 0.70481947E-02,-0.10621792E-02, 0.00000000E+00/
4000      DATA (GB( 4, 1,IC),IC=1,3) /
4001     S 0.70481947E-02, 0.10256222E+00, 0.10000000E+01/
4002      DATA (GA( 4, 2,IC),IC=1,3) /
4003     S 0.92776391E-02,-0.12445811E-02, 0.00000000E+00/
4004      DATA (GB( 4, 2,IC),IC=1,3) /
4005     S 0.92776391E-02, 0.11487826E+00, 0.10000000E+01/
4006C
4007C----- INTERVAL = 1 ----- T =  237.5
4008C
4009C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4010      DATA (GA( 5, 1,IC),IC=1,3) /
4011     S 0.73585943E-02,-0.10847662E-02, 0.00000000E+00/
4012      DATA (GB( 5, 1,IC),IC=1,3) /
4013     S 0.73585943E-02, 0.10475952E+00, 0.10000000E+01/
4014      DATA (GA( 5, 2,IC),IC=1,3) /
4015     S 0.99806312E-02,-0.12807672E-02, 0.00000000E+00/
4016      DATA (GB( 5, 2,IC),IC=1,3) /
4017     S 0.99806312E-02, 0.11751113E+00, 0.10000000E+01/
4018C
4019C----- INTERVAL = 1 ----- T =  250.0
4020C
4021C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4022      DATA (GA( 6, 1,IC),IC=1,3) /
4023     S 0.77242818E-02,-0.11094726E-02, 0.00000000E+00/
4024      DATA (GB( 6, 1,IC),IC=1,3) /
4025     S 0.77242818E-02, 0.10720986E+00, 0.10000000E+01/
4026      DATA (GA( 6, 2,IC),IC=1,3) /
4027     S 0.10709803E-01,-0.13208251E-02, 0.00000000E+00/
4028      DATA (GB( 6, 2,IC),IC=1,3) /
4029     S 0.10709803E-01, 0.11951535E+00, 0.10000000E+01/
4030C
4031C----- INTERVAL = 1 ----- T =  262.5
4032C
4033C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4034      DATA (GA( 7, 1,IC),IC=1,3) /
4035     S 0.81472693E-02,-0.11372949E-02, 0.00000000E+00/
4036      DATA (GB( 7, 1,IC),IC=1,3) /
4037     S 0.81472693E-02, 0.10985370E+00, 0.10000000E+01/
4038      DATA (GA( 7, 2,IC),IC=1,3) /
4039     S 0.11414739E-01,-0.13619034E-02, 0.00000000E+00/
4040      DATA (GB( 7, 2,IC),IC=1,3) /
4041     S 0.11414739E-01, 0.12069945E+00, 0.10000000E+01/
4042C
4043C----- INTERVAL = 1 ----- T =  275.0
4044C
4045C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4046      DATA (GA( 8, 1,IC),IC=1,3) /
4047     S 0.86227527E-02,-0.11687683E-02, 0.00000000E+00/
4048      DATA (GB( 8, 1,IC),IC=1,3) /
4049     S 0.86227527E-02, 0.11257633E+00, 0.10000000E+01/
4050      DATA (GA( 8, 2,IC),IC=1,3) /
4051     S 0.12058772E-01,-0.14014165E-02, 0.00000000E+00/
4052      DATA (GB( 8, 2,IC),IC=1,3) /
4053     S 0.12058772E-01, 0.12108524E+00, 0.10000000E+01/
4054C
4055C----- INTERVAL = 1 ----- T =  287.5
4056C
4057C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4058      DATA (GA( 9, 1,IC),IC=1,3) /
4059     S 0.91396814E-02,-0.12038314E-02, 0.00000000E+00/
4060      DATA (GB( 9, 1,IC),IC=1,3) /
4061     S 0.91396814E-02, 0.11522980E+00, 0.10000000E+01/
4062      DATA (GA( 9, 2,IC),IC=1,3) /
4063     S 0.12623992E-01,-0.14378639E-02, 0.00000000E+00/
4064      DATA (GB( 9, 2,IC),IC=1,3) /
4065     S 0.12623992E-01, 0.12084229E+00, 0.10000000E+01/
4066C
4067C----- INTERVAL = 1 ----- T =  300.0
4068C
4069C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4070      DATA (GA(10, 1,IC),IC=1,3) /
4071     S 0.96825438E-02,-0.12418367E-02, 0.00000000E+00/
4072      DATA (GB(10, 1,IC),IC=1,3) /
4073     S 0.96825438E-02, 0.11766343E+00, 0.10000000E+01/
4074      DATA (GA(10, 2,IC),IC=1,3) /
4075     S 0.13108146E-01,-0.14708488E-02, 0.00000000E+00/
4076      DATA (GB(10, 2,IC),IC=1,3) /
4077     S 0.13108146E-01, 0.12019005E+00, 0.10000000E+01/
4078C
4079C----- INTERVAL = 1 ----- T =  312.5
4080C
4081C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4082      DATA (GA(11, 1,IC),IC=1,3) /
4083     S 0.10233955E-01,-0.12817135E-02, 0.00000000E+00/
4084      DATA (GB(11, 1,IC),IC=1,3) /
4085     S 0.10233955E-01, 0.11975320E+00, 0.10000000E+01/
4086      DATA (GA(11, 2,IC),IC=1,3) /
4087     S 0.13518390E-01,-0.15006791E-02, 0.00000000E+00/
4088      DATA (GB(11, 2,IC),IC=1,3) /
4089     S 0.13518390E-01, 0.11932684E+00, 0.10000000E+01/
4090C
4091C
4092C
4093C--- WATER VAPOR --- INTERVAL 2 -- 500-800 CM-1--- FROM ABS225 ---------
4094C
4095C
4096C
4097C
4098C--- R.D.  ---  G = 0.02 + 0.50 / ( 1 + 4.5 U )
4099C
4100C
4101C----- INTERVAL = 2 ----- T =  187.5
4102C
4103C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4104      DATA (GA( 1, 3,IC),IC=1,3) /
4105     S 0.11644593E+01, 0.41243390E+00, 0.00000000E+00/
4106      DATA (GB( 1, 3,IC),IC=1,3) /
4107     S 0.11644593E+01, 0.10346097E+01, 0.10000000E+01/
4108      DATA (GA( 1, 4,IC),IC=1,3) /
4109     S 0.12006968E+01, 0.48318936E+00, 0.00000000E+00/
4110      DATA (GB( 1, 4,IC),IC=1,3) /
4111     S 0.12006968E+01, 0.10626130E+01, 0.10000000E+01/
4112C
4113C----- INTERVAL = 2 ----- T =  200.0
4114C
4115C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4116      DATA (GA( 2, 3,IC),IC=1,3) /
4117     S 0.11747203E+01, 0.43407282E+00, 0.00000000E+00/
4118      DATA (GB( 2, 3,IC),IC=1,3) /
4119     S 0.11747203E+01, 0.10433655E+01, 0.10000000E+01/
4120      DATA (GA( 2, 4,IC),IC=1,3) /
4121     S 0.12108196E+01, 0.50501827E+00, 0.00000000E+00/
4122      DATA (GB( 2, 4,IC),IC=1,3) /
4123     S 0.12108196E+01, 0.10716026E+01, 0.10000000E+01/
4124C
4125C----- INTERVAL = 2 ----- T =  212.5
4126C
4127C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4128      DATA (GA( 3, 3,IC),IC=1,3) /
4129     S 0.11837872E+01, 0.45331413E+00, 0.00000000E+00/
4130      DATA (GB( 3, 3,IC),IC=1,3) /
4131     S 0.11837872E+01, 0.10511933E+01, 0.10000000E+01/
4132      DATA (GA( 3, 4,IC),IC=1,3) /
4133     S 0.12196717E+01, 0.52409502E+00, 0.00000000E+00/
4134      DATA (GB( 3, 4,IC),IC=1,3) /
4135     S 0.12196717E+01, 0.10795108E+01, 0.10000000E+01/
4136C
4137C----- INTERVAL = 2 ----- T =  225.0
4138C
4139C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4140      DATA (GA( 4, 3,IC),IC=1,3) /
4141     S 0.11918561E+01, 0.47048604E+00, 0.00000000E+00/
4142      DATA (GB( 4, 3,IC),IC=1,3) /
4143     S 0.11918561E+01, 0.10582150E+01, 0.10000000E+01/
4144      DATA (GA( 4, 4,IC),IC=1,3) /
4145     S 0.12274493E+01, 0.54085277E+00, 0.00000000E+00/
4146      DATA (GB( 4, 4,IC),IC=1,3) /
4147     S 0.12274493E+01, 0.10865006E+01, 0.10000000E+01/
4148C
4149C----- INTERVAL = 2 ----- T =  237.5
4150C
4151C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4152      DATA (GA( 5, 3,IC),IC=1,3) /
4153     S 0.11990757E+01, 0.48586286E+00, 0.00000000E+00/
4154      DATA (GB( 5, 3,IC),IC=1,3) /
4155     S 0.11990757E+01, 0.10645317E+01, 0.10000000E+01/
4156      DATA (GA( 5, 4,IC),IC=1,3) /
4157     S 0.12343189E+01, 0.55565422E+00, 0.00000000E+00/
4158      DATA (GB( 5, 4,IC),IC=1,3) /
4159     S 0.12343189E+01, 0.10927103E+01, 0.10000000E+01/
4160C
4161C----- INTERVAL = 2 ----- T =  250.0
4162C
4163C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4164      DATA (GA( 6, 3,IC),IC=1,3) /
4165     S 0.12055643E+01, 0.49968044E+00, 0.00000000E+00/
4166      DATA (GB( 6, 3,IC),IC=1,3) /
4167     S 0.12055643E+01, 0.10702313E+01, 0.10000000E+01/
4168      DATA (GA( 6, 4,IC),IC=1,3) /
4169     S 0.12404147E+01, 0.56878618E+00, 0.00000000E+00/
4170      DATA (GB( 6, 4,IC),IC=1,3) /
4171     S 0.12404147E+01, 0.10982489E+01, 0.10000000E+01/
4172C
4173C----- INTERVAL = 2 ----- T =  262.5
4174C
4175C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4176      DATA (GA( 7, 3,IC),IC=1,3) /
4177     S 0.12114186E+01, 0.51214132E+00, 0.00000000E+00/
4178      DATA (GB( 7, 3,IC),IC=1,3) /
4179     S 0.12114186E+01, 0.10753907E+01, 0.10000000E+01/
4180      DATA (GA( 7, 4,IC),IC=1,3) /
4181     S 0.12458431E+01, 0.58047395E+00, 0.00000000E+00/
4182      DATA (GB( 7, 4,IC),IC=1,3) /
4183     S 0.12458431E+01, 0.11032019E+01, 0.10000000E+01/
4184C
4185C----- INTERVAL = 2 ----- T =  275.0
4186C
4187C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4188      DATA (GA( 8, 3,IC),IC=1,3) /
4189     S 0.12167192E+01, 0.52341830E+00, 0.00000000E+00/
4190      DATA (GB( 8, 3,IC),IC=1,3) /
4191     S 0.12167192E+01, 0.10800762E+01, 0.10000000E+01/
4192      DATA (GA( 8, 4,IC),IC=1,3) /
4193     S 0.12506907E+01, 0.59089894E+00, 0.00000000E+00/
4194      DATA (GB( 8, 4,IC),IC=1,3) /
4195     S 0.12506907E+01, 0.11076379E+01, 0.10000000E+01/
4196C
4197C----- INTERVAL = 2 ----- T =  287.5
4198C
4199C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4200      DATA (GA( 9, 3,IC),IC=1,3) /
4201     S 0.12215344E+01, 0.53365803E+00, 0.00000000E+00/
4202      DATA (GB( 9, 3,IC),IC=1,3) /
4203     S 0.12215344E+01, 0.10843446E+01, 0.10000000E+01/
4204      DATA (GA( 9, 4,IC),IC=1,3) /
4205     S 0.12550299E+01, 0.60021475E+00, 0.00000000E+00/
4206      DATA (GB( 9, 4,IC),IC=1,3) /
4207     S 0.12550299E+01, 0.11116160E+01, 0.10000000E+01/
4208C
4209C----- INTERVAL = 2 ----- T =  300.0
4210C
4211C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4212      DATA (GA(10, 3,IC),IC=1,3) /
4213     S 0.12259226E+01, 0.54298448E+00, 0.00000000E+00/
4214      DATA (GB(10, 3,IC),IC=1,3) /
4215     S 0.12259226E+01, 0.10882439E+01, 0.10000000E+01/
4216      DATA (GA(10, 4,IC),IC=1,3) /
4217     S 0.12589256E+01, 0.60856112E+00, 0.00000000E+00/
4218      DATA (GB(10, 4,IC),IC=1,3) /
4219     S 0.12589256E+01, 0.11151910E+01, 0.10000000E+01/
4220C
4221C----- INTERVAL = 2 ----- T =  312.5
4222C
4223C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4224      DATA (GA(11, 3,IC),IC=1,3) /
4225     S 0.12299344E+01, 0.55150227E+00, 0.00000000E+00/
4226      DATA (GB(11, 3,IC),IC=1,3) /
4227     S 0.12299344E+01, 0.10918144E+01, 0.10000000E+01/
4228      DATA (GA(11, 4,IC),IC=1,3) /
4229     S 0.12624402E+01, 0.61607594E+00, 0.00000000E+00/
4230      DATA (GB(11, 4,IC),IC=1,3) /
4231     S 0.12624402E+01, 0.11184188E+01, 0.10000000E+01/
4232C
4233C
4234C
4235C
4236C
4237C
4238C- WATER VAPOR - INT. 3 -- 800-970 + 1110-1250 CM-1 -- FIT FROM 215 IS -
4239C
4240C
4241C-- WATER VAPOR LINES IN THE WINDOW REGION (800-1250 CM-1)
4242C
4243C
4244C
4245C--- G = 3.875E-03 ---------------
4246C
4247C----- INTERVAL = 3 ----- T =  187.5
4248C
4249C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4250      DATA (GA( 1, 7,IC),IC=1,3) /
4251     S 0.10192131E+02, 0.80737799E+01, 0.00000000E+00/
4252      DATA (GB( 1, 7,IC),IC=1,3) /
4253     S 0.10192131E+02, 0.82623280E+01, 0.10000000E+01/
4254      DATA (GA( 1, 8,IC),IC=1,3) /
4255     S 0.92439050E+01, 0.77425778E+01, 0.00000000E+00/
4256      DATA (GB( 1, 8,IC),IC=1,3) /
4257     S 0.92439050E+01, 0.79342219E+01, 0.10000000E+01/
4258C
4259C----- INTERVAL = 3 ----- T =  200.0
4260C
4261C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4262      DATA (GA( 2, 7,IC),IC=1,3) /
4263     S 0.97258602E+01, 0.79171158E+01, 0.00000000E+00/
4264      DATA (GB( 2, 7,IC),IC=1,3) /
4265     S 0.97258602E+01, 0.81072291E+01, 0.10000000E+01/
4266      DATA (GA( 2, 8,IC),IC=1,3) /
4267     S 0.87567422E+01, 0.75443460E+01, 0.00000000E+00/
4268      DATA (GB( 2, 8,IC),IC=1,3) /
4269     S 0.87567422E+01, 0.77373458E+01, 0.10000000E+01/
4270C
4271C----- INTERVAL = 3 ----- T =  212.5
4272C
4273C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4274      DATA (GA( 3, 7,IC),IC=1,3) /
4275     S 0.92992890E+01, 0.77609605E+01, 0.00000000E+00/
4276      DATA (GB( 3, 7,IC),IC=1,3) /
4277     S 0.92992890E+01, 0.79523834E+01, 0.10000000E+01/
4278      DATA (GA( 3, 8,IC),IC=1,3) /
4279     S 0.83270144E+01, 0.73526151E+01, 0.00000000E+00/
4280      DATA (GB( 3, 8,IC),IC=1,3) /
4281     S 0.83270144E+01, 0.75467334E+01, 0.10000000E+01/
4282C
4283C----- INTERVAL = 3 ----- T =  225.0
4284C
4285C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4286      DATA (GA( 4, 7,IC),IC=1,3) /
4287     S 0.89154021E+01, 0.76087371E+01, 0.00000000E+00/
4288      DATA (GB( 4, 7,IC),IC=1,3) /
4289     S 0.89154021E+01, 0.78012527E+01, 0.10000000E+01/
4290      DATA (GA( 4, 8,IC),IC=1,3) /
4291     S 0.79528337E+01, 0.71711188E+01, 0.00000000E+00/
4292      DATA (GB( 4, 8,IC),IC=1,3) /
4293     S 0.79528337E+01, 0.73661786E+01, 0.10000000E+01/
4294C
4295C----- INTERVAL = 3 ----- T =  237.5
4296C
4297C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4298      DATA (GA( 5, 7,IC),IC=1,3) /
4299     S 0.85730084E+01, 0.74627112E+01, 0.00000000E+00/
4300      DATA (GB( 5, 7,IC),IC=1,3) /
4301     S 0.85730084E+01, 0.76561458E+01, 0.10000000E+01/
4302      DATA (GA( 5, 8,IC),IC=1,3) /
4303     S 0.76286839E+01, 0.70015571E+01, 0.00000000E+00/
4304      DATA (GB( 5, 8,IC),IC=1,3) /
4305     S 0.76286839E+01, 0.71974319E+01, 0.10000000E+01/
4306C
4307C----- INTERVAL = 3 ----- T =  250.0
4308C
4309C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4310      DATA (GA( 6, 7,IC),IC=1,3) /
4311     S 0.82685838E+01, 0.73239981E+01, 0.00000000E+00/
4312      DATA (GB( 6, 7,IC),IC=1,3) /
4313     S 0.82685838E+01, 0.75182174E+01, 0.10000000E+01/
4314      DATA (GA( 6, 8,IC),IC=1,3) /
4315     S 0.73477879E+01, 0.68442532E+01, 0.00000000E+00/
4316      DATA (GB( 6, 8,IC),IC=1,3) /
4317     S 0.73477879E+01, 0.70408543E+01, 0.10000000E+01/
4318C
4319C----- INTERVAL = 3 ----- T =  262.5
4320C
4321C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4322      DATA (GA( 7, 7,IC),IC=1,3) /
4323     S 0.79978921E+01, 0.71929934E+01, 0.00000000E+00/
4324      DATA (GB( 7, 7,IC),IC=1,3) /
4325     S 0.79978921E+01, 0.73878952E+01, 0.10000000E+01/
4326      DATA (GA( 7, 8,IC),IC=1,3) /
4327     S 0.71035818E+01, 0.66987996E+01, 0.00000000E+00/
4328      DATA (GB( 7, 8,IC),IC=1,3) /
4329     S 0.71035818E+01, 0.68960649E+01, 0.10000000E+01/
4330C
4331C----- INTERVAL = 3 ----- T =  275.0
4332C
4333C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4334      DATA (GA( 8, 7,IC),IC=1,3) /
4335     S 0.77568055E+01, 0.70697065E+01, 0.00000000E+00/
4336      DATA (GB( 8, 7,IC),IC=1,3) /
4337     S 0.77568055E+01, 0.72652133E+01, 0.10000000E+01/
4338      DATA (GA( 8, 8,IC),IC=1,3) /
4339     S 0.68903312E+01, 0.65644820E+01, 0.00000000E+00/
4340      DATA (GB( 8, 8,IC),IC=1,3) /
4341     S 0.68903312E+01, 0.67623672E+01, 0.10000000E+01/
4342C
4343C----- INTERVAL = 3 ----- T =  287.5
4344C
4345C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4346      DATA (GA( 9, 7,IC),IC=1,3) /
4347     S 0.75416266E+01, 0.69539626E+01, 0.00000000E+00/
4348      DATA (GB( 9, 7,IC),IC=1,3) /
4349     S 0.75416266E+01, 0.71500151E+01, 0.10000000E+01/
4350      DATA (GA( 9, 8,IC),IC=1,3) /
4351     S 0.67032875E+01, 0.64405267E+01, 0.00000000E+00/
4352      DATA (GB( 9, 8,IC),IC=1,3) /
4353     S 0.67032875E+01, 0.66389989E+01, 0.10000000E+01/
4354C
4355C----- INTERVAL = 3 ----- T =  300.0
4356C
4357C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4358      DATA (GA(10, 7,IC),IC=1,3) /
4359     S 0.73491694E+01, 0.68455144E+01, 0.00000000E+00/
4360      DATA (GB(10, 7,IC),IC=1,3) /
4361     S 0.73491694E+01, 0.70420667E+01, 0.10000000E+01/
4362      DATA (GA(10, 8,IC),IC=1,3) /
4363     S 0.65386461E+01, 0.63262376E+01, 0.00000000E+00/
4364      DATA (GB(10, 8,IC),IC=1,3) /
4365     S 0.65386461E+01, 0.65252707E+01, 0.10000000E+01/
4366C
4367C----- INTERVAL = 3 ----- T =  312.5
4368C
4369C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4370      DATA (GA(11, 7,IC),IC=1,3) /
4371     S 0.71767400E+01, 0.67441020E+01, 0.00000000E+00/
4372      DATA (GB(11, 7,IC),IC=1,3) /
4373     S 0.71767400E+01, 0.69411177E+01, 0.10000000E+01/
4374      DATA (GA(11, 8,IC),IC=1,3) /
4375     S 0.63934377E+01, 0.62210701E+01, 0.00000000E+00/
4376      DATA (GB(11, 8,IC),IC=1,3) /
4377     S 0.63934377E+01, 0.64206412E+01, 0.10000000E+01/
4378C
4379C
4380C-- WATER VAPOR -- 970-1110 CM-1 ----------------------------------------
4381C
4382C-- G = 3.6E-03
4383C
4384C----- INTERVAL = 4 ----- T =  187.5
4385C
4386C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4387      DATA (GA( 1, 9,IC),IC=1,3) /
4388     S 0.24870635E+02, 0.10542131E+02, 0.00000000E+00/
4389      DATA (GB( 1, 9,IC),IC=1,3) /
4390     S 0.24870635E+02, 0.10656640E+02, 0.10000000E+01/
4391      DATA (GA( 1,10,IC),IC=1,3) /
4392     S 0.24586283E+02, 0.10490353E+02, 0.00000000E+00/
4393      DATA (GB( 1,10,IC),IC=1,3) /
4394     S 0.24586283E+02, 0.10605856E+02, 0.10000000E+01/
4395C
4396C----- INTERVAL = 4 ----- T =  200.0
4397C
4398C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4399      DATA (GA( 2, 9,IC),IC=1,3) /
4400     S 0.24725591E+02, 0.10515895E+02, 0.00000000E+00/
4401      DATA (GB( 2, 9,IC),IC=1,3) /
4402     S 0.24725591E+02, 0.10630910E+02, 0.10000000E+01/
4403      DATA (GA( 2,10,IC),IC=1,3) /
4404     S 0.24441465E+02, 0.10463512E+02, 0.00000000E+00/
4405      DATA (GB( 2,10,IC),IC=1,3) /
4406     S 0.24441465E+02, 0.10579514E+02, 0.10000000E+01/
4407C
4408C----- INTERVAL = 4 ----- T =  212.5
4409C
4410C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4411      DATA (GA( 3, 9,IC),IC=1,3) /
4412     S 0.24600320E+02, 0.10492949E+02, 0.00000000E+00/
4413      DATA (GB( 3, 9,IC),IC=1,3) /
4414     S 0.24600320E+02, 0.10608399E+02, 0.10000000E+01/
4415      DATA (GA( 3,10,IC),IC=1,3) /
4416     S 0.24311657E+02, 0.10439183E+02, 0.00000000E+00/
4417      DATA (GB( 3,10,IC),IC=1,3) /
4418     S 0.24311657E+02, 0.10555632E+02, 0.10000000E+01/
4419C
4420C----- INTERVAL = 4 ----- T =  225.0
4421C
4422C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4423      DATA (GA( 4, 9,IC),IC=1,3) /
4424     S 0.24487300E+02, 0.10472049E+02, 0.00000000E+00/
4425      DATA (GB( 4, 9,IC),IC=1,3) /
4426     S 0.24487300E+02, 0.10587891E+02, 0.10000000E+01/
4427      DATA (GA( 4,10,IC),IC=1,3) /
4428     S 0.24196167E+02, 0.10417324E+02, 0.00000000E+00/
4429      DATA (GB( 4,10,IC),IC=1,3) /
4430     S 0.24196167E+02, 0.10534169E+02, 0.10000000E+01/
4431C
4432C----- INTERVAL = 4 ----- T =  237.5
4433C
4434C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4435      DATA (GA( 5, 9,IC),IC=1,3) /
4436     S 0.24384935E+02, 0.10452961E+02, 0.00000000E+00/
4437      DATA (GB( 5, 9,IC),IC=1,3) /
4438     S 0.24384935E+02, 0.10569156E+02, 0.10000000E+01/
4439      DATA (GA( 5,10,IC),IC=1,3) /
4440     S 0.24093406E+02, 0.10397704E+02, 0.00000000E+00/
4441      DATA (GB( 5,10,IC),IC=1,3) /
4442     S 0.24093406E+02, 0.10514900E+02, 0.10000000E+01/
4443C
4444C----- INTERVAL = 4 ----- T =  250.0
4445C
4446C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4447      DATA (GA( 6, 9,IC),IC=1,3) /
4448     S 0.24292341E+02, 0.10435562E+02, 0.00000000E+00/
4449      DATA (GB( 6, 9,IC),IC=1,3) /
4450     S 0.24292341E+02, 0.10552075E+02, 0.10000000E+01/
4451      DATA (GA( 6,10,IC),IC=1,3) /
4452     S 0.24001597E+02, 0.10380038E+02, 0.00000000E+00/
4453      DATA (GB( 6,10,IC),IC=1,3) /
4454     S 0.24001597E+02, 0.10497547E+02, 0.10000000E+01/
4455C
4456C----- INTERVAL = 4 ----- T =  262.5
4457C
4458C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4459      DATA (GA( 7, 9,IC),IC=1,3) /
4460     S 0.24208572E+02, 0.10419710E+02, 0.00000000E+00/
4461      DATA (GB( 7, 9,IC),IC=1,3) /
4462     S 0.24208572E+02, 0.10536510E+02, 0.10000000E+01/
4463      DATA (GA( 7,10,IC),IC=1,3) /
4464     S 0.23919098E+02, 0.10364052E+02, 0.00000000E+00/
4465      DATA (GB( 7,10,IC),IC=1,3) /
4466     S 0.23919098E+02, 0.10481842E+02, 0.10000000E+01/
4467C
4468C----- INTERVAL = 4 ----- T =  275.0
4469C
4470C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4471      DATA (GA( 8, 9,IC),IC=1,3) /
4472     S 0.24132642E+02, 0.10405247E+02, 0.00000000E+00/
4473      DATA (GB( 8, 9,IC),IC=1,3) /
4474     S 0.24132642E+02, 0.10522307E+02, 0.10000000E+01/
4475      DATA (GA( 8,10,IC),IC=1,3) /
4476     S 0.23844511E+02, 0.10349509E+02, 0.00000000E+00/
4477      DATA (GB( 8,10,IC),IC=1,3) /
4478     S 0.23844511E+02, 0.10467553E+02, 0.10000000E+01/
4479C
4480C----- INTERVAL = 4 ----- T =  287.5
4481C
4482C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4483      DATA (GA( 9, 9,IC),IC=1,3) /
4484     S 0.24063614E+02, 0.10392022E+02, 0.00000000E+00/
4485      DATA (GB( 9, 9,IC),IC=1,3) /
4486     S 0.24063614E+02, 0.10509317E+02, 0.10000000E+01/
4487      DATA (GA( 9,10,IC),IC=1,3) /
4488     S 0.23776708E+02, 0.10336215E+02, 0.00000000E+00/
4489      DATA (GB( 9,10,IC),IC=1,3) /
4490     S 0.23776708E+02, 0.10454488E+02, 0.10000000E+01/
4491C
4492C----- INTERVAL = 4 ----- T =  300.0
4493C
4494C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4495      DATA (GA(10, 9,IC),IC=1,3) /
4496     S 0.24000649E+02, 0.10379892E+02, 0.00000000E+00/
4497      DATA (GB(10, 9,IC),IC=1,3) /
4498     S 0.24000649E+02, 0.10497402E+02, 0.10000000E+01/
4499      DATA (GA(10,10,IC),IC=1,3) /
4500     S 0.23714816E+02, 0.10324018E+02, 0.00000000E+00/
4501      DATA (GB(10,10,IC),IC=1,3) /
4502     S 0.23714816E+02, 0.10442501E+02, 0.10000000E+01/
4503C
4504C----- INTERVAL = 4 ----- T =  312.5
4505C
4506C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4507      DATA (GA(11, 9,IC),IC=1,3) /
4508     S 0.23943021E+02, 0.10368736E+02, 0.00000000E+00/
4509      DATA (GB(11, 9,IC),IC=1,3) /
4510     S 0.23943021E+02, 0.10486443E+02, 0.10000000E+01/
4511      DATA (GA(11,10,IC),IC=1,3) /
4512     S 0.23658197E+02, 0.10312808E+02, 0.00000000E+00/
4513      DATA (GB(11,10,IC),IC=1,3) /
4514     S 0.23658197E+02, 0.10431483E+02, 0.10000000E+01/
4515C
4516C
4517C
4518C-- H2O -- WEAKER PARTS OF THE STRONG BANDS  -- FROM ABS225 ----
4519C
4520C-- WATER VAPOR --- 350 - 500 CM-1
4521C
4522C-- G = - 0.2*SLA, 0.0 +0.5/(1+0.5U)
4523C
4524C----- INTERVAL = 5 ----- T =  187.5
4525C
4526C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4527      DATA (GA( 1, 5,IC),IC=1,3) /
4528     S 0.15750172E+00,-0.22159303E-01, 0.00000000E+00/
4529      DATA (GB( 1, 5,IC),IC=1,3) /
4530     S 0.15750172E+00, 0.38103212E+00, 0.10000000E+01/
4531      DATA (GA( 1, 6,IC),IC=1,3) /
4532     S 0.17770551E+00,-0.24972399E-01, 0.00000000E+00/
4533      DATA (GB( 1, 6,IC),IC=1,3) /
4534     S 0.17770551E+00, 0.41646579E+00, 0.10000000E+01/
4535C
4536C----- INTERVAL = 5 ----- T =  200.0
4537C
4538C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4539      DATA (GA( 2, 5,IC),IC=1,3) /
4540     S 0.16174076E+00,-0.22748917E-01, 0.00000000E+00/
4541      DATA (GB( 2, 5,IC),IC=1,3) /
4542     S 0.16174076E+00, 0.38913800E+00, 0.10000000E+01/
4543      DATA (GA( 2, 6,IC),IC=1,3) /
4544     S 0.18176757E+00,-0.25537247E-01, 0.00000000E+00/
4545      DATA (GB( 2, 6,IC),IC=1,3) /
4546     S 0.18176757E+00, 0.42345095E+00, 0.10000000E+01/
4547C
4548C----- INTERVAL = 5 ----- T =  212.5
4549C
4550C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4551      DATA (GA( 3, 5,IC),IC=1,3) /
4552     S 0.16548628E+00,-0.23269898E-01, 0.00000000E+00/
4553      DATA (GB( 3, 5,IC),IC=1,3) /
4554     S 0.16548628E+00, 0.39613651E+00, 0.10000000E+01/
4555      DATA (GA( 3, 6,IC),IC=1,3) /
4556     S 0.18527967E+00,-0.26025624E-01, 0.00000000E+00/
4557      DATA (GB( 3, 6,IC),IC=1,3) /
4558     S 0.18527967E+00, 0.42937476E+00, 0.10000000E+01/
4559C
4560C----- INTERVAL = 5 ----- T =  225.0
4561C
4562C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4563      DATA (GA( 4, 5,IC),IC=1,3) /
4564     S 0.16881124E+00,-0.23732392E-01, 0.00000000E+00/
4565      DATA (GB( 4, 5,IC),IC=1,3) /
4566     S 0.16881124E+00, 0.40222421E+00, 0.10000000E+01/
4567      DATA (GA( 4, 6,IC),IC=1,3) /
4568     S 0.18833348E+00,-0.26450280E-01, 0.00000000E+00/
4569      DATA (GB( 4, 6,IC),IC=1,3) /
4570     S 0.18833348E+00, 0.43444062E+00, 0.10000000E+01/
4571C
4572C----- INTERVAL = 5 ----- T =  237.5
4573C
4574C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4575      DATA (GA( 5, 5,IC),IC=1,3) /
4576     S 0.17177839E+00,-0.24145123E-01, 0.00000000E+00/
4577      DATA (GB( 5, 5,IC),IC=1,3) /
4578     S 0.17177839E+00, 0.40756010E+00, 0.10000000E+01/
4579      DATA (GA( 5, 6,IC),IC=1,3) /
4580     S 0.19100108E+00,-0.26821236E-01, 0.00000000E+00/
4581      DATA (GB( 5, 6,IC),IC=1,3) /
4582     S 0.19100108E+00, 0.43880316E+00, 0.10000000E+01/
4583C
4584C----- INTERVAL = 5 ----- T =  250.0
4585C
4586C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4587      DATA (GA( 6, 5,IC),IC=1,3) /
4588     S 0.17443933E+00,-0.24515269E-01, 0.00000000E+00/
4589      DATA (GB( 6, 5,IC),IC=1,3) /
4590     S 0.17443933E+00, 0.41226954E+00, 0.10000000E+01/
4591      DATA (GA( 6, 6,IC),IC=1,3) /
4592     S 0.19334122E+00,-0.27146657E-01, 0.00000000E+00/
4593      DATA (GB( 6, 6,IC),IC=1,3) /
4594     S 0.19334122E+00, 0.44258354E+00, 0.10000000E+01/
4595C
4596C----- INTERVAL = 5 ----- T =  262.5
4597C
4598C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4599      DATA (GA( 7, 5,IC),IC=1,3) /
4600     S 0.17683622E+00,-0.24848690E-01, 0.00000000E+00/
4601      DATA (GB( 7, 5,IC),IC=1,3) /
4602     S 0.17683622E+00, 0.41645142E+00, 0.10000000E+01/
4603      DATA (GA( 7, 6,IC),IC=1,3) /
4604     S 0.19540288E+00,-0.27433354E-01, 0.00000000E+00/
4605      DATA (GB( 7, 6,IC),IC=1,3) /
4606     S 0.19540288E+00, 0.44587882E+00, 0.10000000E+01/
4607C
4608C----- INTERVAL = 5 ----- T =  275.0
4609C
4610C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4611      DATA (GA( 8, 5,IC),IC=1,3) /
4612     S 0.17900375E+00,-0.25150210E-01, 0.00000000E+00/
4613      DATA (GB( 8, 5,IC),IC=1,3) /
4614     S 0.17900375E+00, 0.42018474E+00, 0.10000000E+01/
4615      DATA (GA( 8, 6,IC),IC=1,3) /
4616     S 0.19722732E+00,-0.27687065E-01, 0.00000000E+00/
4617      DATA (GB( 8, 6,IC),IC=1,3) /
4618     S 0.19722732E+00, 0.44876776E+00, 0.10000000E+01/
4619C
4620C----- INTERVAL = 5 ----- T =  287.5
4621C
4622C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4623      DATA (GA( 9, 5,IC),IC=1,3) /
4624     S 0.18097099E+00,-0.25423873E-01, 0.00000000E+00/
4625      DATA (GB( 9, 5,IC),IC=1,3) /
4626     S 0.18097099E+00, 0.42353379E+00, 0.10000000E+01/
4627      DATA (GA( 9, 6,IC),IC=1,3) /
4628     S 0.19884918E+00,-0.27912608E-01, 0.00000000E+00/
4629      DATA (GB( 9, 6,IC),IC=1,3) /
4630     S 0.19884918E+00, 0.45131451E+00, 0.10000000E+01/
4631C
4632C----- INTERVAL = 5 ----- T =  300.0
4633C
4634C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4635      DATA (GA(10, 5,IC),IC=1,3) /
4636     S 0.18276283E+00,-0.25673139E-01, 0.00000000E+00/
4637      DATA (GB(10, 5,IC),IC=1,3) /
4638     S 0.18276283E+00, 0.42655211E+00, 0.10000000E+01/
4639      DATA (GA(10, 6,IC),IC=1,3) /
4640     S 0.20029696E+00,-0.28113944E-01, 0.00000000E+00/
4641      DATA (GB(10, 6,IC),IC=1,3) /
4642     S 0.20029696E+00, 0.45357095E+00, 0.10000000E+01/
4643C
4644C----- INTERVAL = 5 ----- T =  312.5
4645C
4646C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4647      DATA (GA(11, 5,IC),IC=1,3) /
4648     S 0.18440117E+00,-0.25901055E-01, 0.00000000E+00/
4649      DATA (GB(11, 5,IC),IC=1,3) /
4650     S 0.18440117E+00, 0.42928533E+00, 0.10000000E+01/
4651      DATA (GA(11, 6,IC),IC=1,3) /
4652     S 0.20159300E+00,-0.28294180E-01, 0.00000000E+00/
4653      DATA (GB(11, 6,IC),IC=1,3) /
4654     S 0.20159300E+00, 0.45557797E+00, 0.10000000E+01/
4655C
4656C
4657C
4658C
4659C- WATER VAPOR - WINGS OF VIBRATION-ROTATION BAND - 1250-1450+1880-2820 -
4660C--- G = 0.0
4661C
4662C
4663C----- INTERVAL = 6 ----- T =  187.5
4664C
4665C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4666      DATA (GA( 1,11,IC),IC=1,3) /
4667     S 0.11990218E+02,-0.12823142E+01, 0.00000000E+00/
4668      DATA (GB( 1,11,IC),IC=1,3) /
4669     S 0.11990218E+02, 0.26681588E+02, 0.10000000E+01/
4670      DATA (GA( 1,12,IC),IC=1,3) /
4671     S 0.79709806E+01,-0.74805226E+00, 0.00000000E+00/
4672      DATA (GB( 1,12,IC),IC=1,3) /
4673     S 0.79709806E+01, 0.18377807E+02, 0.10000000E+01/
4674C
4675C----- INTERVAL = 6 ----- T =  200.0
4676C
4677C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4678      DATA (GA( 2,11,IC),IC=1,3) /
4679     S 0.10904073E+02,-0.10571588E+01, 0.00000000E+00/
4680      DATA (GB( 2,11,IC),IC=1,3) /
4681     S 0.10904073E+02, 0.24728346E+02, 0.10000000E+01/
4682      DATA (GA( 2,12,IC),IC=1,3) /
4683     S 0.75400737E+01,-0.56252739E+00, 0.00000000E+00/
4684      DATA (GB( 2,12,IC),IC=1,3) /
4685     S 0.75400737E+01, 0.17643148E+02, 0.10000000E+01/
4686C
4687C----- INTERVAL = 6 ----- T =  212.5
4688C
4689C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4690      DATA (GA( 3,11,IC),IC=1,3) /
4691     S 0.89126838E+01,-0.74864953E+00, 0.00000000E+00/
4692      DATA (GB( 3,11,IC),IC=1,3) /
4693     S 0.89126838E+01, 0.20551342E+02, 0.10000000E+01/
4694      DATA (GA( 3,12,IC),IC=1,3) /
4695     S 0.81804377E+01,-0.46188072E+00, 0.00000000E+00/
4696      DATA (GB( 3,12,IC),IC=1,3) /
4697     S 0.81804377E+01, 0.19296161E+02, 0.10000000E+01/
4698C
4699C----- INTERVAL = 6 ----- T =  225.0
4700C
4701C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4702      DATA (GA( 4,11,IC),IC=1,3) /
4703     S 0.85622405E+01,-0.58705980E+00, 0.00000000E+00/
4704      DATA (GB( 4,11,IC),IC=1,3) /
4705     S 0.85622405E+01, 0.19955244E+02, 0.10000000E+01/
4706      DATA (GA( 4,12,IC),IC=1,3) /
4707     S 0.10564339E+02,-0.40712065E+00, 0.00000000E+00/
4708      DATA (GB( 4,12,IC),IC=1,3) /
4709     S 0.10564339E+02, 0.24951120E+02, 0.10000000E+01/
4710C
4711C----- INTERVAL = 6 ----- T =  237.5
4712C
4713C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4714      DATA (GA( 5,11,IC),IC=1,3) /
4715     S 0.94892164E+01,-0.49305772E+00, 0.00000000E+00/
4716      DATA (GB( 5,11,IC),IC=1,3) /
4717     S 0.94892164E+01, 0.22227100E+02, 0.10000000E+01/
4718      DATA (GA( 5,12,IC),IC=1,3) /
4719     S 0.46896789E+02,-0.15295996E+01, 0.00000000E+00/
4720      DATA (GB( 5,12,IC),IC=1,3) /
4721     S 0.46896789E+02, 0.10957372E+03, 0.10000000E+01/
4722C
4723C----- INTERVAL = 6 ----- T =  250.0
4724C
4725C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4726      DATA (GA( 6,11,IC),IC=1,3) /
4727     S 0.13580937E+02,-0.51461431E+00, 0.00000000E+00/
4728      DATA (GB( 6,11,IC),IC=1,3) /
4729     S 0.13580937E+02, 0.31770288E+02, 0.10000000E+01/
4730      DATA (GA( 6,12,IC),IC=1,3) /
4731     S-0.30926524E+01, 0.43555255E+00, 0.00000000E+00/
4732      DATA (GB( 6,12,IC),IC=1,3) /
4733     S-0.30926524E+01,-0.67432659E+01, 0.10000000E+01/
4734C
4735C----- INTERVAL = 6 ----- T =  262.5
4736C
4737C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4738      DATA (GA( 7,11,IC),IC=1,3) /
4739     S-0.32050918E+03, 0.12373350E+02, 0.00000000E+00/
4740      DATA (GB( 7,11,IC),IC=1,3) /
4741     S-0.32050918E+03,-0.74061287E+03, 0.10000000E+01/
4742      DATA (GA( 7,12,IC),IC=1,3) /
4743     S 0.85742941E+00, 0.50380874E+00, 0.00000000E+00/
4744      DATA (GB( 7,12,IC),IC=1,3) /
4745     S 0.85742941E+00, 0.24550746E+01, 0.10000000E+01/
4746C
4747C----- INTERVAL = 6 ----- T =  275.0
4748C
4749C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4750      DATA (GA( 8,11,IC),IC=1,3) /
4751     S-0.37133165E+01, 0.44809588E+00, 0.00000000E+00/
4752      DATA (GB( 8,11,IC),IC=1,3) /
4753     S-0.37133165E+01,-0.81329826E+01, 0.10000000E+01/
4754      DATA (GA( 8,12,IC),IC=1,3) /
4755     S 0.19164038E+01, 0.68537352E+00, 0.00000000E+00/
4756      DATA (GB( 8,12,IC),IC=1,3) /
4757     S 0.19164038E+01, 0.49089917E+01, 0.10000000E+01/
4758C
4759C----- INTERVAL = 6 ----- T =  287.5
4760C
4761C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4762      DATA (GA( 9,11,IC),IC=1,3) /
4763     S 0.18890836E+00, 0.46548918E+00, 0.00000000E+00/
4764      DATA (GB( 9,11,IC),IC=1,3) /
4765     S 0.18890836E+00, 0.90279822E+00, 0.10000000E+01/
4766      DATA (GA( 9,12,IC),IC=1,3) /
4767     S 0.23513199E+01, 0.89437630E+00, 0.00000000E+00/
4768      DATA (GB( 9,12,IC),IC=1,3) /
4769     S 0.23513199E+01, 0.59008712E+01, 0.10000000E+01/
4770C
4771C----- INTERVAL = 6 ----- T =  300.0
4772C
4773C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4774      DATA (GA(10,11,IC),IC=1,3) /
4775     S 0.14209226E+01, 0.59121475E+00, 0.00000000E+00/
4776      DATA (GB(10,11,IC),IC=1,3) /
4777     S 0.14209226E+01, 0.37532746E+01, 0.10000000E+01/
4778      DATA (GA(10,12,IC),IC=1,3) /
4779     S 0.25566644E+01, 0.11127003E+01, 0.00000000E+00/
4780      DATA (GB(10,12,IC),IC=1,3) /
4781     S 0.25566644E+01, 0.63532616E+01, 0.10000000E+01/
4782C
4783C----- INTERVAL = 6 ----- T =  312.5
4784C
4785C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4786      DATA (GA(11,11,IC),IC=1,3) /
4787     S 0.19817679E+01, 0.74676119E+00, 0.00000000E+00/
4788      DATA (GB(11,11,IC),IC=1,3) /
4789     S 0.19817679E+01, 0.50437916E+01, 0.10000000E+01/
4790      DATA (GA(11,12,IC),IC=1,3) /
4791     S 0.26555181E+01, 0.13329782E+01, 0.00000000E+00/
4792      DATA (GB(11,12,IC),IC=1,3) /
4793     S 0.26555181E+01, 0.65558627E+01, 0.10000000E+01/
4794C
4795C
4796C
4797C
4798C
4799C-- END WATER VAPOR
4800C
4801C
4802C-- CO2 -- INT.2 -- 500-800 CM-1 --- FROM ABS225 ----------------------
4803C
4804C
4805C
4806C-- FIU = 0.8 + MAX(0.35,(7-IU)*0.9)  , X/T,  9
4807C
4808C----- INTERVAL = 2 ----- T =  187.5
4809C
4810C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4811      DATA (GA( 1,13,IC),IC=1,3) /
4812     S 0.87668459E-01, 0.13845511E+01, 0.00000000E+00/
4813      DATA (GB( 1,13,IC),IC=1,3) /
4814     S 0.87668459E-01, 0.23203798E+01, 0.10000000E+01/
4815      DATA (GA( 1,14,IC),IC=1,3) /
4816     S 0.74878820E-01, 0.11718758E+01, 0.00000000E+00/
4817      DATA (GB( 1,14,IC),IC=1,3) /
4818     S 0.74878820E-01, 0.20206726E+01, 0.10000000E+01/
4819C
4820C----- INTERVAL = 2 ----- T =  200.0
4821C
4822C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4823      DATA (GA( 2,13,IC),IC=1,3) /
4824     S 0.83754276E-01, 0.13187042E+01, 0.00000000E+00/
4825      DATA (GB( 2,13,IC),IC=1,3) /
4826     S 0.83754276E-01, 0.22288925E+01, 0.10000000E+01/
4827      DATA (GA( 2,14,IC),IC=1,3) /
4828     S 0.71650966E-01, 0.11216131E+01, 0.00000000E+00/
4829      DATA (GB( 2,14,IC),IC=1,3) /
4830     S 0.71650966E-01, 0.19441824E+01, 0.10000000E+01/
4831C
4832C----- INTERVAL = 2 ----- T =  212.5
4833C
4834C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4835      DATA (GA( 3,13,IC),IC=1,3) /
4836     S 0.80460283E-01, 0.12644396E+01, 0.00000000E+00/
4837      DATA (GB( 3,13,IC),IC=1,3) /
4838     S 0.80460283E-01, 0.21515593E+01, 0.10000000E+01/
4839      DATA (GA( 3,14,IC),IC=1,3) /
4840     S 0.68979615E-01, 0.10809473E+01, 0.00000000E+00/
4841      DATA (GB( 3,14,IC),IC=1,3) /
4842     S 0.68979615E-01, 0.18807257E+01, 0.10000000E+01/
4843C
4844C----- INTERVAL = 2 ----- T =  225.0
4845C
4846C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4847      DATA (GA( 4,13,IC),IC=1,3) /
4848     S 0.77659686E-01, 0.12191543E+01, 0.00000000E+00/
4849      DATA (GB( 4,13,IC),IC=1,3) /
4850     S 0.77659686E-01, 0.20855896E+01, 0.10000000E+01/
4851      DATA (GA( 4,14,IC),IC=1,3) /
4852     S 0.66745345E-01, 0.10476396E+01, 0.00000000E+00/
4853      DATA (GB( 4,14,IC),IC=1,3) /
4854     S 0.66745345E-01, 0.18275618E+01, 0.10000000E+01/
4855C
4856C----- INTERVAL = 2 ----- T =  237.5
4857C
4858C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4859      DATA (GA( 5,13,IC),IC=1,3) /
4860     S 0.75257056E-01, 0.11809511E+01, 0.00000000E+00/
4861      DATA (GB( 5,13,IC),IC=1,3) /
4862     S 0.75257056E-01, 0.20288489E+01, 0.10000000E+01/
4863      DATA (GA( 5,14,IC),IC=1,3) /
4864     S 0.64857571E-01, 0.10200373E+01, 0.00000000E+00/
4865      DATA (GB( 5,14,IC),IC=1,3) /
4866     S 0.64857571E-01, 0.17825910E+01, 0.10000000E+01/
4867C
4868C----- INTERVAL = 2 ----- T =  250.0
4869C
4870C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4871      DATA (GA( 6,13,IC),IC=1,3) /
4872     S 0.73179175E-01, 0.11484154E+01, 0.00000000E+00/
4873      DATA (GB( 6,13,IC),IC=1,3) /
4874     S 0.73179175E-01, 0.19796791E+01, 0.10000000E+01/
4875      DATA (GA( 6,14,IC),IC=1,3) /
4876     S 0.63248495E-01, 0.99692726E+00, 0.00000000E+00/
4877      DATA (GB( 6,14,IC),IC=1,3) /
4878     S 0.63248495E-01, 0.17442308E+01, 0.10000000E+01/
4879C
4880C----- INTERVAL = 2 ----- T =  262.5
4881C
4882C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4883      DATA (GA( 7,13,IC),IC=1,3) /
4884     S 0.71369063E-01, 0.11204723E+01, 0.00000000E+00/
4885      DATA (GB( 7,13,IC),IC=1,3) /
4886     S 0.71369063E-01, 0.19367778E+01, 0.10000000E+01/
4887      DATA (GA( 7,14,IC),IC=1,3) /
4888     S 0.61866970E-01, 0.97740923E+00, 0.00000000E+00/
4889      DATA (GB( 7,14,IC),IC=1,3) /
4890     S 0.61866970E-01, 0.17112809E+01, 0.10000000E+01/
4891C
4892C----- INTERVAL = 2 ----- T =  275.0
4893C
4894C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4895      DATA (GA( 8,13,IC),IC=1,3) /
4896     S 0.69781812E-01, 0.10962918E+01, 0.00000000E+00/
4897      DATA (GB( 8,13,IC),IC=1,3) /
4898     S 0.69781812E-01, 0.18991112E+01, 0.10000000E+01/
4899      DATA (GA( 8,14,IC),IC=1,3) /
4900     S 0.60673632E-01, 0.96080188E+00, 0.00000000E+00/
4901      DATA (GB( 8,14,IC),IC=1,3) /
4902     S 0.60673632E-01, 0.16828137E+01, 0.10000000E+01/
4903C
4904C----- INTERVAL = 2 ----- T =  287.5
4905C
4906C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4907      DATA (GA( 9,13,IC),IC=1,3) /
4908     S 0.68381606E-01, 0.10752229E+01, 0.00000000E+00/
4909      DATA (GB( 9,13,IC),IC=1,3) /
4910     S 0.68381606E-01, 0.18658501E+01, 0.10000000E+01/
4911      DATA (GA( 9,14,IC),IC=1,3) /
4912     S 0.59637277E-01, 0.94657562E+00, 0.00000000E+00/
4913      DATA (GB( 9,14,IC),IC=1,3) /
4914     S 0.59637277E-01, 0.16580908E+01, 0.10000000E+01/
4915C
4916C----- INTERVAL = 2 ----- T =  300.0
4917C
4918C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4919      DATA (GA(10,13,IC),IC=1,3) /
4920     S 0.67139539E-01, 0.10567474E+01, 0.00000000E+00/
4921      DATA (GB(10,13,IC),IC=1,3) /
4922     S 0.67139539E-01, 0.18363226E+01, 0.10000000E+01/
4923      DATA (GA(10,14,IC),IC=1,3) /
4924     S 0.58732178E-01, 0.93430511E+00, 0.00000000E+00/
4925      DATA (GB(10,14,IC),IC=1,3) /
4926     S 0.58732178E-01, 0.16365014E+01, 0.10000000E+01/
4927C
4928C----- INTERVAL = 2 ----- T =  312.5
4929C
4930C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4931      DATA (GA(11,13,IC),IC=1,3) /
4932     S 0.66032012E-01, 0.10404465E+01, 0.00000000E+00/
4933      DATA (GB(11,13,IC),IC=1,3) /
4934     S 0.66032012E-01, 0.18099779E+01, 0.10000000E+01/
4935      DATA (GA(11,14,IC),IC=1,3) /
4936     S 0.57936092E-01, 0.92363528E+00, 0.00000000E+00/
4937      DATA (GB(11,14,IC),IC=1,3) /
4938     S 0.57936092E-01, 0.16175164E+01, 0.10000000E+01/
4939C
4940C
4941C
4942C
4943C
4944C
4945C
4946C
4947C
4948C
4949C-- CARBON DIOXIDE LINES IN THE WINDOW REGION (800-1250 CM-1)
4950C
4951C
4952C-- G = 0.0
4953C
4954C
4955C----- INTERVAL = 4 ----- T =  187.5
4956C
4957C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4958      DATA (GA( 1,15,IC),IC=1,3) /
4959     S 0.13230067E+02, 0.22042132E+02, 0.00000000E+00/
4960      DATA (GB( 1,15,IC),IC=1,3) /
4961     S 0.13230067E+02, 0.22051750E+02, 0.10000000E+01/
4962      DATA (GA( 1,16,IC),IC=1,3) /
4963     S 0.13183816E+02, 0.22169501E+02, 0.00000000E+00/
4964      DATA (GB( 1,16,IC),IC=1,3) /
4965     S 0.13183816E+02, 0.22178972E+02, 0.10000000E+01/
4966C
4967C----- INTERVAL = 4 ----- T =  200.0
4968C
4969C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4970      DATA (GA( 2,15,IC),IC=1,3) /
4971     S 0.13213564E+02, 0.22107298E+02, 0.00000000E+00/
4972      DATA (GB( 2,15,IC),IC=1,3) /
4973     S 0.13213564E+02, 0.22116850E+02, 0.10000000E+01/
4974      DATA (GA( 2,16,IC),IC=1,3) /
4975     S 0.13189991E+02, 0.22270075E+02, 0.00000000E+00/
4976      DATA (GB( 2,16,IC),IC=1,3) /
4977     S 0.13189991E+02, 0.22279484E+02, 0.10000000E+01/
4978C
4979C----- INTERVAL = 4 ----- T =  212.5
4980C
4981C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4982      DATA (GA( 3,15,IC),IC=1,3) /
4983     S 0.13209140E+02, 0.22180915E+02, 0.00000000E+00/
4984      DATA (GB( 3,15,IC),IC=1,3) /
4985     S 0.13209140E+02, 0.22190410E+02, 0.10000000E+01/
4986      DATA (GA( 3,16,IC),IC=1,3) /
4987     S 0.13209485E+02, 0.22379193E+02, 0.00000000E+00/
4988      DATA (GB( 3,16,IC),IC=1,3) /
4989     S 0.13209485E+02, 0.22388551E+02, 0.10000000E+01/
4990C
4991C----- INTERVAL = 4 ----- T =  225.0
4992C
4993C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4994      DATA (GA( 4,15,IC),IC=1,3) /
4995     S 0.13213894E+02, 0.22259478E+02, 0.00000000E+00/
4996      DATA (GB( 4,15,IC),IC=1,3) /
4997     S 0.13213894E+02, 0.22268925E+02, 0.10000000E+01/
4998      DATA (GA( 4,16,IC),IC=1,3) /
4999     S 0.13238789E+02, 0.22492992E+02, 0.00000000E+00/
5000      DATA (GB( 4,16,IC),IC=1,3) /
5001     S 0.13238789E+02, 0.22502309E+02, 0.10000000E+01/
5002C
5003C----- INTERVAL = 4 ----- T =  237.5
5004C
5005C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
5006      DATA (GA( 5,15,IC),IC=1,3) /
5007     S 0.13225963E+02, 0.22341039E+02, 0.00000000E+00/
5008      DATA (GB( 5,15,IC),IC=1,3) /
5009     S 0.13225963E+02, 0.22350445E+02, 0.10000000E+01/
5010      DATA (GA( 5,16,IC),IC=1,3) /
5011     S 0.13275017E+02, 0.22608508E+02, 0.00000000E+00/
5012      DATA (GB( 5,16,IC),IC=1,3) /
5013     S 0.13275017E+02, 0.22617792E+02, 0.10000000E+01/
5014C
5015C----- INTERVAL = 4 ----- T =  250.0
5016C
5017C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
5018      DATA (GA( 6,15,IC),IC=1,3) /
5019     S 0.13243806E+02, 0.22424247E+02, 0.00000000E+00/
5020      DATA (GB( 6,15,IC),IC=1,3) /
5021     S 0.13243806E+02, 0.22433617E+02, 0.10000000E+01/
5022      DATA (GA( 6,16,IC),IC=1,3) /
5023     S 0.13316096E+02, 0.22723843E+02, 0.00000000E+00/
5024      DATA (GB( 6,16,IC),IC=1,3) /
5025     S 0.13316096E+02, 0.22733099E+02, 0.10000000E+01/
5026C
5027C----- INTERVAL = 4 ----- T =  262.5
5028C
5029C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
5030      DATA (GA( 7,15,IC),IC=1,3) /
5031     S 0.13266104E+02, 0.22508089E+02, 0.00000000E+00/
5032      DATA (GB( 7,15,IC),IC=1,3) /
5033     S 0.13266104E+02, 0.22517429E+02, 0.10000000E+01/
5034      DATA (GA( 7,16,IC),IC=1,3) /
5035     S 0.13360555E+02, 0.22837837E+02, 0.00000000E+00/
5036      DATA (GB( 7,16,IC),IC=1,3) /
5037     S 0.13360555E+02, 0.22847071E+02, 0.10000000E+01/
5038C
5039C----- INTERVAL = 4 ----- T =  275.0
5040C
5041C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
5042      DATA (GA( 8,15,IC),IC=1,3) /
5043     S 0.13291782E+02, 0.22591771E+02, 0.00000000E+00/
5044      DATA (GB( 8,15,IC),IC=1,3) /
5045     S 0.13291782E+02, 0.22601086E+02, 0.10000000E+01/
5046      DATA (GA( 8,16,IC),IC=1,3) /
5047     S 0.13407324E+02, 0.22949751E+02, 0.00000000E+00/
5048      DATA (GB( 8,16,IC),IC=1,3) /
5049     S 0.13407324E+02, 0.22958967E+02, 0.10000000E+01/
5050C
5051C----- INTERVAL = 4 ----- T =  287.5
5052C
5053C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
5054      DATA (GA( 9,15,IC),IC=1,3) /
5055     S 0.13319961E+02, 0.22674661E+02, 0.00000000E+00/
5056      DATA (GB( 9,15,IC),IC=1,3) /
5057     S 0.13319961E+02, 0.22683956E+02, 0.10000000E+01/
5058      DATA (GA( 9,16,IC),IC=1,3) /
5059     S 0.13455544E+02, 0.23059032E+02, 0.00000000E+00/
5060      DATA (GB( 9,16,IC),IC=1,3) /
5061     S 0.13455544E+02, 0.23068234E+02, 0.10000000E+01/
5062C
5063C----- INTERVAL = 4 ----- T =  300.0
5064C
5065C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
5066      DATA (GA(10,15,IC),IC=1,3) /
5067     S 0.13349927E+02, 0.22756246E+02, 0.00000000E+00/
5068      DATA (GB(10,15,IC),IC=1,3) /
5069     S 0.13349927E+02, 0.22765522E+02, 0.10000000E+01/
5070      DATA (GA(10,16,IC),IC=1,3) /
5071     S 0.13504450E+02, 0.23165146E+02, 0.00000000E+00/
5072      DATA (GB(10,16,IC),IC=1,3) /
5073     S 0.13504450E+02, 0.23174336E+02, 0.10000000E+01/
5074C
5075C----- INTERVAL = 4 ----- T =  312.5
5076C
5077C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
5078      DATA (GA(11,15,IC),IC=1,3) /
5079     S 0.13381108E+02, 0.22836093E+02, 0.00000000E+00/
5080      DATA (GB(11,15,IC),IC=1,3) /
5081     S 0.13381108E+02, 0.22845354E+02, 0.10000000E+01/
5082      DATA (GA(11,16,IC),IC=1,3) /
5083     S 0.13553282E+02, 0.23267456E+02, 0.00000000E+00/
5084      DATA (GB(11,16,IC),IC=1,3) /
5085     S 0.13553282E+02, 0.23276638E+02, 0.10000000E+01/
5086
5087C     ------------------------------------------------------------------
5088      DATA (( XP(  J,K),J=1,6),       K=1,6) /
5089     S 0.46430621E+02, 0.12928299E+03, 0.20732648E+03,
5090     S 0.31398411E+03, 0.18373177E+03,-0.11412303E+03,
5091     S 0.73604774E+02, 0.27887914E+03, 0.27076947E+03,
5092     S-0.57322111E+02,-0.64742459E+02, 0.87238280E+02,
5093     S 0.37050866E+02, 0.20498759E+03, 0.37558029E+03,
5094     S 0.17401171E+03,-0.13350302E+03,-0.37651795E+02,
5095     S 0.14930141E+02, 0.89161160E+02, 0.17793062E+03,
5096     S 0.93433860E+02,-0.70646020E+02,-0.26373150E+02,
5097     S 0.40386780E+02, 0.10855270E+03, 0.50755010E+02,
5098     S-0.31496190E+02, 0.12791300E+00, 0.18017770E+01,
5099     S 0.90811926E+01, 0.75073923E+02, 0.24654438E+03,
5100     S 0.39332612E+03, 0.29385281E+03, 0.89107921E+02 /
5101C
5102C
5103C*         1.0     PLANCK FUNCTIONS AND GRADIENTS
5104C                  ------------------------------
5105C
5106 100  CONTINUE
5107C
5108      DO 102 JK = 1 , KFLEV+1
5109      DO 101 JL = 1, KDLON
5110      PBINT(JL,JK) = 0.
5111 101  CONTINUE
5112 102  CONTINUE
5113      DO 103 JL = 1, KDLON
5114      PBSUIN(JL) = 0.
5115 103  CONTINUE
5116C
5117      DO 141 JNU=1,Ninter
5118C
5119C
5120C*         1.1   LEVELS FROM SURFACE TO KFLEV
5121C                ----------------------------
5122C
5123 110  CONTINUE
5124C
5125      DO 112 JK = 1 , KFLEV
5126      DO 111 JL = 1, KDLON
5127      ZTI(JL)=(PTL(JL,JK)-TSTAND)/TSTAND
5128      ZRES(JL) = XP(1,JNU)+ZTI(JL)*(XP(2,JNU)+ZTI(JL)*(XP(3,JNU)
5129     S       +ZTI(JL)*(XP(4,JNU)+ZTI(JL)*(XP(5,JNU)+ZTI(JL)*(XP(6,JNU)
5130     S       )))))
5131      PBINT(JL,JK)=PBINT(JL,JK)+ZRES(JL)
5132      PB(JL,JNU,JK)= ZRES(JL)
5133      ZBLEV(JL,JK) = ZRES(JL)
5134      ZTI2(JL)=(PTAVE(JL,JK)-TSTAND)/TSTAND
5135      ZRES2(JL)=XP(1,JNU)+ZTI2(JL)*(XP(2,JNU)+ZTI2(JL)*(XP(3,JNU)
5136     S     +ZTI2(JL)*(XP(4,JNU)+ZTI2(JL)*(XP(5,JNU)+ZTI2(JL)*(XP(6,JNU)
5137     S       )))))
5138      ZBLAY(JL,JK) = ZRES2(JL)
5139 111  CONTINUE
5140 112  CONTINUE
5141C
5142C
5143C*         1.2   TOP OF THE ATMOSPHERE AND SURFACE
5144C                ---------------------------------
5145C
5146 120  CONTINUE
5147C
5148      DO 121 JL = 1, KDLON
5149      ZTI(JL)=(PTL(JL,KFLEV+1)-TSTAND)/TSTAND
5150      ZTI2(JL) = (PTL(JL,1) + PDT0(JL) - TSTAND) / TSTAND
5151      ZRES(JL) = XP(1,JNU)+ZTI(JL)*(XP(2,JNU)+ZTI(JL)*(XP(3,JNU)
5152     S    +ZTI(JL)*(XP(4,JNU)+ZTI(JL)*(XP(5,JNU)+ZTI(JL)*(XP(6,JNU)
5153     S       )))))
5154      ZRES2(JL) = XP(1,JNU)+ZTI2(JL)*(XP(2,JNU)+ZTI2(JL)*(XP(3,JNU)
5155     S    +ZTI2(JL)*(XP(4,JNU)+ZTI2(JL)*(XP(5,JNU)+ZTI2(JL)*(XP(6,JNU)
5156     S       )))))
5157      PBINT(JL,KFLEV+1) = PBINT(JL,KFLEV+1)+ZRES(JL)
5158      PB(JL,JNU,KFLEV+1)= ZRES(JL)
5159      ZBLEV(JL,KFLEV+1) = ZRES(JL)
5160      PBTOP(JL,JNU) = ZRES(JL)
5161      PBSUR(JL,JNU) = ZRES2(JL)
5162      PBSUIN(JL) = PBSUIN(JL) + ZRES2(JL)
5163 121  CONTINUE
5164C
5165C
5166C*         1.3   GRADIENTS IN SUB-LAYERS
5167C                -----------------------
5168C
5169 130  CONTINUE
5170C
5171      DO 132 JK = 1 , KFLEV
5172      JK2 = 2 * JK
5173      JK1 = JK2 - 1
5174      DO 131 JL = 1, KDLON
5175      PDBSL(JL,JNU,JK1) = ZBLAY(JL,JK  ) - ZBLEV(JL,JK)
5176      PDBSL(JL,JNU,JK2) = ZBLEV(JL,JK+1) - ZBLAY(JL,JK)
5177 131  CONTINUE
5178 132  CONTINUE
5179C
5180 141  CONTINUE
5181C
5182C*         2.0   CHOOSE THE RELEVANT SETS OF PADE APPROXIMANTS
5183C                ---------------------------------------------
5184C
5185 200  CONTINUE
5186C
5187C
5188 210  CONTINUE
5189C
5190      DO 211 JL=1, KDLON
5191      ZDSTO1 = (PTL(JL,KFLEV+1)-TINTP(1)) / TSTP
5192      IXTOX = MAX( 1, MIN( MXIXT, INT( ZDSTO1 + 1. ) ) )
5193      ZDSTOX = (PTL(JL,KFLEV+1)-TINTP(IXTOX))/TSTP
5194      IF (ZDSTOX.LT.0.5) THEN
5195         INDTO=IXTOX
5196      ELSE
5197         INDTO=IXTOX+1
5198      END IF
5199      INDB(JL)=INDTO
5200      ZDST1 = (PTL(JL,1)-TINTP(1)) / TSTP
5201      IXTX = MAX( 1, MIN( MXIXT, INT( ZDST1 + 1. ) ) )
5202      ZDSTX = (PTL(JL,1)-TINTP(IXTX))/TSTP
5203      IF (ZDSTX.LT.0.5) THEN
5204         INDT=IXTX
5205      ELSE
5206         INDT=IXTX+1
5207      END IF
5208      INDS(JL)=INDT
5209 211  CONTINUE
5210C
5211      DO 214 JF=1,2
5212      DO 213 JG=1, 8
5213      DO 212 JL=1, KDLON
5214      INDSU=INDS(JL)
5215      PGASUR(JL,JG,JF)=GA(INDSU,2*JG-1,JF)
5216      PGBSUR(JL,JG,JF)=GB(INDSU,2*JG-1,JF)
5217      INDTP=INDB(JL)
5218      PGATOP(JL,JG,JF)=GA(INDTP,2*JG-1,JF)
5219      PGBTOP(JL,JG,JF)=GB(INDTP,2*JG-1,JF)
5220 212  CONTINUE
5221 213  CONTINUE
5222 214  CONTINUE
5223C
5224 220  CONTINUE
5225C
5226      DO 225 JK=1,KFLEV
5227      DO 221 JL=1, KDLON
5228      ZDST1 = (PTAVE(JL,JK)-TINTP(1)) / TSTP
5229      IXTX = MAX( 1, MIN( MXIXT, INT( ZDST1 + 1. ) ) )
5230      ZDSTX = (PTAVE(JL,JK)-TINTP(IXTX))/TSTP
5231      IF (ZDSTX.LT.0.5) THEN
5232         INDT=IXTX
5233      ELSE
5234         INDT=IXTX+1
5235      END IF
5236      INDB(JL)=INDT
5237 221  CONTINUE
5238C
5239      DO 224 JF=1,2
5240      DO 223 JG=1, 8
5241      DO 222 JL=1, KDLON
5242      INDT=INDB(JL)
5243      PGA(JL,JG,JF,JK)=GA(INDT,2*JG,JF)
5244      PGB(JL,JG,JF,JK)=GB(INDT,2*JG,JF)
5245 222  CONTINUE
5246 223  CONTINUE
5247 224  CONTINUE
5248 225  CONTINUE
5249C
5250C     ------------------------------------------------------------------
5251C
5252      RETURN
5253      END
5254      SUBROUTINE LWV(KUAER,KTRAER, KLIM
5255     R  , PABCU,PB,PBINT,PBSUIN,PBSUR,PBTOP,PDBSL,PEMIS,PPMB,PTAVE
5256     R  , PGA,PGB,PGASUR,PGBSUR,PGATOP,PGBTOP
5257     S  , PCNTRB,PCTS,PFLUC)
5258      IMPLICIT none
5259#include "dimensions.h"
5260#include "dimphy.h"
5261#include "raddim.h"
5262#include "raddimlw.h"
5263#include "YOMCST.h"
5264C
5265C-----------------------------------------------------------------------
5266C     PURPOSE.
5267C     --------
5268C           CARRIES OUT THE VERTICAL INTEGRATION TO GIVE LONGWAVE
5269C           FLUXES OR RADIANCES
5270C
5271C     METHOD.
5272C     -------
5273C
5274C          1. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING BETWEEN
5275C     CONTRIBUTIONS BY -  THE NEARBY LAYERS
5276C                      -  THE DISTANT LAYERS
5277C                      -  THE BOUNDARY TERMS
5278C          2. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
5279C
5280C     REFERENCE.
5281C     ----------
5282C
5283C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
5284C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
5285C
5286C     AUTHOR.
5287C     -------
5288C        JEAN-JACQUES MORCRETTE  *ECMWF*
5289C
5290C     MODIFICATIONS.
5291C     --------------
5292C        ORIGINAL : 89-07-14
5293C-----------------------------------------------------------------------
5294C
5295C* ARGUMENTS:
5296      INTEGER KUAER,KTRAER, KLIM
5297C
5298      REAL*8 PABCU(KDLON,NUA,3*KFLEV+1) ! EFFECTIVE ABSORBER AMOUNTS
5299      REAL*8 PB(KDLON,Ninter,KFLEV+1) ! SPECTRAL HALF-LEVEL PLANCK FUNCTIONS
5300      REAL*8 PBINT(KDLON,KFLEV+1) ! HALF-LEVEL PLANCK FUNCTIONS
5301      REAL*8 PBSUR(KDLON,Ninter) ! SURFACE SPECTRAL PLANCK FUNCTION
5302      REAL*8 PBSUIN(KDLON) ! SURFACE PLANCK FUNCTION
5303      REAL*8 PBTOP(KDLON,Ninter) ! T.O.A. SPECTRAL PLANCK FUNCTION
5304      REAL*8 PDBSL(KDLON,Ninter,KFLEV*2) ! SUB-LAYER PLANCK FUNCTION GRADIENT
5305      REAL*8 PEMIS(KDLON) ! SURFACE EMISSIVITY
5306      REAL*8 PPMB(KDLON,KFLEV+1) ! HALF-LEVEL PRESSURE (MB)
5307      REAL*8 PTAVE(KDLON,KFLEV) ! TEMPERATURE
5308      REAL*8 PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5309      REAL*8 PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5310      REAL*8 PGASUR(KDLON,8,2) ! PADE APPROXIMANTS
5311      REAL*8 PGBSUR(KDLON,8,2) ! PADE APPROXIMANTS
5312      REAL*8 PGATOP(KDLON,8,2) ! PADE APPROXIMANTS
5313      REAL*8 PGBTOP(KDLON,8,2) ! PADE APPROXIMANTS
5314C
5315      REAL*8 PCNTRB(KDLON,KFLEV+1,KFLEV+1) ! CLEAR-SKY ENERGY EXCHANGE MATRIX
5316      REAL*8 PCTS(KDLON,KFLEV) ! COOLING-TO-SPACE TERM
5317      REAL*8 PFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES
5318C-----------------------------------------------------------------------
5319C LOCAL VARIABLES:
5320      REAL*8 ZADJD(KDLON,KFLEV+1)
5321      REAL*8 ZADJU(KDLON,KFLEV+1)
5322      REAL*8 ZDBDT(KDLON,Ninter,KFLEV)
5323      REAL*8 ZDISD(KDLON,KFLEV+1)
5324      REAL*8 ZDISU(KDLON,KFLEV+1)
5325C
5326      INTEGER jk, jl
5327C-----------------------------------------------------------------------
5328C
5329      DO 112 JK=1,KFLEV+1
5330      DO 111 JL=1, KDLON
5331      ZADJD(JL,JK)=0.
5332      ZADJU(JL,JK)=0.
5333      ZDISD(JL,JK)=0.
5334      ZDISU(JL,JK)=0.
5335 111  CONTINUE
5336 112  CONTINUE
5337C
5338      DO 114 JK=1,KFLEV
5339      DO 113 JL=1, KDLON
5340      PCTS(JL,JK)=0.
5341 113  CONTINUE
5342 114  CONTINUE
5343C
5344C* CONTRIBUTION FROM ADJACENT LAYERS
5345C
5346      CALL LWVN(KUAER,KTRAER
5347     R  , PABCU,PDBSL,PGA,PGB
5348     S  , ZADJD,ZADJU,PCNTRB,ZDBDT)
5349C* CONTRIBUTION FROM DISTANT LAYERS
5350C
5351      CALL LWVD(KUAER,KTRAER
5352     R  , PABCU,ZDBDT,PGA,PGB
5353     S  , PCNTRB,ZDISD,ZDISU)
5354C
5355C* EXCHANGE WITH THE BOUNDARIES
5356C
5357      CALL LWVB(KUAER,KTRAER, KLIM
5358     R  , PABCU,ZADJD,ZADJU,PB,PBINT,PBSUIN,PBSUR,PBTOP
5359     R  , ZDISD,ZDISU,PEMIS,PPMB
5360     R  , PGA,PGB,PGASUR,PGBSUR,PGATOP,PGBTOP
5361     S  , PCTS,PFLUC)
5362C
5363C
5364      RETURN
5365      END
5366      SUBROUTINE LWVB(KUAER,KTRAER, KLIM
5367     R  , PABCU,PADJD,PADJU,PB,PBINT,PBSUI,PBSUR,PBTOP
5368     R  , PDISD,PDISU,PEMIS,PPMB
5369     R  , PGA,PGB,PGASUR,PGBSUR,PGATOP,PGBTOP
5370     S  , PCTS,PFLUC)
5371      IMPLICIT none
5372#include "dimensions.h"
5373#include "dimphy.h"
5374#include "raddim.h"
5375#include "raddimlw.h"
5376#include "radopt.h"
5377C
5378C-----------------------------------------------------------------------
5379C     PURPOSE.
5380C     --------
5381C           INTRODUCES THE EFFECTS OF THE BOUNDARIES IN THE VERTICAL
5382C           INTEGRATION
5383C
5384C     METHOD.
5385C     -------
5386C
5387C          1. COMPUTES THE ENERGY EXCHANGE WITH TOP AND SURFACE OF THE
5388C     ATMOSPHERE
5389C          2. COMPUTES THE COOLING-TO-SPACE AND HEATING-FROM-GROUND
5390C     TERMS FOR THE APPROXIMATE COOLING RATE ABOVE 10 HPA
5391C          3. ADDS UP ALL CONTRIBUTIONS TO GET THE CLEAR-SKY FLUXES
5392C
5393C     REFERENCE.
5394C     ----------
5395C
5396C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
5397C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
5398C
5399C     AUTHOR.
5400C     -------
5401C        JEAN-JACQUES MORCRETTE  *ECMWF*
5402C
5403C     MODIFICATIONS.
5404C     --------------
5405C        ORIGINAL : 89-07-14
5406C        Voigt lines (loop 2413 to 2427)  - JJM & PhD - 01/96
5407C-----------------------------------------------------------------------
5408C
5409C*       0.1   ARGUMENTS
5410C              ---------
5411C
5412      INTEGER KUAER,KTRAER, KLIM
5413C
5414      REAL*8 PABCU(KDLON,NUA,3*KFLEV+1) ! ABSORBER AMOUNTS
5415      REAL*8 PADJD(KDLON,KFLEV+1) ! CONTRIBUTION BY ADJACENT LAYERS
5416      REAL*8 PADJU(KDLON,KFLEV+1) ! CONTRIBUTION BY ADJACENT LAYERS
5417      REAL*8 PB(KDLON,Ninter,KFLEV+1) ! SPECTRAL HALF-LEVEL PLANCK FUNCTIONS
5418      REAL*8 PBINT(KDLON,KFLEV+1) ! HALF-LEVEL PLANCK FUNCTIONS
5419      REAL*8 PBSUR(KDLON,Ninter) ! SPECTRAL SURFACE PLANCK FUNCTION
5420      REAL*8 PBSUI(KDLON) ! SURFACE PLANCK FUNCTION
5421      REAL*8 PBTOP(KDLON,Ninter) ! SPECTRAL T.O.A. PLANCK FUNCTION
5422      REAL*8 PDISD(KDLON,KFLEV+1) ! CONTRIBUTION BY DISTANT LAYERS
5423      REAL*8 PDISU(KDLON,KFLEV+1) ! CONTRIBUTION BY DISTANT LAYERS
5424      REAL*8 PEMIS(KDLON) ! SURFACE EMISSIVITY
5425      REAL*8 PPMB(KDLON,KFLEV+1) ! PRESSURE MB
5426      REAL*8 PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5427      REAL*8 PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5428      REAL*8 PGASUR(KDLON,8,2) ! SURFACE PADE APPROXIMANTS
5429      REAL*8 PGBSUR(KDLON,8,2) ! SURFACE PADE APPROXIMANTS
5430      REAL*8 PGATOP(KDLON,8,2) ! T.O.A. PADE APPROXIMANTS
5431      REAL*8 PGBTOP(KDLON,8,2) ! T.O.A. PADE APPROXIMANTS
5432C
5433      REAL*8 PFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES
5434      REAL*8 PCTS(KDLON,KFLEV) ! COOLING-TO-SPACE TERM
5435C
5436C* LOCAL VARIABLES:
5437C
5438      REAL*8 ZBGND(KDLON)
5439      REAL*8 ZFD(KDLON)
5440      REAL*8  ZFN10(KDLON)
5441      REAL*8 ZFU(KDLON)
5442      REAL*8  ZTT(KDLON,NTRA)
5443      REAL*8 ZTT1(KDLON,NTRA)
5444      REAL*8 ZTT2(KDLON,NTRA)
5445      REAL*8  ZUU(KDLON,NUA)
5446      REAL*8 ZCNSOL(KDLON)
5447      REAL*8 ZCNTOP(KDLON)
5448C
5449      INTEGER jk, jl, ja
5450      INTEGER jstra, jstru
5451      INTEGER ind1, ind2, ind3, ind4, in, jlim
5452      REAL*8 zctstr
5453C-----------------------------------------------------------------------
5454C
5455C*         1.    INITIALIZATION
5456C                --------------
5457C
5458 100  CONTINUE
5459C
5460C
5461C*         1.2     INITIALIZE TRANSMISSION FUNCTIONS
5462C                  ---------------------------------
5463C
5464 120  CONTINUE
5465C
5466      DO 122 JA=1,NTRA
5467      DO 121 JL=1, KDLON
5468      ZTT (JL,JA)=1.0
5469      ZTT1(JL,JA)=1.0
5470      ZTT2(JL,JA)=1.0
5471 121  CONTINUE
5472 122  CONTINUE
5473C
5474      DO 124 JA=1,NUA
5475      DO 123 JL=1, KDLON
5476      ZUU(JL,JA)=1.0
5477 123  CONTINUE
5478 124  CONTINUE
5479C
5480C     ------------------------------------------------------------------
5481C
5482C*         2.      VERTICAL INTEGRATION
5483C                  --------------------
5484C
5485 200  CONTINUE
5486C
5487      IND1=0
5488      IND3=0
5489      IND4=1
5490      IND2=1
5491C
5492C
5493C*         2.3     EXCHANGE WITH TOP OF THE ATMOSPHERE
5494C                  -----------------------------------
5495C
5496 230  CONTINUE
5497C
5498      DO 235 JK = 1 , KFLEV
5499      IN=(JK-1)*NG1P1+1
5500C
5501      DO 232 JA=1,KUAER
5502      DO 231 JL=1, KDLON
5503      ZUU(JL,JA)=PABCU(JL,JA,IN)
5504 231  CONTINUE
5505 232  CONTINUE
5506C
5507C
5508      CALL LWTT(PGATOP(1,1,1), PGBTOP(1,1,1), ZUU, ZTT)
5509C
5510      DO 234 JL = 1, KDLON
5511      ZCNTOP(JL)=PBTOP(JL,1)*ZTT(JL,1)          *ZTT(JL,10)
5512     2      +PBTOP(JL,2)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5513     3      +PBTOP(JL,3)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5514     4      +PBTOP(JL,4)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5515     5      +PBTOP(JL,5)*ZTT(JL,3)          *ZTT(JL,14)
5516     6      +PBTOP(JL,6)*ZTT(JL,6)          *ZTT(JL,15)
5517      ZFD(JL)=ZCNTOP(JL)-PBINT(JL,JK)-PDISD(JL,JK)-PADJD(JL,JK)
5518      PFLUC(JL,2,JK)=ZFD(JL)
5519 234  CONTINUE
5520C
5521 235  CONTINUE
5522C
5523      JK = KFLEV+1
5524      IN=(JK-1)*NG1P1+1
5525C
5526      DO 236 JL = 1, KDLON
5527      ZCNTOP(JL)= PBTOP(JL,1)
5528     1   + PBTOP(JL,2)
5529     2   + PBTOP(JL,3)
5530     3   + PBTOP(JL,4)
5531     4   + PBTOP(JL,5)
5532     5   + PBTOP(JL,6)
5533      ZFD(JL)=ZCNTOP(JL)-PBINT(JL,JK)-PDISD(JL,JK)-PADJD(JL,JK)
5534      PFLUC(JL,2,JK)=ZFD(JL)
5535 236  CONTINUE
5536C
5537C*         2.4     COOLING-TO-SPACE OF LAYERS ABOVE 10 HPA
5538C                  ---------------------------------------
5539C
5540 240  CONTINUE
5541C
5542C
5543C*         2.4.1   INITIALIZATION
5544C                  --------------
5545C
5546 2410 CONTINUE
5547C
5548      JLIM = KFLEV
5549C
5550      IF (.NOT.LEVOIGT) THEN
5551      DO 2412 JK = KFLEV,1,-1
5552      IF(PPMB(1,JK).LT.10.0) THEN
5553         JLIM=JK
5554      ENDIF   
5555 2412 CONTINUE
5556      ENDIF
5557      KLIM=JLIM
5558C
5559      IF (.NOT.LEVOIGT) THEN
5560        DO 2414 JA=1,KTRAER
5561        DO 2413 JL=1, KDLON
5562        ZTT1(JL,JA)=1.0
5563 2413   CONTINUE
5564 2414   CONTINUE
5565C
5566C*         2.4.2   LOOP OVER LAYERS ABOVE 10 HPA
5567C                  -----------------------------
5568C
5569 2420   CONTINUE
5570C
5571        DO 2427 JSTRA = KFLEV,JLIM,-1
5572        JSTRU=(JSTRA-1)*NG1P1+1
5573C
5574        DO 2423 JA=1,KUAER
5575        DO 2422 JL=1, KDLON
5576        ZUU(JL,JA)=PABCU(JL,JA,JSTRU)
5577 2422   CONTINUE
5578 2423   CONTINUE
5579C
5580C
5581        CALL LWTT(PGA(1,1,1,JSTRA), PGB(1,1,1,JSTRA), ZUU, ZTT)
5582C
5583        DO 2424 JL = 1, KDLON
5584        ZCTSTR =
5585     1   (PB(JL,1,JSTRA)+PB(JL,1,JSTRA+1))
5586     1       *(ZTT1(JL,1)           *ZTT1(JL,10)
5587     1       - ZTT (JL,1)           *ZTT (JL,10))
5588     2  +(PB(JL,2,JSTRA)+PB(JL,2,JSTRA+1))
5589     2       *(ZTT1(JL,2)*ZTT1(JL,7)*ZTT1(JL,11)
5590     2       - ZTT (JL,2)*ZTT (JL,7)*ZTT (JL,11))
5591     3  +(PB(JL,3,JSTRA)+PB(JL,3,JSTRA+1))
5592     3       *(ZTT1(JL,4)*ZTT1(JL,8)*ZTT1(JL,12)
5593     3       - ZTT (JL,4)*ZTT (JL,8)*ZTT (JL,12))
5594     4  +(PB(JL,4,JSTRA)+PB(JL,4,JSTRA+1))
5595     4       *(ZTT1(JL,5)*ZTT1(JL,9)*ZTT1(JL,13)
5596     4       - ZTT (JL,5)*ZTT (JL,9)*ZTT (JL,13))
5597     5  +(PB(JL,5,JSTRA)+PB(JL,5,JSTRA+1))
5598     5       *(ZTT1(JL,3)           *ZTT1(JL,14)
5599     5       - ZTT (JL,3)           *ZTT (JL,14))
5600     6  +(PB(JL,6,JSTRA)+PB(JL,6,JSTRA+1))
5601     6       *(ZTT1(JL,6)           *ZTT1(JL,15)
5602     6       - ZTT (JL,6)           *ZTT (JL,15))
5603        PCTS(JL,JSTRA)=ZCTSTR*0.5
5604 2424   CONTINUE
5605        DO 2426 JA=1,KTRAER
5606        DO 2425 JL=1, KDLON
5607        ZTT1(JL,JA)=ZTT(JL,JA)
5608 2425   CONTINUE
5609 2426   CONTINUE
5610 2427   CONTINUE
5611      ENDIF
5612C Mise a zero de securite pour PCTS en cas de LEVOIGT
5613      IF(LEVOIGT)THEN
5614        DO 2429 JSTRA = 1,KFLEV
5615        DO 2428 JL = 1, KDLON
5616          PCTS(JL,JSTRA)=0.
5617 2428   CONTINUE
5618 2429   CONTINUE
5619      ENDIF
5620C
5621C
5622C*         2.5     EXCHANGE WITH LOWER LIMIT
5623C                  -------------------------
5624C
5625 250  CONTINUE
5626C
5627      DO 251 JL = 1, KDLON
5628      ZBGND(JL)=PBSUI(JL)*PEMIS(JL)-(1.-PEMIS(JL))
5629     S               *PFLUC(JL,2,1)-PBINT(JL,1)
5630 251  CONTINUE
5631C
5632      JK = 1
5633      IN=(JK-1)*NG1P1+1
5634C
5635      DO 252 JL = 1, KDLON
5636      ZCNSOL(JL)=PBSUR(JL,1)
5637     1 +PBSUR(JL,2)
5638     2 +PBSUR(JL,3)
5639     3 +PBSUR(JL,4)
5640     4 +PBSUR(JL,5)
5641     5 +PBSUR(JL,6)
5642      ZCNSOL(JL)=ZCNSOL(JL)*ZBGND(JL)/PBSUI(JL)
5643      ZFU(JL)=ZCNSOL(JL)+PBINT(JL,JK)-PDISU(JL,JK)-PADJU(JL,JK)
5644      PFLUC(JL,1,JK)=ZFU(JL)
5645 252  CONTINUE
5646C
5647      DO 257 JK = 2 , KFLEV+1
5648      IN=(JK-1)*NG1P1+1
5649C
5650C
5651      DO 255 JA=1,KUAER
5652      DO 254 JL=1, KDLON
5653      ZUU(JL,JA)=PABCU(JL,JA,1)-PABCU(JL,JA,IN)
5654 254  CONTINUE
5655 255  CONTINUE
5656C
5657C
5658      CALL LWTT(PGASUR(1,1,1), PGBSUR(1,1,1), ZUU, ZTT)
5659C
5660      DO 256 JL = 1, KDLON
5661      ZCNSOL(JL)=PBSUR(JL,1)*ZTT(JL,1)          *ZTT(JL,10)
5662     2      +PBSUR(JL,2)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5663     3      +PBSUR(JL,3)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5664     4      +PBSUR(JL,4)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5665     5      +PBSUR(JL,5)*ZTT(JL,3)          *ZTT(JL,14)
5666     6      +PBSUR(JL,6)*ZTT(JL,6)          *ZTT(JL,15)
5667      ZCNSOL(JL)=ZCNSOL(JL)*ZBGND(JL)/PBSUI(JL)
5668      ZFU(JL)=ZCNSOL(JL)+PBINT(JL,JK)-PDISU(JL,JK)-PADJU(JL,JK)
5669      PFLUC(JL,1,JK)=ZFU(JL)
5670 256  CONTINUE
5671C
5672C
5673 257  CONTINUE
5674C
5675C
5676C
5677C*         2.7     CLEAR-SKY FLUXES
5678C                  ----------------
5679C
5680 270  CONTINUE
5681C
5682      IF (.NOT.LEVOIGT) THEN
5683      DO 271 JL = 1, KDLON
5684      ZFN10(JL) = PFLUC(JL,1,JLIM) + PFLUC(JL,2,JLIM)
5685 271  CONTINUE
5686      DO 273 JK = JLIM+1,KFLEV+1
5687      DO 272 JL = 1, KDLON
5688      ZFN10(JL) = ZFN10(JL) + PCTS(JL,JK-1)
5689      PFLUC(JL,1,JK) = ZFN10(JL)
5690      PFLUC(JL,2,JK) = 0.
5691 272  CONTINUE
5692 273  CONTINUE
5693      ENDIF
5694C
5695C     ------------------------------------------------------------------
5696C
5697      RETURN
5698      END
5699      SUBROUTINE LWVD(KUAER,KTRAER
5700     S  , PABCU,PDBDT
5701     R  , PGA,PGB
5702     S  , PCNTRB,PDISD,PDISU)
5703      IMPLICIT none
5704#include "dimensions.h"
5705#include "dimphy.h"
5706#include "raddim.h"
5707#include "raddimlw.h"
5708C
5709C-----------------------------------------------------------------------
5710C     PURPOSE.
5711C     --------
5712C           CARRIES OUT THE VERTICAL INTEGRATION ON THE DISTANT LAYERS
5713C
5714C     METHOD.
5715C     -------
5716C
5717C          1. PERFORMS THE VERTICAL INTEGRATION CORRESPONDING TO THE
5718C     CONTRIBUTIONS OF THE DISTANT LAYERS USING TRAPEZOIDAL RULE
5719C
5720C     REFERENCE.
5721C     ----------
5722C
5723C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
5724C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
5725C
5726C     AUTHOR.
5727C     -------
5728C        JEAN-JACQUES MORCRETTE  *ECMWF*
5729C
5730C     MODIFICATIONS.
5731C     --------------
5732C        ORIGINAL : 89-07-14
5733C-----------------------------------------------------------------------
5734C* ARGUMENTS:
5735C
5736      INTEGER KUAER,KTRAER
5737C
5738      REAL*8 PABCU(KDLON,NUA,3*KFLEV+1) ! ABSORBER AMOUNTS
5739      REAL*8 PDBDT(KDLON,Ninter,KFLEV) ! LAYER PLANCK FUNCTION GRADIENT
5740      REAL*8 PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5741      REAL*8 PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5742C
5743      REAL*8 PCNTRB(KDLON,KFLEV+1,KFLEV+1) ! ENERGY EXCHANGE MATRIX
5744      REAL*8 PDISD(KDLON,KFLEV+1) !  CONTRIBUTION BY DISTANT LAYERS
5745      REAL*8 PDISU(KDLON,KFLEV+1) !  CONTRIBUTION BY DISTANT LAYERS
5746C
5747C* LOCAL VARIABLES:
5748C
5749      REAL*8 ZGLAYD(KDLON)
5750      REAL*8 ZGLAYU(KDLON)
5751      REAL*8 ZTT(KDLON,NTRA)
5752      REAL*8 ZTT1(KDLON,NTRA)
5753      REAL*8 ZTT2(KDLON,NTRA)
5754C
5755      INTEGER jl, jk, ja, ikp1, ikn, ikd1, jkj, ikd2
5756      INTEGER ikjp1, ikm1, ikj, jlk, iku1, ijkl, iku2
5757      INTEGER ind1, ind2, ind3, ind4, itt
5758      REAL*8 zww, zdzxdg, zdzxmg
5759C
5760C*         1.    INITIALIZATION
5761C                --------------
5762C
5763 100  CONTINUE
5764C
5765C*         1.1     INITIALIZE LAYER CONTRIBUTIONS
5766C                  ------------------------------
5767C
5768 110  CONTINUE
5769C
5770      DO 112 JK = 1, KFLEV+1
5771      DO 111 JL = 1, KDLON
5772      PDISD(JL,JK) = 0.
5773      PDISU(JL,JK) = 0.
5774  111 CONTINUE
5775  112 CONTINUE
5776C
5777C*         1.2     INITIALIZE TRANSMISSION FUNCTIONS
5778C                  ---------------------------------
5779C
5780 120  CONTINUE
5781C
5782C
5783      DO 122 JA = 1, NTRA
5784      DO 121 JL = 1, KDLON
5785      ZTT (JL,JA) = 1.0
5786      ZTT1(JL,JA) = 1.0
5787      ZTT2(JL,JA) = 1.0
5788  121 CONTINUE
5789  122 CONTINUE
5790C
5791C     ------------------------------------------------------------------
5792C
5793C*         2.      VERTICAL INTEGRATION
5794C                  --------------------
5795C
5796 200  CONTINUE
5797C
5798      IND1=0
5799      IND3=0
5800      IND4=1
5801      IND2=1
5802C
5803C
5804C*         2.2     CONTRIBUTION FROM DISTANT LAYERS
5805C                  ---------------------------------
5806C
5807 220  CONTINUE
5808C
5809C
5810C*         2.2.1   DISTANT AND ABOVE LAYERS
5811C                  ------------------------
5812C
5813 2210 CONTINUE
5814C
5815C
5816C
5817C*         2.2.2   FIRST UPPER LEVEL
5818C                  -----------------
5819C
5820 2220 CONTINUE
5821C
5822      DO 225 JK = 1 , KFLEV-1
5823      IKP1=JK+1
5824      IKN=(JK-1)*NG1P1+1
5825      IKD1= JK  *NG1P1+1
5826C
5827      CALL LWTTM(PGA(1,1,1,JK), PGB(1,1,1,JK)
5828     2          , PABCU(1,1,IKN),PABCU(1,1,IKD1),ZTT1)
5829C
5830C
5831C
5832C*         2.2.3   HIGHER UP
5833C                  ---------
5834C
5835 2230 CONTINUE
5836C
5837      ITT=1
5838      DO 224 JKJ=IKP1,KFLEV
5839      IF(ITT.EQ.1) THEN
5840         ITT=2
5841      ELSE
5842         ITT=1
5843      ENDIF
5844      IKJP1=JKJ+1
5845      IKD2= JKJ  *NG1P1+1
5846C
5847      IF(ITT.EQ.1) THEN
5848         CALL LWTTM(PGA(1,1,1,JKJ),PGB(1,1,1,JKJ)
5849     2             , PABCU(1,1,IKN),PABCU(1,1,IKD2),ZTT1)
5850      ELSE
5851         CALL LWTTM(PGA(1,1,1,JKJ),PGB(1,1,1,JKJ)
5852     2             , PABCU(1,1,IKN),PABCU(1,1,IKD2),ZTT2)
5853      ENDIF
5854C
5855      DO 2235 JA = 1, KTRAER
5856      DO 2234 JL = 1, KDLON
5857      ZTT(JL,JA) = (ZTT1(JL,JA)+ZTT2(JL,JA))*0.5
5858 2234 CONTINUE
5859 2235 CONTINUE
5860C
5861      DO 2236 JL = 1, KDLON
5862      ZWW=PDBDT(JL,1,JKJ)*ZTT(JL,1)          *ZTT(JL,10)
5863     S   +PDBDT(JL,2,JKJ)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5864     S   +PDBDT(JL,3,JKJ)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5865     S   +PDBDT(JL,4,JKJ)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5866     S   +PDBDT(JL,5,JKJ)*ZTT(JL,3)          *ZTT(JL,14)
5867     S   +PDBDT(JL,6,JKJ)*ZTT(JL,6)          *ZTT(JL,15)
5868      ZGLAYD(JL)=ZWW
5869      ZDZXDG=ZGLAYD(JL)
5870      PDISD(JL,JK)=PDISD(JL,JK)+ZDZXDG
5871      PCNTRB(JL,JK,IKJP1)=ZDZXDG
5872 2236 CONTINUE
5873C
5874C
5875 224  CONTINUE
5876 225  CONTINUE
5877C
5878C
5879C*         2.2.4   DISTANT AND BELOW LAYERS
5880C                  ------------------------
5881C
5882 2240 CONTINUE
5883C
5884C
5885C
5886C*         2.2.5   FIRST LOWER LEVEL
5887C                  -----------------
5888C
5889 2250 CONTINUE
5890C
5891      DO 228 JK=3,KFLEV+1
5892      IKN=(JK-1)*NG1P1+1
5893      IKM1=JK-1
5894      IKJ=JK-2
5895      IKU1= IKJ  *NG1P1+1
5896C
5897C
5898      CALL LWTTM(PGA(1,1,1,IKJ),PGB(1,1,1,IKJ)
5899     2          , PABCU(1,1,IKU1),PABCU(1,1,IKN),ZTT1)
5900C
5901C
5902C
5903C*         2.2.6   DOWN BELOW
5904C                  ----------
5905C
5906 2260 CONTINUE
5907C
5908      ITT=1
5909      DO 227 JLK=1,IKJ
5910      IF(ITT.EQ.1) THEN
5911         ITT=2
5912      ELSE
5913         ITT=1
5914      ENDIF
5915      IJKL=IKM1-JLK
5916      IKU2=(IJKL-1)*NG1P1+1
5917C
5918C
5919      IF(ITT.EQ.1) THEN
5920         CALL LWTTM(PGA(1,1,1,IJKL),PGB(1,1,1,IJKL)
5921     2             , PABCU(1,1,IKU2),PABCU(1,1,IKN),ZTT1)
5922      ELSE
5923         CALL LWTTM(PGA(1,1,1,IJKL),PGB(1,1,1,IJKL)
5924     2             , PABCU(1,1,IKU2),PABCU(1,1,IKN),ZTT2)
5925      ENDIF
5926C
5927      DO 2265 JA = 1, KTRAER
5928      DO 2264 JL = 1, KDLON
5929      ZTT(JL,JA) = (ZTT1(JL,JA)+ZTT2(JL,JA))*0.5
5930 2264 CONTINUE
5931 2265 CONTINUE
5932C
5933      DO 2266 JL = 1, KDLON
5934      ZWW=PDBDT(JL,1,IJKL)*ZTT(JL,1)          *ZTT(JL,10)
5935     S   +PDBDT(JL,2,IJKL)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5936     S   +PDBDT(JL,3,IJKL)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5937     S   +PDBDT(JL,4,IJKL)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5938     S   +PDBDT(JL,5,IJKL)*ZTT(JL,3)          *ZTT(JL,14)
5939     S   +PDBDT(JL,6,IJKL)*ZTT(JL,6)          *ZTT(JL,15)
5940      ZGLAYU(JL)=ZWW
5941      ZDZXMG=ZGLAYU(JL)
5942      PDISU(JL,JK)=PDISU(JL,JK)+ZDZXMG
5943      PCNTRB(JL,JK,IJKL)=ZDZXMG
5944 2266 CONTINUE
5945C
5946C
5947 227  CONTINUE
5948 228  CONTINUE
5949C
5950      RETURN
5951      END
5952      SUBROUTINE LWVN(KUAER,KTRAER
5953     R  , PABCU,PDBSL,PGA,PGB
5954     S  , PADJD,PADJU,PCNTRB,PDBDT)
5955      IMPLICIT none
5956#include "dimensions.h"
5957#include "dimphy.h"
5958#include "raddim.h"
5959#include "raddimlw.h"
5960C
5961C-----------------------------------------------------------------------
5962C     PURPOSE.
5963C     --------
5964C           CARRIES OUT THE VERTICAL INTEGRATION ON NEARBY LAYERS
5965C           TO GIVE LONGWAVE FLUXES OR RADIANCES
5966C
5967C     METHOD.
5968C     -------
5969C
5970C          1. PERFORMS THE VERTICAL INTEGRATION CORRESPONDING TO THE
5971C     CONTRIBUTIONS OF THE ADJACENT LAYERS USING A GAUSSIAN QUADRATURE
5972C
5973C     REFERENCE.
5974C     ----------
5975C
5976C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
5977C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
5978C
5979C     AUTHOR.
5980C     -------
5981C        JEAN-JACQUES MORCRETTE  *ECMWF*
5982C
5983C     MODIFICATIONS.
5984C     --------------
5985C        ORIGINAL : 89-07-14
5986C-----------------------------------------------------------------------
5987C
5988C* ARGUMENTS:
5989C
5990      INTEGER KUAER,KTRAER
5991C
5992      REAL*8 PABCU(KDLON,NUA,3*KFLEV+1) ! ABSORBER AMOUNTS
5993      REAL*8 PDBSL(KDLON,Ninter,KFLEV*2) ! SUB-LAYER PLANCK FUNCTION GRADIENT
5994      REAL*8 PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5995      REAL*8 PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5996C
5997      REAL*8 PADJD(KDLON,KFLEV+1) ! CONTRIBUTION OF ADJACENT LAYERS
5998      REAL*8 PADJU(KDLON,KFLEV+1) ! CONTRIBUTION OF ADJACENT LAYERS
5999      REAL*8 PCNTRB(KDLON,KFLEV+1,KFLEV+1) ! CLEAR-SKY ENERGY EXCHANGE MATRIX
6000      REAL*8 PDBDT(KDLON,Ninter,KFLEV) !  LAYER PLANCK FUNCTION GRADIENT
6001C
6002C* LOCAL ARRAYS:
6003C
6004      REAL*8 ZGLAYD(KDLON)
6005      REAL*8 ZGLAYU(KDLON)
6006      REAL*8 ZTT(KDLON,NTRA)
6007      REAL*8 ZTT1(KDLON,NTRA)
6008      REAL*8 ZTT2(KDLON,NTRA)
6009      REAL*8 ZUU(KDLON,NUA)
6010C
6011      INTEGER jk, jl, ja, im12, ind, inu, ixu, jg
6012      INTEGER ixd, ibs, idd, imu, jk1, jk2, jnu
6013      REAL*8 zwtr
6014c
6015C* Data Block:
6016c
6017      REAL*8 WG1(2)
6018      SAVE WG1
6019      DATA (WG1(jk),jk=1,2) /1.0, 1.0/
6020C-----------------------------------------------------------------------
6021C
6022C*         1.    INITIALIZATION
6023C                --------------
6024C
6025 100  CONTINUE
6026C
6027C*         1.1     INITIALIZE LAYER CONTRIBUTIONS
6028C                  ------------------------------
6029C
6030 110  CONTINUE
6031C
6032      DO 112 JK = 1 , KFLEV+1
6033      DO 111 JL = 1, KDLON
6034      PADJD(JL,JK) = 0.
6035      PADJU(JL,JK) = 0.
6036 111  CONTINUE
6037 112  CONTINUE
6038C
6039C*         1.2     INITIALIZE TRANSMISSION FUNCTIONS
6040C                  ---------------------------------
6041C
6042 120  CONTINUE
6043C
6044      DO 122 JA = 1 , NTRA
6045      DO 121 JL = 1, KDLON
6046      ZTT (JL,JA) = 1.0
6047      ZTT1(JL,JA) = 1.0
6048      ZTT2(JL,JA) = 1.0
6049 121  CONTINUE
6050 122  CONTINUE
6051C
6052      DO 124 JA = 1 , NUA
6053      DO 123 JL = 1, KDLON
6054      ZUU(JL,JA) = 0.
6055 123  CONTINUE
6056 124  CONTINUE
6057C
6058C     ------------------------------------------------------------------
6059C
6060C*         2.      VERTICAL INTEGRATION
6061C                  --------------------
6062C
6063 200  CONTINUE
6064C
6065C
6066C*         2.1     CONTRIBUTION FROM ADJACENT LAYERS
6067C                  ---------------------------------
6068C
6069 210  CONTINUE
6070C
6071      DO 215 JK = 1 , KFLEV
6072C
6073C*         2.1.1   DOWNWARD LAYERS
6074C                  ---------------
6075C
6076 2110 CONTINUE
6077C
6078      IM12 = 2 * (JK - 1)
6079      IND = (JK - 1) * NG1P1 + 1
6080      IXD = IND
6081      INU = JK * NG1P1 + 1
6082      IXU = IND
6083C
6084      DO 2111 JL = 1, KDLON
6085      ZGLAYD(JL) = 0.
6086      ZGLAYU(JL) = 0.
6087 2111 CONTINUE
6088C
6089      DO 213 JG = 1 , NG1
6090      IBS = IM12 + JG
6091      IDD = IXD + JG
6092      DO 2113 JA = 1 , KUAER
6093      DO 2112 JL = 1, KDLON
6094      ZUU(JL,JA) = PABCU(JL,JA,IND) - PABCU(JL,JA,IDD)
6095 2112 CONTINUE
6096 2113 CONTINUE
6097C
6098C
6099      CALL LWTT(PGA(1,1,1,JK), PGB(1,1,1,JK), ZUU, ZTT)
6100C
6101      DO 2114 JL = 1, KDLON
6102      ZWTR=PDBSL(JL,1,IBS)*ZTT(JL,1)          *ZTT(JL,10)
6103     S    +PDBSL(JL,2,IBS)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
6104     S    +PDBSL(JL,3,IBS)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
6105     S    +PDBSL(JL,4,IBS)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
6106     S    +PDBSL(JL,5,IBS)*ZTT(JL,3)          *ZTT(JL,14)
6107     S    +PDBSL(JL,6,IBS)*ZTT(JL,6)          *ZTT(JL,15)
6108      ZGLAYD(JL)=ZGLAYD(JL)+ZWTR*WG1(JG)
6109 2114 CONTINUE
6110C
6111C*         2.1.2   DOWNWARD LAYERS
6112C                  ---------------
6113C
6114 2120 CONTINUE
6115C
6116      IMU = IXU + JG
6117      DO 2122 JA = 1 , KUAER
6118      DO 2121 JL = 1, KDLON
6119      ZUU(JL,JA) = PABCU(JL,JA,IMU) - PABCU(JL,JA,INU)
6120 2121 CONTINUE
6121 2122 CONTINUE
6122C
6123C
6124      CALL LWTT(PGA(1,1,1,JK), PGB(1,1,1,JK), ZUU, ZTT)
6125C
6126      DO 2123 JL = 1, KDLON
6127      ZWTR=PDBSL(JL,1,IBS)*ZTT(JL,1)          *ZTT(JL,10)
6128     S    +PDBSL(JL,2,IBS)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
6129     S    +PDBSL(JL,3,IBS)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
6130     S    +PDBSL(JL,4,IBS)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
6131     S    +PDBSL(JL,5,IBS)*ZTT(JL,3)          *ZTT(JL,14)
6132     S    +PDBSL(JL,6,IBS)*ZTT(JL,6)          *ZTT(JL,15)
6133      ZGLAYU(JL)=ZGLAYU(JL)+ZWTR*WG1(JG)
6134 2123 CONTINUE
6135C
6136 213  CONTINUE
6137C
6138      DO 214 JL = 1, KDLON
6139      PADJD(JL,JK) = ZGLAYD(JL)
6140      PCNTRB(JL,JK,JK+1) = ZGLAYD(JL)
6141      PADJU(JL,JK+1) = ZGLAYU(JL)
6142      PCNTRB(JL,JK+1,JK) = ZGLAYU(JL)
6143      PCNTRB(JL,JK  ,JK) = 0.0
6144 214  CONTINUE
6145C
6146 215  CONTINUE
6147C
6148      DO 218 JK = 1 , KFLEV
6149      JK2 = 2 * JK
6150      JK1 = JK2 - 1
6151      DO 217 JNU = 1 , Ninter
6152      DO 216 JL = 1, KDLON
6153      PDBDT(JL,JNU,JK) = PDBSL(JL,JNU,JK1) + PDBSL(JL,JNU,JK2)
6154 216  CONTINUE
6155 217  CONTINUE
6156 218  CONTINUE
6157C
6158      RETURN
6159C
6160      END
6161      SUBROUTINE LWTT(PGA,PGB,PUU, PTT)
6162      IMPLICIT none
6163#include "dimensions.h"
6164#include "dimphy.h"
6165#include "raddim.h"
6166#include "raddimlw.h"
6167C
6168C-----------------------------------------------------------------------
6169C     PURPOSE.
6170C     --------
6171C           THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
6172C     ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN ALL SIX SPECTRAL
6173C     INTERVALS.
6174C
6175C     METHOD.
6176C     -------
6177C
6178C          1. TRANSMISSION FUNCTION BY H2O AND UNIFORMLY MIXED GASES ARE
6179C     COMPUTED USING PADE APPROXIMANTS AND HORNER'S ALGORITHM.
6180C          2. TRANSMISSION BY O3 IS EVALUATED WITH MALKMUS'S BAND MODEL.
6181C          3. TRANSMISSION BY H2O CONTINUUM AND AEROSOLS FOLLOW AN
6182C     A SIMPLE EXPONENTIAL DECREASE WITH ABSORBER AMOUNT.
6183C
6184C     REFERENCE.
6185C     ----------
6186C
6187C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
6188C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
6189C
6190C     AUTHOR.
6191C     -------
6192C        JEAN-JACQUES MORCRETTE  *ECMWF*
6193C
6194C     MODIFICATIONS.
6195C     --------------
6196C        ORIGINAL : 88-12-15
6197C
6198C-----------------------------------------------------------------------
6199      REAL*8 O1H, O2H
6200      PARAMETER (O1H=2230.)
6201      PARAMETER (O2H=100.)
6202      REAL*8 RPIALF0
6203      PARAMETER (RPIALF0=2.0)
6204C
6205C* ARGUMENTS:
6206C
6207      REAL*8 PUU(KDLON,NUA)
6208      REAL*8 PTT(KDLON,NTRA)
6209      REAL*8 PGA(KDLON,8,2)
6210      REAL*8 PGB(KDLON,8,2)
6211C
6212C* LOCAL VARIABLES:
6213C
6214      REAL*8 zz, zxd, zxn
6215      REAL*8 zpu, zpu10, zpu11, zpu12, zpu13
6216      REAL*8 zeu, zeu10, zeu11, zeu12, zeu13
6217      REAL*8 zx, zy, zsq1, zsq2, zvxy, zuxy
6218      REAL*8 zaercn, zto1, zto2, zxch4, zych4, zxn2o, zyn2o
6219      REAL*8 zsqn21, zodn21, zsqh42, zodh42
6220      REAL*8 zsqh41, zodh41, zsqn22, zodn22, zttf11, zttf12
6221      REAL*8 zuu11, zuu12, za11, za12
6222      INTEGER jl, ja
6223C     ------------------------------------------------------------------
6224C
6225C*         1.     HORNER'S ALGORITHM FOR H2O AND CO2 TRANSMISSION
6226C                 -----------------------------------------------
6227C
6228 100  CONTINUE
6229C
6230C
6231      DO 130 JA = 1 , 8
6232      DO 120 JL = 1, KDLON
6233      ZZ      =SQRT(PUU(JL,JA))
6234c     ZXD(JL,1)=PGB( JL, 1,1) + ZZ(JL, 1)*(PGB( JL, 1,2) + ZZ(JL, 1))
6235c     ZXN(JL,1)=PGA( JL, 1,1) + ZZ(JL, 1)*(PGA( JL, 1,2) )
6236c     PTT(JL,1)=ZXN(JL,1)/ZXD(JL,1)
6237      ZXD      =PGB( JL,JA,1) + ZZ       *(PGB( JL,JA,2) + ZZ       )
6238      ZXN      =PGA( JL,JA,1) + ZZ       *(PGA( JL,JA,2) )
6239      PTT(JL,JA)=ZXN      /ZXD
6240  120 CONTINUE
6241  130 CONTINUE
6242C
6243C     ------------------------------------------------------------------
6244C
6245C*         2.     CONTINUUM, OZONE AND AEROSOL TRANSMISSION FUNCTIONS
6246C                 ---------------------------------------------------
6247C
6248 200  CONTINUE
6249C
6250      DO 201 JL = 1, KDLON
6251      PTT(JL, 9) = PTT(JL, 8)
6252C
6253C-  CONTINUUM ABSORPTION: E- AND P-TYPE
6254C
6255      ZPU   = 0.002 * PUU(JL,10)
6256      ZPU10 = 112. * ZPU
6257      ZPU11 = 6.25 * ZPU
6258      ZPU12 = 5.00 * ZPU
6259      ZPU13 = 80.0 * ZPU
6260      ZEU   =  PUU(JL,11)
6261      ZEU10 =  12. * ZEU
6262      ZEU11 = 6.25 * ZEU
6263      ZEU12 = 5.00 * ZEU
6264      ZEU13 = 80.0 * ZEU
6265C
6266C-  OZONE ABSORPTION
6267C
6268      ZX = PUU(JL,12)
6269      ZY = PUU(JL,13)
6270      ZUXY = 4. * ZX * ZX / (RPIALF0 * ZY)
6271      ZSQ1 = SQRT(1. + O1H * ZUXY ) - 1.
6272      ZSQ2 = SQRT(1. + O2H * ZUXY ) - 1.
6273      ZVXY = RPIALF0 * ZY / (2. * ZX)
6274      ZAERCN = PUU(JL,17) + ZEU12 + ZPU12
6275      ZTO1 = EXP( - ZVXY * ZSQ1 - ZAERCN )
6276      ZTO2 = EXP( - ZVXY * ZSQ2 - ZAERCN )
6277C
6278C-- TRACE GASES (CH4, N2O, CFC-11, CFC-12)
6279C
6280C* CH4 IN INTERVAL 800-970 + 1110-1250 CM-1
6281C
6282c     NEXOTIC=1
6283c     IF (NEXOTIC.EQ.1) THEN
6284      ZXCH4 = PUU(JL,19)
6285      ZYCH4 = PUU(JL,20)
6286      ZUXY = 4. * ZXCH4*ZXCH4/(0.103*ZYCH4)
6287      ZSQH41 = SQRT(1. + 33.7 * ZUXY) - 1.
6288      ZVXY = 0.103 * ZYCH4 / (2. * ZXCH4)
6289      ZODH41 = ZVXY * ZSQH41
6290C
6291C* N2O IN INTERVAL 800-970 + 1110-1250 CM-1
6292C
6293      ZXN2O = PUU(JL,21)
6294      ZYN2O = PUU(JL,22)
6295      ZUXY = 4. * ZXN2O*ZXN2O/(0.416*ZYN2O)
6296      ZSQN21 = SQRT(1. + 21.3 * ZUXY) - 1.
6297      ZVXY = 0.416 * ZYN2O / (2. * ZXN2O)
6298      ZODN21 = ZVXY * ZSQN21
6299C
6300C* CH4 IN INTERVAL 1250-1450 + 1880-2820 CM-1
6301C
6302      ZUXY = 4. * ZXCH4*ZXCH4/(0.113*ZYCH4)
6303      ZSQH42 = SQRT(1. + 400. * ZUXY) - 1.
6304      ZVXY = 0.113 * ZYCH4 / (2. * ZXCH4)
6305      ZODH42 = ZVXY * ZSQH42
6306C
6307C* N2O IN INTERVAL 1250-1450 + 1880-2820 CM-1
6308C
6309      ZUXY = 4. * ZXN2O*ZXN2O/(0.197*ZYN2O)
6310      ZSQN22 = SQRT(1. + 2000. * ZUXY) - 1.
6311      ZVXY = 0.197 * ZYN2O / (2. * ZXN2O)
6312      ZODN22 = ZVXY * ZSQN22
6313C
6314C* CFC-11 IN INTERVAL 800-970 + 1110-1250 CM-1
6315C
6316      ZA11 = 2. * PUU(JL,23) * 4.404E+05
6317      ZTTF11 = 1. - ZA11 * 0.003225
6318C
6319C* CFC-12 IN INTERVAL 800-970 + 1110-1250 CM-1
6320C
6321      ZA12 = 2. * PUU(JL,24) * 6.7435E+05
6322      ZTTF12 = 1. - ZA12 * 0.003225
6323C
6324      ZUU11 = - PUU(JL,15) - ZEU10 - ZPU10
6325      ZUU12 = - PUU(JL,16) - ZEU11 - ZPU11 - ZODH41 - ZODN21
6326      PTT(JL,10) = EXP( - PUU(JL,14) )
6327      PTT(JL,11) = EXP( ZUU11 )
6328      PTT(JL,12) = EXP( ZUU12 ) * ZTTF11 * ZTTF12
6329      PTT(JL,13) = 0.7554 * ZTO1 + 0.2446 * ZTO2
6330      PTT(JL,14) = PTT(JL,10) * EXP( - ZEU13 - ZPU13 )
6331      PTT(JL,15) = EXP ( - PUU(JL,14) - ZODH42 - ZODN22 )
6332 201  CONTINUE
6333C
6334      RETURN
6335      END
6336      SUBROUTINE LWTTM(PGA,PGB,PUU1,PUU2, PTT)
6337      IMPLICIT none
6338#include "dimensions.h"
6339#include "dimphy.h"
6340#include "raddim.h"
6341#include "raddimlw.h"
6342C
6343C     ------------------------------------------------------------------
6344C     PURPOSE.
6345C     --------
6346C           THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
6347C     ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN ALL SIX SPECTRAL
6348C     INTERVALS.
6349C
6350C     METHOD.
6351C     -------
6352C
6353C          1. TRANSMISSION FUNCTION BY H2O AND UNIFORMLY MIXED GASES ARE
6354C     COMPUTED USING PADE APPROXIMANTS AND HORNER'S ALGORITHM.
6355C          2. TRANSMISSION BY O3 IS EVALUATED WITH MALKMUS'S BAND MODEL.
6356C          3. TRANSMISSION BY H2O CONTINUUM AND AEROSOLS FOLLOW AN
6357C     A SIMPLE EXPONENTIAL DECREASE WITH ABSORBER AMOUNT.
6358C
6359C     REFERENCE.
6360C     ----------
6361C
6362C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
6363C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
6364C
6365C     AUTHOR.
6366C     -------
6367C        JEAN-JACQUES MORCRETTE  *ECMWF*
6368C
6369C     MODIFICATIONS.
6370C     --------------
6371C        ORIGINAL : 88-12-15
6372C
6373C-----------------------------------------------------------------------
6374      REAL*8 O1H, O2H
6375      PARAMETER (O1H=2230.)
6376      PARAMETER (O2H=100.)
6377      REAL*8 RPIALF0
6378      PARAMETER (RPIALF0=2.0)
6379C
6380C* ARGUMENTS:
6381C
6382      REAL*8 PGA(KDLON,8,2) ! PADE APPROXIMANTS
6383      REAL*8 PGB(KDLON,8,2) ! PADE APPROXIMANTS
6384      REAL*8 PUU1(KDLON,NUA) ! ABSORBER AMOUNTS FROM TOP TO LEVEL 1
6385      REAL*8 PUU2(KDLON,NUA) ! ABSORBER AMOUNTS FROM TOP TO LEVEL 2
6386      REAL*8 PTT(KDLON,NTRA) ! TRANSMISSION FUNCTIONS
6387C
6388C* LOCAL VARIABLES:
6389C
6390      INTEGER ja, jl
6391      REAL*8 zz, zxd, zxn
6392      REAL*8 zpu, zpu10, zpu11, zpu12, zpu13
6393      REAL*8 zeu, zeu10, zeu11, zeu12, zeu13
6394      REAL*8 zx, zy, zuxy, zsq1, zsq2, zvxy, zaercn, zto1, zto2
6395      REAL*8 zxch4, zych4, zsqh41, zodh41
6396      REAL*8 zxn2o, zyn2o, zsqn21, zodn21, zsqh42, zodh42
6397      REAL*8 zsqn22, zodn22, za11, zttf11, za12, zttf12
6398      REAL*8 zuu11, zuu12
6399C     ------------------------------------------------------------------
6400C
6401C*         1.     HORNER'S ALGORITHM FOR H2O AND CO2 TRANSMISSION
6402C                 -----------------------------------------------
6403C
6404 100  CONTINUE
6405C
6406C
6407      DO 130 JA = 1 , 8
6408      DO 120 JL = 1, KDLON
6409      ZZ      =SQRT(PUU1(JL,JA) - PUU2(JL,JA))
6410      ZXD      =PGB( JL,JA,1) + ZZ       *(PGB( JL,JA,2) + ZZ       )
6411      ZXN      =PGA( JL,JA,1) + ZZ       *(PGA( JL,JA,2) )
6412      PTT(JL,JA)=ZXN      /ZXD
6413  120 CONTINUE
6414  130 CONTINUE
6415C
6416C     ------------------------------------------------------------------
6417C
6418C*         2.     CONTINUUM, OZONE AND AEROSOL TRANSMISSION FUNCTIONS
6419C                 ---------------------------------------------------
6420C
6421 200  CONTINUE
6422C
6423      DO 201 JL = 1, KDLON
6424      PTT(JL, 9) = PTT(JL, 8)
6425C
6426C-  CONTINUUM ABSORPTION: E- AND P-TYPE
6427C
6428      ZPU   = 0.002 * (PUU1(JL,10) - PUU2(JL,10))
6429      ZPU10 = 112. * ZPU
6430      ZPU11 = 6.25 * ZPU
6431      ZPU12 = 5.00 * ZPU
6432      ZPU13 = 80.0 * ZPU
6433      ZEU   = (PUU1(JL,11) - PUU2(JL,11))
6434      ZEU10 =  12. * ZEU
6435      ZEU11 = 6.25 * ZEU
6436      ZEU12 = 5.00 * ZEU
6437      ZEU13 = 80.0 * ZEU
6438C
6439C-  OZONE ABSORPTION
6440C
6441      ZX = (PUU1(JL,12) - PUU2(JL,12))
6442      ZY = (PUU1(JL,13) - PUU2(JL,13))
6443      ZUXY = 4. * ZX * ZX / (RPIALF0 * ZY)
6444      ZSQ1 = SQRT(1. + O1H * ZUXY ) - 1.
6445      ZSQ2 = SQRT(1. + O2H * ZUXY ) - 1.
6446      ZVXY = RPIALF0 * ZY / (2. * ZX)
6447      ZAERCN = (PUU1(JL,17) -PUU2(JL,17)) + ZEU12 + ZPU12
6448      ZTO1 = EXP( - ZVXY * ZSQ1 - ZAERCN )
6449      ZTO2 = EXP( - ZVXY * ZSQ2 - ZAERCN )
6450C
6451C-- TRACE GASES (CH4, N2O, CFC-11, CFC-12)
6452C
6453C* CH4 IN INTERVAL 800-970 + 1110-1250 CM-1
6454C
6455      ZXCH4 = (PUU1(JL,19) - PUU2(JL,19))
6456      ZYCH4 = (PUU1(JL,20) - PUU2(JL,20))
6457      ZUXY = 4. * ZXCH4*ZXCH4/(0.103*ZYCH4)
6458      ZSQH41 = SQRT(1. + 33.7 * ZUXY) - 1.
6459      ZVXY = 0.103 * ZYCH4 / (2. * ZXCH4)
6460      ZODH41 = ZVXY * ZSQH41
6461C
6462C* N2O IN INTERVAL 800-970 + 1110-1250 CM-1
6463C
6464      ZXN2O = (PUU1(JL,21) - PUU2(JL,21))
6465      ZYN2O = (PUU1(JL,22) - PUU2(JL,22))
6466      ZUXY = 4. * ZXN2O*ZXN2O/(0.416*ZYN2O)
6467      ZSQN21 = SQRT(1. + 21.3 * ZUXY) - 1.
6468      ZVXY = 0.416 * ZYN2O / (2. * ZXN2O)
6469      ZODN21 = ZVXY * ZSQN21
6470C
6471C* CH4 IN INTERVAL 1250-1450 + 1880-2820 CM-1
6472C
6473      ZUXY = 4. * ZXCH4*ZXCH4/(0.113*ZYCH4)
6474      ZSQH42 = SQRT(1. + 400. * ZUXY) - 1.
6475      ZVXY = 0.113 * ZYCH4 / (2. * ZXCH4)
6476      ZODH42 = ZVXY * ZSQH42
6477C
6478C* N2O IN INTERVAL 1250-1450 + 1880-2820 CM-1
6479C
6480      ZUXY = 4. * ZXN2O*ZXN2O/(0.197*ZYN2O)
6481      ZSQN22 = SQRT(1. + 2000. * ZUXY) - 1.
6482      ZVXY = 0.197 * ZYN2O / (2. * ZXN2O)
6483      ZODN22 = ZVXY * ZSQN22
6484C
6485C* CFC-11 IN INTERVAL 800-970 + 1110-1250 CM-1
6486C
6487      ZA11 = (PUU1(JL,23) - PUU2(JL,23)) * 4.404E+05
6488      ZTTF11 = 1. - ZA11 * 0.003225
6489C
6490C* CFC-12 IN INTERVAL 800-970 + 1110-1250 CM-1
6491C
6492      ZA12 = (PUU1(JL,24) - PUU2(JL,24)) * 6.7435E+05
6493      ZTTF12 = 1. - ZA12 * 0.003225
6494C
6495      ZUU11 = - (PUU1(JL,15) - PUU2(JL,15)) - ZEU10 - ZPU10
6496      ZUU12 = - (PUU1(JL,16) - PUU2(JL,16)) - ZEU11 - ZPU11 -
6497     S         ZODH41 - ZODN21
6498      PTT(JL,10) = EXP( - (PUU1(JL,14)- PUU2(JL,14)) )
6499      PTT(JL,11) = EXP( ZUU11 )
6500      PTT(JL,12) = EXP( ZUU12 ) * ZTTF11 * ZTTF12
6501      PTT(JL,13) = 0.7554 * ZTO1 + 0.2446 * ZTO2
6502      PTT(JL,14) = PTT(JL,10) * EXP( - ZEU13 - ZPU13 )
6503      PTT(JL,15) = EXP ( - (PUU1(JL,14) - PUU2(JL,14)) - ZODH42-ZODN22 )
6504 201  CONTINUE
6505C
6506      RETURN
6507      END
Note: See TracBrowser for help on using the repository browser.