GCC Code Coverage Report


Directory: ./
File: phys/radiation_AR4.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 1467 0.0%
Branches: 0 734 0.0%

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