source: LMDZ4/branches/LMDZ4-dev/libf/phylmd/radiation_AR4.F @ 1105

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

Modifications necessaires a la preparation au passage au nouveau rayonnement
RRTM MPL
LF

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