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

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

-- Replaced "integer*4" declarations by "integer", "real*8" by

"real(kind=8)" and "real*4" by "real". Note that these are the only
modifications in the files "radiation_AR4.F" and "sw_aeroAR4.F90".

-- Corrected the kind of arguments to "max" and "min".

-- Replaced "nH" edit descriptors, which is a deleted feature in

Fortran 95, by character strings.

-- "regr_lat_time_climoz" now allows the pressure coordinate in the

input file to be in descending order.

-- Replaced call to not standard function "float" by call to intrinsic

function "real".

-- Included file "radepsi.h" in "physiq" was not used. Removed it.

The following set of modifications is related to the management of time.

-- In "gcm", "leapfrog" and "sortvarc0", "day_ini" was defined as 1

plus number of days between the reference date "(annee_ref,
day_ref)" and the first day of the current simulation. Changed
definition: "(annee_ref, day_ini)" is the first day of the current
simulation. There is an accompanying modification for "day_end".

-- Corrected bug in call to "ioconf_startdate" in "gcm".

-- Added call to "ioconf_calendar" in "create_etat0_limit".

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 189.5 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(KIND=8) PSCT  ! constante solaire (valeur conseillee: 1370)
57cIM ctes ds clesphys.h   REAL(KIND=8) RCO2  ! concentration CO2 (IPCC: 353.E-06*44.011/28.97)
58#include "clesphys.h"
59C
60      REAL(KIND=8) PPSOL(KDLON)        ! SURFACE PRESSURE (PA)
61      REAL(KIND=8) PDP(KDLON,KFLEV)    ! LAYER THICKNESS (PA)
62      REAL(KIND=8) PPMB(KDLON,KFLEV+1) ! HALF-LEVEL PRESSURE (MB)
63C
64      REAL(KIND=8) PRMU0(KDLON)  ! COSINE OF ZENITHAL ANGLE
65      REAL(KIND=8) PFRAC(KDLON)  ! fraction de la journee
66C
67      REAL(KIND=8) PTAVE(KDLON,KFLEV)  ! LAYER TEMPERATURE (K)
68      REAL(KIND=8) PWV(KDLON,KFLEV)    ! SPECIFIC HUMIDITY (KG/KG)
69      REAL(KIND=8) PQS(KDLON,KFLEV)    ! SATURATED WATER VAPOUR (KG/KG)
70      REAL(KIND=8) POZON(KDLON,KFLEV)  ! OZONE CONCENTRATION (KG/KG)
71      REAL(KIND=8) PAER(KDLON,KFLEV,5) ! AEROSOLS' OPTICAL THICKNESS
72C
73      REAL(KIND=8) PALBD(KDLON,2)  ! albedo du sol (lumiere diffuse)
74      REAL(KIND=8) PALBP(KDLON,2)  ! albedo du sol (lumiere parallele)
75C
76      REAL(KIND=8) PCLDSW(KDLON,KFLEV)    ! CLOUD FRACTION
77      REAL(KIND=8) PTAU(KDLON,2,KFLEV)    ! CLOUD OPTICAL THICKNESS
78      REAL(KIND=8) PCG(KDLON,2,KFLEV)     ! ASYMETRY FACTOR
79      REAL(KIND=8) POMEGA(KDLON,2,KFLEV)  ! SINGLE SCATTERING ALBEDO
80C
81      REAL(KIND=8) PHEAT(KDLON,KFLEV) ! SHORTWAVE HEATING (K/DAY)
82      REAL(KIND=8) PHEAT0(KDLON,KFLEV)! SHORTWAVE HEATING (K/DAY) clear-sky
83      REAL(KIND=8) PALBPLA(KDLON)     ! PLANETARY ALBEDO
84      REAL(KIND=8) PTOPSW(KDLON)      ! SHORTWAVE FLUX AT T.O.A.
85      REAL(KIND=8) PSOLSW(KDLON)      ! SHORTWAVE FLUX AT SURFACE
86      REAL(KIND=8) PTOPSW0(KDLON)     ! SHORTWAVE FLUX AT T.O.A. (CLEAR-SKY)
87      REAL(KIND=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(KIND=8) ZAKI(KDLON,2)     
97      REAL(KIND=8) ZCLD(KDLON,KFLEV)
98      REAL(KIND=8) ZCLEAR(KDLON)
99      REAL(KIND=8) ZDSIG(KDLON,KFLEV)
100      REAL(KIND=8) ZFACT(KDLON)
101      REAL(KIND=8) ZFD(KDLON,KFLEV+1)
102      REAL(KIND=8) ZFDOWN(KDLON,KFLEV+1)
103      REAL(KIND=8) ZFU(KDLON,KFLEV+1)
104      REAL(KIND=8) ZFUP(KDLON,KFLEV+1)
105      REAL(KIND=8) ZRMU(KDLON)
106      REAL(KIND=8) ZSEC(KDLON)
107      REAL(KIND=8) ZUD(KDLON,5,KFLEV+1)
108      REAL(KIND=8) ZCLDSW0(KDLON,KFLEV)
109c
110      REAL(KIND=8) ZFSUP(KDLON,KFLEV+1)
111      REAL(KIND=8) ZFSDN(KDLON,KFLEV+1)
112      REAL(KIND=8) ZFSUP0(KDLON,KFLEV+1)
113      REAL(KIND=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(kind=8) flag_aer
129      logical ok_ade, ok_aie    ! use aerosol forcings or not?
130      real(kind=8) tauae(kdlon,kflev,2)  ! aerosol optical properties
131      real(kind=8) pizae(kdlon,kflev,2)  ! (see aeropt.F)
132      real(kind=8) cgae(kdlon,kflev,2)   ! -"-
133      REAL(KIND=8) PTAUA(KDLON,2,KFLEV)    ! CLOUD OPTICAL THICKNESS (pre-industrial value)
134      REAL(KIND=8) POMEGAA(KDLON,2,KFLEV)  ! SINGLE SCATTERING ALBEDO
135      REAL(KIND=8) PTOPSWAD(KDLON)     ! SHORTWAVE FLUX AT T.O.A.(+AEROSOL DIR)
136      REAL(KIND=8) PSOLSWAD(KDLON)     ! SHORTWAVE FLUX AT SURFACE(+AEROSOL DIR)
137      REAL(KIND=8) PTOPSWAI(KDLON)     ! SHORTWAVE FLUX AT T.O.A.(+AEROSOL IND)
138      REAL(KIND=8) PSOLSWAI(KDLON)     ! SHORTWAVE FLUX AT SURFACE(+AEROSOL IND)
139cjq - Fluxes including aerosol effects
140      REAL(KIND=8),allocatable,save :: ZFSUPAD(:,:)
141c$OMP THREADPRIVATE(ZFSUPAD)
142      REAL(KIND=8),allocatable,save :: ZFSDNAD(:,:)
143c$OMP THREADPRIVATE(ZFSDNAD)
144      REAL(KIND=8),allocatable,save :: ZFSUPAI(:,:)
145c$OMP THREADPRIVATE(ZFSUPAI)
146      REAL(KIND=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(KIND=8) PSCT
356cIM ctes ds clesphys.h   REAL(KIND=8) RCO2
357#include "clesphys.h"
358      REAL(KIND=8) PCLDSW(KDLON,KFLEV)
359      REAL(KIND=8) PPMB(KDLON,KFLEV+1)
360      REAL(KIND=8) PPSOL(KDLON)
361      REAL(KIND=8) PRMU0(KDLON)
362      REAL(KIND=8) PFRAC(KDLON)
363      REAL(KIND=8) PTAVE(KDLON,KFLEV)
364      REAL(KIND=8) PWV(KDLON,KFLEV)
365C
366      REAL(KIND=8) PAKI(KDLON,2)
367      REAL(KIND=8) PCLD(KDLON,KFLEV)
368      REAL(KIND=8) PCLEAR(KDLON)
369      REAL(KIND=8) PDSIG(KDLON,KFLEV)
370      REAL(KIND=8) PFACT(KDLON)
371      REAL(KIND=8) PRMU(KDLON)
372      REAL(KIND=8) PSEC(KDLON)
373      REAL(KIND=8) PUD(KDLON,5,KFLEV+1)
374C
375C* LOCAL VARIABLES:
376C
377      INTEGER IIND(2)
378      REAL(KIND=8) ZC1J(KDLON,KFLEV+1)
379      REAL(KIND=8) ZCLEAR(KDLON)
380      REAL(KIND=8) ZCLOUD(KDLON)
381      REAL(KIND=8) ZN175(KDLON)
382      REAL(KIND=8) ZN190(KDLON)
383      REAL(KIND=8) ZO175(KDLON)
384      REAL(KIND=8) ZO190(KDLON)
385      REAL(KIND=8) ZSIGN(KDLON)
386      REAL(KIND=8) ZR(KDLON,2)
387      REAL(KIND=8) ZSIGO(KDLON)
388      REAL(KIND=8) ZUD(KDLON,2)
389      REAL(KIND=8) ZRTH, ZRTU, ZWH2O, ZDSCO2, ZDSH2O, ZFPPW
390      INTEGER jl, jk, jkp1, jkl, jklp1, ja
391C
392C* Prescribed Data:
393c
394      REAL(KIND=8) ZPDH2O,ZPDUMG
395      SAVE ZPDH2O,ZPDUMG
396c$OMP THREADPRIVATE(ZPDH2O,ZPDUMG)
397      REAL(KIND=8) ZPRH2O,ZPRUMG
398      SAVE ZPRH2O,ZPRUMG
399c$OMP THREADPRIVATE(ZPRH2O,ZPRUMG)
400      REAL(KIND=8) RTDH2O,RTDUMG
401      SAVE RTDH2O,RTDUMG
402c$OMP THREADPRIVATE(RTDH2O,RTDUMG)
403      REAL(KIND=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(kind=8) flag_aer
580      real(kind=8) tauae(kdlon,kflev,2)
581      real(kind=8) pizae(kdlon,kflev,2)
582      real(kind=8) cgae(kdlon,kflev,2)
583      REAL(KIND=8) PAER(KDLON,KFLEV,5)
584      REAL(KIND=8) PALBD(KDLON,2)
585      REAL(KIND=8) PALBP(KDLON,2)
586      REAL(KIND=8) PCG(KDLON,2,KFLEV) 
587      REAL(KIND=8) PCLD(KDLON,KFLEV)
588      REAL(KIND=8) PCLDSW(KDLON,KFLEV)
589      REAL(KIND=8) PCLEAR(KDLON)
590      REAL(KIND=8) PDSIG(KDLON,KFLEV)
591      REAL(KIND=8) POMEGA(KDLON,2,KFLEV)
592      REAL(KIND=8) POZ(KDLON,KFLEV)
593      REAL(KIND=8) PRMU(KDLON)
594      REAL(KIND=8) PSEC(KDLON)
595      REAL(KIND=8) PTAU(KDLON,2,KFLEV)
596      REAL(KIND=8) PUD(KDLON,5,KFLEV+1)
597C
598      REAL(KIND=8) PFD(KDLON,KFLEV+1)
599      REAL(KIND=8) PFU(KDLON,KFLEV+1)
600C
601C* LOCAL VARIABLES:
602C
603      INTEGER IIND(4)
604C     
605      REAL(KIND=8) ZCGAZ(KDLON,KFLEV)
606      REAL(KIND=8) ZDIFF(KDLON)
607      REAL(KIND=8) ZDIRF(KDLON)       
608      REAL(KIND=8) ZPIZAZ(KDLON,KFLEV)
609      REAL(KIND=8) ZRAYL(KDLON)
610      REAL(KIND=8) ZRAY1(KDLON,KFLEV+1)
611      REAL(KIND=8) ZRAY2(KDLON,KFLEV+1)
612      REAL(KIND=8) ZREFZ(KDLON,2,KFLEV+1)
613      REAL(KIND=8) ZRJ(KDLON,6,KFLEV+1)
614      REAL(KIND=8) ZRJ0(KDLON,6,KFLEV+1)
615      REAL(KIND=8) ZRK(KDLON,6,KFLEV+1)
616      REAL(KIND=8) ZRK0(KDLON,6,KFLEV+1)
617      REAL(KIND=8) ZRMUE(KDLON,KFLEV+1)
618      REAL(KIND=8) ZRMU0(KDLON,KFLEV+1)
619      REAL(KIND=8) ZR(KDLON,4)
620      REAL(KIND=8) ZTAUAZ(KDLON,KFLEV)
621      REAL(KIND=8) ZTRA1(KDLON,KFLEV+1)
622      REAL(KIND=8) ZTRA2(KDLON,KFLEV+1)
623      REAL(KIND=8) ZW(KDLON,4)
624C
625      INTEGER jl, jk, k, jaj, ikm1, ikl
626c
627c Prescribed Data:
628c
629      REAL(KIND=8) RSUN(2)
630      SAVE RSUN
631c$OMP THREADPRIVATE(RSUN)
632      REAL(KIND=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(kind=8) flag_aer
828      real(kind=8) tauae(kdlon,kflev,2)
829      real(kind=8) pizae(kdlon,kflev,2)
830      real(kind=8) cgae(kdlon,kflev,2)
831      REAL(KIND=8) PAER(KDLON,KFLEV,5)
832      REAL(KIND=8) PAKI(KDLON,2)
833      REAL(KIND=8) PALBD(KDLON,2)
834      REAL(KIND=8) PALBP(KDLON,2)
835      REAL(KIND=8) PCG(KDLON,2,KFLEV)
836      REAL(KIND=8) PCLD(KDLON,KFLEV)
837      REAL(KIND=8) PCLDSW(KDLON,KFLEV)
838      REAL(KIND=8) PCLEAR(KDLON)
839      REAL(KIND=8) PDSIG(KDLON,KFLEV)
840      REAL(KIND=8) POMEGA(KDLON,2,KFLEV)
841      REAL(KIND=8) POZ(KDLON,KFLEV)
842      REAL(KIND=8) PQS(KDLON,KFLEV)
843      REAL(KIND=8) PRMU(KDLON)
844      REAL(KIND=8) PSEC(KDLON)
845      REAL(KIND=8) PTAU(KDLON,2,KFLEV)
846      REAL(KIND=8) PUD(KDLON,5,KFLEV+1)
847      REAL(KIND=8) PWV(KDLON,KFLEV)
848C
849      REAL(KIND=8) PFDOWN(KDLON,KFLEV+1)
850      REAL(KIND=8) PFUP(KDLON,KFLEV+1)
851C
852C* LOCAL VARIABLES:
853C
854      INTEGER IIND2(2), IIND3(3)
855      REAL(KIND=8) ZCGAZ(KDLON,KFLEV)
856      REAL(KIND=8) ZFD(KDLON,KFLEV+1)
857      REAL(KIND=8) ZFU(KDLON,KFLEV+1)
858      REAL(KIND=8) ZG(KDLON)
859      REAL(KIND=8) ZGG(KDLON)
860      REAL(KIND=8) ZPIZAZ(KDLON,KFLEV)
861      REAL(KIND=8) ZRAYL(KDLON)
862      REAL(KIND=8) ZRAY1(KDLON,KFLEV+1)
863      REAL(KIND=8) ZRAY2(KDLON,KFLEV+1)
864      REAL(KIND=8) ZREF(KDLON)
865      REAL(KIND=8) ZREFZ(KDLON,2,KFLEV+1)
866      REAL(KIND=8) ZRE1(KDLON)
867      REAL(KIND=8) ZRE2(KDLON)
868      REAL(KIND=8) ZRJ(KDLON,6,KFLEV+1)
869      REAL(KIND=8) ZRJ0(KDLON,6,KFLEV+1)
870      REAL(KIND=8) ZRK(KDLON,6,KFLEV+1)
871      REAL(KIND=8) ZRK0(KDLON,6,KFLEV+1)
872      REAL(KIND=8) ZRL(KDLON,8)
873      REAL(KIND=8) ZRMUE(KDLON,KFLEV+1)
874      REAL(KIND=8) ZRMU0(KDLON,KFLEV+1)
875      REAL(KIND=8) ZRMUZ(KDLON)
876      REAL(KIND=8) ZRNEB(KDLON)
877      REAL(KIND=8) ZRUEF(KDLON,8)
878      REAL(KIND=8) ZR1(KDLON)
879      REAL(KIND=8) ZR2(KDLON,2)
880      REAL(KIND=8) ZR3(KDLON,3)
881      REAL(KIND=8) ZR4(KDLON)
882      REAL(KIND=8) ZR21(KDLON)
883      REAL(KIND=8) ZR22(KDLON)
884      REAL(KIND=8) ZS(KDLON)
885      REAL(KIND=8) ZTAUAZ(KDLON,KFLEV)
886      REAL(KIND=8) ZTO1(KDLON)
887      REAL(KIND=8) ZTR(KDLON,2,KFLEV+1)
888      REAL(KIND=8) ZTRA1(KDLON,KFLEV+1)
889      REAL(KIND=8) ZTRA2(KDLON,KFLEV+1)
890      REAL(KIND=8) ZTR1(KDLON)
891      REAL(KIND=8) ZTR2(KDLON)
892      REAL(KIND=8) ZW(KDLON)   
893      REAL(KIND=8) ZW1(KDLON)
894      REAL(KIND=8) ZW2(KDLON,2)
895      REAL(KIND=8) ZW3(KDLON,3)
896      REAL(KIND=8) ZW4(KDLON)
897      REAL(KIND=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(KIND=8) ZRMUM1, ZWH2O, ZCNEB, ZAA, ZBB, ZRKI, ZRE11
902C
903C* Prescribed Data:
904C
905      REAL(KIND=8) RSUN(2)
906      SAVE RSUN
907c$OMP THREADPRIVATE(RSUN)
908      REAL(KIND=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(kind=8) flag_aer
1364      real(kind=8) tauae(kdlon,kflev,2)
1365      real(kind=8) pizae(kdlon,kflev,2)
1366      real(kind=8) cgae(kdlon,kflev,2)
1367      REAL(KIND=8) PAER(KDLON,KFLEV,5)
1368      REAL(KIND=8) PALBP(KDLON,2)
1369      REAL(KIND=8) PDSIG(KDLON,KFLEV)
1370      REAL(KIND=8) PRAYL(KDLON)
1371      REAL(KIND=8) PSEC(KDLON)
1372C
1373      REAL(KIND=8) PCGAZ(KDLON,KFLEV)     
1374      REAL(KIND=8) PPIZAZ(KDLON,KFLEV)
1375      REAL(KIND=8) PRAY1(KDLON,KFLEV+1)
1376      REAL(KIND=8) PRAY2(KDLON,KFLEV+1)
1377      REAL(KIND=8) PREFZ(KDLON,2,KFLEV+1)
1378      REAL(KIND=8) PRJ(KDLON,6,KFLEV+1)
1379      REAL(KIND=8) PRK(KDLON,6,KFLEV+1)
1380      REAL(KIND=8) PRMU0(KDLON,KFLEV+1)
1381      REAL(KIND=8) PTAUAZ(KDLON,KFLEV)
1382      REAL(KIND=8) PTRA1(KDLON,KFLEV+1)
1383      REAL(KIND=8) PTRA2(KDLON,KFLEV+1)
1384C
1385C* LOCAL VARIABLES:
1386C
1387      REAL(KIND=8) ZC0I(KDLON,KFLEV+1)       
1388      REAL(KIND=8) ZCLE0(KDLON,KFLEV)
1389      REAL(KIND=8) ZCLEAR(KDLON)
1390      REAL(KIND=8) ZR21(KDLON)
1391      REAL(KIND=8) ZR23(KDLON)
1392      REAL(KIND=8) ZSS0(KDLON)
1393      REAL(KIND=8) ZSCAT(KDLON)
1394      REAL(KIND=8) ZTR(KDLON,2,KFLEV+1)
1395C
1396      INTEGER jl, jk, ja, jae, jkl, jklp1, jaj, jkm1, in
1397      REAL(KIND=8) ZTRAY, ZGAR, ZRATIO, ZFF, ZFACOA, ZCORAE
1398      REAL(KIND=8) ZMUE, ZGAP, ZWW, ZTO, ZDEN, ZMU1, ZDEN1
1399      REAL(KIND=8) ZBMU0, ZBMU1, ZRE11
1400C
1401C* Prescribed Data for Aerosols:
1402C
1403      REAL(KIND=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(KIND=8) PALBD(KDLON,2)
1731      REAL(KIND=8) PCG(KDLON,2,KFLEV)
1732      REAL(KIND=8) PCLD(KDLON,KFLEV)
1733      REAL(KIND=8) PDSIG(KDLON,KFLEV)
1734      REAL(KIND=8) POMEGA(KDLON,2,KFLEV)
1735      REAL(KIND=8) PRAYL(KDLON)
1736      REAL(KIND=8) PSEC(KDLON)
1737      REAL(KIND=8) PTAU(KDLON,2,KFLEV)
1738C
1739      REAL(KIND=8) PRAY1(KDLON,KFLEV+1)
1740      REAL(KIND=8) PRAY2(KDLON,KFLEV+1)
1741      REAL(KIND=8) PREFZ(KDLON,2,KFLEV+1)
1742      REAL(KIND=8) PRJ(KDLON,6,KFLEV+1)
1743      REAL(KIND=8) PRK(KDLON,6,KFLEV+1)
1744      REAL(KIND=8) PRMUE(KDLON,KFLEV+1)
1745      REAL(KIND=8) PCGAZ(KDLON,KFLEV)
1746      REAL(KIND=8) PPIZAZ(KDLON,KFLEV)
1747      REAL(KIND=8) PTAUAZ(KDLON,KFLEV)
1748      REAL(KIND=8) PTRA1(KDLON,KFLEV+1)
1749      REAL(KIND=8) PTRA2(KDLON,KFLEV+1)
1750C
1751C* LOCAL VARIABLES:
1752C
1753      REAL(KIND=8) ZC1I(KDLON,KFLEV+1)
1754      REAL(KIND=8) ZCLEQ(KDLON,KFLEV)
1755      REAL(KIND=8) ZCLEAR(KDLON)
1756      REAL(KIND=8) ZCLOUD(KDLON)
1757      REAL(KIND=8) ZGG(KDLON)
1758      REAL(KIND=8) ZREF(KDLON)
1759      REAL(KIND=8) ZRE1(KDLON)
1760      REAL(KIND=8) ZRE2(KDLON)
1761      REAL(KIND=8) ZRMUZ(KDLON)
1762      REAL(KIND=8) ZRNEB(KDLON)
1763      REAL(KIND=8) ZR21(KDLON)
1764      REAL(KIND=8) ZR22(KDLON)
1765      REAL(KIND=8) ZR23(KDLON)
1766      REAL(KIND=8) ZSS1(KDLON)
1767      REAL(KIND=8) ZTO1(KDLON)
1768      REAL(KIND=8) ZTR(KDLON,2,KFLEV+1)
1769      REAL(KIND=8) ZTR1(KDLON)
1770      REAL(KIND=8) ZTR2(KDLON)
1771      REAL(KIND=8) ZW(KDLON)
1772C
1773      INTEGER jk, jl, ja, jkl, jklp1, jkm1, jaj
1774      REAL(KIND=8) ZFACOA, ZFACOC, ZCORAE, ZCORCD
1775      REAL(KIND=8) ZMUE, ZGAP, ZWW, ZTO, ZDEN, ZDEN1
1776      REAL(KIND=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(KIND=8) PGG(KDLON)   ! ASSYMETRY FACTOR
2084      REAL(KIND=8) PREF(KDLON)  ! REFLECTIVITY OF THE UNDERLYING LAYER
2085      REAL(KIND=8) PRMUZ(KDLON) ! COSINE OF SOLAR ZENITH ANGLE
2086      REAL(KIND=8) PTO1(KDLON)  ! OPTICAL THICKNESS
2087      REAL(KIND=8) PW(KDLON)    ! SINGLE SCATTERING ALBEDO
2088      REAL(KIND=8) PRE1(KDLON)  ! LAYER REFLECTIVITY (NO UNDERLYING-LAYER REFLECTION)
2089      REAL(KIND=8) PRE2(KDLON)  ! LAYER REFLECTIVITY
2090      REAL(KIND=8) PTR1(KDLON)  ! LAYER TRANSMISSIVITY (NO UNDERLYING-LAYER REFLECTION)
2091      REAL(KIND=8) PTR2(KDLON)  ! LAYER TRANSMISSIVITY
2092C
2093C* LOCAL VARIABLES:
2094C
2095      INTEGER jl
2096      REAL(KIND=8) ZFF, ZGP, ZTOP, ZWCP, ZDT, ZX1, ZWM
2097      REAL(KIND=8) ZRM2, ZRK, ZX2, ZRP, ZALPHA, ZBETA, ZARG
2098      REAL(KIND=8) ZEXMU0, ZARG2, ZEXKP, ZEXKM, ZXP2P, ZXM2P, ZAP2B,
2099     $     ZAM2B
2100      REAL(KIND=8) ZA11, ZA12, ZA13, ZA21, ZA22, ZA23
2101      REAL(KIND=8) ZDENA, ZC1A, ZC2A, ZRI0A, ZRI1A
2102      REAL(KIND=8) ZRI0B, ZRI1B
2103      REAL(KIND=8) ZB21, ZB22, ZB23, ZDENB, ZC1B, ZC2B
2104      REAL(KIND=8) ZRI0C, ZRI1C, ZRI0D, ZRI1D
2105C     ------------------------------------------------------------------
2106C
2107C*         1.      DELTA-EDDINGTON CALCULATIONS
2108C
2109 100  CONTINUE
2110C
2111      DO 131 JL   =   1, KDLON
2112C
2113C*         1.1     SET UP THE DELTA-MODIFIED PARAMETERS
2114C
2115 110  CONTINUE
2116C
2117      ZFF = PGG(JL)*PGG(JL)
2118      ZGP = PGG(JL)/(1.+PGG(JL))
2119      ZTOP = (1.- PW(JL) * ZFF) * PTO1(JL)
2120      ZWCP = (1-ZFF)* PW(JL) /(1.- PW(JL) * ZFF)
2121      ZDT = 2./3.
2122      ZX1 = 1.-ZWCP*ZGP
2123      ZWM = 1.-ZWCP
2124      ZRM2 =  PRMUZ(JL) * PRMUZ(JL)
2125      ZRK = SQRT(3.*ZWM*ZX1)
2126      ZX2 = 4.*(1.-ZRK*ZRK*ZRM2)
2127      ZRP=ZRK/ZX1
2128      ZALPHA = 3.*ZWCP*ZRM2*(1.+ZGP*ZWM)/ZX2
2129      ZBETA = 3.*ZWCP* PRMUZ(JL) *(1.+3.*ZGP*ZRM2*ZWM)/ZX2
2130      ZARG=MIN(ZTOP/PRMUZ(JL),200._8)
2131      ZEXMU0=EXP(-ZARG)
2132      ZARG2=MIN(ZRK*ZTOP,200._8)
2133      ZEXKP=EXP(ZARG2)
2134      ZEXKM = 1./ZEXKP
2135      ZXP2P = 1.+ZDT*ZRP
2136      ZXM2P = 1.-ZDT*ZRP
2137      ZAP2B = ZALPHA+ZDT*ZBETA
2138      ZAM2B = ZALPHA-ZDT*ZBETA
2139C
2140C*         1.2     WITHOUT REFLECTION FROM THE UNDERLYING LAYER
2141C
2142 120  CONTINUE
2143C
2144      ZA11 = ZXP2P
2145      ZA12 = ZXM2P
2146      ZA13 = ZAP2B
2147      ZA22 = ZXP2P*ZEXKP
2148      ZA21 = ZXM2P*ZEXKM
2149      ZA23 = ZAM2B*ZEXMU0
2150      ZDENA = ZA11 * ZA22 - ZA21 * ZA12
2151      ZC1A = (ZA22*ZA13-ZA12*ZA23)/ZDENA
2152      ZC2A = (ZA11*ZA23-ZA21*ZA13)/ZDENA
2153      ZRI0A = ZC1A+ZC2A-ZALPHA
2154      ZRI1A = ZRP*(ZC1A-ZC2A)-ZBETA
2155      PRE1(JL) = (ZRI0A-ZDT*ZRI1A)/ PRMUZ(JL)
2156      ZRI0B = ZC1A*ZEXKM+ZC2A*ZEXKP-ZALPHA*ZEXMU0
2157      ZRI1B = ZRP*(ZC1A*ZEXKM-ZC2A*ZEXKP)-ZBETA*ZEXMU0
2158      PTR1(JL) = ZEXMU0+(ZRI0B+ZDT*ZRI1B)/ PRMUZ(JL)
2159C
2160C*         1.3     WITH REFLECTION FROM THE UNDERLYING LAYER
2161C
2162 130  CONTINUE
2163C
2164      ZB21 = ZA21- PREF(JL) *ZXP2P*ZEXKM
2165      ZB22 = ZA22- PREF(JL) *ZXM2P*ZEXKP
2166      ZB23 = ZA23- PREF(JL) *ZEXMU0*(ZAP2B - PRMUZ(JL) )
2167      ZDENB = ZA11 * ZB22 - ZB21 * ZA12
2168      ZC1B = (ZB22*ZA13-ZA12*ZB23)/ZDENB
2169      ZC2B = (ZA11*ZB23-ZB21*ZA13)/ZDENB
2170      ZRI0C = ZC1B+ZC2B-ZALPHA
2171      ZRI1C = ZRP*(ZC1B-ZC2B)-ZBETA
2172      PRE2(JL) = (ZRI0C-ZDT*ZRI1C) / PRMUZ(JL)
2173      ZRI0D = ZC1B*ZEXKM + ZC2B*ZEXKP - ZALPHA*ZEXMU0
2174      ZRI1D = ZRP * (ZC1B*ZEXKM - ZC2B*ZEXKP) - ZBETA*ZEXMU0
2175      PTR2(JL) = ZEXMU0 + (ZRI0D + ZDT*ZRI1D) / PRMUZ(JL)
2176C
2177 131  CONTINUE
2178      RETURN
2179      END
2180      SUBROUTINE SWTT_LMDAR4 (KNU,KA,PU,PTR)
2181      USE dimphy
2182      IMPLICIT none
2183cym#include "dimensions.h"
2184cym#include "dimphy.h"
2185cym#include "raddim.h"
2186C
2187C-----------------------------------------------------------------------
2188C     PURPOSE.
2189C     --------
2190C           THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
2191C     ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN THE TWO SPECTRAL
2192C     INTERVALS.
2193C
2194C     METHOD.
2195C     -------
2196C
2197C          TRANSMISSION FUNCTION ARE COMPUTED USING PADE APPROXIMANTS
2198C     AND HORNER'S ALGORITHM.
2199C
2200C     REFERENCE.
2201C     ----------
2202C
2203C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
2204C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
2205C
2206C     AUTHOR.
2207C     -------
2208C        JEAN-JACQUES MORCRETTE  *ECMWF*
2209C
2210C     MODIFICATIONS.
2211C     --------------
2212C        ORIGINAL : 88-12-15
2213C-----------------------------------------------------------------------
2214C
2215C* ARGUMENTS
2216C
2217      INTEGER KNU     ! INDEX OF THE SPECTRAL INTERVAL
2218      INTEGER KA      ! INDEX OF THE ABSORBER
2219      REAL(KIND=8) PU(KDLON)  ! ABSORBER AMOUNT
2220C
2221      REAL(KIND=8) PTR(KDLON) ! TRANSMISSION FUNCTION
2222C
2223C* LOCAL VARIABLES:
2224C
2225      REAL(KIND=8) ZR1(KDLON), ZR2(KDLON)
2226      INTEGER jl, i,j
2227C
2228C* Prescribed Data:
2229C
2230      REAL(KIND=8) APAD(2,3,7), BPAD(2,3,7), D(2,3)
2231      SAVE APAD, BPAD, D
2232c$OMP THREADPRIVATE(APAD, BPAD, D)
2233      DATA ((APAD(1,I,J),I=1,3),J=1,7) /
2234     S 0.912418292E+05, 0.000000000E-00, 0.925887084E-04,
2235     S 0.723613782E+05, 0.000000000E-00, 0.129353723E-01,
2236     S 0.596037057E+04, 0.000000000E-00, 0.800821928E+00,
2237     S 0.000000000E-00, 0.000000000E-00, 0.242715973E+02,
2238     S 0.000000000E-00, 0.000000000E-00, 0.878331486E+02,
2239     S 0.000000000E-00, 0.000000000E-00, 0.191559725E+02,
2240     S 0.000000000E-00, 0.000000000E-00, 0.000000000E+00 /
2241      DATA ((APAD(2,I,J),I=1,3),J=1,7) /
2242     S 0.376655383E-08, 0.739646016E-08, 0.410177786E+03,
2243     S 0.978576773E-04, 0.131849595E-03, 0.672595424E+02,
2244     S 0.387714006E+00, 0.437772681E+00, 0.000000000E-00,
2245     S 0.118461660E+03, 0.151345118E+03, 0.000000000E-00,
2246     S 0.119079797E+04, 0.233628890E+04, 0.000000000E-00,
2247     S 0.293353397E+03, 0.797219934E+03, 0.000000000E-00,
2248     S 0.000000000E+00, 0.000000000E+00, 0.000000000E+00 /
2249C
2250      DATA ((BPAD(1,I,J),I=1,3),J=1,7) /
2251     S 0.912418292E+05, 0.000000000E-00, 0.925887084E-04,
2252     S 0.724555318E+05, 0.000000000E-00, 0.131812683E-01,
2253     S 0.602593328E+04, 0.000000000E-00, 0.812706117E+00,
2254     S 0.100000000E+01, 0.000000000E-00, 0.249863591E+02,
2255     S 0.000000000E-00, 0.000000000E-00, 0.931071925E+02,
2256     S 0.000000000E-00, 0.000000000E-00, 0.252233437E+02,
2257     S 0.000000000E-00, 0.000000000E-00, 0.100000000E+01 /
2258      DATA ((BPAD(2,I,J),I=1,3),J=1,7) /
2259     S 0.376655383E-08, 0.739646016E-08, 0.410177786E+03,
2260     S 0.979023421E-04, 0.131861712E-03, 0.731185438E+02,
2261     S 0.388611139E+00, 0.437949001E+00, 0.100000000E+01,
2262     S 0.120291383E+03, 0.151692730E+03, 0.000000000E+00,
2263     S 0.130531005E+04, 0.237071130E+04, 0.000000000E+00,
2264     S 0.415049409E+03, 0.867914360E+03, 0.000000000E+00,
2265     S 0.100000000E+01, 0.100000000E+01, 0.000000000E+00 /
2266c
2267      DATA (D(1,I),I=1,3) / 0.00, 0.00, 0.00 /
2268      DATA (D(2,I),I=1,3) / 0.000000000, 0.000000000, 0.800000000 /
2269C
2270C-----------------------------------------------------------------------
2271C
2272C*         1.      HORNER'S ALGORITHM TO COMPUTE TRANSMISSION FUNCTION
2273C
2274 100  CONTINUE
2275C
2276      DO 201 JL = 1, KDLON
2277      ZR1(JL) = APAD(KNU,KA,1) + PU(JL) * (APAD(KNU,KA,2) + PU(JL)
2278     S      * ( APAD(KNU,KA,3) + PU(JL) * (APAD(KNU,KA,4) + PU(JL)
2279     S      * ( APAD(KNU,KA,5) + PU(JL) * (APAD(KNU,KA,6) + PU(JL)
2280     S      * ( APAD(KNU,KA,7) ))))))
2281C
2282      ZR2(JL) = BPAD(KNU,KA,1) + PU(JL) * (BPAD(KNU,KA,2) + PU(JL)
2283     S      * ( BPAD(KNU,KA,3) + PU(JL) * (BPAD(KNU,KA,4) + PU(JL)
2284     S      * ( BPAD(KNU,KA,5) + PU(JL) * (BPAD(KNU,KA,6) + PU(JL)
2285     S      * ( BPAD(KNU,KA,7) ))))))
2286C     
2287C
2288C*         2.      ADD THE BACKGROUND TRANSMISSION
2289C
2290 200  CONTINUE
2291C
2292C
2293      PTR(JL) = (ZR1(JL) / ZR2(JL)) * (1. - D(KNU,KA)) + D(KNU,KA)
2294 201  CONTINUE
2295C
2296      RETURN
2297      END
2298      SUBROUTINE SWTT1_LMDAR4(KNU,KABS,KIND, PU, PTR)
2299      USE dimphy
2300      IMPLICIT none
2301cym#include "dimensions.h"
2302cym#include "dimphy.h"
2303cym#include "raddim.h"
2304C
2305C-----------------------------------------------------------------------
2306C     PURPOSE.
2307C     --------
2308C           THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
2309C     ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN THE TWO SPECTRAL
2310C     INTERVALS.
2311C
2312C     METHOD.
2313C     -------
2314C
2315C          TRANSMISSION FUNCTION ARE COMPUTED USING PADE APPROXIMANTS
2316C     AND HORNER'S ALGORITHM.
2317C
2318C     REFERENCE.
2319C     ----------
2320C
2321C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
2322C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
2323C
2324C     AUTHOR.
2325C     -------
2326C        JEAN-JACQUES MORCRETTE  *ECMWF*
2327C
2328C     MODIFICATIONS.
2329C     --------------
2330C        ORIGINAL : 95-01-20
2331C-----------------------------------------------------------------------
2332C* ARGUMENTS:
2333C
2334      INTEGER KNU          ! INDEX OF THE SPECTRAL INTERVAL
2335      INTEGER KABS         ! NUMBER OF ABSORBERS
2336      INTEGER KIND(KABS)   ! INDICES OF THE ABSORBERS
2337      REAL(KIND=8) PU(KDLON,KABS)  ! ABSORBER AMOUNT
2338C
2339      REAL(KIND=8) PTR(KDLON,KABS) ! TRANSMISSION FUNCTION
2340C
2341C* LOCAL VARIABLES:
2342C
2343      REAL(KIND=8) ZR1(KDLON)
2344      REAL(KIND=8) ZR2(KDLON)
2345      REAL(KIND=8) ZU(KDLON)
2346      INTEGER jl, ja, i, j, ia
2347C
2348C* Prescribed Data:
2349C
2350      REAL(KIND=8) APAD(2,3,7), BPAD(2,3,7), D(2,3)
2351      SAVE APAD, BPAD, D
2352c$OMP THREADPRIVATE(APAD, BPAD, D)
2353      DATA ((APAD(1,I,J),I=1,3),J=1,7) /
2354     S 0.912418292E+05, 0.000000000E-00, 0.925887084E-04,
2355     S 0.723613782E+05, 0.000000000E-00, 0.129353723E-01,
2356     S 0.596037057E+04, 0.000000000E-00, 0.800821928E+00,
2357     S 0.000000000E-00, 0.000000000E-00, 0.242715973E+02,
2358     S 0.000000000E-00, 0.000000000E-00, 0.878331486E+02,
2359     S 0.000000000E-00, 0.000000000E-00, 0.191559725E+02,
2360     S 0.000000000E-00, 0.000000000E-00, 0.000000000E+00 /
2361      DATA ((APAD(2,I,J),I=1,3),J=1,7) /
2362     S 0.376655383E-08, 0.739646016E-08, 0.410177786E+03,
2363     S 0.978576773E-04, 0.131849595E-03, 0.672595424E+02,
2364     S 0.387714006E+00, 0.437772681E+00, 0.000000000E-00,
2365     S 0.118461660E+03, 0.151345118E+03, 0.000000000E-00,
2366     S 0.119079797E+04, 0.233628890E+04, 0.000000000E-00,
2367     S 0.293353397E+03, 0.797219934E+03, 0.000000000E-00,
2368     S 0.000000000E+00, 0.000000000E+00, 0.000000000E+00 /
2369C
2370      DATA ((BPAD(1,I,J),I=1,3),J=1,7) /
2371     S 0.912418292E+05, 0.000000000E-00, 0.925887084E-04,
2372     S 0.724555318E+05, 0.000000000E-00, 0.131812683E-01,
2373     S 0.602593328E+04, 0.000000000E-00, 0.812706117E+00,
2374     S 0.100000000E+01, 0.000000000E-00, 0.249863591E+02,
2375     S 0.000000000E-00, 0.000000000E-00, 0.931071925E+02,
2376     S 0.000000000E-00, 0.000000000E-00, 0.252233437E+02,
2377     S 0.000000000E-00, 0.000000000E-00, 0.100000000E+01 /
2378      DATA ((BPAD(2,I,J),I=1,3),J=1,7) /
2379     S 0.376655383E-08, 0.739646016E-08, 0.410177786E+03,
2380     S 0.979023421E-04, 0.131861712E-03, 0.731185438E+02,
2381     S 0.388611139E+00, 0.437949001E+00, 0.100000000E+01,
2382     S 0.120291383E+03, 0.151692730E+03, 0.000000000E+00,
2383     S 0.130531005E+04, 0.237071130E+04, 0.000000000E+00,
2384     S 0.415049409E+03, 0.867914360E+03, 0.000000000E+00,
2385     S 0.100000000E+01, 0.100000000E+01, 0.000000000E+00 /
2386c
2387      DATA (D(1,I),I=1,3) / 0.00, 0.00, 0.00 /
2388      DATA (D(2,I),I=1,3) / 0.000000000, 0.000000000, 0.800000000 /
2389C-----------------------------------------------------------------------
2390C
2391C*         1.      HORNER'S ALGORITHM TO COMPUTE TRANSMISSION FUNCTION
2392C
2393 100  CONTINUE
2394C
2395      DO 202 JA = 1,KABS
2396      IA=KIND(JA)
2397      DO 201 JL = 1, KDLON
2398      ZU(JL) = PU(JL,JA)
2399      ZR1(JL) = APAD(KNU,IA,1) + ZU(JL) * (APAD(KNU,IA,2) + ZU(JL)
2400     S      * ( APAD(KNU,IA,3) + ZU(JL) * (APAD(KNU,IA,4) + ZU(JL)
2401     S      * ( APAD(KNU,IA,5) + ZU(JL) * (APAD(KNU,IA,6) + ZU(JL)
2402     S      * ( APAD(KNU,IA,7) ))))))
2403C
2404      ZR2(JL) = BPAD(KNU,IA,1) + ZU(JL) * (BPAD(KNU,IA,2) + ZU(JL)
2405     S      * ( BPAD(KNU,IA,3) + ZU(JL) * (BPAD(KNU,IA,4) + ZU(JL)
2406     S      * ( BPAD(KNU,IA,5) + ZU(JL) * (BPAD(KNU,IA,6) + ZU(JL)
2407     S      * ( BPAD(KNU,IA,7) ))))))
2408C     
2409C
2410C*         2.      ADD THE BACKGROUND TRANSMISSION
2411C
2412 200  CONTINUE
2413C
2414      PTR(JL,JA) = (ZR1(JL)/ZR2(JL)) * (1.-D(KNU,IA)) + D(KNU,IA)
2415 201  CONTINUE
2416 202  CONTINUE
2417C
2418      RETURN
2419      END
2420cIM ctes ds clesphys.h   SUBROUTINE LW(RCO2,RCH4,RN2O,RCFC11,RCFC12,
2421      SUBROUTINE LW_LMDAR4(
2422     .              PPMB, PDP,
2423     .              PPSOL,PDT0,PEMIS,
2424     .              PTL, PTAVE, PWV, POZON, PAER,
2425     .              PCLDLD,PCLDLU,
2426     .              PVIEW,
2427     .              PCOLR, PCOLR0,
2428     .              PTOPLW,PSOLLW,PTOPLW0,PSOLLW0,
2429     .              psollwdown,
2430cIM  .              psollwdown,psollwdownclr,
2431cIM  .              ptoplwdown,ptoplwdownclr)
2432     .              plwup, plwdn, plwup0, plwdn0)
2433      USE dimphy
2434      IMPLICIT none
2435cym#include "dimensions.h"
2436cym#include "dimphy.h"
2437cym#include "raddim.h"
2438#include "raddimlw.h"
2439#include "YOMCST.h"
2440C
2441C-----------------------------------------------------------------------
2442C     METHOD.
2443C     -------
2444C
2445C          1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF
2446C     ABSORBERS.
2447C          2. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
2448C     GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
2449C          3. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
2450C     TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
2451C     BOUNDARIES.
2452C          4. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
2453C          5. INTRODUCES THE EFFECTS OF THE CLOUDS ON THE FLUXES.
2454C
2455C
2456C     REFERENCE.
2457C     ----------
2458C
2459C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
2460C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
2461C
2462C     AUTHOR.
2463C     -------
2464C        JEAN-JACQUES MORCRETTE  *ECMWF*
2465C
2466C     MODIFICATIONS.
2467C     --------------
2468C        ORIGINAL : 89-07-14
2469C-----------------------------------------------------------------------
2470cIM ctes ds clesphys.h
2471c     REAL(KIND=8) RCO2   ! CO2 CONCENTRATION (IPCC:353.E-06* 44.011/28.97)
2472c     REAL(KIND=8) RCH4   ! CH4 CONCENTRATION (IPCC: 1.72E-06* 16.043/28.97)
2473c     REAL(KIND=8) RN2O   ! N2O CONCENTRATION (IPCC: 310.E-09* 44.013/28.97)
2474c     REAL(KIND=8) RCFC11 ! CFC11 CONCENTRATION (IPCC: 280.E-12* 137.3686/28.97)
2475c     REAL(KIND=8) RCFC12 ! CFC12 CONCENTRATION (IPCC: 484.E-12* 120.9140/28.97)
2476#include "clesphys.h"
2477      REAL(KIND=8) PCLDLD(KDLON,KFLEV)  ! DOWNWARD EFFECTIVE CLOUD COVER
2478      REAL(KIND=8) PCLDLU(KDLON,KFLEV)  ! UPWARD EFFECTIVE CLOUD COVER
2479      REAL(KIND=8) PDP(KDLON,KFLEV)     ! LAYER PRESSURE THICKNESS (Pa)
2480      REAL(KIND=8) PDT0(KDLON)          ! SURFACE TEMPERATURE DISCONTINUITY (K)
2481      REAL(KIND=8) PEMIS(KDLON)         ! SURFACE EMISSIVITY
2482      REAL(KIND=8) PPMB(KDLON,KFLEV+1)  ! HALF LEVEL PRESSURE (mb)
2483      REAL(KIND=8) PPSOL(KDLON)         ! SURFACE PRESSURE (Pa)
2484      REAL(KIND=8) POZON(KDLON,KFLEV)   ! O3 mass fraction
2485      REAL(KIND=8) PTL(KDLON,KFLEV+1)   ! HALF LEVEL TEMPERATURE (K)
2486      REAL(KIND=8) PAER(KDLON,KFLEV,5)  ! OPTICAL THICKNESS OF THE AEROSOLS
2487      REAL(KIND=8) PTAVE(KDLON,KFLEV)   ! LAYER TEMPERATURE (K)
2488      REAL(KIND=8) PVIEW(KDLON)         ! COSECANT OF VIEWING ANGLE
2489      REAL(KIND=8) PWV(KDLON,KFLEV)     ! SPECIFIC HUMIDITY (kg/kg)
2490C
2491      REAL(KIND=8) PCOLR(KDLON,KFLEV)   ! LONG-WAVE TENDENCY (K/day)
2492      REAL(KIND=8) PCOLR0(KDLON,KFLEV)  ! LONG-WAVE TENDENCY (K/day) clear-sky
2493      REAL(KIND=8) PTOPLW(KDLON)        ! LONGWAVE FLUX AT T.O.A.
2494      REAL(KIND=8) PSOLLW(KDLON)        ! LONGWAVE FLUX AT SURFACE
2495      REAL(KIND=8) PTOPLW0(KDLON)       ! LONGWAVE FLUX AT T.O.A. (CLEAR-SKY)
2496      REAL(KIND=8) PSOLLW0(KDLON)       ! LONGWAVE FLUX AT SURFACE (CLEAR-SKY)
2497c Rajout LF
2498      real(kind=8) psollwdown(kdlon)    ! LONGWAVE downwards flux at surface
2499c Rajout IM
2500cIM   real(kind=8) psollwdownclr(kdlon) ! LONGWAVE CS downwards flux at surface
2501cIM   real(kind=8) ptoplwdown(kdlon)    ! LONGWAVE downwards flux at T.O.A.
2502cIM   real(kind=8) ptoplwdownclr(kdlon) ! LONGWAVE CS downwards flux at T.O.A.
2503cIM
2504      REAL(KIND=8) plwup(KDLON,KFLEV+1)  ! LW up total sky
2505      REAL(KIND=8) plwup0(KDLON,KFLEV+1) ! LW up clear sky
2506      REAL(KIND=8) plwdn(KDLON,KFLEV+1)  ! LW down total sky
2507      REAL(KIND=8) plwdn0(KDLON,KFLEV+1) ! LW down clear sky
2508C-------------------------------------------------------------------------
2509      REAL(KIND=8) ZABCU(KDLON,NUA,3*KFLEV+1)
2510
2511      REAL(KIND=8) ZOZ(KDLON,KFLEV)
2512!     equivalent pressure of ozone in a layer, in Pa
2513
2514cym      REAL(KIND=8) ZFLUX(KDLON,2,KFLEV+1) ! RADIATIVE FLUXES (1:up; 2:down)
2515cym      REAL(KIND=8) ZFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES
2516cym      REAL(KIND=8) ZBINT(KDLON,KFLEV+1)            ! Intermediate variable
2517cym      REAL(KIND=8) ZBSUI(KDLON)                    ! Intermediate variable
2518cym      REAL(KIND=8) ZCTS(KDLON,KFLEV)               ! Intermediate variable
2519cym      REAL(KIND=8) ZCNTRB(KDLON,KFLEV+1,KFLEV+1)   ! Intermediate variable
2520cym      SAVE ZFLUX, ZFLUC, ZBINT, ZBSUI, ZCTS, ZCNTRB
2521      REAL(KIND=8),allocatable,save :: ZFLUX(:,:,:) ! RADIATIVE FLUXES (1:up; 2:down)
2522      REAL(KIND=8),allocatable,save :: ZFLUC(:,:,:) ! CLEAR-SKY RADIATIVE FLUXES
2523      REAL(KIND=8),allocatable,save :: ZBINT(:,:)            ! Intermediate variable
2524      REAL(KIND=8),allocatable,save :: ZBSUI(:)                    ! Intermediate variable
2525      REAL(KIND=8),allocatable,save :: ZCTS(:,:)               ! Intermediate variable
2526      REAL(KIND=8),allocatable,save :: ZCNTRB(:,:,:)   ! Intermediate variable
2527c$OMP THREADPRIVATE(ZFLUX, ZFLUC, ZBINT, ZBSUI, ZCTS, ZCNTRB)
2528c
2529      INTEGER ilim, i, k, kpl1
2530C
2531      INTEGER lw0pas ! Every lw0pas steps, clear-sky is done
2532      PARAMETER (lw0pas=1)
2533      INTEGER lwpas  ! Every lwpas steps, cloudy-sky is done
2534      PARAMETER (lwpas=1)
2535c
2536      INTEGER itaplw0, itaplw
2537      LOGICAL appel1er
2538      SAVE appel1er, itaplw0, itaplw
2539c$OMP THREADPRIVATE(appel1er, itaplw0, itaplw)
2540      DATA appel1er /.TRUE./
2541      DATA itaplw0,itaplw /0,0/
2542
2543C     ------------------------------------------------------------------
2544      IF (appel1er) THEN
2545         PRINT*, "LW clear-sky calling frequency: ", lw0pas
2546         PRINT*, "LW cloudy-sky calling frequency: ", lwpas
2547         PRINT*, "   In general, they should be 1"
2548cym
2549         allocate(ZFLUX(KDLON,2,KFLEV+1) )
2550         allocate(ZFLUC(KDLON,2,KFLEV+1) )
2551         allocate(ZBINT(KDLON,KFLEV+1))
2552         allocate(ZBSUI(KDLON))
2553         allocate(ZCTS(KDLON,KFLEV))
2554         allocate(ZCNTRB(KDLON,KFLEV+1,KFLEV+1))
2555         appel1er=.FALSE.
2556      ENDIF
2557C
2558      IF (MOD(itaplw0,lw0pas).EQ.0) THEN
2559c     Compute equivalent pressure of ozone from mass fraction:
2560      DO k = 1, KFLEV
2561         DO i = 1, KDLON
2562            ZOZ(i,k) = POZON(i,k)*PDP(i,k) * RMD/RMO3
2563         ENDDO
2564      ENDDO
2565cIM ctes ds clesphys.h   CALL LWU(RCO2,RCH4, RN2O, RCFC11, RCFC12,
2566      CALL LWU_LMDAR4(
2567     S         PAER,PDP,PPMB,PPSOL,ZOZ,PTAVE,PVIEW,PWV,ZABCU)
2568      CALL LWBV_LMDAR4(ILIM,PDP,PDT0,PEMIS,PPMB,PTL,PTAVE,ZABCU,
2569     S          ZFLUC,ZBINT,ZBSUI,ZCTS,ZCNTRB)
2570      itaplw0 = 0
2571      ENDIF
2572      itaplw0 = itaplw0 + 1
2573C
2574      IF (MOD(itaplw,lwpas).EQ.0) THEN
2575      CALL LWC_LMDAR4(ILIM,PCLDLD,PCLDLU,PEMIS,
2576     S         ZFLUC,ZBINT,ZBSUI,ZCTS,ZCNTRB,
2577     S         ZFLUX)
2578      itaplw = 0
2579      ENDIF
2580      itaplw = itaplw + 1
2581C
2582      DO k = 1, KFLEV
2583         kpl1 = k+1
2584         DO i = 1, KDLON
2585            PCOLR(i,k) = ZFLUX(i,1,kpl1)+ZFLUX(i,2,kpl1)
2586     .                 - ZFLUX(i,1,k)-   ZFLUX(i,2,k)
2587            PCOLR(i,k) = PCOLR(i,k) * RDAY*RG/RCPD / PDP(i,k)
2588            PCOLR0(i,k) = ZFLUC(i,1,kpl1)+ZFLUC(i,2,kpl1)
2589     .                 - ZFLUC(i,1,k)-   ZFLUC(i,2,k)
2590            PCOLR0(i,k) = PCOLR0(i,k) * RDAY*RG/RCPD / PDP(i,k)
2591         ENDDO
2592      ENDDO
2593      DO i = 1, KDLON
2594         PSOLLW(i) = -ZFLUX(i,1,1)-ZFLUX(i,2,1)
2595         PTOPLW(i) = ZFLUX(i,1,KFLEV+1) + ZFLUX(i,2,KFLEV+1)
2596c
2597         PSOLLW0(i) = -ZFLUC(i,1,1)-ZFLUC(i,2,1)
2598         PTOPLW0(i) = ZFLUC(i,1,KFLEV+1) + ZFLUC(i,2,KFLEV+1)
2599         psollwdown(i) = -ZFLUX(i,2,1)
2600c
2601cIM attention aux signes !; LWtop >0, LWdn < 0
2602         DO k = 1, KFLEV+1
2603           plwup(i,k) = ZFLUX(i,1,k)
2604           plwup0(i,k) = ZFLUC(i,1,k)
2605           plwdn(i,k) = ZFLUX(i,2,k)
2606           plwdn0(i,k) = ZFLUC(i,2,k)
2607         ENDDO
2608      ENDDO
2609C     ------------------------------------------------------------------
2610      RETURN
2611      END
2612cIM ctes ds clesphys.h   SUBROUTINE LWU(RCO2, RCH4, RN2O, RCFC11, RCFC12,
2613      SUBROUTINE LWU_LMDAR4(
2614     S               PAER,PDP,PPMB,PPSOL,POZ,PTAVE,PVIEW,PWV,
2615     S               PABCU)
2616      USE dimphy
2617      IMPLICIT none
2618cym#include "dimensions.h"
2619cym#include "dimphy.h"
2620cym#include "raddim.h"
2621#include "raddimlw.h"
2622#include "YOMCST.h"
2623#include "radepsi.h"
2624#include "radopt.h"
2625C
2626C     PURPOSE.
2627C     --------
2628C           COMPUTES ABSORBER AMOUNTS INCLUDING PRESSURE AND
2629C           TEMPERATURE EFFECTS
2630C
2631C     METHOD.
2632C     -------
2633C
2634C          1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF
2635C     ABSORBERS.
2636C
2637C
2638C     REFERENCE.
2639C     ----------
2640C
2641C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
2642C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
2643C
2644C     AUTHOR.
2645C     -------
2646C        JEAN-JACQUES MORCRETTE  *ECMWF*
2647C
2648C     MODIFICATIONS.
2649C     --------------
2650C        ORIGINAL : 89-07-14
2651C        Voigt lines (loop 404 modified) - JJM & PhD - 01/96
2652C-----------------------------------------------------------------------
2653C* ARGUMENTS:
2654cIM ctes ds clesphys.h
2655c     REAL(KIND=8) RCO2
2656c     REAL(KIND=8) RCH4, RN2O, RCFC11, RCFC12
2657#include "clesphys.h"
2658      REAL(KIND=8) PAER(KDLON,KFLEV,5)
2659      REAL(KIND=8) PDP(KDLON,KFLEV)
2660      REAL(KIND=8) PPMB(KDLON,KFLEV+1)
2661      REAL(KIND=8) PPSOL(KDLON)
2662      REAL(KIND=8) POZ(KDLON,KFLEV)
2663      REAL(KIND=8) PTAVE(KDLON,KFLEV)
2664      REAL(KIND=8) PVIEW(KDLON)
2665      REAL(KIND=8) PWV(KDLON,KFLEV)
2666C
2667      REAL(KIND=8) PABCU(KDLON,NUA,3*KFLEV+1) ! EFFECTIVE ABSORBER AMOUNTS
2668C
2669C-----------------------------------------------------------------------
2670C* LOCAL VARIABLES:
2671      REAL(KIND=8) ZABLY(KDLON,NUA,3*KFLEV+1)
2672      REAL(KIND=8) ZDUC(KDLON,3*KFLEV+1)
2673      REAL(KIND=8) ZPHIO(KDLON)
2674      REAL(KIND=8) ZPSC2(KDLON)
2675      REAL(KIND=8) ZPSC3(KDLON)
2676      REAL(KIND=8) ZPSH1(KDLON)
2677      REAL(KIND=8) ZPSH2(KDLON)
2678      REAL(KIND=8) ZPSH3(KDLON)
2679      REAL(KIND=8) ZPSH4(KDLON)
2680      REAL(KIND=8) ZPSH5(KDLON)
2681      REAL(KIND=8) ZPSH6(KDLON)
2682      REAL(KIND=8) ZPSIO(KDLON)
2683      REAL(KIND=8) ZTCON(KDLON)
2684      REAL(KIND=8) ZPHM6(KDLON)
2685      REAL(KIND=8) ZPSM6(KDLON)
2686      REAL(KIND=8) ZPHN6(KDLON)
2687      REAL(KIND=8) ZPSN6(KDLON)
2688      REAL(KIND=8) ZSSIG(KDLON,3*KFLEV+1)
2689      REAL(KIND=8) ZTAVI(KDLON)
2690      REAL(KIND=8) ZUAER(KDLON,Ninter)
2691      REAL(KIND=8) ZXOZ(KDLON)
2692      REAL(KIND=8) ZXWV(KDLON)
2693C
2694      INTEGER jl, jk, jkj, jkjr, jkjp, ig1
2695      INTEGER jki, jkip1, ja, jj
2696      INTEGER jkl, jkp1, jkk, jkjpn
2697      INTEGER jae1, jae2, jae3, jae, jjpn
2698      INTEGER ir, jc, jcp1
2699      REAL(KIND=8) zdpm, zupm, zupmh2o, zupmco2, zupmo3, zu6, zup
2700      REAL(KIND=8) zfppw, ztx, ztx2, zzably
2701      REAL(KIND=8) zcah1, zcbh1, zcah2, zcbh2, zcah3, zcbh3
2702      REAL(KIND=8) zcah4, zcbh4, zcah5, zcbh5, zcah6, zcbh6
2703      REAL(KIND=8) zcac8, zcbc8
2704      REAL(KIND=8) zalup, zdiff
2705c
2706      REAL(KIND=8) PVGCO2, PVGH2O, PVGO3
2707C
2708      REAL(KIND=8) R10E  ! DECIMAL/NATURAL LOG.FACTOR
2709      PARAMETER (R10E=0.4342945)
2710c
2711c Used Data Block:
2712c
2713      REAL(KIND=8) TREF
2714      SAVE TREF
2715c$OMP THREADPRIVATE(TREF)
2716      REAL(KIND=8) RT1(2)
2717      SAVE RT1
2718c$OMP THREADPRIVATE(RT1)
2719      REAL(KIND=8) RAER(5,5)
2720      SAVE RAER
2721c$OMP THREADPRIVATE(RAER)
2722      REAL(KIND=8) AT(8,3), BT(8,3)
2723      SAVE AT, BT
2724c$OMP THREADPRIVATE(AT, BT)
2725      REAL(KIND=8) OCT(4)
2726      SAVE OCT
2727c$OMP THREADPRIVATE(OCT)
2728      DATA TREF /250.0/
2729      DATA (RT1(IG1),IG1=1,2) / -0.577350269, +0.577350269 /
2730      DATA RAER / .038520, .037196, .040532, .054934, .038520
2731     1          , .12613 , .18313 , .10357 , .064106, .126130
2732     2          , .012579, .013649, .018652, .025181, .012579
2733     3          , .011890, .016142, .021105, .028908, .011890
2734     4          , .013792, .026810, .052203, .066338, .013792 /
2735      DATA (AT(1,IR),IR=1,3) /
2736     S 0.298199E-02,-.394023E-03,0.319566E-04 /
2737      DATA (BT(1,IR),IR=1,3) /
2738     S-0.106432E-04,0.660324E-06,0.174356E-06 /
2739      DATA (AT(2,IR),IR=1,3) /
2740     S 0.143676E-01,0.366501E-02,-.160822E-02 /
2741      DATA (BT(2,IR),IR=1,3) /
2742     S-0.553979E-04,-.101701E-04,0.920868E-05 /
2743      DATA (AT(3,IR),IR=1,3) /
2744     S 0.197861E-01,0.315541E-02,-.174547E-02 /
2745      DATA (BT(3,IR),IR=1,3) /
2746     S-0.877012E-04,0.513302E-04,0.523138E-06 /
2747      DATA (AT(4,IR),IR=1,3) /
2748     S 0.289560E-01,-.208807E-02,-.121943E-02 /
2749      DATA (BT(4,IR),IR=1,3) /
2750     S-0.165960E-03,0.157704E-03,-.146427E-04 /
2751      DATA (AT(5,IR),IR=1,3) /
2752     S 0.103800E-01,0.436296E-02,-.161431E-02 /
2753      DATA (BT(5,IR),IR=1,3) /
2754     S -.276744E-04,-.327381E-04,0.127646E-04 /
2755      DATA (AT(6,IR),IR=1,3) /
2756     S 0.868859E-02,-.972752E-03,0.000000E-00 /
2757      DATA (BT(6,IR),IR=1,3) /
2758     S -.278412E-04,-.713940E-06,0.117469E-05 /
2759      DATA (AT(7,IR),IR=1,3) /
2760     S 0.250073E-03,0.455875E-03,0.109242E-03 /
2761      DATA (BT(7,IR),IR=1,3) /
2762     S 0.199846E-05,-.216313E-05,0.175991E-06 /
2763      DATA (AT(8,IR),IR=1,3) /
2764     S 0.307423E-01,0.110879E-02,-.322172E-03 /
2765      DATA (BT(8,IR),IR=1,3) /
2766     S-0.108482E-03,0.258096E-05,-.814575E-06 /
2767c
2768      DATA OCT /-.326E-03, -.102E-05, .137E-02, -.535E-05/
2769C-----------------------------------------------------------------------
2770c
2771      IF (LEVOIGT) THEN
2772         PVGCO2= 60.
2773         PVGH2O= 30.
2774         PVGO3 =400.
2775      ELSE
2776         PVGCO2= 0.
2777         PVGH2O= 0.
2778         PVGO3 = 0.
2779      ENDIF
2780C
2781C
2782C*         2.    PRESSURE OVER GAUSS SUB-LEVELS
2783C                ------------------------------
2784C
2785 200  CONTINUE
2786C
2787      DO 201 JL = 1, KDLON
2788      ZSSIG(JL, 1 ) = PPMB(JL,1) * 100.
2789 201  CONTINUE
2790C
2791      DO 206 JK = 1 , KFLEV
2792      JKJ=(JK-1)*NG1P1+1
2793      JKJR = JKJ
2794      JKJP = JKJ + NG1P1
2795      DO 203 JL = 1, KDLON
2796      ZSSIG(JL,JKJP)=PPMB(JL,JK+1)* 100.
2797 203  CONTINUE
2798      DO 205 IG1=1,NG1
2799      JKJ=JKJ+1
2800      DO 204 JL = 1, KDLON
2801      ZSSIG(JL,JKJ)= (ZSSIG(JL,JKJR)+ZSSIG(JL,JKJP))*0.5
2802     S  + RT1(IG1) * (ZSSIG(JL,JKJP) - ZSSIG(JL,JKJR)) * 0.5
2803 204  CONTINUE
2804 205  CONTINUE
2805 206  CONTINUE
2806C
2807C-----------------------------------------------------------------------
2808C
2809C
2810C*         4.    PRESSURE THICKNESS AND MEAN PRESSURE OF SUB-LAYERS
2811C                --------------------------------------------------
2812C
2813 400  CONTINUE
2814C
2815      DO 402 JKI=1,3*KFLEV
2816      JKIP1=JKI+1
2817      DO 401 JL = 1, KDLON
2818      ZABLY(JL,5,JKI)=(ZSSIG(JL,JKI)+ZSSIG(JL,JKIP1))*0.5
2819      ZABLY(JL,3,JKI)=(ZSSIG(JL,JKI)-ZSSIG(JL,JKIP1))
2820     S                                 /(10.*RG)
2821 401  CONTINUE
2822 402  CONTINUE
2823C
2824      DO 406 JK = 1 , KFLEV
2825      JKP1=JK+1
2826      JKL = KFLEV+1 - JK
2827      DO 403 JL = 1, KDLON
2828      ZXWV(JL) = MAX (PWV(JL,JK) , ZEPSCQ )
2829      ZXOZ(JL) = MAX (POZ(JL,JK) / PDP(JL,JK) , ZEPSCO )
2830 403  CONTINUE
2831      JKJ=(JK-1)*NG1P1+1
2832      JKJPN=JKJ+NG1
2833      DO 405 JKK=JKJ,JKJPN
2834      DO 404 JL = 1, KDLON
2835      ZDPM = ZABLY(JL,3,JKK)
2836      ZUPM = ZABLY(JL,5,JKK)             * ZDPM / 101325.
2837      ZUPMCO2 = ( ZABLY(JL,5,JKK) + PVGCO2 ) * ZDPM / 101325.
2838      ZUPMH2O = ( ZABLY(JL,5,JKK) + PVGH2O ) * ZDPM / 101325.
2839      ZUPMO3  = ( ZABLY(JL,5,JKK) + PVGO3  ) * ZDPM / 101325.
2840      ZDUC(JL,JKK) = ZDPM
2841      ZABLY(JL,12,JKK) = ZXOZ(JL) * ZDPM
2842      ZABLY(JL,13,JKK) = ZXOZ(JL) * ZUPMO3
2843      ZU6 = ZXWV(JL) * ZUPM
2844      ZFPPW = 1.6078 * ZXWV(JL) / (1.+0.608*ZXWV(JL))
2845      ZABLY(JL,6,JKK) = ZXWV(JL) * ZUPMH2O
2846      ZABLY(JL,11,JKK) = ZU6 * ZFPPW
2847      ZABLY(JL,10,JKK) = ZU6 * (1.-ZFPPW)
2848      ZABLY(JL,9,JKK) = RCO2 * ZUPMCO2
2849      ZABLY(JL,8,JKK) = RCO2 * ZDPM
2850 404  CONTINUE
2851 405  CONTINUE
2852 406  CONTINUE
2853C
2854C-----------------------------------------------------------------------
2855C
2856C
2857C*         5.    CUMULATIVE ABSORBER AMOUNTS FROM TOP OF ATMOSPHERE
2858C                --------------------------------------------------
2859C
2860 500  CONTINUE
2861C
2862      DO 502 JA = 1, NUA
2863      DO 501 JL = 1, KDLON
2864      PABCU(JL,JA,3*KFLEV+1) = 0.
2865  501 CONTINUE
2866  502 CONTINUE
2867C
2868      DO 529 JK = 1 , KFLEV
2869      JJ=(JK-1)*NG1P1+1
2870      JJPN=JJ+NG1
2871      JKL=KFLEV+1-JK
2872C
2873C
2874C*         5.1  CUMULATIVE AEROSOL AMOUNTS FROM TOP OF ATMOSPHERE
2875C               --------------------------------------------------
2876C
2877 510  CONTINUE
2878C
2879      JAE1=3*KFLEV+1-JJ
2880      JAE2=3*KFLEV+1-(JJ+1)
2881      JAE3=3*KFLEV+1-JJPN
2882      DO 512 JAE=1,5
2883      DO 511 JL = 1, KDLON
2884      ZUAER(JL,JAE) = (RAER(JAE,1)*PAER(JL,JKL,1)
2885     S      +RAER(JAE,2)*PAER(JL,JKL,2)+RAER(JAE,3)*PAER(JL,JKL,3)
2886     S      +RAER(JAE,4)*PAER(JL,JKL,4)+RAER(JAE,5)*PAER(JL,JKL,5))
2887     S      /(ZDUC(JL,JAE1)+ZDUC(JL,JAE2)+ZDUC(JL,JAE3))
2888 511  CONTINUE
2889 512  CONTINUE
2890C
2891C
2892C
2893C*         5.2  INTRODUCES TEMPERATURE EFFECTS ON ABSORBER AMOUNTS
2894C               --------------------------------------------------
2895C
2896 520  CONTINUE
2897C
2898      DO 521 JL = 1, KDLON
2899      ZTAVI(JL)=PTAVE(JL,JKL)
2900      ZTCON(JL)=EXP(6.08*(296./ZTAVI(JL)-1.))
2901      ZTX=ZTAVI(JL)-TREF
2902      ZTX2=ZTX*ZTX
2903      ZZABLY = ZABLY(JL,6,JAE1)+ZABLY(JL,6,JAE2)+ZABLY(JL,6,JAE3)
2904      ZUP=MIN( MAX( 0.5*R10E*LOG( ZZABLY ) + 5., 0._8), 6._8)
2905      ZCAH1=AT(1,1)+ZUP*(AT(1,2)+ZUP*(AT(1,3)))
2906      ZCBH1=BT(1,1)+ZUP*(BT(1,2)+ZUP*(BT(1,3)))
2907      ZPSH1(JL)=EXP( ZCAH1 * ZTX + ZCBH1 * ZTX2 )
2908      ZCAH2=AT(2,1)+ZUP*(AT(2,2)+ZUP*(AT(2,3)))
2909      ZCBH2=BT(2,1)+ZUP*(BT(2,2)+ZUP*(BT(2,3)))
2910      ZPSH2(JL)=EXP( ZCAH2 * ZTX + ZCBH2 * ZTX2 )
2911      ZCAH3=AT(3,1)+ZUP*(AT(3,2)+ZUP*(AT(3,3)))
2912      ZCBH3=BT(3,1)+ZUP*(BT(3,2)+ZUP*(BT(3,3)))
2913      ZPSH3(JL)=EXP( ZCAH3 * ZTX + ZCBH3 * ZTX2 )
2914      ZCAH4=AT(4,1)+ZUP*(AT(4,2)+ZUP*(AT(4,3)))
2915      ZCBH4=BT(4,1)+ZUP*(BT(4,2)+ZUP*(BT(4,3)))
2916      ZPSH4(JL)=EXP( ZCAH4 * ZTX + ZCBH4 * ZTX2 )
2917      ZCAH5=AT(5,1)+ZUP*(AT(5,2)+ZUP*(AT(5,3)))
2918      ZCBH5=BT(5,1)+ZUP*(BT(5,2)+ZUP*(BT(5,3)))
2919      ZPSH5(JL)=EXP( ZCAH5 * ZTX + ZCBH5 * ZTX2 )
2920      ZCAH6=AT(6,1)+ZUP*(AT(6,2)+ZUP*(AT(6,3)))
2921      ZCBH6=BT(6,1)+ZUP*(BT(6,2)+ZUP*(BT(6,3)))
2922      ZPSH6(JL)=EXP( ZCAH6 * ZTX + ZCBH6 * ZTX2 )
2923      ZPHM6(JL)=EXP(-5.81E-4 * ZTX - 1.13E-6 * ZTX2 )
2924      ZPSM6(JL)=EXP(-5.57E-4 * ZTX - 3.30E-6 * ZTX2 )
2925      ZPHN6(JL)=EXP(-3.46E-5 * ZTX + 2.05E-7 * ZTX2 )
2926      ZPSN6(JL)=EXP( 3.70E-3 * ZTX - 2.30E-6 * ZTX2 )
2927 521  CONTINUE
2928C
2929      DO 522 JL = 1, KDLON
2930      ZTAVI(JL)=PTAVE(JL,JKL)
2931      ZTX=ZTAVI(JL)-TREF
2932      ZTX2=ZTX*ZTX
2933      ZZABLY = ZABLY(JL,9,JAE1)+ZABLY(JL,9,JAE2)+ZABLY(JL,9,JAE3)
2934      ZALUP = R10E * LOG ( ZZABLY )
2935      ZUP   = MAX( 0._8, 5.0 + 0.5 * ZALUP )
2936      ZPSC2(JL) = (ZTAVI(JL)/TREF) ** ZUP
2937      ZCAC8=AT(8,1)+ZUP*(AT(8,2)+ZUP*(AT(8,3)))
2938      ZCBC8=BT(8,1)+ZUP*(BT(8,2)+ZUP*(BT(8,3)))
2939      ZPSC3(JL)=EXP( ZCAC8 * ZTX + ZCBC8 * ZTX2 )
2940      ZPHIO(JL) = EXP( OCT(1) * ZTX + OCT(2) * ZTX2)
2941      ZPSIO(JL) = EXP( 2.* (OCT(3)*ZTX+OCT(4)*ZTX2))
2942 522  CONTINUE
2943C
2944      DO 524 JKK=JJ,JJPN
2945      JC=3*KFLEV+1-JKK
2946      JCP1=JC+1
2947      DO 523 JL = 1, KDLON
2948      ZDIFF = PVIEW(JL)
2949      PABCU(JL,10,JC)=PABCU(JL,10,JCP1)
2950     S                +ZABLY(JL,10,JC)           *ZDIFF
2951      PABCU(JL,11,JC)=PABCU(JL,11,JCP1)
2952     S                +ZABLY(JL,11,JC)*ZTCON(JL)*ZDIFF
2953C
2954      PABCU(JL,12,JC)=PABCU(JL,12,JCP1)
2955     S                +ZABLY(JL,12,JC)*ZPHIO(JL)*ZDIFF
2956      PABCU(JL,13,JC)=PABCU(JL,13,JCP1)
2957     S                +ZABLY(JL,13,JC)*ZPSIO(JL)*ZDIFF
2958C
2959      PABCU(JL,7,JC)=PABCU(JL,7,JCP1)
2960     S               +ZABLY(JL,9,JC)*ZPSC2(JL)*ZDIFF
2961      PABCU(JL,8,JC)=PABCU(JL,8,JCP1)
2962     S               +ZABLY(JL,9,JC)*ZPSC3(JL)*ZDIFF
2963      PABCU(JL,9,JC)=PABCU(JL,9,JCP1)
2964     S               +ZABLY(JL,9,JC)*ZPSC3(JL)*ZDIFF
2965C
2966      PABCU(JL,1,JC)=PABCU(JL,1,JCP1)
2967     S               +ZABLY(JL,6,JC)*ZPSH1(JL)*ZDIFF
2968      PABCU(JL,2,JC)=PABCU(JL,2,JCP1)
2969     S               +ZABLY(JL,6,JC)*ZPSH2(JL)*ZDIFF
2970      PABCU(JL,3,JC)=PABCU(JL,3,JCP1)
2971     S               +ZABLY(JL,6,JC)*ZPSH5(JL)*ZDIFF
2972      PABCU(JL,4,JC)=PABCU(JL,4,JCP1)
2973     S               +ZABLY(JL,6,JC)*ZPSH3(JL)*ZDIFF
2974      PABCU(JL,5,JC)=PABCU(JL,5,JCP1)
2975     S               +ZABLY(JL,6,JC)*ZPSH4(JL)*ZDIFF
2976      PABCU(JL,6,JC)=PABCU(JL,6,JCP1)
2977     S               +ZABLY(JL,6,JC)*ZPSH6(JL)*ZDIFF
2978C
2979      PABCU(JL,14,JC)=PABCU(JL,14,JCP1)
2980     S                +ZUAER(JL,1)    *ZDUC(JL,JC)*ZDIFF
2981      PABCU(JL,15,JC)=PABCU(JL,15,JCP1)
2982     S                +ZUAER(JL,2)    *ZDUC(JL,JC)*ZDIFF
2983      PABCU(JL,16,JC)=PABCU(JL,16,JCP1)
2984     S                +ZUAER(JL,3)    *ZDUC(JL,JC)*ZDIFF
2985      PABCU(JL,17,JC)=PABCU(JL,17,JCP1)
2986     S                +ZUAER(JL,4)    *ZDUC(JL,JC)*ZDIFF
2987      PABCU(JL,18,JC)=PABCU(JL,18,JCP1)
2988     S                +ZUAER(JL,5)    *ZDUC(JL,JC)*ZDIFF
2989C
2990      PABCU(JL,19,JC)=PABCU(JL,19,JCP1)
2991     S               +ZABLY(JL,8,JC)*RCH4/RCO2*ZPHM6(JL)*ZDIFF
2992      PABCU(JL,20,JC)=PABCU(JL,20,JCP1)
2993     S               +ZABLY(JL,9,JC)*RCH4/RCO2*ZPSM6(JL)*ZDIFF
2994      PABCU(JL,21,JC)=PABCU(JL,21,JCP1)
2995     S               +ZABLY(JL,8,JC)*RN2O/RCO2*ZPHN6(JL)*ZDIFF
2996      PABCU(JL,22,JC)=PABCU(JL,22,JCP1)
2997     S               +ZABLY(JL,9,JC)*RN2O/RCO2*ZPSN6(JL)*ZDIFF
2998C
2999      PABCU(JL,23,JC)=PABCU(JL,23,JCP1)
3000     S               +ZABLY(JL,8,JC)*RCFC11/RCO2         *ZDIFF
3001      PABCU(JL,24,JC)=PABCU(JL,24,JCP1)
3002     S               +ZABLY(JL,8,JC)*RCFC12/RCO2         *ZDIFF
3003 523  CONTINUE
3004 524  CONTINUE
3005C
3006 529  CONTINUE
3007C
3008C
3009      RETURN
3010      END
3011      SUBROUTINE LWBV_LMDAR4(KLIM,PDP,PDT0,PEMIS,PPMB,PTL,PTAVE,PABCU,
3012     S                PFLUC,PBINT,PBSUI,PCTS,PCNTRB)
3013      USE dimphy
3014      IMPLICIT none
3015cym#include "dimensions.h"
3016cym#include "dimphy.h"
3017cym#include "raddim.h"
3018#include "raddimlw.h"
3019#include "YOMCST.h"
3020C
3021C     PURPOSE.
3022C     --------
3023C           TO COMPUTE THE PLANCK FUNCTION AND PERFORM THE
3024C           VERTICAL INTEGRATION. SPLIT OUT FROM LW FOR MEMORY
3025C           SAVING
3026C
3027C     METHOD.
3028C     -------
3029C
3030C          1. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
3031C     GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
3032C          2. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
3033C     TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
3034C     BOUNDARIES.
3035C          3. COMPUTES THE CLEAR-SKY COOLING RATES.
3036C
3037C     REFERENCE.
3038C     ----------
3039C
3040C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
3041C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
3042C
3043C     AUTHOR.
3044C     -------
3045C        JEAN-JACQUES MORCRETTE  *ECMWF*
3046C
3047C     MODIFICATIONS.
3048C     --------------
3049C        ORIGINAL : 89-07-14
3050C        MODIFICATION : 93-10-15 M.HAMRUD (SPLIT OUT FROM LW TO SAVE
3051C                                          MEMORY)
3052C-----------------------------------------------------------------------
3053C* ARGUMENTS:
3054      INTEGER KLIM
3055C
3056      REAL(KIND=8) PDP(KDLON,KFLEV)
3057      REAL(KIND=8) PDT0(KDLON)
3058      REAL(KIND=8) PEMIS(KDLON)
3059      REAL(KIND=8) PPMB(KDLON,KFLEV+1)
3060      REAL(KIND=8) PTL(KDLON,KFLEV+1)
3061      REAL(KIND=8) PTAVE(KDLON,KFLEV)
3062C
3063      REAL(KIND=8) PFLUC(KDLON,2,KFLEV+1)
3064C     
3065      REAL(KIND=8) PABCU(KDLON,NUA,3*KFLEV+1)
3066      REAL(KIND=8) PBINT(KDLON,KFLEV+1)
3067      REAL(KIND=8) PBSUI(KDLON)
3068      REAL(KIND=8) PCTS(KDLON,KFLEV)
3069      REAL(KIND=8) PCNTRB(KDLON,KFLEV+1,KFLEV+1)
3070C
3071C-------------------------------------------------------------------------
3072C
3073C* LOCAL VARIABLES:
3074      REAL(KIND=8) ZB(KDLON,Ninter,KFLEV+1)
3075      REAL(KIND=8) ZBSUR(KDLON,Ninter)
3076      REAL(KIND=8) ZBTOP(KDLON,Ninter)
3077      REAL(KIND=8) ZDBSL(KDLON,Ninter,KFLEV*2)
3078      REAL(KIND=8) ZGA(KDLON,8,2,KFLEV)
3079      REAL(KIND=8) ZGB(KDLON,8,2,KFLEV)
3080      REAL(KIND=8) ZGASUR(KDLON,8,2)
3081      REAL(KIND=8) ZGBSUR(KDLON,8,2)
3082      REAL(KIND=8) ZGATOP(KDLON,8,2)
3083      REAL(KIND=8) ZGBTOP(KDLON,8,2)
3084C
3085      INTEGER nuaer, ntraer
3086C     ------------------------------------------------------------------
3087C* COMPUTES PLANCK FUNCTIONS:
3088       CALL LWB_LMDAR4(PDT0,PTAVE,PTL,
3089     S          ZB,PBINT,PBSUI,ZBSUR,ZBTOP,ZDBSL,
3090     S          ZGA,ZGB,ZGASUR,ZGBSUR,ZGATOP,ZGBTOP)
3091C     ------------------------------------------------------------------
3092C* PERFORMS THE VERTICAL INTEGRATION:
3093      NUAER = NUA
3094      NTRAER = NTRA
3095      CALL LWV_LMDAR4(NUAER,NTRAER, KLIM
3096     R  , PABCU,ZB,PBINT,PBSUI,ZBSUR,ZBTOP,ZDBSL,PEMIS,PPMB,PTAVE
3097     R  , ZGA,ZGB,ZGASUR,ZGBSUR,ZGATOP,ZGBTOP
3098     S  , PCNTRB,PCTS,PFLUC)
3099C     ------------------------------------------------------------------
3100      RETURN
3101      END
3102      SUBROUTINE LWC_LMDAR4(KLIM,PCLDLD,PCLDLU,PEMIS,PFLUC,
3103     R               PBINT,PBSUIN,PCTS,PCNTRB,
3104     S               PFLUX)
3105      USE dimphy
3106      IMPLICIT none
3107cym#include "dimensions.h"
3108cym#include "dimphy.h"
3109cym#include "raddim.h"
3110#include "radepsi.h"
3111#include "radopt.h"
3112C
3113C     PURPOSE.
3114C     --------
3115C           INTRODUCES CLOUD EFFECTS ON LONGWAVE FLUXES OR
3116C           RADIANCES
3117C
3118C        EXPLICIT ARGUMENTS :
3119C        --------------------
3120C     ==== INPUTS ===
3121C PBINT  : (KDLON,0:KFLEV)     ; HALF LEVEL PLANCK FUNCTION
3122C PBSUIN : (KDLON)             ; SURFACE PLANCK FUNCTION
3123C PCLDLD : (KDLON,KFLEV)       ; DOWNWARD EFFECTIVE CLOUD FRACTION
3124C PCLDLU : (KDLON,KFLEV)       ; UPWARD EFFECTIVE CLOUD FRACTION
3125C PCNTRB : (KDLON,KFLEV+1,KFLEV+1); CLEAR-SKY ENERGY EXCHANGE
3126C PCTS   : (KDLON,KFLEV)       ; CLEAR-SKY LAYER COOLING-TO-SPACE
3127C PEMIS  : (KDLON)             ; SURFACE EMISSIVITY
3128C PFLUC
3129C     ==== OUTPUTS ===
3130C PFLUX(KDLON,2,KFLEV)         ; RADIATIVE FLUXES :
3131C                     1  ==>  UPWARD   FLUX TOTAL
3132C                     2  ==>  DOWNWARD FLUX TOTAL
3133C
3134C     METHOD.
3135C     -------
3136C
3137C          1. INITIALIZES ALL FLUXES TO CLEAR-SKY VALUES
3138C          2. EFFECT OF ONE OVERCAST UNITY EMISSIVITY CLOUD LAYER
3139C          3. EFFECT OF SEMI-TRANSPARENT, PARTIAL OR MULTI-LAYERED
3140C     CLOUDS
3141C
3142C     REFERENCE.
3143C     ----------
3144C
3145C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
3146C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
3147C
3148C     AUTHOR.
3149C     -------
3150C        JEAN-JACQUES MORCRETTE  *ECMWF*
3151C
3152C     MODIFICATIONS.
3153C     --------------
3154C        ORIGINAL : 89-07-14
3155C        Voigt lines (loop 231 to 233)  - JJM & PhD - 01/96
3156C-----------------------------------------------------------------------
3157C* ARGUMENTS:
3158      INTEGER klim
3159      REAL(KIND=8) PFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES
3160      REAL(KIND=8) PBINT(KDLON,KFLEV+1)   ! HALF LEVEL PLANCK FUNCTION
3161      REAL(KIND=8) PBSUIN(KDLON)          ! SURFACE PLANCK FUNCTION
3162      REAL(KIND=8) PCNTRB(KDLON,KFLEV+1,KFLEV+1) !CLEAR-SKY ENERGY EXCHANGE
3163      REAL(KIND=8) PCTS(KDLON,KFLEV)      ! CLEAR-SKY LAYER COOLING-TO-SPACE
3164c
3165      REAL(KIND=8) PCLDLD(KDLON,KFLEV)
3166      REAL(KIND=8) PCLDLU(KDLON,KFLEV)
3167      REAL(KIND=8) PEMIS(KDLON)
3168C
3169      REAL(KIND=8) PFLUX(KDLON,2,KFLEV+1)
3170C-----------------------------------------------------------------------
3171C* LOCAL VARIABLES:
3172      INTEGER IMX(KDLON), IMXP(KDLON)
3173C
3174      REAL(KIND=8) ZCLEAR(KDLON),ZCLOUD(KDLON),
3175     $     ZDNF(KDLON,KFLEV+1,KFLEV+1)
3176     S  , ZFD(KDLON), ZFN10(KDLON), ZFU(KDLON)
3177     S  , ZUPF(KDLON,KFLEV+1,KFLEV+1)
3178      REAL(KIND=8) ZCLM(KDLON,KFLEV+1,KFLEV+1)
3179C
3180      INTEGER jk, jl, imaxc, imx1, imx2, jkj, jkp1, jkm1
3181      INTEGER jk1, jk2, jkc, jkcp1, jcloud
3182      INTEGER imxm1, imxp1
3183      REAL(KIND=8) zcfrac
3184C     ------------------------------------------------------------------
3185C
3186C*         1.     INITIALIZATION
3187C                 --------------
3188C
3189 100  CONTINUE
3190C
3191      IMAXC = 0
3192C
3193      DO 101 JL = 1, KDLON
3194      IMX(JL)=0
3195      IMXP(JL)=0
3196      ZCLOUD(JL) = 0.
3197 101  CONTINUE
3198C
3199C*         1.1    SEARCH THE LAYER INDEX OF THE HIGHEST CLOUD
3200C                 -------------------------------------------
3201C
3202 110  CONTINUE
3203C
3204      DO 112 JK = 1 , KFLEV
3205      DO 111 JL = 1, KDLON
3206      IMX1=IMX(JL)
3207      IMX2=JK
3208      IF (PCLDLU(JL,JK).GT.ZEPSC) THEN
3209         IMXP(JL)=IMX2
3210      ELSE
3211         IMXP(JL)=IMX1
3212      END IF
3213      IMAXC=MAX(IMXP(JL),IMAXC)
3214      IMX(JL)=IMXP(JL)
3215 111  CONTINUE
3216 112  CONTINUE
3217CGM*******
3218      IMAXC=KFLEV
3219CGM*******
3220C
3221      DO 114 JK = 1 , KFLEV+1
3222      DO 113 JL = 1, KDLON
3223      PFLUX(JL,1,JK) = PFLUC(JL,1,JK)
3224      PFLUX(JL,2,JK) = PFLUC(JL,2,JK)
3225 113  CONTINUE
3226 114  CONTINUE
3227C
3228C     ------------------------------------------------------------------
3229C
3230C*         2.      EFFECT OF CLOUDINESS ON LONGWAVE FLUXES
3231C                  ---------------------------------------
3232C
3233      IF (IMAXC.GT.0) THEN
3234C
3235         IMXP1 = IMAXC + 1
3236         IMXM1 = IMAXC - 1
3237C
3238C*         2.0     INITIALIZE TO CLEAR-SKY FLUXES
3239C                  ------------------------------
3240C
3241 200  CONTINUE
3242C
3243         DO 203 JK1=1,KFLEV+1
3244         DO 202 JK2=1,KFLEV+1
3245         DO 201 JL = 1, KDLON
3246         ZUPF(JL,JK2,JK1)=PFLUC(JL,1,JK1)
3247         ZDNF(JL,JK2,JK1)=PFLUC(JL,2,JK1)
3248 201     CONTINUE
3249 202     CONTINUE
3250 203     CONTINUE
3251C
3252C*         2.1     FLUXES FOR ONE OVERCAST UNITY EMISSIVITY CLOUD
3253C                  ----------------------------------------------
3254C
3255 210  CONTINUE
3256C
3257         DO 213 JKC = 1 , IMAXC
3258         JCLOUD=JKC
3259         JKCP1=JCLOUD+1
3260C
3261C*         2.1.1   ABOVE THE CLOUD
3262C                  ---------------
3263C
3264 2110 CONTINUE
3265C
3266         DO 2115 JK=JKCP1,KFLEV+1
3267         JKM1=JK-1
3268         DO 2111 JL = 1, KDLON
3269         ZFU(JL)=0.
3270 2111    CONTINUE
3271         IF (JK .GT. JKCP1) THEN
3272            DO 2113 JKJ=JKCP1,JKM1
3273            DO 2112 JL = 1, KDLON
3274            ZFU(JL) = ZFU(JL) + PCNTRB(JL,JK,JKJ)
3275 2112       CONTINUE
3276 2113       CONTINUE
3277         END IF
3278C
3279         DO 2114 JL = 1, KDLON
3280         ZUPF(JL,JKCP1,JK)=PBINT(JL,JK)-ZFU(JL)
3281 2114    CONTINUE
3282 2115    CONTINUE
3283C
3284C*         2.1.2   BELOW THE CLOUD
3285C                  ---------------
3286C
3287 2120 CONTINUE
3288C
3289         DO 2125 JK=1,JCLOUD
3290         JKP1=JK+1
3291         DO 2121 JL = 1, KDLON
3292         ZFD(JL)=0.
3293 2121    CONTINUE
3294C
3295         IF (JK .LT. JCLOUD) THEN
3296            DO 2123 JKJ=JKP1,JCLOUD
3297            DO 2122 JL = 1, KDLON
3298            ZFD(JL) = ZFD(JL) + PCNTRB(JL,JK,JKJ)
3299 2122       CONTINUE
3300 2123       CONTINUE
3301         END IF
3302         DO 2124 JL = 1, KDLON
3303         ZDNF(JL,JKCP1,JK)=-PBINT(JL,JK)-ZFD(JL)
3304 2124    CONTINUE
3305 2125    CONTINUE
3306C
3307 213     CONTINUE
3308C
3309C
3310C*         2.2     CLOUD COVER MATRIX
3311C                  ------------------
3312C
3313C*    ZCLM(JK1,JK2) IS THE OBSCURATION FACTOR BY CLOUD LAYERS BETWEEN
3314C     HALF-LEVELS JK1 AND JK2 AS SEEN FROM JK1
3315C
3316 220  CONTINUE
3317C
3318      DO 223 JK1 = 1 , KFLEV+1
3319      DO 222 JK2 = 1 , KFLEV+1
3320      DO 221 JL = 1, KDLON
3321      ZCLM(JL,JK1,JK2) = 0.
3322 221  CONTINUE
3323 222  CONTINUE
3324 223  CONTINUE
3325C
3326C
3327C
3328C*         2.4     CLOUD COVER BELOW THE LEVEL OF CALCULATION
3329C                  ------------------------------------------
3330C
3331 240  CONTINUE
3332C
3333      DO 244 JK1 = 2 , KFLEV+1
3334      DO 241 JL = 1, KDLON
3335      ZCLEAR(JL)=1.
3336      ZCLOUD(JL)=0.
3337 241  CONTINUE
3338      DO 243 JK = JK1 - 1 , 1 , -1
3339      DO 242 JL = 1, KDLON
3340      IF (NOVLP.EQ.1) THEN
3341c* maximum-random       
3342         ZCLEAR(JL)=ZCLEAR(JL)*(1.0-MAX(PCLDLU(JL,JK),ZCLOUD(JL)))
3343     *                        /(1.0-MIN(ZCLOUD(JL),1.-ZEPSEC))
3344         ZCLM(JL,JK1,JK) = 1.0 - ZCLEAR(JL)
3345         ZCLOUD(JL) = PCLDLU(JL,JK)
3346      ELSE IF (NOVLP.EQ.2) THEN
3347c* maximum     
3348         ZCLOUD(JL) = MAX(ZCLOUD(JL) , PCLDLU(JL,JK))
3349         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
3350      ELSE IF (NOVLP.EQ.3) THEN
3351c* random     
3352         ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - PCLDLU(JL,JK))
3353         ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
3354         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
3355      END IF
3356 242  CONTINUE
3357 243  CONTINUE
3358 244  CONTINUE
3359C
3360C
3361C*         2.5     CLOUD COVER ABOVE THE LEVEL OF CALCULATION
3362C                  ------------------------------------------
3363C
3364 250  CONTINUE
3365C
3366      DO 254 JK1 = 1 , KFLEV
3367      DO 251 JL = 1, KDLON
3368      ZCLEAR(JL)=1.
3369      ZCLOUD(JL)=0.
3370 251  CONTINUE
3371      DO 253 JK = JK1 , KFLEV
3372      DO 252 JL = 1, KDLON
3373      IF (NOVLP.EQ.1) THEN
3374c* maximum-random       
3375         ZCLEAR(JL)=ZCLEAR(JL)*(1.0-MAX(PCLDLD(JL,JK),ZCLOUD(JL)))
3376     *                        /(1.0-MIN(ZCLOUD(JL),1.-ZEPSEC))
3377         ZCLM(JL,JK1,JK) = 1.0 - ZCLEAR(JL)
3378         ZCLOUD(JL) = PCLDLD(JL,JK)
3379      ELSE IF (NOVLP.EQ.2) THEN
3380c* maximum     
3381         ZCLOUD(JL) = MAX(ZCLOUD(JL) , PCLDLD(JL,JK))
3382         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
3383      ELSE IF (NOVLP.EQ.3) THEN
3384c* random     
3385         ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - PCLDLD(JL,JK))
3386         ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
3387         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
3388      END IF
3389 252  CONTINUE
3390 253  CONTINUE
3391 254  CONTINUE
3392C
3393C
3394C
3395C*         3.      FLUXES FOR PARTIAL/MULTIPLE LAYERED CLOUDINESS
3396C                  ----------------------------------------------
3397C
3398 300  CONTINUE
3399C
3400C*         3.1     DOWNWARD FLUXES
3401C                  ---------------
3402C
3403 310  CONTINUE
3404C
3405      DO 311 JL = 1, KDLON
3406      PFLUX(JL,2,KFLEV+1) = 0.
3407 311  CONTINUE
3408C
3409      DO 317 JK1 = KFLEV , 1 , -1
3410C
3411C*                 CONTRIBUTION FROM CLEAR-SKY FRACTION
3412C
3413      DO 312 JL = 1, KDLON
3414      ZFD (JL) = (1. - ZCLM(JL,JK1,KFLEV)) * ZDNF(JL,1,JK1)
3415 312  CONTINUE
3416C
3417C*                 CONTRIBUTION FROM ADJACENT CLOUD
3418C
3419      DO 313 JL = 1, KDLON
3420      ZFD(JL) = ZFD(JL) + ZCLM(JL,JK1,JK1) * ZDNF(JL,JK1+1,JK1)
3421 313  CONTINUE
3422C
3423C*                 CONTRIBUTION FROM OTHER CLOUDY FRACTIONS
3424C
3425      DO 315 JK = KFLEV-1 , JK1 , -1
3426      DO 314 JL = 1, KDLON
3427      ZCFRAC = ZCLM(JL,JK1,JK+1) - ZCLM(JL,JK1,JK)
3428      ZFD(JL) =  ZFD(JL) + ZCFRAC * ZDNF(JL,JK+2,JK1)
3429 314  CONTINUE
3430 315  CONTINUE
3431C
3432      DO 316 JL = 1, KDLON
3433      PFLUX(JL,2,JK1) = ZFD (JL)
3434 316  CONTINUE
3435C
3436 317  CONTINUE
3437C
3438C
3439C
3440C
3441C*         3.2     UPWARD FLUX AT THE SURFACE
3442C                  --------------------------
3443C
3444 320  CONTINUE
3445C
3446      DO 321 JL = 1, KDLON
3447      PFLUX(JL,1,1) = PEMIS(JL)*PBSUIN(JL)-(1.-PEMIS(JL))*PFLUX(JL,2,1)
3448 321  CONTINUE
3449C
3450C
3451C
3452C*         3.3     UPWARD FLUXES
3453C                  -------------
3454C
3455 330  CONTINUE
3456C
3457      DO 337 JK1 = 2 , KFLEV+1
3458C
3459C*                 CONTRIBUTION FROM CLEAR-SKY FRACTION
3460C
3461      DO 332 JL = 1, KDLON
3462      ZFU (JL) = (1. - ZCLM(JL,JK1,1)) * ZUPF(JL,1,JK1)
3463 332  CONTINUE
3464C
3465C*                 CONTRIBUTION FROM ADJACENT CLOUD
3466C
3467      DO 333 JL = 1, KDLON
3468      ZFU(JL) =  ZFU(JL) + ZCLM(JL,JK1,JK1-1) * ZUPF(JL,JK1,JK1)
3469 333  CONTINUE
3470C
3471C*                 CONTRIBUTION FROM OTHER CLOUDY FRACTIONS
3472C
3473      DO 335 JK = 2 , JK1-1
3474      DO 334 JL = 1, KDLON
3475      ZCFRAC = ZCLM(JL,JK1,JK-1) - ZCLM(JL,JK1,JK)
3476      ZFU(JL) =  ZFU(JL) + ZCFRAC * ZUPF(JL,JK  ,JK1)
3477 334  CONTINUE
3478 335  CONTINUE
3479C
3480      DO 336 JL = 1, KDLON
3481      PFLUX(JL,1,JK1) = ZFU (JL)
3482 336  CONTINUE
3483C
3484 337  CONTINUE
3485C
3486C
3487      END IF
3488C
3489C
3490C*         2.3     END OF CLOUD EFFECT COMPUTATIONS
3491C
3492 230  CONTINUE
3493C
3494      IF (.NOT.LEVOIGT) THEN
3495        DO 231 JL = 1, KDLON
3496        ZFN10(JL) = PFLUX(JL,1,KLIM) + PFLUX(JL,2,KLIM)
3497 231    CONTINUE
3498        DO 233 JK = KLIM+1 , KFLEV+1
3499        DO 232 JL = 1, KDLON
3500        ZFN10(JL) = ZFN10(JL) + PCTS(JL,JK-1)
3501        PFLUX(JL,1,JK) = ZFN10(JL)
3502        PFLUX(JL,2,JK) = 0.0
3503 232    CONTINUE
3504 233    CONTINUE
3505      ENDIF
3506C
3507      RETURN
3508      END
3509      SUBROUTINE LWB_LMDAR4(PDT0,PTAVE,PTL
3510     S  , PB,PBINT,PBSUIN,PBSUR,PBTOP,PDBSL
3511     S  , PGA,PGB,PGASUR,PGBSUR,PGATOP,PGBTOP)
3512      USE dimphy
3513      IMPLICIT none
3514cym#include "dimensions.h"
3515cym#include "dimphy.h"
3516cym#include "raddim.h"
3517#include "raddimlw.h"
3518C
3519C-----------------------------------------------------------------------
3520C     PURPOSE.
3521C     --------
3522C           COMPUTES PLANCK FUNCTIONS
3523C
3524C        EXPLICIT ARGUMENTS :
3525C        --------------------
3526C     ==== INPUTS ===
3527C PDT0   : (KDLON)             ; SURFACE TEMPERATURE DISCONTINUITY
3528C PTAVE  : (KDLON,KFLEV)       ; TEMPERATURE
3529C PTL    : (KDLON,0:KFLEV)     ; HALF LEVEL TEMPERATURE
3530C     ==== OUTPUTS ===
3531C PB     : (KDLON,Ninter,KFLEV+1); SPECTRAL HALF LEVEL PLANCK FUNCTION
3532C PBINT  : (KDLON,KFLEV+1)     ; HALF LEVEL PLANCK FUNCTION
3533C PBSUIN : (KDLON)             ; SURFACE PLANCK FUNCTION
3534C PBSUR  : (KDLON,Ninter)        ; SURFACE SPECTRAL PLANCK FUNCTION
3535C PBTOP  : (KDLON,Ninter)        ; TOP SPECTRAL PLANCK FUNCTION
3536C PDBSL  : (KDLON,Ninter,KFLEV*2); SUB-LAYER PLANCK FUNCTION GRADIENT
3537C PGA    : (KDLON,8,2,KFLEV); dB/dT-weighted LAYER PADE APPROXIMANTS
3538C PGB    : (KDLON,8,2,KFLEV); dB/dT-weighted LAYER PADE APPROXIMANTS
3539C PGASUR, PGBSUR (KDLON,8,2)   ; SURFACE PADE APPROXIMANTS
3540C PGATOP, PGBTOP (KDLON,8,2)   ; T.O.A. PADE APPROXIMANTS
3541C
3542C        IMPLICIT ARGUMENTS :   NONE
3543C        --------------------
3544C
3545C     METHOD.
3546C     -------
3547C
3548C          1. COMPUTES THE PLANCK FUNCTION ON ALL LEVELS AND HALF LEVELS
3549C     FROM A POLYNOMIAL DEVELOPMENT OF PLANCK FUNCTION
3550C
3551C     REFERENCE.
3552C     ----------
3553C
3554C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
3555C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS           "
3556C
3557C     AUTHOR.
3558C     -------
3559C        JEAN-JACQUES MORCRETTE  *ECMWF*
3560C
3561C     MODIFICATIONS.
3562C     --------------
3563C        ORIGINAL : 89-07-14
3564C
3565C-----------------------------------------------------------------------
3566C
3567C ARGUMENTS:
3568C
3569      REAL(KIND=8) PDT0(KDLON)
3570      REAL(KIND=8) PTAVE(KDLON,KFLEV)
3571      REAL(KIND=8) PTL(KDLON,KFLEV+1)
3572C
3573      REAL(KIND=8) PB(KDLON,Ninter,KFLEV+1) ! SPECTRAL HALF LEVEL PLANCK FUNCTION
3574      REAL(KIND=8) PBINT(KDLON,KFLEV+1) ! HALF LEVEL PLANCK FUNCTION
3575      REAL(KIND=8) PBSUIN(KDLON) ! SURFACE PLANCK FUNCTION
3576      REAL(KIND=8) PBSUR(KDLON,Ninter) ! SURFACE SPECTRAL PLANCK FUNCTION
3577      REAL(KIND=8) PBTOP(KDLON,Ninter) ! TOP SPECTRAL PLANCK FUNCTION
3578      REAL(KIND=8) PDBSL(KDLON,Ninter,KFLEV*2) ! SUB-LAYER PLANCK FUNCTION GRADIENT
3579      REAL(KIND=8) PGA(KDLON,8,2,KFLEV) ! dB/dT-weighted LAYER PADE APPROXIMANTS
3580      REAL(KIND=8) PGB(KDLON,8,2,KFLEV) ! dB/dT-weighted LAYER PADE APPROXIMANTS
3581      REAL(KIND=8) PGASUR(KDLON,8,2) ! SURFACE PADE APPROXIMANTS
3582      REAL(KIND=8) PGBSUR(KDLON,8,2) ! SURFACE PADE APPROXIMANTS
3583      REAL(KIND=8) PGATOP(KDLON,8,2) ! T.O.A. PADE APPROXIMANTS
3584      REAL(KIND=8) PGBTOP(KDLON,8,2) ! T.O.A. PADE APPROXIMANTS
3585C
3586C-------------------------------------------------------------------------
3587C*  LOCAL VARIABLES:
3588      INTEGER INDB(KDLON),INDS(KDLON)
3589      REAL(KIND=8) ZBLAY(KDLON,KFLEV),ZBLEV(KDLON,KFLEV+1)
3590      REAL(KIND=8) ZRES(KDLON),ZRES2(KDLON),ZTI(KDLON),ZTI2(KDLON)
3591c
3592      INTEGER jk, jl, ic, jnu, jf, jg
3593      INTEGER jk1, jk2
3594      INTEGER k, j, ixtox, indto, ixtx, indt
3595      INTEGER indsu, indtp
3596      REAL(KIND=8) zdsto1, zdstox, zdst1, zdstx
3597c
3598C* Quelques parametres:
3599      REAL(KIND=8) TSTAND
3600      PARAMETER (TSTAND=250.0)
3601      REAL(KIND=8) TSTP
3602      PARAMETER (TSTP=12.5)
3603      INTEGER MXIXT
3604      PARAMETER (MXIXT=10)
3605C
3606C* Used Data Block:
3607      REAL(KIND=8) TINTP(11)
3608      SAVE TINTP
3609c$OMP THREADPRIVATE(TINTP)
3610      REAL(KIND=8) GA(11,16,3), GB(11,16,3)
3611      SAVE GA, GB
3612c$OMP THREADPRIVATE(GA, GB)
3613      REAL(KIND=8) XP(6,6)
3614      SAVE XP
3615c$OMP THREADPRIVATE(XP)
3616c
3617      DATA TINTP / 187.5, 200., 212.5, 225., 237.5, 250.,
3618     S             262.5, 275., 287.5, 300., 312.5 /
3619C-----------------------------------------------------------------------
3620C-- WATER VAPOR -- INT.1 -- 0- 500 CM-1 -- FROM ABS225 ----------------
3621C
3622C
3623C
3624C
3625C-- R.D. -- G = - 0.2 SLA
3626C
3627C
3628C----- INTERVAL = 1 ----- T =  187.5
3629C
3630C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3631      DATA (GA( 1, 1,IC),IC=1,3) /
3632     S 0.63499072E-02,-0.99506586E-03, 0.00000000E+00/
3633      DATA (GB( 1, 1,IC),IC=1,3) /
3634     S 0.63499072E-02, 0.97222852E-01, 0.10000000E+01/
3635      DATA (GA( 1, 2,IC),IC=1,3) /
3636     S 0.77266491E-02,-0.11661515E-02, 0.00000000E+00/
3637      DATA (GB( 1, 2,IC),IC=1,3) /
3638     S 0.77266491E-02, 0.10681591E+00, 0.10000000E+01/
3639C
3640C----- INTERVAL = 1 ----- T =  200.0
3641C
3642C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3643      DATA (GA( 2, 1,IC),IC=1,3) /
3644     S 0.65566348E-02,-0.10184169E-02, 0.00000000E+00/
3645      DATA (GB( 2, 1,IC),IC=1,3) /
3646     S 0.65566348E-02, 0.98862238E-01, 0.10000000E+01/
3647      DATA (GA( 2, 2,IC),IC=1,3) /
3648     S 0.81323287E-02,-0.11886130E-02, 0.00000000E+00/
3649      DATA (GB( 2, 2,IC),IC=1,3) /
3650     S 0.81323287E-02, 0.10921298E+00, 0.10000000E+01/
3651C
3652C----- INTERVAL = 1 ----- T =  212.5
3653C
3654C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3655      DATA (GA( 3, 1,IC),IC=1,3) /
3656     S 0.67849730E-02,-0.10404730E-02, 0.00000000E+00/
3657      DATA (GB( 3, 1,IC),IC=1,3) /
3658     S 0.67849730E-02, 0.10061504E+00, 0.10000000E+01/
3659      DATA (GA( 3, 2,IC),IC=1,3) /
3660     S 0.86507620E-02,-0.12139929E-02, 0.00000000E+00/
3661      DATA (GB( 3, 2,IC),IC=1,3) /
3662     S 0.86507620E-02, 0.11198225E+00, 0.10000000E+01/
3663C
3664C----- INTERVAL = 1 ----- T =  225.0
3665C
3666C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3667      DATA (GA( 4, 1,IC),IC=1,3) /
3668     S 0.70481947E-02,-0.10621792E-02, 0.00000000E+00/
3669      DATA (GB( 4, 1,IC),IC=1,3) /
3670     S 0.70481947E-02, 0.10256222E+00, 0.10000000E+01/
3671      DATA (GA( 4, 2,IC),IC=1,3) /
3672     S 0.92776391E-02,-0.12445811E-02, 0.00000000E+00/
3673      DATA (GB( 4, 2,IC),IC=1,3) /
3674     S 0.92776391E-02, 0.11487826E+00, 0.10000000E+01/
3675C
3676C----- INTERVAL = 1 ----- T =  237.5
3677C
3678C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3679      DATA (GA( 5, 1,IC),IC=1,3) /
3680     S 0.73585943E-02,-0.10847662E-02, 0.00000000E+00/
3681      DATA (GB( 5, 1,IC),IC=1,3) /
3682     S 0.73585943E-02, 0.10475952E+00, 0.10000000E+01/
3683      DATA (GA( 5, 2,IC),IC=1,3) /
3684     S 0.99806312E-02,-0.12807672E-02, 0.00000000E+00/
3685      DATA (GB( 5, 2,IC),IC=1,3) /
3686     S 0.99806312E-02, 0.11751113E+00, 0.10000000E+01/
3687C
3688C----- INTERVAL = 1 ----- T =  250.0
3689C
3690C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3691      DATA (GA( 6, 1,IC),IC=1,3) /
3692     S 0.77242818E-02,-0.11094726E-02, 0.00000000E+00/
3693      DATA (GB( 6, 1,IC),IC=1,3) /
3694     S 0.77242818E-02, 0.10720986E+00, 0.10000000E+01/
3695      DATA (GA( 6, 2,IC),IC=1,3) /
3696     S 0.10709803E-01,-0.13208251E-02, 0.00000000E+00/
3697      DATA (GB( 6, 2,IC),IC=1,3) /
3698     S 0.10709803E-01, 0.11951535E+00, 0.10000000E+01/
3699C
3700C----- INTERVAL = 1 ----- T =  262.5
3701C
3702C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3703      DATA (GA( 7, 1,IC),IC=1,3) /
3704     S 0.81472693E-02,-0.11372949E-02, 0.00000000E+00/
3705      DATA (GB( 7, 1,IC),IC=1,3) /
3706     S 0.81472693E-02, 0.10985370E+00, 0.10000000E+01/
3707      DATA (GA( 7, 2,IC),IC=1,3) /
3708     S 0.11414739E-01,-0.13619034E-02, 0.00000000E+00/
3709      DATA (GB( 7, 2,IC),IC=1,3) /
3710     S 0.11414739E-01, 0.12069945E+00, 0.10000000E+01/
3711C
3712C----- INTERVAL = 1 ----- T =  275.0
3713C
3714C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3715      DATA (GA( 8, 1,IC),IC=1,3) /
3716     S 0.86227527E-02,-0.11687683E-02, 0.00000000E+00/
3717      DATA (GB( 8, 1,IC),IC=1,3) /
3718     S 0.86227527E-02, 0.11257633E+00, 0.10000000E+01/
3719      DATA (GA( 8, 2,IC),IC=1,3) /
3720     S 0.12058772E-01,-0.14014165E-02, 0.00000000E+00/
3721      DATA (GB( 8, 2,IC),IC=1,3) /
3722     S 0.12058772E-01, 0.12108524E+00, 0.10000000E+01/
3723C
3724C----- INTERVAL = 1 ----- T =  287.5
3725C
3726C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3727      DATA (GA( 9, 1,IC),IC=1,3) /
3728     S 0.91396814E-02,-0.12038314E-02, 0.00000000E+00/
3729      DATA (GB( 9, 1,IC),IC=1,3) /
3730     S 0.91396814E-02, 0.11522980E+00, 0.10000000E+01/
3731      DATA (GA( 9, 2,IC),IC=1,3) /
3732     S 0.12623992E-01,-0.14378639E-02, 0.00000000E+00/
3733      DATA (GB( 9, 2,IC),IC=1,3) /
3734     S 0.12623992E-01, 0.12084229E+00, 0.10000000E+01/
3735C
3736C----- INTERVAL = 1 ----- T =  300.0
3737C
3738C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3739      DATA (GA(10, 1,IC),IC=1,3) /
3740     S 0.96825438E-02,-0.12418367E-02, 0.00000000E+00/
3741      DATA (GB(10, 1,IC),IC=1,3) /
3742     S 0.96825438E-02, 0.11766343E+00, 0.10000000E+01/
3743      DATA (GA(10, 2,IC),IC=1,3) /
3744     S 0.13108146E-01,-0.14708488E-02, 0.00000000E+00/
3745      DATA (GB(10, 2,IC),IC=1,3) /
3746     S 0.13108146E-01, 0.12019005E+00, 0.10000000E+01/
3747C
3748C----- INTERVAL = 1 ----- T =  312.5
3749C
3750C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
3751      DATA (GA(11, 1,IC),IC=1,3) /
3752     S 0.10233955E-01,-0.12817135E-02, 0.00000000E+00/
3753      DATA (GB(11, 1,IC),IC=1,3) /
3754     S 0.10233955E-01, 0.11975320E+00, 0.10000000E+01/
3755      DATA (GA(11, 2,IC),IC=1,3) /
3756     S 0.13518390E-01,-0.15006791E-02, 0.00000000E+00/
3757      DATA (GB(11, 2,IC),IC=1,3) /
3758     S 0.13518390E-01, 0.11932684E+00, 0.10000000E+01/
3759C
3760C
3761C
3762C--- WATER VAPOR --- INTERVAL 2 -- 500-800 CM-1--- FROM ABS225 ---------
3763C
3764C
3765C
3766C
3767C--- R.D.  ---  G = 0.02 + 0.50 / ( 1 + 4.5 U )
3768C
3769C
3770C----- INTERVAL = 2 ----- T =  187.5
3771C
3772C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3773      DATA (GA( 1, 3,IC),IC=1,3) /
3774     S 0.11644593E+01, 0.41243390E+00, 0.00000000E+00/
3775      DATA (GB( 1, 3,IC),IC=1,3) /
3776     S 0.11644593E+01, 0.10346097E+01, 0.10000000E+01/
3777      DATA (GA( 1, 4,IC),IC=1,3) /
3778     S 0.12006968E+01, 0.48318936E+00, 0.00000000E+00/
3779      DATA (GB( 1, 4,IC),IC=1,3) /
3780     S 0.12006968E+01, 0.10626130E+01, 0.10000000E+01/
3781C
3782C----- INTERVAL = 2 ----- T =  200.0
3783C
3784C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3785      DATA (GA( 2, 3,IC),IC=1,3) /
3786     S 0.11747203E+01, 0.43407282E+00, 0.00000000E+00/
3787      DATA (GB( 2, 3,IC),IC=1,3) /
3788     S 0.11747203E+01, 0.10433655E+01, 0.10000000E+01/
3789      DATA (GA( 2, 4,IC),IC=1,3) /
3790     S 0.12108196E+01, 0.50501827E+00, 0.00000000E+00/
3791      DATA (GB( 2, 4,IC),IC=1,3) /
3792     S 0.12108196E+01, 0.10716026E+01, 0.10000000E+01/
3793C
3794C----- INTERVAL = 2 ----- T =  212.5
3795C
3796C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3797      DATA (GA( 3, 3,IC),IC=1,3) /
3798     S 0.11837872E+01, 0.45331413E+00, 0.00000000E+00/
3799      DATA (GB( 3, 3,IC),IC=1,3) /
3800     S 0.11837872E+01, 0.10511933E+01, 0.10000000E+01/
3801      DATA (GA( 3, 4,IC),IC=1,3) /
3802     S 0.12196717E+01, 0.52409502E+00, 0.00000000E+00/
3803      DATA (GB( 3, 4,IC),IC=1,3) /
3804     S 0.12196717E+01, 0.10795108E+01, 0.10000000E+01/
3805C
3806C----- INTERVAL = 2 ----- T =  225.0
3807C
3808C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3809      DATA (GA( 4, 3,IC),IC=1,3) /
3810     S 0.11918561E+01, 0.47048604E+00, 0.00000000E+00/
3811      DATA (GB( 4, 3,IC),IC=1,3) /
3812     S 0.11918561E+01, 0.10582150E+01, 0.10000000E+01/
3813      DATA (GA( 4, 4,IC),IC=1,3) /
3814     S 0.12274493E+01, 0.54085277E+00, 0.00000000E+00/
3815      DATA (GB( 4, 4,IC),IC=1,3) /
3816     S 0.12274493E+01, 0.10865006E+01, 0.10000000E+01/
3817C
3818C----- INTERVAL = 2 ----- T =  237.5
3819C
3820C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3821      DATA (GA( 5, 3,IC),IC=1,3) /
3822     S 0.11990757E+01, 0.48586286E+00, 0.00000000E+00/
3823      DATA (GB( 5, 3,IC),IC=1,3) /
3824     S 0.11990757E+01, 0.10645317E+01, 0.10000000E+01/
3825      DATA (GA( 5, 4,IC),IC=1,3) /
3826     S 0.12343189E+01, 0.55565422E+00, 0.00000000E+00/
3827      DATA (GB( 5, 4,IC),IC=1,3) /
3828     S 0.12343189E+01, 0.10927103E+01, 0.10000000E+01/
3829C
3830C----- INTERVAL = 2 ----- T =  250.0
3831C
3832C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3833      DATA (GA( 6, 3,IC),IC=1,3) /
3834     S 0.12055643E+01, 0.49968044E+00, 0.00000000E+00/
3835      DATA (GB( 6, 3,IC),IC=1,3) /
3836     S 0.12055643E+01, 0.10702313E+01, 0.10000000E+01/
3837      DATA (GA( 6, 4,IC),IC=1,3) /
3838     S 0.12404147E+01, 0.56878618E+00, 0.00000000E+00/
3839      DATA (GB( 6, 4,IC),IC=1,3) /
3840     S 0.12404147E+01, 0.10982489E+01, 0.10000000E+01/
3841C
3842C----- INTERVAL = 2 ----- T =  262.5
3843C
3844C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3845      DATA (GA( 7, 3,IC),IC=1,3) /
3846     S 0.12114186E+01, 0.51214132E+00, 0.00000000E+00/
3847      DATA (GB( 7, 3,IC),IC=1,3) /
3848     S 0.12114186E+01, 0.10753907E+01, 0.10000000E+01/
3849      DATA (GA( 7, 4,IC),IC=1,3) /
3850     S 0.12458431E+01, 0.58047395E+00, 0.00000000E+00/
3851      DATA (GB( 7, 4,IC),IC=1,3) /
3852     S 0.12458431E+01, 0.11032019E+01, 0.10000000E+01/
3853C
3854C----- INTERVAL = 2 ----- T =  275.0
3855C
3856C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3857      DATA (GA( 8, 3,IC),IC=1,3) /
3858     S 0.12167192E+01, 0.52341830E+00, 0.00000000E+00/
3859      DATA (GB( 8, 3,IC),IC=1,3) /
3860     S 0.12167192E+01, 0.10800762E+01, 0.10000000E+01/
3861      DATA (GA( 8, 4,IC),IC=1,3) /
3862     S 0.12506907E+01, 0.59089894E+00, 0.00000000E+00/
3863      DATA (GB( 8, 4,IC),IC=1,3) /
3864     S 0.12506907E+01, 0.11076379E+01, 0.10000000E+01/
3865C
3866C----- INTERVAL = 2 ----- T =  287.5
3867C
3868C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3869      DATA (GA( 9, 3,IC),IC=1,3) /
3870     S 0.12215344E+01, 0.53365803E+00, 0.00000000E+00/
3871      DATA (GB( 9, 3,IC),IC=1,3) /
3872     S 0.12215344E+01, 0.10843446E+01, 0.10000000E+01/
3873      DATA (GA( 9, 4,IC),IC=1,3) /
3874     S 0.12550299E+01, 0.60021475E+00, 0.00000000E+00/
3875      DATA (GB( 9, 4,IC),IC=1,3) /
3876     S 0.12550299E+01, 0.11116160E+01, 0.10000000E+01/
3877C
3878C----- INTERVAL = 2 ----- T =  300.0
3879C
3880C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3881      DATA (GA(10, 3,IC),IC=1,3) /
3882     S 0.12259226E+01, 0.54298448E+00, 0.00000000E+00/
3883      DATA (GB(10, 3,IC),IC=1,3) /
3884     S 0.12259226E+01, 0.10882439E+01, 0.10000000E+01/
3885      DATA (GA(10, 4,IC),IC=1,3) /
3886     S 0.12589256E+01, 0.60856112E+00, 0.00000000E+00/
3887      DATA (GB(10, 4,IC),IC=1,3) /
3888     S 0.12589256E+01, 0.11151910E+01, 0.10000000E+01/
3889C
3890C----- INTERVAL = 2 ----- T =  312.5
3891C
3892C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3893      DATA (GA(11, 3,IC),IC=1,3) /
3894     S 0.12299344E+01, 0.55150227E+00, 0.00000000E+00/
3895      DATA (GB(11, 3,IC),IC=1,3) /
3896     S 0.12299344E+01, 0.10918144E+01, 0.10000000E+01/
3897      DATA (GA(11, 4,IC),IC=1,3) /
3898     S 0.12624402E+01, 0.61607594E+00, 0.00000000E+00/
3899      DATA (GB(11, 4,IC),IC=1,3) /
3900     S 0.12624402E+01, 0.11184188E+01, 0.10000000E+01/
3901C
3902C
3903C
3904C
3905C
3906C
3907C- WATER VAPOR - INT. 3 -- 800-970 + 1110-1250 CM-1 -- FIT FROM 215 IS -
3908C
3909C
3910C-- WATER VAPOR LINES IN THE WINDOW REGION (800-1250 CM-1)
3911C
3912C
3913C
3914C--- G = 3.875E-03 ---------------
3915C
3916C----- INTERVAL = 3 ----- T =  187.5
3917C
3918C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3919      DATA (GA( 1, 7,IC),IC=1,3) /
3920     S 0.10192131E+02, 0.80737799E+01, 0.00000000E+00/
3921      DATA (GB( 1, 7,IC),IC=1,3) /
3922     S 0.10192131E+02, 0.82623280E+01, 0.10000000E+01/
3923      DATA (GA( 1, 8,IC),IC=1,3) /
3924     S 0.92439050E+01, 0.77425778E+01, 0.00000000E+00/
3925      DATA (GB( 1, 8,IC),IC=1,3) /
3926     S 0.92439050E+01, 0.79342219E+01, 0.10000000E+01/
3927C
3928C----- INTERVAL = 3 ----- T =  200.0
3929C
3930C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3931      DATA (GA( 2, 7,IC),IC=1,3) /
3932     S 0.97258602E+01, 0.79171158E+01, 0.00000000E+00/
3933      DATA (GB( 2, 7,IC),IC=1,3) /
3934     S 0.97258602E+01, 0.81072291E+01, 0.10000000E+01/
3935      DATA (GA( 2, 8,IC),IC=1,3) /
3936     S 0.87567422E+01, 0.75443460E+01, 0.00000000E+00/
3937      DATA (GB( 2, 8,IC),IC=1,3) /
3938     S 0.87567422E+01, 0.77373458E+01, 0.10000000E+01/
3939C
3940C----- INTERVAL = 3 ----- T =  212.5
3941C
3942C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3943      DATA (GA( 3, 7,IC),IC=1,3) /
3944     S 0.92992890E+01, 0.77609605E+01, 0.00000000E+00/
3945      DATA (GB( 3, 7,IC),IC=1,3) /
3946     S 0.92992890E+01, 0.79523834E+01, 0.10000000E+01/
3947      DATA (GA( 3, 8,IC),IC=1,3) /
3948     S 0.83270144E+01, 0.73526151E+01, 0.00000000E+00/
3949      DATA (GB( 3, 8,IC),IC=1,3) /
3950     S 0.83270144E+01, 0.75467334E+01, 0.10000000E+01/
3951C
3952C----- INTERVAL = 3 ----- T =  225.0
3953C
3954C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3955      DATA (GA( 4, 7,IC),IC=1,3) /
3956     S 0.89154021E+01, 0.76087371E+01, 0.00000000E+00/
3957      DATA (GB( 4, 7,IC),IC=1,3) /
3958     S 0.89154021E+01, 0.78012527E+01, 0.10000000E+01/
3959      DATA (GA( 4, 8,IC),IC=1,3) /
3960     S 0.79528337E+01, 0.71711188E+01, 0.00000000E+00/
3961      DATA (GB( 4, 8,IC),IC=1,3) /
3962     S 0.79528337E+01, 0.73661786E+01, 0.10000000E+01/
3963C
3964C----- INTERVAL = 3 ----- T =  237.5
3965C
3966C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3967      DATA (GA( 5, 7,IC),IC=1,3) /
3968     S 0.85730084E+01, 0.74627112E+01, 0.00000000E+00/
3969      DATA (GB( 5, 7,IC),IC=1,3) /
3970     S 0.85730084E+01, 0.76561458E+01, 0.10000000E+01/
3971      DATA (GA( 5, 8,IC),IC=1,3) /
3972     S 0.76286839E+01, 0.70015571E+01, 0.00000000E+00/
3973      DATA (GB( 5, 8,IC),IC=1,3) /
3974     S 0.76286839E+01, 0.71974319E+01, 0.10000000E+01/
3975C
3976C----- INTERVAL = 3 ----- T =  250.0
3977C
3978C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3979      DATA (GA( 6, 7,IC),IC=1,3) /
3980     S 0.82685838E+01, 0.73239981E+01, 0.00000000E+00/
3981      DATA (GB( 6, 7,IC),IC=1,3) /
3982     S 0.82685838E+01, 0.75182174E+01, 0.10000000E+01/
3983      DATA (GA( 6, 8,IC),IC=1,3) /
3984     S 0.73477879E+01, 0.68442532E+01, 0.00000000E+00/
3985      DATA (GB( 6, 8,IC),IC=1,3) /
3986     S 0.73477879E+01, 0.70408543E+01, 0.10000000E+01/
3987C
3988C----- INTERVAL = 3 ----- T =  262.5
3989C
3990C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
3991      DATA (GA( 7, 7,IC),IC=1,3) /
3992     S 0.79978921E+01, 0.71929934E+01, 0.00000000E+00/
3993      DATA (GB( 7, 7,IC),IC=1,3) /
3994     S 0.79978921E+01, 0.73878952E+01, 0.10000000E+01/
3995      DATA (GA( 7, 8,IC),IC=1,3) /
3996     S 0.71035818E+01, 0.66987996E+01, 0.00000000E+00/
3997      DATA (GB( 7, 8,IC),IC=1,3) /
3998     S 0.71035818E+01, 0.68960649E+01, 0.10000000E+01/
3999C
4000C----- INTERVAL = 3 ----- T =  275.0
4001C
4002C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4003      DATA (GA( 8, 7,IC),IC=1,3) /
4004     S 0.77568055E+01, 0.70697065E+01, 0.00000000E+00/
4005      DATA (GB( 8, 7,IC),IC=1,3) /
4006     S 0.77568055E+01, 0.72652133E+01, 0.10000000E+01/
4007      DATA (GA( 8, 8,IC),IC=1,3) /
4008     S 0.68903312E+01, 0.65644820E+01, 0.00000000E+00/
4009      DATA (GB( 8, 8,IC),IC=1,3) /
4010     S 0.68903312E+01, 0.67623672E+01, 0.10000000E+01/
4011C
4012C----- INTERVAL = 3 ----- T =  287.5
4013C
4014C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4015      DATA (GA( 9, 7,IC),IC=1,3) /
4016     S 0.75416266E+01, 0.69539626E+01, 0.00000000E+00/
4017      DATA (GB( 9, 7,IC),IC=1,3) /
4018     S 0.75416266E+01, 0.71500151E+01, 0.10000000E+01/
4019      DATA (GA( 9, 8,IC),IC=1,3) /
4020     S 0.67032875E+01, 0.64405267E+01, 0.00000000E+00/
4021      DATA (GB( 9, 8,IC),IC=1,3) /
4022     S 0.67032875E+01, 0.66389989E+01, 0.10000000E+01/
4023C
4024C----- INTERVAL = 3 ----- T =  300.0
4025C
4026C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4027      DATA (GA(10, 7,IC),IC=1,3) /
4028     S 0.73491694E+01, 0.68455144E+01, 0.00000000E+00/
4029      DATA (GB(10, 7,IC),IC=1,3) /
4030     S 0.73491694E+01, 0.70420667E+01, 0.10000000E+01/
4031      DATA (GA(10, 8,IC),IC=1,3) /
4032     S 0.65386461E+01, 0.63262376E+01, 0.00000000E+00/
4033      DATA (GB(10, 8,IC),IC=1,3) /
4034     S 0.65386461E+01, 0.65252707E+01, 0.10000000E+01/
4035C
4036C----- INTERVAL = 3 ----- T =  312.5
4037C
4038C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4039      DATA (GA(11, 7,IC),IC=1,3) /
4040     S 0.71767400E+01, 0.67441020E+01, 0.00000000E+00/
4041      DATA (GB(11, 7,IC),IC=1,3) /
4042     S 0.71767400E+01, 0.69411177E+01, 0.10000000E+01/
4043      DATA (GA(11, 8,IC),IC=1,3) /
4044     S 0.63934377E+01, 0.62210701E+01, 0.00000000E+00/
4045      DATA (GB(11, 8,IC),IC=1,3) /
4046     S 0.63934377E+01, 0.64206412E+01, 0.10000000E+01/
4047C
4048C
4049C-- WATER VAPOR -- 970-1110 CM-1 ----------------------------------------
4050C
4051C-- G = 3.6E-03
4052C
4053C----- INTERVAL = 4 ----- T =  187.5
4054C
4055C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4056      DATA (GA( 1, 9,IC),IC=1,3) /
4057     S 0.24870635E+02, 0.10542131E+02, 0.00000000E+00/
4058      DATA (GB( 1, 9,IC),IC=1,3) /
4059     S 0.24870635E+02, 0.10656640E+02, 0.10000000E+01/
4060      DATA (GA( 1,10,IC),IC=1,3) /
4061     S 0.24586283E+02, 0.10490353E+02, 0.00000000E+00/
4062      DATA (GB( 1,10,IC),IC=1,3) /
4063     S 0.24586283E+02, 0.10605856E+02, 0.10000000E+01/
4064C
4065C----- INTERVAL = 4 ----- T =  200.0
4066C
4067C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4068      DATA (GA( 2, 9,IC),IC=1,3) /
4069     S 0.24725591E+02, 0.10515895E+02, 0.00000000E+00/
4070      DATA (GB( 2, 9,IC),IC=1,3) /
4071     S 0.24725591E+02, 0.10630910E+02, 0.10000000E+01/
4072      DATA (GA( 2,10,IC),IC=1,3) /
4073     S 0.24441465E+02, 0.10463512E+02, 0.00000000E+00/
4074      DATA (GB( 2,10,IC),IC=1,3) /
4075     S 0.24441465E+02, 0.10579514E+02, 0.10000000E+01/
4076C
4077C----- INTERVAL = 4 ----- T =  212.5
4078C
4079C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4080      DATA (GA( 3, 9,IC),IC=1,3) /
4081     S 0.24600320E+02, 0.10492949E+02, 0.00000000E+00/
4082      DATA (GB( 3, 9,IC),IC=1,3) /
4083     S 0.24600320E+02, 0.10608399E+02, 0.10000000E+01/
4084      DATA (GA( 3,10,IC),IC=1,3) /
4085     S 0.24311657E+02, 0.10439183E+02, 0.00000000E+00/
4086      DATA (GB( 3,10,IC),IC=1,3) /
4087     S 0.24311657E+02, 0.10555632E+02, 0.10000000E+01/
4088C
4089C----- INTERVAL = 4 ----- T =  225.0
4090C
4091C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4092      DATA (GA( 4, 9,IC),IC=1,3) /
4093     S 0.24487300E+02, 0.10472049E+02, 0.00000000E+00/
4094      DATA (GB( 4, 9,IC),IC=1,3) /
4095     S 0.24487300E+02, 0.10587891E+02, 0.10000000E+01/
4096      DATA (GA( 4,10,IC),IC=1,3) /
4097     S 0.24196167E+02, 0.10417324E+02, 0.00000000E+00/
4098      DATA (GB( 4,10,IC),IC=1,3) /
4099     S 0.24196167E+02, 0.10534169E+02, 0.10000000E+01/
4100C
4101C----- INTERVAL = 4 ----- T =  237.5
4102C
4103C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4104      DATA (GA( 5, 9,IC),IC=1,3) /
4105     S 0.24384935E+02, 0.10452961E+02, 0.00000000E+00/
4106      DATA (GB( 5, 9,IC),IC=1,3) /
4107     S 0.24384935E+02, 0.10569156E+02, 0.10000000E+01/
4108      DATA (GA( 5,10,IC),IC=1,3) /
4109     S 0.24093406E+02, 0.10397704E+02, 0.00000000E+00/
4110      DATA (GB( 5,10,IC),IC=1,3) /
4111     S 0.24093406E+02, 0.10514900E+02, 0.10000000E+01/
4112C
4113C----- INTERVAL = 4 ----- T =  250.0
4114C
4115C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4116      DATA (GA( 6, 9,IC),IC=1,3) /
4117     S 0.24292341E+02, 0.10435562E+02, 0.00000000E+00/
4118      DATA (GB( 6, 9,IC),IC=1,3) /
4119     S 0.24292341E+02, 0.10552075E+02, 0.10000000E+01/
4120      DATA (GA( 6,10,IC),IC=1,3) /
4121     S 0.24001597E+02, 0.10380038E+02, 0.00000000E+00/
4122      DATA (GB( 6,10,IC),IC=1,3) /
4123     S 0.24001597E+02, 0.10497547E+02, 0.10000000E+01/
4124C
4125C----- INTERVAL = 4 ----- T =  262.5
4126C
4127C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4128      DATA (GA( 7, 9,IC),IC=1,3) /
4129     S 0.24208572E+02, 0.10419710E+02, 0.00000000E+00/
4130      DATA (GB( 7, 9,IC),IC=1,3) /
4131     S 0.24208572E+02, 0.10536510E+02, 0.10000000E+01/
4132      DATA (GA( 7,10,IC),IC=1,3) /
4133     S 0.23919098E+02, 0.10364052E+02, 0.00000000E+00/
4134      DATA (GB( 7,10,IC),IC=1,3) /
4135     S 0.23919098E+02, 0.10481842E+02, 0.10000000E+01/
4136C
4137C----- INTERVAL = 4 ----- T =  275.0
4138C
4139C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4140      DATA (GA( 8, 9,IC),IC=1,3) /
4141     S 0.24132642E+02, 0.10405247E+02, 0.00000000E+00/
4142      DATA (GB( 8, 9,IC),IC=1,3) /
4143     S 0.24132642E+02, 0.10522307E+02, 0.10000000E+01/
4144      DATA (GA( 8,10,IC),IC=1,3) /
4145     S 0.23844511E+02, 0.10349509E+02, 0.00000000E+00/
4146      DATA (GB( 8,10,IC),IC=1,3) /
4147     S 0.23844511E+02, 0.10467553E+02, 0.10000000E+01/
4148C
4149C----- INTERVAL = 4 ----- T =  287.5
4150C
4151C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4152      DATA (GA( 9, 9,IC),IC=1,3) /
4153     S 0.24063614E+02, 0.10392022E+02, 0.00000000E+00/
4154      DATA (GB( 9, 9,IC),IC=1,3) /
4155     S 0.24063614E+02, 0.10509317E+02, 0.10000000E+01/
4156      DATA (GA( 9,10,IC),IC=1,3) /
4157     S 0.23776708E+02, 0.10336215E+02, 0.00000000E+00/
4158      DATA (GB( 9,10,IC),IC=1,3) /
4159     S 0.23776708E+02, 0.10454488E+02, 0.10000000E+01/
4160C
4161C----- INTERVAL = 4 ----- T =  300.0
4162C
4163C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4164      DATA (GA(10, 9,IC),IC=1,3) /
4165     S 0.24000649E+02, 0.10379892E+02, 0.00000000E+00/
4166      DATA (GB(10, 9,IC),IC=1,3) /
4167     S 0.24000649E+02, 0.10497402E+02, 0.10000000E+01/
4168      DATA (GA(10,10,IC),IC=1,3) /
4169     S 0.23714816E+02, 0.10324018E+02, 0.00000000E+00/
4170      DATA (GB(10,10,IC),IC=1,3) /
4171     S 0.23714816E+02, 0.10442501E+02, 0.10000000E+01/
4172C
4173C----- INTERVAL = 4 ----- T =  312.5
4174C
4175C-- INDICES FOR PADE APPROXIMATION     1   28   37   45
4176      DATA (GA(11, 9,IC),IC=1,3) /
4177     S 0.23943021E+02, 0.10368736E+02, 0.00000000E+00/
4178      DATA (GB(11, 9,IC),IC=1,3) /
4179     S 0.23943021E+02, 0.10486443E+02, 0.10000000E+01/
4180      DATA (GA(11,10,IC),IC=1,3) /
4181     S 0.23658197E+02, 0.10312808E+02, 0.00000000E+00/
4182      DATA (GB(11,10,IC),IC=1,3) /
4183     S 0.23658197E+02, 0.10431483E+02, 0.10000000E+01/
4184C
4185C
4186C
4187C-- H2O -- WEAKER PARTS OF THE STRONG BANDS  -- FROM ABS225 ----
4188C
4189C-- WATER VAPOR --- 350 - 500 CM-1
4190C
4191C-- G = - 0.2*SLA, 0.0 +0.5/(1+0.5U)
4192C
4193C----- INTERVAL = 5 ----- T =  187.5
4194C
4195C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4196      DATA (GA( 1, 5,IC),IC=1,3) /
4197     S 0.15750172E+00,-0.22159303E-01, 0.00000000E+00/
4198      DATA (GB( 1, 5,IC),IC=1,3) /
4199     S 0.15750172E+00, 0.38103212E+00, 0.10000000E+01/
4200      DATA (GA( 1, 6,IC),IC=1,3) /
4201     S 0.17770551E+00,-0.24972399E-01, 0.00000000E+00/
4202      DATA (GB( 1, 6,IC),IC=1,3) /
4203     S 0.17770551E+00, 0.41646579E+00, 0.10000000E+01/
4204C
4205C----- INTERVAL = 5 ----- T =  200.0
4206C
4207C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4208      DATA (GA( 2, 5,IC),IC=1,3) /
4209     S 0.16174076E+00,-0.22748917E-01, 0.00000000E+00/
4210      DATA (GB( 2, 5,IC),IC=1,3) /
4211     S 0.16174076E+00, 0.38913800E+00, 0.10000000E+01/
4212      DATA (GA( 2, 6,IC),IC=1,3) /
4213     S 0.18176757E+00,-0.25537247E-01, 0.00000000E+00/
4214      DATA (GB( 2, 6,IC),IC=1,3) /
4215     S 0.18176757E+00, 0.42345095E+00, 0.10000000E+01/
4216C
4217C----- INTERVAL = 5 ----- T =  212.5
4218C
4219C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4220      DATA (GA( 3, 5,IC),IC=1,3) /
4221     S 0.16548628E+00,-0.23269898E-01, 0.00000000E+00/
4222      DATA (GB( 3, 5,IC),IC=1,3) /
4223     S 0.16548628E+00, 0.39613651E+00, 0.10000000E+01/
4224      DATA (GA( 3, 6,IC),IC=1,3) /
4225     S 0.18527967E+00,-0.26025624E-01, 0.00000000E+00/
4226      DATA (GB( 3, 6,IC),IC=1,3) /
4227     S 0.18527967E+00, 0.42937476E+00, 0.10000000E+01/
4228C
4229C----- INTERVAL = 5 ----- T =  225.0
4230C
4231C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4232      DATA (GA( 4, 5,IC),IC=1,3) /
4233     S 0.16881124E+00,-0.23732392E-01, 0.00000000E+00/
4234      DATA (GB( 4, 5,IC),IC=1,3) /
4235     S 0.16881124E+00, 0.40222421E+00, 0.10000000E+01/
4236      DATA (GA( 4, 6,IC),IC=1,3) /
4237     S 0.18833348E+00,-0.26450280E-01, 0.00000000E+00/
4238      DATA (GB( 4, 6,IC),IC=1,3) /
4239     S 0.18833348E+00, 0.43444062E+00, 0.10000000E+01/
4240C
4241C----- INTERVAL = 5 ----- T =  237.5
4242C
4243C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4244      DATA (GA( 5, 5,IC),IC=1,3) /
4245     S 0.17177839E+00,-0.24145123E-01, 0.00000000E+00/
4246      DATA (GB( 5, 5,IC),IC=1,3) /
4247     S 0.17177839E+00, 0.40756010E+00, 0.10000000E+01/
4248      DATA (GA( 5, 6,IC),IC=1,3) /
4249     S 0.19100108E+00,-0.26821236E-01, 0.00000000E+00/
4250      DATA (GB( 5, 6,IC),IC=1,3) /
4251     S 0.19100108E+00, 0.43880316E+00, 0.10000000E+01/
4252C
4253C----- INTERVAL = 5 ----- T =  250.0
4254C
4255C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4256      DATA (GA( 6, 5,IC),IC=1,3) /
4257     S 0.17443933E+00,-0.24515269E-01, 0.00000000E+00/
4258      DATA (GB( 6, 5,IC),IC=1,3) /
4259     S 0.17443933E+00, 0.41226954E+00, 0.10000000E+01/
4260      DATA (GA( 6, 6,IC),IC=1,3) /
4261     S 0.19334122E+00,-0.27146657E-01, 0.00000000E+00/
4262      DATA (GB( 6, 6,IC),IC=1,3) /
4263     S 0.19334122E+00, 0.44258354E+00, 0.10000000E+01/
4264C
4265C----- INTERVAL = 5 ----- T =  262.5
4266C
4267C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4268      DATA (GA( 7, 5,IC),IC=1,3) /
4269     S 0.17683622E+00,-0.24848690E-01, 0.00000000E+00/
4270      DATA (GB( 7, 5,IC),IC=1,3) /
4271     S 0.17683622E+00, 0.41645142E+00, 0.10000000E+01/
4272      DATA (GA( 7, 6,IC),IC=1,3) /
4273     S 0.19540288E+00,-0.27433354E-01, 0.00000000E+00/
4274      DATA (GB( 7, 6,IC),IC=1,3) /
4275     S 0.19540288E+00, 0.44587882E+00, 0.10000000E+01/
4276C
4277C----- INTERVAL = 5 ----- T =  275.0
4278C
4279C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4280      DATA (GA( 8, 5,IC),IC=1,3) /
4281     S 0.17900375E+00,-0.25150210E-01, 0.00000000E+00/
4282      DATA (GB( 8, 5,IC),IC=1,3) /
4283     S 0.17900375E+00, 0.42018474E+00, 0.10000000E+01/
4284      DATA (GA( 8, 6,IC),IC=1,3) /
4285     S 0.19722732E+00,-0.27687065E-01, 0.00000000E+00/
4286      DATA (GB( 8, 6,IC),IC=1,3) /
4287     S 0.19722732E+00, 0.44876776E+00, 0.10000000E+01/
4288C
4289C----- INTERVAL = 5 ----- T =  287.5
4290C
4291C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4292      DATA (GA( 9, 5,IC),IC=1,3) /
4293     S 0.18097099E+00,-0.25423873E-01, 0.00000000E+00/
4294      DATA (GB( 9, 5,IC),IC=1,3) /
4295     S 0.18097099E+00, 0.42353379E+00, 0.10000000E+01/
4296      DATA (GA( 9, 6,IC),IC=1,3) /
4297     S 0.19884918E+00,-0.27912608E-01, 0.00000000E+00/
4298      DATA (GB( 9, 6,IC),IC=1,3) /
4299     S 0.19884918E+00, 0.45131451E+00, 0.10000000E+01/
4300C
4301C----- INTERVAL = 5 ----- T =  300.0
4302C
4303C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4304      DATA (GA(10, 5,IC),IC=1,3) /
4305     S 0.18276283E+00,-0.25673139E-01, 0.00000000E+00/
4306      DATA (GB(10, 5,IC),IC=1,3) /
4307     S 0.18276283E+00, 0.42655211E+00, 0.10000000E+01/
4308      DATA (GA(10, 6,IC),IC=1,3) /
4309     S 0.20029696E+00,-0.28113944E-01, 0.00000000E+00/
4310      DATA (GB(10, 6,IC),IC=1,3) /
4311     S 0.20029696E+00, 0.45357095E+00, 0.10000000E+01/
4312C
4313C----- INTERVAL = 5 ----- T =  312.5
4314C
4315C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4316      DATA (GA(11, 5,IC),IC=1,3) /
4317     S 0.18440117E+00,-0.25901055E-01, 0.00000000E+00/
4318      DATA (GB(11, 5,IC),IC=1,3) /
4319     S 0.18440117E+00, 0.42928533E+00, 0.10000000E+01/
4320      DATA (GA(11, 6,IC),IC=1,3) /
4321     S 0.20159300E+00,-0.28294180E-01, 0.00000000E+00/
4322      DATA (GB(11, 6,IC),IC=1,3) /
4323     S 0.20159300E+00, 0.45557797E+00, 0.10000000E+01/
4324C
4325C
4326C
4327C
4328C- WATER VAPOR - WINGS OF VIBRATION-ROTATION BAND - 1250-1450+1880-2820 -
4329C--- G = 0.0
4330C
4331C
4332C----- INTERVAL = 6 ----- T =  187.5
4333C
4334C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4335      DATA (GA( 1,11,IC),IC=1,3) /
4336     S 0.11990218E+02,-0.12823142E+01, 0.00000000E+00/
4337      DATA (GB( 1,11,IC),IC=1,3) /
4338     S 0.11990218E+02, 0.26681588E+02, 0.10000000E+01/
4339      DATA (GA( 1,12,IC),IC=1,3) /
4340     S 0.79709806E+01,-0.74805226E+00, 0.00000000E+00/
4341      DATA (GB( 1,12,IC),IC=1,3) /
4342     S 0.79709806E+01, 0.18377807E+02, 0.10000000E+01/
4343C
4344C----- INTERVAL = 6 ----- T =  200.0
4345C
4346C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4347      DATA (GA( 2,11,IC),IC=1,3) /
4348     S 0.10904073E+02,-0.10571588E+01, 0.00000000E+00/
4349      DATA (GB( 2,11,IC),IC=1,3) /
4350     S 0.10904073E+02, 0.24728346E+02, 0.10000000E+01/
4351      DATA (GA( 2,12,IC),IC=1,3) /
4352     S 0.75400737E+01,-0.56252739E+00, 0.00000000E+00/
4353      DATA (GB( 2,12,IC),IC=1,3) /
4354     S 0.75400737E+01, 0.17643148E+02, 0.10000000E+01/
4355C
4356C----- INTERVAL = 6 ----- T =  212.5
4357C
4358C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4359      DATA (GA( 3,11,IC),IC=1,3) /
4360     S 0.89126838E+01,-0.74864953E+00, 0.00000000E+00/
4361      DATA (GB( 3,11,IC),IC=1,3) /
4362     S 0.89126838E+01, 0.20551342E+02, 0.10000000E+01/
4363      DATA (GA( 3,12,IC),IC=1,3) /
4364     S 0.81804377E+01,-0.46188072E+00, 0.00000000E+00/
4365      DATA (GB( 3,12,IC),IC=1,3) /
4366     S 0.81804377E+01, 0.19296161E+02, 0.10000000E+01/
4367C
4368C----- INTERVAL = 6 ----- T =  225.0
4369C
4370C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4371      DATA (GA( 4,11,IC),IC=1,3) /
4372     S 0.85622405E+01,-0.58705980E+00, 0.00000000E+00/
4373      DATA (GB( 4,11,IC),IC=1,3) /
4374     S 0.85622405E+01, 0.19955244E+02, 0.10000000E+01/
4375      DATA (GA( 4,12,IC),IC=1,3) /
4376     S 0.10564339E+02,-0.40712065E+00, 0.00000000E+00/
4377      DATA (GB( 4,12,IC),IC=1,3) /
4378     S 0.10564339E+02, 0.24951120E+02, 0.10000000E+01/
4379C
4380C----- INTERVAL = 6 ----- T =  237.5
4381C
4382C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4383      DATA (GA( 5,11,IC),IC=1,3) /
4384     S 0.94892164E+01,-0.49305772E+00, 0.00000000E+00/
4385      DATA (GB( 5,11,IC),IC=1,3) /
4386     S 0.94892164E+01, 0.22227100E+02, 0.10000000E+01/
4387      DATA (GA( 5,12,IC),IC=1,3) /
4388     S 0.46896789E+02,-0.15295996E+01, 0.00000000E+00/
4389      DATA (GB( 5,12,IC),IC=1,3) /
4390     S 0.46896789E+02, 0.10957372E+03, 0.10000000E+01/
4391C
4392C----- INTERVAL = 6 ----- T =  250.0
4393C
4394C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4395      DATA (GA( 6,11,IC),IC=1,3) /
4396     S 0.13580937E+02,-0.51461431E+00, 0.00000000E+00/
4397      DATA (GB( 6,11,IC),IC=1,3) /
4398     S 0.13580937E+02, 0.31770288E+02, 0.10000000E+01/
4399      DATA (GA( 6,12,IC),IC=1,3) /
4400     S-0.30926524E+01, 0.43555255E+00, 0.00000000E+00/
4401      DATA (GB( 6,12,IC),IC=1,3) /
4402     S-0.30926524E+01,-0.67432659E+01, 0.10000000E+01/
4403C
4404C----- INTERVAL = 6 ----- T =  262.5
4405C
4406C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4407      DATA (GA( 7,11,IC),IC=1,3) /
4408     S-0.32050918E+03, 0.12373350E+02, 0.00000000E+00/
4409      DATA (GB( 7,11,IC),IC=1,3) /
4410     S-0.32050918E+03,-0.74061287E+03, 0.10000000E+01/
4411      DATA (GA( 7,12,IC),IC=1,3) /
4412     S 0.85742941E+00, 0.50380874E+00, 0.00000000E+00/
4413      DATA (GB( 7,12,IC),IC=1,3) /
4414     S 0.85742941E+00, 0.24550746E+01, 0.10000000E+01/
4415C
4416C----- INTERVAL = 6 ----- T =  275.0
4417C
4418C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4419      DATA (GA( 8,11,IC),IC=1,3) /
4420     S-0.37133165E+01, 0.44809588E+00, 0.00000000E+00/
4421      DATA (GB( 8,11,IC),IC=1,3) /
4422     S-0.37133165E+01,-0.81329826E+01, 0.10000000E+01/
4423      DATA (GA( 8,12,IC),IC=1,3) /
4424     S 0.19164038E+01, 0.68537352E+00, 0.00000000E+00/
4425      DATA (GB( 8,12,IC),IC=1,3) /
4426     S 0.19164038E+01, 0.49089917E+01, 0.10000000E+01/
4427C
4428C----- INTERVAL = 6 ----- T =  287.5
4429C
4430C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4431      DATA (GA( 9,11,IC),IC=1,3) /
4432     S 0.18890836E+00, 0.46548918E+00, 0.00000000E+00/
4433      DATA (GB( 9,11,IC),IC=1,3) /
4434     S 0.18890836E+00, 0.90279822E+00, 0.10000000E+01/
4435      DATA (GA( 9,12,IC),IC=1,3) /
4436     S 0.23513199E+01, 0.89437630E+00, 0.00000000E+00/
4437      DATA (GB( 9,12,IC),IC=1,3) /
4438     S 0.23513199E+01, 0.59008712E+01, 0.10000000E+01/
4439C
4440C----- INTERVAL = 6 ----- T =  300.0
4441C
4442C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4443      DATA (GA(10,11,IC),IC=1,3) /
4444     S 0.14209226E+01, 0.59121475E+00, 0.00000000E+00/
4445      DATA (GB(10,11,IC),IC=1,3) /
4446     S 0.14209226E+01, 0.37532746E+01, 0.10000000E+01/
4447      DATA (GA(10,12,IC),IC=1,3) /
4448     S 0.25566644E+01, 0.11127003E+01, 0.00000000E+00/
4449      DATA (GB(10,12,IC),IC=1,3) /
4450     S 0.25566644E+01, 0.63532616E+01, 0.10000000E+01/
4451C
4452C----- INTERVAL = 6 ----- T =  312.5
4453C
4454C-- INDICES FOR PADE APPROXIMATION   1 35 40 45
4455      DATA (GA(11,11,IC),IC=1,3) /
4456     S 0.19817679E+01, 0.74676119E+00, 0.00000000E+00/
4457      DATA (GB(11,11,IC),IC=1,3) /
4458     S 0.19817679E+01, 0.50437916E+01, 0.10000000E+01/
4459      DATA (GA(11,12,IC),IC=1,3) /
4460     S 0.26555181E+01, 0.13329782E+01, 0.00000000E+00/
4461      DATA (GB(11,12,IC),IC=1,3) /
4462     S 0.26555181E+01, 0.65558627E+01, 0.10000000E+01/
4463C
4464C
4465C
4466C
4467C
4468C-- END WATER VAPOR
4469C
4470C
4471C-- CO2 -- INT.2 -- 500-800 CM-1 --- FROM ABS225 ----------------------
4472C
4473C
4474C
4475C-- FIU = 0.8 + MAX(0.35,(7-IU)*0.9)  , X/T,  9
4476C
4477C----- INTERVAL = 2 ----- T =  187.5
4478C
4479C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4480      DATA (GA( 1,13,IC),IC=1,3) /
4481     S 0.87668459E-01, 0.13845511E+01, 0.00000000E+00/
4482      DATA (GB( 1,13,IC),IC=1,3) /
4483     S 0.87668459E-01, 0.23203798E+01, 0.10000000E+01/
4484      DATA (GA( 1,14,IC),IC=1,3) /
4485     S 0.74878820E-01, 0.11718758E+01, 0.00000000E+00/
4486      DATA (GB( 1,14,IC),IC=1,3) /
4487     S 0.74878820E-01, 0.20206726E+01, 0.10000000E+01/
4488C
4489C----- INTERVAL = 2 ----- T =  200.0
4490C
4491C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4492      DATA (GA( 2,13,IC),IC=1,3) /
4493     S 0.83754276E-01, 0.13187042E+01, 0.00000000E+00/
4494      DATA (GB( 2,13,IC),IC=1,3) /
4495     S 0.83754276E-01, 0.22288925E+01, 0.10000000E+01/
4496      DATA (GA( 2,14,IC),IC=1,3) /
4497     S 0.71650966E-01, 0.11216131E+01, 0.00000000E+00/
4498      DATA (GB( 2,14,IC),IC=1,3) /
4499     S 0.71650966E-01, 0.19441824E+01, 0.10000000E+01/
4500C
4501C----- INTERVAL = 2 ----- T =  212.5
4502C
4503C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4504      DATA (GA( 3,13,IC),IC=1,3) /
4505     S 0.80460283E-01, 0.12644396E+01, 0.00000000E+00/
4506      DATA (GB( 3,13,IC),IC=1,3) /
4507     S 0.80460283E-01, 0.21515593E+01, 0.10000000E+01/
4508      DATA (GA( 3,14,IC),IC=1,3) /
4509     S 0.68979615E-01, 0.10809473E+01, 0.00000000E+00/
4510      DATA (GB( 3,14,IC),IC=1,3) /
4511     S 0.68979615E-01, 0.18807257E+01, 0.10000000E+01/
4512C
4513C----- INTERVAL = 2 ----- T =  225.0
4514C
4515C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4516      DATA (GA( 4,13,IC),IC=1,3) /
4517     S 0.77659686E-01, 0.12191543E+01, 0.00000000E+00/
4518      DATA (GB( 4,13,IC),IC=1,3) /
4519     S 0.77659686E-01, 0.20855896E+01, 0.10000000E+01/
4520      DATA (GA( 4,14,IC),IC=1,3) /
4521     S 0.66745345E-01, 0.10476396E+01, 0.00000000E+00/
4522      DATA (GB( 4,14,IC),IC=1,3) /
4523     S 0.66745345E-01, 0.18275618E+01, 0.10000000E+01/
4524C
4525C----- INTERVAL = 2 ----- T =  237.5
4526C
4527C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4528      DATA (GA( 5,13,IC),IC=1,3) /
4529     S 0.75257056E-01, 0.11809511E+01, 0.00000000E+00/
4530      DATA (GB( 5,13,IC),IC=1,3) /
4531     S 0.75257056E-01, 0.20288489E+01, 0.10000000E+01/
4532      DATA (GA( 5,14,IC),IC=1,3) /
4533     S 0.64857571E-01, 0.10200373E+01, 0.00000000E+00/
4534      DATA (GB( 5,14,IC),IC=1,3) /
4535     S 0.64857571E-01, 0.17825910E+01, 0.10000000E+01/
4536C
4537C----- INTERVAL = 2 ----- T =  250.0
4538C
4539C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4540      DATA (GA( 6,13,IC),IC=1,3) /
4541     S 0.73179175E-01, 0.11484154E+01, 0.00000000E+00/
4542      DATA (GB( 6,13,IC),IC=1,3) /
4543     S 0.73179175E-01, 0.19796791E+01, 0.10000000E+01/
4544      DATA (GA( 6,14,IC),IC=1,3) /
4545     S 0.63248495E-01, 0.99692726E+00, 0.00000000E+00/
4546      DATA (GB( 6,14,IC),IC=1,3) /
4547     S 0.63248495E-01, 0.17442308E+01, 0.10000000E+01/
4548C
4549C----- INTERVAL = 2 ----- T =  262.5
4550C
4551C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4552      DATA (GA( 7,13,IC),IC=1,3) /
4553     S 0.71369063E-01, 0.11204723E+01, 0.00000000E+00/
4554      DATA (GB( 7,13,IC),IC=1,3) /
4555     S 0.71369063E-01, 0.19367778E+01, 0.10000000E+01/
4556      DATA (GA( 7,14,IC),IC=1,3) /
4557     S 0.61866970E-01, 0.97740923E+00, 0.00000000E+00/
4558      DATA (GB( 7,14,IC),IC=1,3) /
4559     S 0.61866970E-01, 0.17112809E+01, 0.10000000E+01/
4560C
4561C----- INTERVAL = 2 ----- T =  275.0
4562C
4563C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4564      DATA (GA( 8,13,IC),IC=1,3) /
4565     S 0.69781812E-01, 0.10962918E+01, 0.00000000E+00/
4566      DATA (GB( 8,13,IC),IC=1,3) /
4567     S 0.69781812E-01, 0.18991112E+01, 0.10000000E+01/
4568      DATA (GA( 8,14,IC),IC=1,3) /
4569     S 0.60673632E-01, 0.96080188E+00, 0.00000000E+00/
4570      DATA (GB( 8,14,IC),IC=1,3) /
4571     S 0.60673632E-01, 0.16828137E+01, 0.10000000E+01/
4572C
4573C----- INTERVAL = 2 ----- T =  287.5
4574C
4575C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4576      DATA (GA( 9,13,IC),IC=1,3) /
4577     S 0.68381606E-01, 0.10752229E+01, 0.00000000E+00/
4578      DATA (GB( 9,13,IC),IC=1,3) /
4579     S 0.68381606E-01, 0.18658501E+01, 0.10000000E+01/
4580      DATA (GA( 9,14,IC),IC=1,3) /
4581     S 0.59637277E-01, 0.94657562E+00, 0.00000000E+00/
4582      DATA (GB( 9,14,IC),IC=1,3) /
4583     S 0.59637277E-01, 0.16580908E+01, 0.10000000E+01/
4584C
4585C----- INTERVAL = 2 ----- T =  300.0
4586C
4587C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4588      DATA (GA(10,13,IC),IC=1,3) /
4589     S 0.67139539E-01, 0.10567474E+01, 0.00000000E+00/
4590      DATA (GB(10,13,IC),IC=1,3) /
4591     S 0.67139539E-01, 0.18363226E+01, 0.10000000E+01/
4592      DATA (GA(10,14,IC),IC=1,3) /
4593     S 0.58732178E-01, 0.93430511E+00, 0.00000000E+00/
4594      DATA (GB(10,14,IC),IC=1,3) /
4595     S 0.58732178E-01, 0.16365014E+01, 0.10000000E+01/
4596C
4597C----- INTERVAL = 2 ----- T =  312.5
4598C
4599C-- INDICES FOR PADE APPROXIMATION   1 30 38 45
4600      DATA (GA(11,13,IC),IC=1,3) /
4601     S 0.66032012E-01, 0.10404465E+01, 0.00000000E+00/
4602      DATA (GB(11,13,IC),IC=1,3) /
4603     S 0.66032012E-01, 0.18099779E+01, 0.10000000E+01/
4604      DATA (GA(11,14,IC),IC=1,3) /
4605     S 0.57936092E-01, 0.92363528E+00, 0.00000000E+00/
4606      DATA (GB(11,14,IC),IC=1,3) /
4607     S 0.57936092E-01, 0.16175164E+01, 0.10000000E+01/
4608C
4609C
4610C
4611C
4612C
4613C
4614C
4615C
4616C
4617C
4618C-- CARBON DIOXIDE LINES IN THE WINDOW REGION (800-1250 CM-1)
4619C
4620C
4621C-- G = 0.0
4622C
4623C
4624C----- INTERVAL = 4 ----- T =  187.5
4625C
4626C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4627      DATA (GA( 1,15,IC),IC=1,3) /
4628     S 0.13230067E+02, 0.22042132E+02, 0.00000000E+00/
4629      DATA (GB( 1,15,IC),IC=1,3) /
4630     S 0.13230067E+02, 0.22051750E+02, 0.10000000E+01/
4631      DATA (GA( 1,16,IC),IC=1,3) /
4632     S 0.13183816E+02, 0.22169501E+02, 0.00000000E+00/
4633      DATA (GB( 1,16,IC),IC=1,3) /
4634     S 0.13183816E+02, 0.22178972E+02, 0.10000000E+01/
4635C
4636C----- INTERVAL = 4 ----- T =  200.0
4637C
4638C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4639      DATA (GA( 2,15,IC),IC=1,3) /
4640     S 0.13213564E+02, 0.22107298E+02, 0.00000000E+00/
4641      DATA (GB( 2,15,IC),IC=1,3) /
4642     S 0.13213564E+02, 0.22116850E+02, 0.10000000E+01/
4643      DATA (GA( 2,16,IC),IC=1,3) /
4644     S 0.13189991E+02, 0.22270075E+02, 0.00000000E+00/
4645      DATA (GB( 2,16,IC),IC=1,3) /
4646     S 0.13189991E+02, 0.22279484E+02, 0.10000000E+01/
4647C
4648C----- INTERVAL = 4 ----- T =  212.5
4649C
4650C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4651      DATA (GA( 3,15,IC),IC=1,3) /
4652     S 0.13209140E+02, 0.22180915E+02, 0.00000000E+00/
4653      DATA (GB( 3,15,IC),IC=1,3) /
4654     S 0.13209140E+02, 0.22190410E+02, 0.10000000E+01/
4655      DATA (GA( 3,16,IC),IC=1,3) /
4656     S 0.13209485E+02, 0.22379193E+02, 0.00000000E+00/
4657      DATA (GB( 3,16,IC),IC=1,3) /
4658     S 0.13209485E+02, 0.22388551E+02, 0.10000000E+01/
4659C
4660C----- INTERVAL = 4 ----- T =  225.0
4661C
4662C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4663      DATA (GA( 4,15,IC),IC=1,3) /
4664     S 0.13213894E+02, 0.22259478E+02, 0.00000000E+00/
4665      DATA (GB( 4,15,IC),IC=1,3) /
4666     S 0.13213894E+02, 0.22268925E+02, 0.10000000E+01/
4667      DATA (GA( 4,16,IC),IC=1,3) /
4668     S 0.13238789E+02, 0.22492992E+02, 0.00000000E+00/
4669      DATA (GB( 4,16,IC),IC=1,3) /
4670     S 0.13238789E+02, 0.22502309E+02, 0.10000000E+01/
4671C
4672C----- INTERVAL = 4 ----- T =  237.5
4673C
4674C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4675      DATA (GA( 5,15,IC),IC=1,3) /
4676     S 0.13225963E+02, 0.22341039E+02, 0.00000000E+00/
4677      DATA (GB( 5,15,IC),IC=1,3) /
4678     S 0.13225963E+02, 0.22350445E+02, 0.10000000E+01/
4679      DATA (GA( 5,16,IC),IC=1,3) /
4680     S 0.13275017E+02, 0.22608508E+02, 0.00000000E+00/
4681      DATA (GB( 5,16,IC),IC=1,3) /
4682     S 0.13275017E+02, 0.22617792E+02, 0.10000000E+01/
4683C
4684C----- INTERVAL = 4 ----- T =  250.0
4685C
4686C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4687      DATA (GA( 6,15,IC),IC=1,3) /
4688     S 0.13243806E+02, 0.22424247E+02, 0.00000000E+00/
4689      DATA (GB( 6,15,IC),IC=1,3) /
4690     S 0.13243806E+02, 0.22433617E+02, 0.10000000E+01/
4691      DATA (GA( 6,16,IC),IC=1,3) /
4692     S 0.13316096E+02, 0.22723843E+02, 0.00000000E+00/
4693      DATA (GB( 6,16,IC),IC=1,3) /
4694     S 0.13316096E+02, 0.22733099E+02, 0.10000000E+01/
4695C
4696C----- INTERVAL = 4 ----- T =  262.5
4697C
4698C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4699      DATA (GA( 7,15,IC),IC=1,3) /
4700     S 0.13266104E+02, 0.22508089E+02, 0.00000000E+00/
4701      DATA (GB( 7,15,IC),IC=1,3) /
4702     S 0.13266104E+02, 0.22517429E+02, 0.10000000E+01/
4703      DATA (GA( 7,16,IC),IC=1,3) /
4704     S 0.13360555E+02, 0.22837837E+02, 0.00000000E+00/
4705      DATA (GB( 7,16,IC),IC=1,3) /
4706     S 0.13360555E+02, 0.22847071E+02, 0.10000000E+01/
4707C
4708C----- INTERVAL = 4 ----- T =  275.0
4709C
4710C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4711      DATA (GA( 8,15,IC),IC=1,3) /
4712     S 0.13291782E+02, 0.22591771E+02, 0.00000000E+00/
4713      DATA (GB( 8,15,IC),IC=1,3) /
4714     S 0.13291782E+02, 0.22601086E+02, 0.10000000E+01/
4715      DATA (GA( 8,16,IC),IC=1,3) /
4716     S 0.13407324E+02, 0.22949751E+02, 0.00000000E+00/
4717      DATA (GB( 8,16,IC),IC=1,3) /
4718     S 0.13407324E+02, 0.22958967E+02, 0.10000000E+01/
4719C
4720C----- INTERVAL = 4 ----- T =  287.5
4721C
4722C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4723      DATA (GA( 9,15,IC),IC=1,3) /
4724     S 0.13319961E+02, 0.22674661E+02, 0.00000000E+00/
4725      DATA (GB( 9,15,IC),IC=1,3) /
4726     S 0.13319961E+02, 0.22683956E+02, 0.10000000E+01/
4727      DATA (GA( 9,16,IC),IC=1,3) /
4728     S 0.13455544E+02, 0.23059032E+02, 0.00000000E+00/
4729      DATA (GB( 9,16,IC),IC=1,3) /
4730     S 0.13455544E+02, 0.23068234E+02, 0.10000000E+01/
4731C
4732C----- INTERVAL = 4 ----- T =  300.0
4733C
4734C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4735      DATA (GA(10,15,IC),IC=1,3) /
4736     S 0.13349927E+02, 0.22756246E+02, 0.00000000E+00/
4737      DATA (GB(10,15,IC),IC=1,3) /
4738     S 0.13349927E+02, 0.22765522E+02, 0.10000000E+01/
4739      DATA (GA(10,16,IC),IC=1,3) /
4740     S 0.13504450E+02, 0.23165146E+02, 0.00000000E+00/
4741      DATA (GB(10,16,IC),IC=1,3) /
4742     S 0.13504450E+02, 0.23174336E+02, 0.10000000E+01/
4743C
4744C----- INTERVAL = 4 ----- T =  312.5
4745C
4746C-- INDICES FOR PADE APPROXIMATION     1   15   29   45
4747      DATA (GA(11,15,IC),IC=1,3) /
4748     S 0.13381108E+02, 0.22836093E+02, 0.00000000E+00/
4749      DATA (GB(11,15,IC),IC=1,3) /
4750     S 0.13381108E+02, 0.22845354E+02, 0.10000000E+01/
4751      DATA (GA(11,16,IC),IC=1,3) /
4752     S 0.13553282E+02, 0.23267456E+02, 0.00000000E+00/
4753      DATA (GB(11,16,IC),IC=1,3) /
4754     S 0.13553282E+02, 0.23276638E+02, 0.10000000E+01/
4755
4756C     ------------------------------------------------------------------
4757      DATA (( XP(  J,K),J=1,6),       K=1,6) /
4758     S 0.46430621E+02, 0.12928299E+03, 0.20732648E+03,
4759     S 0.31398411E+03, 0.18373177E+03,-0.11412303E+03,
4760     S 0.73604774E+02, 0.27887914E+03, 0.27076947E+03,
4761     S-0.57322111E+02,-0.64742459E+02, 0.87238280E+02,
4762     S 0.37050866E+02, 0.20498759E+03, 0.37558029E+03,
4763     S 0.17401171E+03,-0.13350302E+03,-0.37651795E+02,
4764     S 0.14930141E+02, 0.89161160E+02, 0.17793062E+03,
4765     S 0.93433860E+02,-0.70646020E+02,-0.26373150E+02,
4766     S 0.40386780E+02, 0.10855270E+03, 0.50755010E+02,
4767     S-0.31496190E+02, 0.12791300E+00, 0.18017770E+01,
4768     S 0.90811926E+01, 0.75073923E+02, 0.24654438E+03,
4769     S 0.39332612E+03, 0.29385281E+03, 0.89107921E+02 /
4770C
4771C
4772C*         1.0     PLANCK FUNCTIONS AND GRADIENTS
4773C                  ------------------------------
4774C
4775 100  CONTINUE
4776C
4777      DO 102 JK = 1 , KFLEV+1
4778      DO 101 JL = 1, KDLON
4779      PBINT(JL,JK) = 0.
4780 101  CONTINUE
4781 102  CONTINUE
4782      DO 103 JL = 1, KDLON
4783      PBSUIN(JL) = 0.
4784 103  CONTINUE
4785C
4786      DO 141 JNU=1,Ninter
4787C
4788C
4789C*         1.1   LEVELS FROM SURFACE TO KFLEV
4790C                ----------------------------
4791C
4792 110  CONTINUE
4793C
4794      DO 112 JK = 1 , KFLEV
4795      DO 111 JL = 1, KDLON
4796      ZTI(JL)=(PTL(JL,JK)-TSTAND)/TSTAND
4797      ZRES(JL) = XP(1,JNU)+ZTI(JL)*(XP(2,JNU)+ZTI(JL)*(XP(3,JNU)
4798     S       +ZTI(JL)*(XP(4,JNU)+ZTI(JL)*(XP(5,JNU)+ZTI(JL)*(XP(6,JNU)
4799     S       )))))
4800      PBINT(JL,JK)=PBINT(JL,JK)+ZRES(JL)
4801      PB(JL,JNU,JK)= ZRES(JL)
4802      ZBLEV(JL,JK) = ZRES(JL)
4803      ZTI2(JL)=(PTAVE(JL,JK)-TSTAND)/TSTAND
4804      ZRES2(JL)=XP(1,JNU)+ZTI2(JL)*(XP(2,JNU)+ZTI2(JL)*(XP(3,JNU)
4805     S     +ZTI2(JL)*(XP(4,JNU)+ZTI2(JL)*(XP(5,JNU)+ZTI2(JL)*(XP(6,JNU)
4806     S       )))))
4807      ZBLAY(JL,JK) = ZRES2(JL)
4808 111  CONTINUE
4809 112  CONTINUE
4810C
4811C
4812C*         1.2   TOP OF THE ATMOSPHERE AND SURFACE
4813C                ---------------------------------
4814C
4815 120  CONTINUE
4816C
4817      DO 121 JL = 1, KDLON
4818      ZTI(JL)=(PTL(JL,KFLEV+1)-TSTAND)/TSTAND
4819      ZTI2(JL) = (PTL(JL,1) + PDT0(JL) - TSTAND) / TSTAND
4820      ZRES(JL) = XP(1,JNU)+ZTI(JL)*(XP(2,JNU)+ZTI(JL)*(XP(3,JNU)
4821     S    +ZTI(JL)*(XP(4,JNU)+ZTI(JL)*(XP(5,JNU)+ZTI(JL)*(XP(6,JNU)
4822     S       )))))
4823      ZRES2(JL) = XP(1,JNU)+ZTI2(JL)*(XP(2,JNU)+ZTI2(JL)*(XP(3,JNU)
4824     S    +ZTI2(JL)*(XP(4,JNU)+ZTI2(JL)*(XP(5,JNU)+ZTI2(JL)*(XP(6,JNU)
4825     S       )))))
4826      PBINT(JL,KFLEV+1) = PBINT(JL,KFLEV+1)+ZRES(JL)
4827      PB(JL,JNU,KFLEV+1)= ZRES(JL)
4828      ZBLEV(JL,KFLEV+1) = ZRES(JL)
4829      PBTOP(JL,JNU) = ZRES(JL)
4830      PBSUR(JL,JNU) = ZRES2(JL)
4831      PBSUIN(JL) = PBSUIN(JL) + ZRES2(JL)
4832 121  CONTINUE
4833C
4834C
4835C*         1.3   GRADIENTS IN SUB-LAYERS
4836C                -----------------------
4837C
4838 130  CONTINUE
4839C
4840      DO 132 JK = 1 , KFLEV
4841      JK2 = 2 * JK
4842      JK1 = JK2 - 1
4843      DO 131 JL = 1, KDLON
4844      PDBSL(JL,JNU,JK1) = ZBLAY(JL,JK  ) - ZBLEV(JL,JK)
4845      PDBSL(JL,JNU,JK2) = ZBLEV(JL,JK+1) - ZBLAY(JL,JK)
4846 131  CONTINUE
4847 132  CONTINUE
4848C
4849 141  CONTINUE
4850C
4851C*         2.0   CHOOSE THE RELEVANT SETS OF PADE APPROXIMANTS
4852C                ---------------------------------------------
4853C
4854 200  CONTINUE
4855C
4856C
4857 210  CONTINUE
4858C
4859      DO 211 JL=1, KDLON
4860      ZDSTO1 = (PTL(JL,KFLEV+1)-TINTP(1)) / TSTP
4861      IXTOX = MAX( 1, MIN( MXIXT, INT( ZDSTO1 + 1. ) ) )
4862      ZDSTOX = (PTL(JL,KFLEV+1)-TINTP(IXTOX))/TSTP
4863      IF (ZDSTOX.LT.0.5) THEN
4864         INDTO=IXTOX
4865      ELSE
4866         INDTO=IXTOX+1
4867      END IF
4868      INDB(JL)=INDTO
4869      ZDST1 = (PTL(JL,1)-TINTP(1)) / TSTP
4870      IXTX = MAX( 1, MIN( MXIXT, INT( ZDST1 + 1. ) ) )
4871      ZDSTX = (PTL(JL,1)-TINTP(IXTX))/TSTP
4872      IF (ZDSTX.LT.0.5) THEN
4873         INDT=IXTX
4874      ELSE
4875         INDT=IXTX+1
4876      END IF
4877      INDS(JL)=INDT
4878 211  CONTINUE
4879C
4880      DO 214 JF=1,2
4881      DO 213 JG=1, 8
4882      DO 212 JL=1, KDLON
4883      INDSU=INDS(JL)
4884      PGASUR(JL,JG,JF)=GA(INDSU,2*JG-1,JF)
4885      PGBSUR(JL,JG,JF)=GB(INDSU,2*JG-1,JF)
4886      INDTP=INDB(JL)
4887      PGATOP(JL,JG,JF)=GA(INDTP,2*JG-1,JF)
4888      PGBTOP(JL,JG,JF)=GB(INDTP,2*JG-1,JF)
4889 212  CONTINUE
4890 213  CONTINUE
4891 214  CONTINUE
4892C
4893 220  CONTINUE
4894C
4895      DO 225 JK=1,KFLEV
4896      DO 221 JL=1, KDLON
4897      ZDST1 = (PTAVE(JL,JK)-TINTP(1)) / TSTP
4898      IXTX = MAX( 1, MIN( MXIXT, INT( ZDST1 + 1. ) ) )
4899      ZDSTX = (PTAVE(JL,JK)-TINTP(IXTX))/TSTP
4900      IF (ZDSTX.LT.0.5) THEN
4901         INDT=IXTX
4902      ELSE
4903         INDT=IXTX+1
4904      END IF
4905      INDB(JL)=INDT
4906 221  CONTINUE
4907C
4908      DO 224 JF=1,2
4909      DO 223 JG=1, 8
4910      DO 222 JL=1, KDLON
4911      INDT=INDB(JL)
4912      PGA(JL,JG,JF,JK)=GA(INDT,2*JG,JF)
4913      PGB(JL,JG,JF,JK)=GB(INDT,2*JG,JF)
4914 222  CONTINUE
4915 223  CONTINUE
4916 224  CONTINUE
4917 225  CONTINUE
4918C
4919C     ------------------------------------------------------------------
4920C
4921      RETURN
4922      END
4923      SUBROUTINE LWV_LMDAR4(KUAER,KTRAER, KLIM
4924     R  , PABCU,PB,PBINT,PBSUIN,PBSUR,PBTOP,PDBSL,PEMIS,PPMB,PTAVE
4925     R  , PGA,PGB,PGASUR,PGBSUR,PGATOP,PGBTOP
4926     S  , PCNTRB,PCTS,PFLUC)
4927       USE dimphy
4928      IMPLICIT none
4929cym#include "dimensions.h"
4930cym#include "dimphy.h"
4931cym#include "raddim.h"
4932#include "raddimlw.h"
4933#include "YOMCST.h"
4934C
4935C-----------------------------------------------------------------------
4936C     PURPOSE.
4937C     --------
4938C           CARRIES OUT THE VERTICAL INTEGRATION TO GIVE LONGWAVE
4939C           FLUXES OR RADIANCES
4940C
4941C     METHOD.
4942C     -------
4943C
4944C          1. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING BETWEEN
4945C     CONTRIBUTIONS BY -  THE NEARBY LAYERS
4946C                      -  THE DISTANT LAYERS
4947C                      -  THE BOUNDARY TERMS
4948C          2. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
4949C
4950C     REFERENCE.
4951C     ----------
4952C
4953C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
4954C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
4955C
4956C     AUTHOR.
4957C     -------
4958C        JEAN-JACQUES MORCRETTE  *ECMWF*
4959C
4960C     MODIFICATIONS.
4961C     --------------
4962C        ORIGINAL : 89-07-14
4963C-----------------------------------------------------------------------
4964C
4965C* ARGUMENTS:
4966      INTEGER KUAER,KTRAER, KLIM
4967C
4968      REAL(KIND=8) PABCU(KDLON,NUA,3*KFLEV+1) ! EFFECTIVE ABSORBER AMOUNTS
4969      REAL(KIND=8) PB(KDLON,Ninter,KFLEV+1) ! SPECTRAL HALF-LEVEL PLANCK FUNCTIONS
4970      REAL(KIND=8) PBINT(KDLON,KFLEV+1) ! HALF-LEVEL PLANCK FUNCTIONS
4971      REAL(KIND=8) PBSUR(KDLON,Ninter) ! SURFACE SPECTRAL PLANCK FUNCTION
4972      REAL(KIND=8) PBSUIN(KDLON) ! SURFACE PLANCK FUNCTION
4973      REAL(KIND=8) PBTOP(KDLON,Ninter) ! T.O.A. SPECTRAL PLANCK FUNCTION
4974      REAL(KIND=8) PDBSL(KDLON,Ninter,KFLEV*2) ! SUB-LAYER PLANCK FUNCTION GRADIENT
4975      REAL(KIND=8) PEMIS(KDLON) ! SURFACE EMISSIVITY
4976      REAL(KIND=8) PPMB(KDLON,KFLEV+1) ! HALF-LEVEL PRESSURE (MB)
4977      REAL(KIND=8) PTAVE(KDLON,KFLEV) ! TEMPERATURE
4978      REAL(KIND=8) PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
4979      REAL(KIND=8) PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
4980      REAL(KIND=8) PGASUR(KDLON,8,2) ! PADE APPROXIMANTS
4981      REAL(KIND=8) PGBSUR(KDLON,8,2) ! PADE APPROXIMANTS
4982      REAL(KIND=8) PGATOP(KDLON,8,2) ! PADE APPROXIMANTS
4983      REAL(KIND=8) PGBTOP(KDLON,8,2) ! PADE APPROXIMANTS
4984C
4985      REAL(KIND=8) PCNTRB(KDLON,KFLEV+1,KFLEV+1) ! CLEAR-SKY ENERGY EXCHANGE MATRIX
4986      REAL(KIND=8) PCTS(KDLON,KFLEV) ! COOLING-TO-SPACE TERM
4987      REAL(KIND=8) PFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES
4988C-----------------------------------------------------------------------
4989C LOCAL VARIABLES:
4990      REAL(KIND=8) ZADJD(KDLON,KFLEV+1)
4991      REAL(KIND=8) ZADJU(KDLON,KFLEV+1)
4992      REAL(KIND=8) ZDBDT(KDLON,Ninter,KFLEV)
4993      REAL(KIND=8) ZDISD(KDLON,KFLEV+1)
4994      REAL(KIND=8) ZDISU(KDLON,KFLEV+1)
4995C
4996      INTEGER jk, jl
4997C-----------------------------------------------------------------------
4998C
4999      DO 112 JK=1,KFLEV+1
5000      DO 111 JL=1, KDLON
5001      ZADJD(JL,JK)=0.
5002      ZADJU(JL,JK)=0.
5003      ZDISD(JL,JK)=0.
5004      ZDISU(JL,JK)=0.
5005 111  CONTINUE
5006 112  CONTINUE
5007C
5008      DO 114 JK=1,KFLEV
5009      DO 113 JL=1, KDLON
5010      PCTS(JL,JK)=0.
5011 113  CONTINUE
5012 114  CONTINUE
5013C
5014C* CONTRIBUTION FROM ADJACENT LAYERS
5015C
5016      CALL LWVN_LMDAR4(KUAER,KTRAER
5017     R  , PABCU,PDBSL,PGA,PGB
5018     S  , ZADJD,ZADJU,PCNTRB,ZDBDT)
5019C* CONTRIBUTION FROM DISTANT LAYERS
5020C
5021      CALL LWVD_LMDAR4(KUAER,KTRAER
5022     R  , PABCU,ZDBDT,PGA,PGB
5023     S  , PCNTRB,ZDISD,ZDISU)
5024C
5025C* EXCHANGE WITH THE BOUNDARIES
5026C
5027      CALL LWVB_LMDAR4(KUAER,KTRAER, KLIM
5028     R  , PABCU,ZADJD,ZADJU,PB,PBINT,PBSUIN,PBSUR,PBTOP
5029     R  , ZDISD,ZDISU,PEMIS,PPMB
5030     R  , PGA,PGB,PGASUR,PGBSUR,PGATOP,PGBTOP
5031     S  , PCTS,PFLUC)
5032C
5033C
5034      RETURN
5035      END
5036      SUBROUTINE LWVB_LMDAR4(KUAER,KTRAER, KLIM
5037     R  , PABCU,PADJD,PADJU,PB,PBINT,PBSUI,PBSUR,PBTOP
5038     R  , PDISD,PDISU,PEMIS,PPMB
5039     R  , PGA,PGB,PGASUR,PGBSUR,PGATOP,PGBTOP
5040     S  , PCTS,PFLUC)
5041       USE dimphy
5042      IMPLICIT none
5043cym#include "dimensions.h"
5044cym#include "dimphy.h"
5045cym#include "raddim.h"
5046#include "raddimlw.h"
5047#include "radopt.h"
5048C
5049C-----------------------------------------------------------------------
5050C     PURPOSE.
5051C     --------
5052C           INTRODUCES THE EFFECTS OF THE BOUNDARIES IN THE VERTICAL
5053C           INTEGRATION
5054C
5055C     METHOD.
5056C     -------
5057C
5058C          1. COMPUTES THE ENERGY EXCHANGE WITH TOP AND SURFACE OF THE
5059C     ATMOSPHERE
5060C          2. COMPUTES THE COOLING-TO-SPACE AND HEATING-FROM-GROUND
5061C     TERMS FOR THE APPROXIMATE COOLING RATE ABOVE 10 HPA
5062C          3. ADDS UP ALL CONTRIBUTIONS TO GET THE CLEAR-SKY FLUXES
5063C
5064C     REFERENCE.
5065C     ----------
5066C
5067C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
5068C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
5069C
5070C     AUTHOR.
5071C     -------
5072C        JEAN-JACQUES MORCRETTE  *ECMWF*
5073C
5074C     MODIFICATIONS.
5075C     --------------
5076C        ORIGINAL : 89-07-14
5077C        Voigt lines (loop 2413 to 2427)  - JJM & PhD - 01/96
5078C-----------------------------------------------------------------------
5079C
5080C*       0.1   ARGUMENTS
5081C              ---------
5082C
5083      INTEGER KUAER,KTRAER, KLIM
5084C
5085      REAL(KIND=8) PABCU(KDLON,NUA,3*KFLEV+1) ! ABSORBER AMOUNTS
5086      REAL(KIND=8) PADJD(KDLON,KFLEV+1) ! CONTRIBUTION BY ADJACENT LAYERS
5087      REAL(KIND=8) PADJU(KDLON,KFLEV+1) ! CONTRIBUTION BY ADJACENT LAYERS
5088      REAL(KIND=8) PB(KDLON,Ninter,KFLEV+1) ! SPECTRAL HALF-LEVEL PLANCK FUNCTIONS
5089      REAL(KIND=8) PBINT(KDLON,KFLEV+1) ! HALF-LEVEL PLANCK FUNCTIONS
5090      REAL(KIND=8) PBSUR(KDLON,Ninter) ! SPECTRAL SURFACE PLANCK FUNCTION
5091      REAL(KIND=8) PBSUI(KDLON) ! SURFACE PLANCK FUNCTION
5092      REAL(KIND=8) PBTOP(KDLON,Ninter) ! SPECTRAL T.O.A. PLANCK FUNCTION
5093      REAL(KIND=8) PDISD(KDLON,KFLEV+1) ! CONTRIBUTION BY DISTANT LAYERS
5094      REAL(KIND=8) PDISU(KDLON,KFLEV+1) ! CONTRIBUTION BY DISTANT LAYERS
5095      REAL(KIND=8) PEMIS(KDLON) ! SURFACE EMISSIVITY
5096      REAL(KIND=8) PPMB(KDLON,KFLEV+1) ! PRESSURE MB
5097      REAL(KIND=8) PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5098      REAL(KIND=8) PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5099      REAL(KIND=8) PGASUR(KDLON,8,2) ! SURFACE PADE APPROXIMANTS
5100      REAL(KIND=8) PGBSUR(KDLON,8,2) ! SURFACE PADE APPROXIMANTS
5101      REAL(KIND=8) PGATOP(KDLON,8,2) ! T.O.A. PADE APPROXIMANTS
5102      REAL(KIND=8) PGBTOP(KDLON,8,2) ! T.O.A. PADE APPROXIMANTS
5103C
5104      REAL(KIND=8) PFLUC(KDLON,2,KFLEV+1) ! CLEAR-SKY RADIATIVE FLUXES
5105      REAL(KIND=8) PCTS(KDLON,KFLEV) ! COOLING-TO-SPACE TERM
5106C
5107C* LOCAL VARIABLES:
5108C
5109      REAL(KIND=8) ZBGND(KDLON)
5110      REAL(KIND=8) ZFD(KDLON)
5111      REAL(KIND=8)  ZFN10(KDLON)
5112      REAL(KIND=8) ZFU(KDLON)
5113      REAL(KIND=8)  ZTT(KDLON,NTRA)
5114      REAL(KIND=8) ZTT1(KDLON,NTRA)
5115      REAL(KIND=8) ZTT2(KDLON,NTRA)
5116      REAL(KIND=8)  ZUU(KDLON,NUA)
5117      REAL(KIND=8) ZCNSOL(KDLON)
5118      REAL(KIND=8) ZCNTOP(KDLON)
5119C
5120      INTEGER jk, jl, ja
5121      INTEGER jstra, jstru
5122      INTEGER ind1, ind2, ind3, ind4, in, jlim
5123      REAL(KIND=8) zctstr
5124C-----------------------------------------------------------------------
5125C
5126C*         1.    INITIALIZATION
5127C                --------------
5128C
5129 100  CONTINUE
5130C
5131C
5132C*         1.2     INITIALIZE TRANSMISSION FUNCTIONS
5133C                  ---------------------------------
5134C
5135 120  CONTINUE
5136C
5137      DO 122 JA=1,NTRA
5138      DO 121 JL=1, KDLON
5139      ZTT (JL,JA)=1.0
5140      ZTT1(JL,JA)=1.0
5141      ZTT2(JL,JA)=1.0
5142 121  CONTINUE
5143 122  CONTINUE
5144C
5145      DO 124 JA=1,NUA
5146      DO 123 JL=1, KDLON
5147      ZUU(JL,JA)=1.0
5148 123  CONTINUE
5149 124  CONTINUE
5150C
5151C     ------------------------------------------------------------------
5152C
5153C*         2.      VERTICAL INTEGRATION
5154C                  --------------------
5155C
5156 200  CONTINUE
5157C
5158      IND1=0
5159      IND3=0
5160      IND4=1
5161      IND2=1
5162C
5163C
5164C*         2.3     EXCHANGE WITH TOP OF THE ATMOSPHERE
5165C                  -----------------------------------
5166C
5167 230  CONTINUE
5168C
5169      DO 235 JK = 1 , KFLEV
5170      IN=(JK-1)*NG1P1+1
5171C
5172      DO 232 JA=1,KUAER
5173      DO 231 JL=1, KDLON
5174      ZUU(JL,JA)=PABCU(JL,JA,IN)
5175 231  CONTINUE
5176 232  CONTINUE
5177C
5178C
5179      CALL LWTT_LMDAR4(PGATOP(1,1,1), PGBTOP(1,1,1), ZUU, ZTT)
5180C
5181      DO 234 JL = 1, KDLON
5182      ZCNTOP(JL)=PBTOP(JL,1)*ZTT(JL,1)          *ZTT(JL,10)
5183     2      +PBTOP(JL,2)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5184     3      +PBTOP(JL,3)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5185     4      +PBTOP(JL,4)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5186     5      +PBTOP(JL,5)*ZTT(JL,3)          *ZTT(JL,14)
5187     6      +PBTOP(JL,6)*ZTT(JL,6)          *ZTT(JL,15)
5188      ZFD(JL)=ZCNTOP(JL)-PBINT(JL,JK)-PDISD(JL,JK)-PADJD(JL,JK)
5189      PFLUC(JL,2,JK)=ZFD(JL)
5190 234  CONTINUE
5191C
5192 235  CONTINUE
5193C
5194      JK = KFLEV+1
5195      IN=(JK-1)*NG1P1+1
5196C
5197      DO 236 JL = 1, KDLON
5198      ZCNTOP(JL)= PBTOP(JL,1)
5199     1   + PBTOP(JL,2)
5200     2   + PBTOP(JL,3)
5201     3   + PBTOP(JL,4)
5202     4   + PBTOP(JL,5)
5203     5   + PBTOP(JL,6)
5204      ZFD(JL)=ZCNTOP(JL)-PBINT(JL,JK)-PDISD(JL,JK)-PADJD(JL,JK)
5205      PFLUC(JL,2,JK)=ZFD(JL)
5206 236  CONTINUE
5207C
5208C*         2.4     COOLING-TO-SPACE OF LAYERS ABOVE 10 HPA
5209C                  ---------------------------------------
5210C
5211 240  CONTINUE
5212C
5213C
5214C*         2.4.1   INITIALIZATION
5215C                  --------------
5216C
5217 2410 CONTINUE
5218C
5219      JLIM = KFLEV
5220C
5221      IF (.NOT.LEVOIGT) THEN
5222      DO 2412 JK = KFLEV,1,-1
5223      IF(PPMB(1,JK).LT.10.0) THEN
5224         JLIM=JK
5225      ENDIF   
5226 2412 CONTINUE
5227      ENDIF
5228      KLIM=JLIM
5229C
5230      IF (.NOT.LEVOIGT) THEN
5231        DO 2414 JA=1,KTRAER
5232        DO 2413 JL=1, KDLON
5233        ZTT1(JL,JA)=1.0
5234 2413   CONTINUE
5235 2414   CONTINUE
5236C
5237C*         2.4.2   LOOP OVER LAYERS ABOVE 10 HPA
5238C                  -----------------------------
5239C
5240 2420   CONTINUE
5241C
5242        DO 2427 JSTRA = KFLEV,JLIM,-1
5243        JSTRU=(JSTRA-1)*NG1P1+1
5244C
5245        DO 2423 JA=1,KUAER
5246        DO 2422 JL=1, KDLON
5247        ZUU(JL,JA)=PABCU(JL,JA,JSTRU)
5248 2422   CONTINUE
5249 2423   CONTINUE
5250C
5251C
5252        CALL LWTT_LMDAR4(PGA(1,1,1,JSTRA), PGB(1,1,1,JSTRA), ZUU, ZTT)
5253C
5254        DO 2424 JL = 1, KDLON
5255        ZCTSTR =
5256     1   (PB(JL,1,JSTRA)+PB(JL,1,JSTRA+1))
5257     1       *(ZTT1(JL,1)           *ZTT1(JL,10)
5258     1       - ZTT (JL,1)           *ZTT (JL,10))
5259     2  +(PB(JL,2,JSTRA)+PB(JL,2,JSTRA+1))
5260     2       *(ZTT1(JL,2)*ZTT1(JL,7)*ZTT1(JL,11)
5261     2       - ZTT (JL,2)*ZTT (JL,7)*ZTT (JL,11))
5262     3  +(PB(JL,3,JSTRA)+PB(JL,3,JSTRA+1))
5263     3       *(ZTT1(JL,4)*ZTT1(JL,8)*ZTT1(JL,12)
5264     3       - ZTT (JL,4)*ZTT (JL,8)*ZTT (JL,12))
5265     4  +(PB(JL,4,JSTRA)+PB(JL,4,JSTRA+1))
5266     4       *(ZTT1(JL,5)*ZTT1(JL,9)*ZTT1(JL,13)
5267     4       - ZTT (JL,5)*ZTT (JL,9)*ZTT (JL,13))
5268     5  +(PB(JL,5,JSTRA)+PB(JL,5,JSTRA+1))
5269     5       *(ZTT1(JL,3)           *ZTT1(JL,14)
5270     5       - ZTT (JL,3)           *ZTT (JL,14))
5271     6  +(PB(JL,6,JSTRA)+PB(JL,6,JSTRA+1))
5272     6       *(ZTT1(JL,6)           *ZTT1(JL,15)
5273     6       - ZTT (JL,6)           *ZTT (JL,15))
5274        PCTS(JL,JSTRA)=ZCTSTR*0.5
5275 2424   CONTINUE
5276        DO 2426 JA=1,KTRAER
5277        DO 2425 JL=1, KDLON
5278        ZTT1(JL,JA)=ZTT(JL,JA)
5279 2425   CONTINUE
5280 2426   CONTINUE
5281 2427   CONTINUE
5282      ENDIF
5283C Mise a zero de securite pour PCTS en cas de LEVOIGT
5284      IF(LEVOIGT)THEN
5285        DO 2429 JSTRA = 1,KFLEV
5286        DO 2428 JL = 1, KDLON
5287          PCTS(JL,JSTRA)=0.
5288 2428   CONTINUE
5289 2429   CONTINUE
5290      ENDIF
5291C
5292C
5293C*         2.5     EXCHANGE WITH LOWER LIMIT
5294C                  -------------------------
5295C
5296 250  CONTINUE
5297C
5298      DO 251 JL = 1, KDLON
5299      ZBGND(JL)=PBSUI(JL)*PEMIS(JL)-(1.-PEMIS(JL))
5300     S               *PFLUC(JL,2,1)-PBINT(JL,1)
5301 251  CONTINUE
5302C
5303      JK = 1
5304      IN=(JK-1)*NG1P1+1
5305C
5306      DO 252 JL = 1, KDLON
5307      ZCNSOL(JL)=PBSUR(JL,1)
5308     1 +PBSUR(JL,2)
5309     2 +PBSUR(JL,3)
5310     3 +PBSUR(JL,4)
5311     4 +PBSUR(JL,5)
5312     5 +PBSUR(JL,6)
5313      ZCNSOL(JL)=ZCNSOL(JL)*ZBGND(JL)/PBSUI(JL)
5314      ZFU(JL)=ZCNSOL(JL)+PBINT(JL,JK)-PDISU(JL,JK)-PADJU(JL,JK)
5315      PFLUC(JL,1,JK)=ZFU(JL)
5316 252  CONTINUE
5317C
5318      DO 257 JK = 2 , KFLEV+1
5319      IN=(JK-1)*NG1P1+1
5320C
5321C
5322      DO 255 JA=1,KUAER
5323      DO 254 JL=1, KDLON
5324      ZUU(JL,JA)=PABCU(JL,JA,1)-PABCU(JL,JA,IN)
5325 254  CONTINUE
5326 255  CONTINUE
5327C
5328C
5329      CALL LWTT_LMDAR4(PGASUR(1,1,1), PGBSUR(1,1,1), ZUU, ZTT)
5330C
5331      DO 256 JL = 1, KDLON
5332      ZCNSOL(JL)=PBSUR(JL,1)*ZTT(JL,1)          *ZTT(JL,10)
5333     2      +PBSUR(JL,2)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5334     3      +PBSUR(JL,3)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5335     4      +PBSUR(JL,4)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5336     5      +PBSUR(JL,5)*ZTT(JL,3)          *ZTT(JL,14)
5337     6      +PBSUR(JL,6)*ZTT(JL,6)          *ZTT(JL,15)
5338      ZCNSOL(JL)=ZCNSOL(JL)*ZBGND(JL)/PBSUI(JL)
5339      ZFU(JL)=ZCNSOL(JL)+PBINT(JL,JK)-PDISU(JL,JK)-PADJU(JL,JK)
5340      PFLUC(JL,1,JK)=ZFU(JL)
5341 256  CONTINUE
5342C
5343C
5344 257  CONTINUE
5345C
5346C
5347C
5348C*         2.7     CLEAR-SKY FLUXES
5349C                  ----------------
5350C
5351 270  CONTINUE
5352C
5353      IF (.NOT.LEVOIGT) THEN
5354      DO 271 JL = 1, KDLON
5355      ZFN10(JL) = PFLUC(JL,1,JLIM) + PFLUC(JL,2,JLIM)
5356 271  CONTINUE
5357      DO 273 JK = JLIM+1,KFLEV+1
5358      DO 272 JL = 1, KDLON
5359      ZFN10(JL) = ZFN10(JL) + PCTS(JL,JK-1)
5360      PFLUC(JL,1,JK) = ZFN10(JL)
5361      PFLUC(JL,2,JK) = 0.
5362 272  CONTINUE
5363 273  CONTINUE
5364      ENDIF
5365C
5366C     ------------------------------------------------------------------
5367C
5368      RETURN
5369      END
5370      SUBROUTINE LWVD_LMDAR4(KUAER,KTRAER
5371     S  , PABCU,PDBDT
5372     R  , PGA,PGB
5373     S  , PCNTRB,PDISD,PDISU)
5374      USE dimphy
5375      IMPLICIT none
5376cym#include "dimensions.h"
5377cym#include "dimphy.h"
5378cym#include "raddim.h"
5379#include "raddimlw.h"
5380C
5381C-----------------------------------------------------------------------
5382C     PURPOSE.
5383C     --------
5384C           CARRIES OUT THE VERTICAL INTEGRATION ON THE DISTANT LAYERS
5385C
5386C     METHOD.
5387C     -------
5388C
5389C          1. PERFORMS THE VERTICAL INTEGRATION CORRESPONDING TO THE
5390C     CONTRIBUTIONS OF THE DISTANT LAYERS USING TRAPEZOIDAL RULE
5391C
5392C     REFERENCE.
5393C     ----------
5394C
5395C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
5396C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
5397C
5398C     AUTHOR.
5399C     -------
5400C        JEAN-JACQUES MORCRETTE  *ECMWF*
5401C
5402C     MODIFICATIONS.
5403C     --------------
5404C        ORIGINAL : 89-07-14
5405C-----------------------------------------------------------------------
5406C* ARGUMENTS:
5407C
5408      INTEGER KUAER,KTRAER
5409C
5410      REAL(KIND=8) PABCU(KDLON,NUA,3*KFLEV+1) ! ABSORBER AMOUNTS
5411      REAL(KIND=8) PDBDT(KDLON,Ninter,KFLEV) ! LAYER PLANCK FUNCTION GRADIENT
5412      REAL(KIND=8) PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5413      REAL(KIND=8) PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5414C
5415      REAL(KIND=8) PCNTRB(KDLON,KFLEV+1,KFLEV+1) ! ENERGY EXCHANGE MATRIX
5416      REAL(KIND=8) PDISD(KDLON,KFLEV+1) !  CONTRIBUTION BY DISTANT LAYERS
5417      REAL(KIND=8) PDISU(KDLON,KFLEV+1) !  CONTRIBUTION BY DISTANT LAYERS
5418C
5419C* LOCAL VARIABLES:
5420C
5421      REAL(KIND=8) ZGLAYD(KDLON)
5422      REAL(KIND=8) ZGLAYU(KDLON)
5423      REAL(KIND=8) ZTT(KDLON,NTRA)
5424      REAL(KIND=8) ZTT1(KDLON,NTRA)
5425      REAL(KIND=8) ZTT2(KDLON,NTRA)
5426C
5427      INTEGER jl, jk, ja, ikp1, ikn, ikd1, jkj, ikd2
5428      INTEGER ikjp1, ikm1, ikj, jlk, iku1, ijkl, iku2
5429      INTEGER ind1, ind2, ind3, ind4, itt
5430      REAL(KIND=8) zww, zdzxdg, zdzxmg
5431C
5432C*         1.    INITIALIZATION
5433C                --------------
5434C
5435 100  CONTINUE
5436C
5437C*         1.1     INITIALIZE LAYER CONTRIBUTIONS
5438C                  ------------------------------
5439C
5440 110  CONTINUE
5441C
5442      DO 112 JK = 1, KFLEV+1
5443      DO 111 JL = 1, KDLON
5444      PDISD(JL,JK) = 0.
5445      PDISU(JL,JK) = 0.
5446  111 CONTINUE
5447  112 CONTINUE
5448C
5449C*         1.2     INITIALIZE TRANSMISSION FUNCTIONS
5450C                  ---------------------------------
5451C
5452 120  CONTINUE
5453C
5454C
5455      DO 122 JA = 1, NTRA
5456      DO 121 JL = 1, KDLON
5457      ZTT (JL,JA) = 1.0
5458      ZTT1(JL,JA) = 1.0
5459      ZTT2(JL,JA) = 1.0
5460  121 CONTINUE
5461  122 CONTINUE
5462C
5463C     ------------------------------------------------------------------
5464C
5465C*         2.      VERTICAL INTEGRATION
5466C                  --------------------
5467C
5468 200  CONTINUE
5469C
5470      IND1=0
5471      IND3=0
5472      IND4=1
5473      IND2=1
5474C
5475C
5476C*         2.2     CONTRIBUTION FROM DISTANT LAYERS
5477C                  ---------------------------------
5478C
5479 220  CONTINUE
5480C
5481C
5482C*         2.2.1   DISTANT AND ABOVE LAYERS
5483C                  ------------------------
5484C
5485 2210 CONTINUE
5486C
5487C
5488C
5489C*         2.2.2   FIRST UPPER LEVEL
5490C                  -----------------
5491C
5492 2220 CONTINUE
5493C
5494      DO 225 JK = 1 , KFLEV-1
5495      IKP1=JK+1
5496      IKN=(JK-1)*NG1P1+1
5497      IKD1= JK  *NG1P1+1
5498C
5499      CALL LWTTM_LMDAR4(PGA(1,1,1,JK), PGB(1,1,1,JK)
5500     2          , PABCU(1,1,IKN),PABCU(1,1,IKD1),ZTT1)
5501C
5502C
5503C
5504C*         2.2.3   HIGHER UP
5505C                  ---------
5506C
5507 2230 CONTINUE
5508C
5509      ITT=1
5510      DO 224 JKJ=IKP1,KFLEV
5511      IF(ITT.EQ.1) THEN
5512         ITT=2
5513      ELSE
5514         ITT=1
5515      ENDIF
5516      IKJP1=JKJ+1
5517      IKD2= JKJ  *NG1P1+1
5518C
5519      IF(ITT.EQ.1) THEN
5520         CALL LWTTM_LMDAR4(PGA(1,1,1,JKJ),PGB(1,1,1,JKJ)
5521     2             , PABCU(1,1,IKN),PABCU(1,1,IKD2),ZTT1)
5522      ELSE
5523         CALL LWTTM_LMDAR4(PGA(1,1,1,JKJ),PGB(1,1,1,JKJ)
5524     2             , PABCU(1,1,IKN),PABCU(1,1,IKD2),ZTT2)
5525      ENDIF
5526C
5527      DO 2235 JA = 1, KTRAER
5528      DO 2234 JL = 1, KDLON
5529      ZTT(JL,JA) = (ZTT1(JL,JA)+ZTT2(JL,JA))*0.5
5530 2234 CONTINUE
5531 2235 CONTINUE
5532C
5533      DO 2236 JL = 1, KDLON
5534      ZWW=PDBDT(JL,1,JKJ)*ZTT(JL,1)          *ZTT(JL,10)
5535     S   +PDBDT(JL,2,JKJ)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5536     S   +PDBDT(JL,3,JKJ)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5537     S   +PDBDT(JL,4,JKJ)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5538     S   +PDBDT(JL,5,JKJ)*ZTT(JL,3)          *ZTT(JL,14)
5539     S   +PDBDT(JL,6,JKJ)*ZTT(JL,6)          *ZTT(JL,15)
5540      ZGLAYD(JL)=ZWW
5541      ZDZXDG=ZGLAYD(JL)
5542      PDISD(JL,JK)=PDISD(JL,JK)+ZDZXDG
5543      PCNTRB(JL,JK,IKJP1)=ZDZXDG
5544 2236 CONTINUE
5545C
5546C
5547 224  CONTINUE
5548 225  CONTINUE
5549C
5550C
5551C*         2.2.4   DISTANT AND BELOW LAYERS
5552C                  ------------------------
5553C
5554 2240 CONTINUE
5555C
5556C
5557C
5558C*         2.2.5   FIRST LOWER LEVEL
5559C                  -----------------
5560C
5561 2250 CONTINUE
5562C
5563      DO 228 JK=3,KFLEV+1
5564      IKN=(JK-1)*NG1P1+1
5565      IKM1=JK-1
5566      IKJ=JK-2
5567      IKU1= IKJ  *NG1P1+1
5568C
5569C
5570      CALL LWTTM_LMDAR4(PGA(1,1,1,IKJ),PGB(1,1,1,IKJ)
5571     2          , PABCU(1,1,IKU1),PABCU(1,1,IKN),ZTT1)
5572C
5573C
5574C
5575C*         2.2.6   DOWN BELOW
5576C                  ----------
5577C
5578 2260 CONTINUE
5579C
5580      ITT=1
5581      DO 227 JLK=1,IKJ
5582      IF(ITT.EQ.1) THEN
5583         ITT=2
5584      ELSE
5585         ITT=1
5586      ENDIF
5587      IJKL=IKM1-JLK
5588      IKU2=(IJKL-1)*NG1P1+1
5589C
5590C
5591      IF(ITT.EQ.1) THEN
5592         CALL LWTTM_LMDAR4(PGA(1,1,1,IJKL),PGB(1,1,1,IJKL)
5593     2             , PABCU(1,1,IKU2),PABCU(1,1,IKN),ZTT1)
5594      ELSE
5595         CALL LWTTM_LMDAR4(PGA(1,1,1,IJKL),PGB(1,1,1,IJKL)
5596     2             , PABCU(1,1,IKU2),PABCU(1,1,IKN),ZTT2)
5597      ENDIF
5598C
5599      DO 2265 JA = 1, KTRAER
5600      DO 2264 JL = 1, KDLON
5601      ZTT(JL,JA) = (ZTT1(JL,JA)+ZTT2(JL,JA))*0.5
5602 2264 CONTINUE
5603 2265 CONTINUE
5604C
5605      DO 2266 JL = 1, KDLON
5606      ZWW=PDBDT(JL,1,IJKL)*ZTT(JL,1)          *ZTT(JL,10)
5607     S   +PDBDT(JL,2,IJKL)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5608     S   +PDBDT(JL,3,IJKL)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5609     S   +PDBDT(JL,4,IJKL)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5610     S   +PDBDT(JL,5,IJKL)*ZTT(JL,3)          *ZTT(JL,14)
5611     S   +PDBDT(JL,6,IJKL)*ZTT(JL,6)          *ZTT(JL,15)
5612      ZGLAYU(JL)=ZWW
5613      ZDZXMG=ZGLAYU(JL)
5614      PDISU(JL,JK)=PDISU(JL,JK)+ZDZXMG
5615      PCNTRB(JL,JK,IJKL)=ZDZXMG
5616 2266 CONTINUE
5617C
5618C
5619 227  CONTINUE
5620 228  CONTINUE
5621C
5622      RETURN
5623      END
5624      SUBROUTINE LWVN_LMDAR4(KUAER,KTRAER
5625     R  , PABCU,PDBSL,PGA,PGB
5626     S  , PADJD,PADJU,PCNTRB,PDBDT)
5627       USE dimphy
5628      IMPLICIT none
5629cym#include "dimensions.h"
5630cym#include "dimphy.h"
5631cym#include "raddim.h"
5632#include "raddimlw.h"
5633C
5634C-----------------------------------------------------------------------
5635C     PURPOSE.
5636C     --------
5637C           CARRIES OUT THE VERTICAL INTEGRATION ON NEARBY LAYERS
5638C           TO GIVE LONGWAVE FLUXES OR RADIANCES
5639C
5640C     METHOD.
5641C     -------
5642C
5643C          1. PERFORMS THE VERTICAL INTEGRATION CORRESPONDING TO THE
5644C     CONTRIBUTIONS OF THE ADJACENT LAYERS USING A GAUSSIAN QUADRATURE
5645C
5646C     REFERENCE.
5647C     ----------
5648C
5649C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
5650C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
5651C
5652C     AUTHOR.
5653C     -------
5654C        JEAN-JACQUES MORCRETTE  *ECMWF*
5655C
5656C     MODIFICATIONS.
5657C     --------------
5658C        ORIGINAL : 89-07-14
5659C-----------------------------------------------------------------------
5660C
5661C* ARGUMENTS:
5662C
5663      INTEGER KUAER,KTRAER
5664C
5665      REAL(KIND=8) PABCU(KDLON,NUA,3*KFLEV+1) ! ABSORBER AMOUNTS
5666      REAL(KIND=8) PDBSL(KDLON,Ninter,KFLEV*2) ! SUB-LAYER PLANCK FUNCTION GRADIENT
5667      REAL(KIND=8) PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5668      REAL(KIND=8) PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
5669C
5670      REAL(KIND=8) PADJD(KDLON,KFLEV+1) ! CONTRIBUTION OF ADJACENT LAYERS
5671      REAL(KIND=8) PADJU(KDLON,KFLEV+1) ! CONTRIBUTION OF ADJACENT LAYERS
5672      REAL(KIND=8) PCNTRB(KDLON,KFLEV+1,KFLEV+1) ! CLEAR-SKY ENERGY EXCHANGE MATRIX
5673      REAL(KIND=8) PDBDT(KDLON,Ninter,KFLEV) !  LAYER PLANCK FUNCTION GRADIENT
5674C
5675C* LOCAL ARRAYS:
5676C
5677      REAL(KIND=8) ZGLAYD(KDLON)
5678      REAL(KIND=8) ZGLAYU(KDLON)
5679      REAL(KIND=8) ZTT(KDLON,NTRA)
5680      REAL(KIND=8) ZTT1(KDLON,NTRA)
5681      REAL(KIND=8) ZTT2(KDLON,NTRA)
5682      REAL(KIND=8) ZUU(KDLON,NUA)
5683C
5684      INTEGER jk, jl, ja, im12, ind, inu, ixu, jg
5685      INTEGER ixd, ibs, idd, imu, jk1, jk2, jnu
5686      REAL(KIND=8) zwtr
5687c
5688C* Data Block:
5689c
5690      REAL(KIND=8) WG1(2)
5691      SAVE WG1
5692c$OMP THREADPRIVATE(WG1)
5693      DATA (WG1(jk),jk=1,2) /1.0, 1.0/
5694C-----------------------------------------------------------------------
5695C
5696C*         1.    INITIALIZATION
5697C                --------------
5698C
5699 100  CONTINUE
5700C
5701C*         1.1     INITIALIZE LAYER CONTRIBUTIONS
5702C                  ------------------------------
5703C
5704 110  CONTINUE
5705C
5706      DO 112 JK = 1 , KFLEV+1
5707      DO 111 JL = 1, KDLON
5708      PADJD(JL,JK) = 0.
5709      PADJU(JL,JK) = 0.
5710 111  CONTINUE
5711 112  CONTINUE
5712C
5713C*         1.2     INITIALIZE TRANSMISSION FUNCTIONS
5714C                  ---------------------------------
5715C
5716 120  CONTINUE
5717C
5718      DO 122 JA = 1 , NTRA
5719      DO 121 JL = 1, KDLON
5720      ZTT (JL,JA) = 1.0
5721      ZTT1(JL,JA) = 1.0
5722      ZTT2(JL,JA) = 1.0
5723 121  CONTINUE
5724 122  CONTINUE
5725C
5726      DO 124 JA = 1 , NUA
5727      DO 123 JL = 1, KDLON
5728      ZUU(JL,JA) = 0.
5729 123  CONTINUE
5730 124  CONTINUE
5731C
5732C     ------------------------------------------------------------------
5733C
5734C*         2.      VERTICAL INTEGRATION
5735C                  --------------------
5736C
5737 200  CONTINUE
5738C
5739C
5740C*         2.1     CONTRIBUTION FROM ADJACENT LAYERS
5741C                  ---------------------------------
5742C
5743 210  CONTINUE
5744C
5745      DO 215 JK = 1 , KFLEV
5746C
5747C*         2.1.1   DOWNWARD LAYERS
5748C                  ---------------
5749C
5750 2110 CONTINUE
5751C
5752      IM12 = 2 * (JK - 1)
5753      IND = (JK - 1) * NG1P1 + 1
5754      IXD = IND
5755      INU = JK * NG1P1 + 1
5756      IXU = IND
5757C
5758      DO 2111 JL = 1, KDLON
5759      ZGLAYD(JL) = 0.
5760      ZGLAYU(JL) = 0.
5761 2111 CONTINUE
5762C
5763      DO 213 JG = 1 , NG1
5764      IBS = IM12 + JG
5765      IDD = IXD + JG
5766      DO 2113 JA = 1 , KUAER
5767      DO 2112 JL = 1, KDLON
5768      ZUU(JL,JA) = PABCU(JL,JA,IND) - PABCU(JL,JA,IDD)
5769 2112 CONTINUE
5770 2113 CONTINUE
5771C
5772C
5773      CALL LWTT_LMDAR4(PGA(1,1,1,JK), PGB(1,1,1,JK), ZUU, ZTT)
5774C
5775      DO 2114 JL = 1, KDLON
5776      ZWTR=PDBSL(JL,1,IBS)*ZTT(JL,1)          *ZTT(JL,10)
5777     S    +PDBSL(JL,2,IBS)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5778     S    +PDBSL(JL,3,IBS)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5779     S    +PDBSL(JL,4,IBS)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5780     S    +PDBSL(JL,5,IBS)*ZTT(JL,3)          *ZTT(JL,14)
5781     S    +PDBSL(JL,6,IBS)*ZTT(JL,6)          *ZTT(JL,15)
5782      ZGLAYD(JL)=ZGLAYD(JL)+ZWTR*WG1(JG)
5783 2114 CONTINUE
5784C
5785C*         2.1.2   DOWNWARD LAYERS
5786C                  ---------------
5787C
5788 2120 CONTINUE
5789C
5790      IMU = IXU + JG
5791      DO 2122 JA = 1 , KUAER
5792      DO 2121 JL = 1, KDLON
5793      ZUU(JL,JA) = PABCU(JL,JA,IMU) - PABCU(JL,JA,INU)
5794 2121 CONTINUE
5795 2122 CONTINUE
5796C
5797C
5798      CALL LWTT_LMDAR4(PGA(1,1,1,JK), PGB(1,1,1,JK), ZUU, ZTT)
5799C
5800      DO 2123 JL = 1, KDLON
5801      ZWTR=PDBSL(JL,1,IBS)*ZTT(JL,1)          *ZTT(JL,10)
5802     S    +PDBSL(JL,2,IBS)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
5803     S    +PDBSL(JL,3,IBS)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
5804     S    +PDBSL(JL,4,IBS)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
5805     S    +PDBSL(JL,5,IBS)*ZTT(JL,3)          *ZTT(JL,14)
5806     S    +PDBSL(JL,6,IBS)*ZTT(JL,6)          *ZTT(JL,15)
5807      ZGLAYU(JL)=ZGLAYU(JL)+ZWTR*WG1(JG)
5808 2123 CONTINUE
5809C
5810 213  CONTINUE
5811C
5812      DO 214 JL = 1, KDLON
5813      PADJD(JL,JK) = ZGLAYD(JL)
5814      PCNTRB(JL,JK,JK+1) = ZGLAYD(JL)
5815      PADJU(JL,JK+1) = ZGLAYU(JL)
5816      PCNTRB(JL,JK+1,JK) = ZGLAYU(JL)
5817      PCNTRB(JL,JK  ,JK) = 0.0
5818 214  CONTINUE
5819C
5820 215  CONTINUE
5821C
5822      DO 218 JK = 1 , KFLEV
5823      JK2 = 2 * JK
5824      JK1 = JK2 - 1
5825      DO 217 JNU = 1 , Ninter
5826      DO 216 JL = 1, KDLON
5827      PDBDT(JL,JNU,JK) = PDBSL(JL,JNU,JK1) + PDBSL(JL,JNU,JK2)
5828 216  CONTINUE
5829 217  CONTINUE
5830 218  CONTINUE
5831C
5832      RETURN
5833C
5834      END
5835      SUBROUTINE LWTT_LMDAR4(PGA,PGB,PUU, PTT)
5836       USE dimphy
5837      IMPLICIT none
5838cym#include "dimensions.h"
5839cym#include "dimphy.h"
5840cym#include "raddim.h"
5841#include "raddimlw.h"
5842C
5843C-----------------------------------------------------------------------
5844C     PURPOSE.
5845C     --------
5846C           THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
5847C     ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN ALL SIX SPECTRAL
5848C     INTERVALS.
5849C
5850C     METHOD.
5851C     -------
5852C
5853C          1. TRANSMISSION FUNCTION BY H2O AND UNIFORMLY MIXED GASES ARE
5854C     COMPUTED USING PADE APPROXIMANTS AND HORNER'S ALGORITHM.
5855C          2. TRANSMISSION BY O3 IS EVALUATED WITH MALKMUS'S BAND MODEL.
5856C          3. TRANSMISSION BY H2O CONTINUUM AND AEROSOLS FOLLOW AN
5857C     A SIMPLE EXPONENTIAL DECREASE WITH ABSORBER AMOUNT.
5858C
5859C     REFERENCE.
5860C     ----------
5861C
5862C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
5863C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
5864C
5865C     AUTHOR.
5866C     -------
5867C        JEAN-JACQUES MORCRETTE  *ECMWF*
5868C
5869C     MODIFICATIONS.
5870C     --------------
5871C        ORIGINAL : 88-12-15
5872C
5873C-----------------------------------------------------------------------
5874      REAL(KIND=8) O1H, O2H
5875      PARAMETER (O1H=2230.)
5876      PARAMETER (O2H=100.)
5877      REAL(KIND=8) RPIALF0
5878      PARAMETER (RPIALF0=2.0)
5879C
5880C* ARGUMENTS:
5881C
5882      REAL(KIND=8) PUU(KDLON,NUA)
5883      REAL(KIND=8) PTT(KDLON,NTRA)
5884      REAL(KIND=8) PGA(KDLON,8,2)
5885      REAL(KIND=8) PGB(KDLON,8,2)
5886C
5887C* LOCAL VARIABLES:
5888C
5889      REAL(KIND=8) zz, zxd, zxn
5890      REAL(KIND=8) zpu, zpu10, zpu11, zpu12, zpu13
5891      REAL(KIND=8) zeu, zeu10, zeu11, zeu12, zeu13
5892      REAL(KIND=8) zx, zy, zsq1, zsq2, zvxy, zuxy
5893      REAL(KIND=8) zaercn, zto1, zto2, zxch4, zych4, zxn2o, zyn2o
5894      REAL(KIND=8) zsqn21, zodn21, zsqh42, zodh42
5895      REAL(KIND=8) zsqh41, zodh41, zsqn22, zodn22, zttf11, zttf12
5896      REAL(KIND=8) zuu11, zuu12, za11, za12
5897      INTEGER jl, ja
5898C     ------------------------------------------------------------------
5899C
5900C*         1.     HORNER'S ALGORITHM FOR H2O AND CO2 TRANSMISSION
5901C                 -----------------------------------------------
5902C
5903 100  CONTINUE
5904C
5905C
5906      DO 130 JA = 1 , 8
5907      DO 120 JL = 1, KDLON
5908      ZZ      =SQRT(PUU(JL,JA))
5909c     ZXD(JL,1)=PGB( JL, 1,1) + ZZ(JL, 1)*(PGB( JL, 1,2) + ZZ(JL, 1))
5910c     ZXN(JL,1)=PGA( JL, 1,1) + ZZ(JL, 1)*(PGA( JL, 1,2) )
5911c     PTT(JL,1)=ZXN(JL,1)/ZXD(JL,1)
5912      ZXD      =PGB( JL,JA,1) + ZZ       *(PGB( JL,JA,2) + ZZ       )
5913      ZXN      =PGA( JL,JA,1) + ZZ       *(PGA( JL,JA,2) )
5914      PTT(JL,JA)=ZXN      /ZXD
5915  120 CONTINUE
5916  130 CONTINUE
5917C
5918C     ------------------------------------------------------------------
5919C
5920C*         2.     CONTINUUM, OZONE AND AEROSOL TRANSMISSION FUNCTIONS
5921C                 ---------------------------------------------------
5922C
5923 200  CONTINUE
5924C
5925      DO 201 JL = 1, KDLON
5926      PTT(JL, 9) = PTT(JL, 8)
5927C
5928C-  CONTINUUM ABSORPTION: E- AND P-TYPE
5929C
5930      ZPU   = 0.002 * PUU(JL,10)
5931      ZPU10 = 112. * ZPU
5932      ZPU11 = 6.25 * ZPU
5933      ZPU12 = 5.00 * ZPU
5934      ZPU13 = 80.0 * ZPU
5935      ZEU   =  PUU(JL,11)
5936      ZEU10 =  12. * ZEU
5937      ZEU11 = 6.25 * ZEU
5938      ZEU12 = 5.00 * ZEU
5939      ZEU13 = 80.0 * ZEU
5940C
5941C-  OZONE ABSORPTION
5942C
5943      ZX = PUU(JL,12)
5944      ZY = PUU(JL,13)
5945      ZUXY = 4. * ZX * ZX / (RPIALF0 * ZY)
5946      ZSQ1 = SQRT(1. + O1H * ZUXY ) - 1.
5947      ZSQ2 = SQRT(1. + O2H * ZUXY ) - 1.
5948      ZVXY = RPIALF0 * ZY / (2. * ZX)
5949      ZAERCN = PUU(JL,17) + ZEU12 + ZPU12
5950      ZTO1 = EXP( - ZVXY * ZSQ1 - ZAERCN )
5951      ZTO2 = EXP( - ZVXY * ZSQ2 - ZAERCN )
5952C
5953C-- TRACE GASES (CH4, N2O, CFC-11, CFC-12)
5954C
5955C* CH4 IN INTERVAL 800-970 + 1110-1250 CM-1
5956C
5957c     NEXOTIC=1
5958c     IF (NEXOTIC.EQ.1) THEN
5959      ZXCH4 = PUU(JL,19)
5960      ZYCH4 = PUU(JL,20)
5961      ZUXY = 4. * ZXCH4*ZXCH4/(0.103*ZYCH4)
5962      ZSQH41 = SQRT(1. + 33.7 * ZUXY) - 1.
5963      ZVXY = 0.103 * ZYCH4 / (2. * ZXCH4)
5964      ZODH41 = ZVXY * ZSQH41
5965C
5966C* N2O IN INTERVAL 800-970 + 1110-1250 CM-1
5967C
5968      ZXN2O = PUU(JL,21)
5969      ZYN2O = PUU(JL,22)
5970      ZUXY = 4. * ZXN2O*ZXN2O/(0.416*ZYN2O)
5971      ZSQN21 = SQRT(1. + 21.3 * ZUXY) - 1.
5972      ZVXY = 0.416 * ZYN2O / (2. * ZXN2O)
5973      ZODN21 = ZVXY * ZSQN21
5974C
5975C* CH4 IN INTERVAL 1250-1450 + 1880-2820 CM-1
5976C
5977      ZUXY = 4. * ZXCH4*ZXCH4/(0.113*ZYCH4)
5978      ZSQH42 = SQRT(1. + 400. * ZUXY) - 1.
5979      ZVXY = 0.113 * ZYCH4 / (2. * ZXCH4)
5980      ZODH42 = ZVXY * ZSQH42
5981C
5982C* N2O IN INTERVAL 1250-1450 + 1880-2820 CM-1
5983C
5984      ZUXY = 4. * ZXN2O*ZXN2O/(0.197*ZYN2O)
5985      ZSQN22 = SQRT(1. + 2000. * ZUXY) - 1.
5986      ZVXY = 0.197 * ZYN2O / (2. * ZXN2O)
5987      ZODN22 = ZVXY * ZSQN22
5988C
5989C* CFC-11 IN INTERVAL 800-970 + 1110-1250 CM-1
5990C
5991      ZA11 = 2. * PUU(JL,23) * 4.404E+05
5992      ZTTF11 = 1. - ZA11 * 0.003225
5993C
5994C* CFC-12 IN INTERVAL 800-970 + 1110-1250 CM-1
5995C
5996      ZA12 = 2. * PUU(JL,24) * 6.7435E+05
5997      ZTTF12 = 1. - ZA12 * 0.003225
5998C
5999      ZUU11 = - PUU(JL,15) - ZEU10 - ZPU10
6000      ZUU12 = - PUU(JL,16) - ZEU11 - ZPU11 - ZODH41 - ZODN21
6001      PTT(JL,10) = EXP( - PUU(JL,14) )
6002      PTT(JL,11) = EXP( ZUU11 )
6003      PTT(JL,12) = EXP( ZUU12 ) * ZTTF11 * ZTTF12
6004      PTT(JL,13) = 0.7554 * ZTO1 + 0.2446 * ZTO2
6005      PTT(JL,14) = PTT(JL,10) * EXP( - ZEU13 - ZPU13 )
6006      PTT(JL,15) = EXP ( - PUU(JL,14) - ZODH42 - ZODN22 )
6007 201  CONTINUE
6008C
6009      RETURN
6010      END
6011      SUBROUTINE LWTTM_LMDAR4(PGA,PGB,PUU1,PUU2, PTT)
6012      USE dimphy
6013      IMPLICIT none
6014cym#include "dimensions.h"
6015cym#include "dimphy.h"
6016cym#include "raddim.h"
6017#include "raddimlw.h"
6018C
6019C     ------------------------------------------------------------------
6020C     PURPOSE.
6021C     --------
6022C           THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
6023C     ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN ALL SIX SPECTRAL
6024C     INTERVALS.
6025C
6026C     METHOD.
6027C     -------
6028C
6029C          1. TRANSMISSION FUNCTION BY H2O AND UNIFORMLY MIXED GASES ARE
6030C     COMPUTED USING PADE APPROXIMANTS AND HORNER'S ALGORITHM.
6031C          2. TRANSMISSION BY O3 IS EVALUATED WITH MALKMUS'S BAND MODEL.
6032C          3. TRANSMISSION BY H2O CONTINUUM AND AEROSOLS FOLLOW AN
6033C     A SIMPLE EXPONENTIAL DECREASE WITH ABSORBER AMOUNT.
6034C
6035C     REFERENCE.
6036C     ----------
6037C
6038C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
6039C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
6040C
6041C     AUTHOR.
6042C     -------
6043C        JEAN-JACQUES MORCRETTE  *ECMWF*
6044C
6045C     MODIFICATIONS.
6046C     --------------
6047C        ORIGINAL : 88-12-15
6048C
6049C-----------------------------------------------------------------------
6050      REAL(KIND=8) O1H, O2H
6051      PARAMETER (O1H=2230.)
6052      PARAMETER (O2H=100.)
6053      REAL(KIND=8) RPIALF0
6054      PARAMETER (RPIALF0=2.0)
6055C
6056C* ARGUMENTS:
6057C
6058      REAL(KIND=8) PGA(KDLON,8,2) ! PADE APPROXIMANTS
6059      REAL(KIND=8) PGB(KDLON,8,2) ! PADE APPROXIMANTS
6060      REAL(KIND=8) PUU1(KDLON,NUA) ! ABSORBER AMOUNTS FROM TOP TO LEVEL 1
6061      REAL(KIND=8) PUU2(KDLON,NUA) ! ABSORBER AMOUNTS FROM TOP TO LEVEL 2
6062      REAL(KIND=8) PTT(KDLON,NTRA) ! TRANSMISSION FUNCTIONS
6063C
6064C* LOCAL VARIABLES:
6065C
6066      INTEGER ja, jl
6067      REAL(KIND=8) zz, zxd, zxn
6068      REAL(KIND=8) zpu, zpu10, zpu11, zpu12, zpu13
6069      REAL(KIND=8) zeu, zeu10, zeu11, zeu12, zeu13
6070      REAL(KIND=8) zx, zy, zuxy, zsq1, zsq2, zvxy, zaercn, zto1, zto2
6071      REAL(KIND=8) zxch4, zych4, zsqh41, zodh41
6072      REAL(KIND=8) zxn2o, zyn2o, zsqn21, zodn21, zsqh42, zodh42
6073      REAL(KIND=8) zsqn22, zodn22, za11, zttf11, za12, zttf12
6074      REAL(KIND=8) zuu11, zuu12
6075C     ------------------------------------------------------------------
6076C
6077C*         1.     HORNER'S ALGORITHM FOR H2O AND CO2 TRANSMISSION
6078C                 -----------------------------------------------
6079C
6080 100  CONTINUE
6081C
6082C
6083      DO 130 JA = 1 , 8
6084      DO 120 JL = 1, KDLON
6085      ZZ      =SQRT(PUU1(JL,JA) - PUU2(JL,JA))
6086      ZXD      =PGB( JL,JA,1) + ZZ       *(PGB( JL,JA,2) + ZZ       )
6087      ZXN      =PGA( JL,JA,1) + ZZ       *(PGA( JL,JA,2) )
6088      PTT(JL,JA)=ZXN      /ZXD
6089  120 CONTINUE
6090  130 CONTINUE
6091C
6092C     ------------------------------------------------------------------
6093C
6094C*         2.     CONTINUUM, OZONE AND AEROSOL TRANSMISSION FUNCTIONS
6095C                 ---------------------------------------------------
6096C
6097 200  CONTINUE
6098C
6099      DO 201 JL = 1, KDLON
6100      PTT(JL, 9) = PTT(JL, 8)
6101C
6102C-  CONTINUUM ABSORPTION: E- AND P-TYPE
6103C
6104      ZPU   = 0.002 * (PUU1(JL,10) - PUU2(JL,10))
6105      ZPU10 = 112. * ZPU
6106      ZPU11 = 6.25 * ZPU
6107      ZPU12 = 5.00 * ZPU
6108      ZPU13 = 80.0 * ZPU
6109      ZEU   = (PUU1(JL,11) - PUU2(JL,11))
6110      ZEU10 =  12. * ZEU
6111      ZEU11 = 6.25 * ZEU
6112      ZEU12 = 5.00 * ZEU
6113      ZEU13 = 80.0 * ZEU
6114C
6115C-  OZONE ABSORPTION
6116C
6117      ZX = (PUU1(JL,12) - PUU2(JL,12))
6118      ZY = (PUU1(JL,13) - PUU2(JL,13))
6119      ZUXY = 4. * ZX * ZX / (RPIALF0 * ZY)
6120      ZSQ1 = SQRT(1. + O1H * ZUXY ) - 1.
6121      ZSQ2 = SQRT(1. + O2H * ZUXY ) - 1.
6122      ZVXY = RPIALF0 * ZY / (2. * ZX)
6123      ZAERCN = (PUU1(JL,17) -PUU2(JL,17)) + ZEU12 + ZPU12
6124      ZTO1 = EXP( - ZVXY * ZSQ1 - ZAERCN )
6125      ZTO2 = EXP( - ZVXY * ZSQ2 - ZAERCN )
6126C
6127C-- TRACE GASES (CH4, N2O, CFC-11, CFC-12)
6128C
6129C* CH4 IN INTERVAL 800-970 + 1110-1250 CM-1
6130C
6131      ZXCH4 = (PUU1(JL,19) - PUU2(JL,19))
6132      ZYCH4 = (PUU1(JL,20) - PUU2(JL,20))
6133      ZUXY = 4. * ZXCH4*ZXCH4/(0.103*ZYCH4)
6134      ZSQH41 = SQRT(1. + 33.7 * ZUXY) - 1.
6135      ZVXY = 0.103 * ZYCH4 / (2. * ZXCH4)
6136      ZODH41 = ZVXY * ZSQH41
6137C
6138C* N2O IN INTERVAL 800-970 + 1110-1250 CM-1
6139C
6140      ZXN2O = (PUU1(JL,21) - PUU2(JL,21))
6141      ZYN2O = (PUU1(JL,22) - PUU2(JL,22))
6142      ZUXY = 4. * ZXN2O*ZXN2O/(0.416*ZYN2O)
6143      ZSQN21 = SQRT(1. + 21.3 * ZUXY) - 1.
6144      ZVXY = 0.416 * ZYN2O / (2. * ZXN2O)
6145      ZODN21 = ZVXY * ZSQN21
6146C
6147C* CH4 IN INTERVAL 1250-1450 + 1880-2820 CM-1
6148C
6149      ZUXY = 4. * ZXCH4*ZXCH4/(0.113*ZYCH4)
6150      ZSQH42 = SQRT(1. + 400. * ZUXY) - 1.
6151      ZVXY = 0.113 * ZYCH4 / (2. * ZXCH4)
6152      ZODH42 = ZVXY * ZSQH42
6153C
6154C* N2O IN INTERVAL 1250-1450 + 1880-2820 CM-1
6155C
6156      ZUXY = 4. * ZXN2O*ZXN2O/(0.197*ZYN2O)
6157      ZSQN22 = SQRT(1. + 2000. * ZUXY) - 1.
6158      ZVXY = 0.197 * ZYN2O / (2. * ZXN2O)
6159      ZODN22 = ZVXY * ZSQN22
6160C
6161C* CFC-11 IN INTERVAL 800-970 + 1110-1250 CM-1
6162C
6163      ZA11 = (PUU1(JL,23) - PUU2(JL,23)) * 4.404E+05
6164      ZTTF11 = 1. - ZA11 * 0.003225
6165C
6166C* CFC-12 IN INTERVAL 800-970 + 1110-1250 CM-1
6167C
6168      ZA12 = (PUU1(JL,24) - PUU2(JL,24)) * 6.7435E+05
6169      ZTTF12 = 1. - ZA12 * 0.003225
6170C
6171      ZUU11 = - (PUU1(JL,15) - PUU2(JL,15)) - ZEU10 - ZPU10
6172      ZUU12 = - (PUU1(JL,16) - PUU2(JL,16)) - ZEU11 - ZPU11 -
6173     S         ZODH41 - ZODN21
6174      PTT(JL,10) = EXP( - (PUU1(JL,14)- PUU2(JL,14)) )
6175      PTT(JL,11) = EXP( ZUU11 )
6176      PTT(JL,12) = EXP( ZUU12 ) * ZTTF11 * ZTTF12
6177      PTT(JL,13) = 0.7554 * ZTO1 + 0.2446 * ZTO2
6178      PTT(JL,14) = PTT(JL,10) * EXP( - ZEU13 - ZPU13 )
6179      PTT(JL,15) = EXP ( - (PUU1(JL,14) - PUU2(JL,14)) - ZODH42-ZODN22 )
6180 201  CONTINUE
6181C
6182      RETURN
6183      END
Note: See TracBrowser for help on using the repository browser.