LMDZ
lwtt.F90
Go to the documentation of this file.
1 !OPTIONS XOPT(HSFUN)
2 SUBROUTINE lwtt ( KIDIA, KFDIA, KLON, PGA , PGB, PUU , PTT )
3 
4 !**** *LWTT* - LONGWAVE TRANSMISSION FUNCTIONS
5 
6 ! PURPOSE.
7 ! --------
8 ! THIS ROUTINE COMPUTES THE TRANSMISSION FUNCTIONS FOR ALL THE
9 ! ABSORBERS (H2O, UNIFORMLY MIXED GASES, AND O3) IN ALL SIX SPECTRAL
10 ! INTERVALS.
11 
12 !** INTERFACE.
13 ! ----------
14 ! *LWTT* IS CALLED FROM *LWVN*, *LWVD*, *LWVB*
15 
16 
17 ! EXPLICIT ARGUMENTS :
18 ! --------------------
19 ! ==== INPUTS ===
20 ! KND : ; WEIGHTING INDEX
21 ! PUU : (KLON,NUA) ; ABSORBER AMOUNTS
22 ! ==== OUTPUTS ===
23 ! PTT : (KLON,NTRA) ; TRANSMISSION FUNCTIONS
24 
25 ! IMPLICIT ARGUMENTS : NONE
26 ! --------------------
27 
28 ! METHOD.
29 ! -------
30 
31 ! 1. TRANSMISSION FUNCTION BY H2O AND UNIFORMLY MIXED GASES ARE
32 ! COMPUTED USING PADE APPROXIMANTS AND HORNER'S ALGORITHM.
33 ! 2. TRANSMISSION BY O3 IS EVALUATED WITH MALKMUS'S BAND MODEL.
34 ! 3. TRANSMISSION BY H2O CONTINUUM AND AEROSOLS FOLLOW AN
35 ! A SIMPLE EXPONENTIAL DECREASE WITH ABSORBER AMOUNT.
36 
37 ! EXTERNALS.
38 ! ----------
39 
40 ! NONE
41 
42 ! REFERENCE.
43 ! ----------
44 
45 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
46 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
47 
48 ! AUTHOR.
49 ! -------
50 ! JEAN-JACQUES MORCRETTE *ECMWF*
51 
52 ! MODIFICATIONS.
53 ! --------------
54 ! ORIGINAL : 88-12-15
55 ! 97-04-18 JJ Morcrette Revised continuum
56 
57 !-----------------------------------------------------------------------
58 
59 #include "tsmbkind.h"
60 
61 USE yoelw , ONLY : ntra ,nua ,rptype ,retype ,&
62  &ro1h ,ro2h ,rpialf0
63 
64 
65 IMPLICIT NONE
66 
67 
68 ! DUMMY INTEGER SCALARS
69 integer_m :: kfdia
70 integer_m :: kidia
71 integer_m :: klon
72 
73 
74 
75 ! ------------------------------------------------------------------
76 
77 !* 0.1 ARGUMENTS
78 ! ---------
79 
80 real_b :: puu(klon,nua), ptt(klon,ntra), pga(klon,8,2), pgb(klon,8,2)
81 
82 ! LOCAL INTEGER SCALARS
83 integer_m :: ja, jl
84 
85 ! LOCAL REAL SCALARS
86 real_b :: za11, za12, zaercn, zeu10, zeu11, zeu12,&
87  &zeu13, zodh41, zodh42, zodn21, zodn22, zpu10, &
88  &zpu11, zpu12, zpu13, zsq1, zsq2, zsqh41, &
89  &zsqh42, zsqn21, zsqn22, zto1, zto2, zttf11, &
90  &zttf12, zuu11, zuu12, zuxy, zvxy, zx, zxch4, &
91  &zxd, zxn, zxn2o, zy, zych4, zyn2o, zz
92 
93 
94 ! ------------------------------------------------------------------
95 
96 !* 0.2 LOCAL ARRAYS
97 ! ------------
98 
99 ! ------------------------------------------------------------------
100 !DIR$ VFUNCTION SQRTHF
101 
102 !* 1. HORNER'S ALGORITHM FOR H2O AND CO2 TRANSMISSION
103 ! -----------------------------------------------
104 
105 DO ja = 1 , 8
106  DO jl = kidia,kfdia
107  zz = sqrt(puu(jl,ja))
108  zxd = pgb( jl,ja,1) + zz* (pgb( jl,ja,2) + zz )
109  zxn = pga( jl,ja,1) + zz* (pga( jl,ja,2) )
110  ptt(jl,ja) = zxn / zxd
111  ENDDO
112 ENDDO
113 
114 DO jl = kidia,kfdia
115  ptt(jl,3)=max(ptt(jl,3),_zero_)
116 ENDDO
117 ! ------------------------------------------------------------------
118 
119 !* 2. CONTINUUM, OZONE AND AEROSOL TRANSMISSION FUNCTIONS
120 ! ---------------------------------------------------
121 
122 DO jl = kidia,kfdia
123  ptt(jl, 9) = ptt(jl, 8)
124 
125 !- CONTINUUM ABSORPTION: E- AND P-TYPE (from Giorgetta and Wild, 1997)
126 
127  zpu10 = rptype(1) * puu(jl,10)
128  zpu11 = rptype(2) * puu(jl,10)
129  zpu12 = rptype(3) * puu(jl,10)
130  zpu13 = rptype(4) * puu(jl,10)
131  zeu10 = retype(1) * puu(jl,11)
132  zeu11 = retype(2) * puu(jl,11)
133  zeu12 = retype(3) * puu(jl,11)
134  zeu13 = retype(4) * puu(jl,11)
135 
136 !- OZONE ABSORPTION
137 
138  zx = puu(jl,12)
139  zy = puu(jl,13)
140  zuxy = 4._jprb * zx * zx / (rpialf0 * zy)
141  zsq1 = sqrt(_one_ + ro1h * zuxy ) - _one_
142  zsq2 = sqrt(_one_ + ro2h * zuxy ) - _one_
143  zvxy = rpialf0 * zy / (_two_ * zx)
144  zaercn = puu(jl,17) + zeu12 + zpu12
145  zto1 = exp( - zvxy * zsq1 - zaercn )
146  zto2 = exp( - zvxy * zsq2 - zaercn )
147 
148 !-- TRACE GASES (CH4, N2O, CFC-11, CFC-12)
149 
150 !* CH4 IN INTERVAL 800-970 + 1110-1250 CM-1
151 
152  zxch4 = puu(jl,19)
153  zych4 = puu(jl,20)
154  zuxy = 4._jprb * zxch4*zxch4/(0.103_jprb*zych4)
155  zsqh41 = sqrt(_one_ + 33.7_jprb * zuxy) - _one_
156  zvxy = 0.103_jprb * zych4 / (_two_ * zxch4)
157  zodh41 = zvxy * zsqh41
158 
159 !* N2O IN INTERVAL 800-970 + 1110-1250 CM-1
160 
161  zxn2o = puu(jl,21)
162  zyn2o = puu(jl,22)
163  zuxy = 4._jprb * zxn2o*zxn2o/(0.416_jprb*zyn2o)
164  zsqn21 = sqrt(_one_ + 21.3_jprb * zuxy) - _one_
165  zvxy = 0.416_jprb * zyn2o / (_two_ * zxn2o)
166  zodn21 = zvxy * zsqn21
167 
168 !* CH4 IN INTERVAL 1250-1450 + 1880-2820 CM-1
169 
170  zuxy = 4._jprb * zxch4*zxch4/(0.113_jprb*zych4)
171  zsqh42 = sqrt(_one_ + 400._jprb * zuxy) - _one_
172  zvxy = 0.113_jprb * zych4 / (_two_ * zxch4)
173  zodh42 = zvxy * zsqh42
174 
175 !* N2O IN INTERVAL 1250-1450 + 1880-2820 CM-1
176 
177  zuxy = 4._jprb * zxn2o*zxn2o/(0.197_jprb*zyn2o)
178  zsqn22 = sqrt(_one_ + 2000._jprb * zuxy) - _one_
179  zvxy = 0.197_jprb * zyn2o / (_two_ * zxn2o)
180  zodn22 = zvxy * zsqn22
181 
182 !* CFC-11 IN INTERVAL 800-970 + 1110-1250 CM-1
183 
184  za11 = _two_ * puu(jl,23) * 4.404e+05_jprb
185  zttf11 = _one_ - za11 * 0.003225_jprb
186 
187 !* CFC-12 IN INTERVAL 800-970 + 1110-1250 CM-1
188 
189  za12 = _two_ * puu(jl,24) * 6.7435e+05_jprb
190  zttf12 = _one_ - za12 * 0.003225_jprb
191 
192  zuu11 = - puu(jl,15) - zeu10 - zpu10
193  zuu12 = - puu(jl,16) - zeu11 - zpu11 - zodh41 - zodn21
194  ptt(jl,10) = exp( - puu(jl,14) )
195  ptt(jl,11) = exp( zuu11 )
196  ptt(jl,12) = exp( zuu12 ) * zttf11 * zttf12
197  ptt(jl,13) = 0.7554_jprb * zto1 + 0.2446_jprb * zto2
198  ptt(jl,14) = ptt(jl,10) * exp( - zeu13 - zpu13 )
199  ptt(jl,15) = exp( - puu(jl,14) - zodh42 - zodn22 )
200 
201 ENDDO
202 
203 RETURN
204 END SUBROUTINE lwtt
Definition: yoelw.F90:1
integer, save kidia
Definition: dimphy.F90:6
integer, save klon
Definition: dimphy.F90:3
integer(kind=jpim) nua
Definition: yoelw.F90:19
real(kind=jprb), dimension(4) retype
Definition: yoelw.F90:27
integer, save kfdia
Definition: dimphy.F90:5
real(kind=jprb) rpialf0
Definition: yoelw.F90:32
real(kind=jprb), dimension(4) rptype
Definition: yoelw.F90:26
subroutine lwtt(KIDIA, KFDIA, KLON, PGA, PGB, PUU, PTT)
Definition: lwtt.F90:3
real(kind=jprb) ro1h
Definition: yoelw.F90:29
integer(kind=jpim) ntra
Definition: yoelw.F90:18
real(kind=jprb) ro2h
Definition: yoelw.F90:30