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

Last change on this file since 1215 was 1215, checked in by lguez, 15 years ago

-- Made "ozonecm" a function instead of a subroutine. Used assumed shape
arguments in "ozonecm".

-- Corrected long name and computation of NetCDF variable "ozone" in
the files "hist*".

-- Corrected comments for ozone variables.

-- In the case "read_climoz", used variables "rmd" and "rmo3" from
"YOMCST.h" instead of writing approximate values.

-- Replaced "real*..." declarations (not conforming to Fortran standard)
by "real(kind=...)" declarations.

-- Replaced value "1./46.6968" in ozone computations by the equivalent
(but clearer) "dobson_u * 1e3" (relative difference ~ 1e-5).

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