source: LMDZ4/tags/LF_20080728/libf/phylmd/radlwsw.F @ 1547

Last change on this file since 1547 was 888, checked in by Laurent Fairhead, 16 years ago

Modifications sur l'albedo JG
LF

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