1 |
cIM ctes ds clesphys.h SUBROUTINE LWU(RCO2, RCH4, RN2O, RCFC11, RCFC12, |
module LWU_m |
2 |
SUBROUTINE LWU( |
|
3 |
S PAER,PDP,PPMB,PPSOL,POZ,PTAVE,PVIEW,PWV, |
IMPLICIT none |
4 |
S PABCU) |
|
5 |
use dimens_m |
contains |
6 |
use dimphy |
|
7 |
use clesphys |
SUBROUTINE LWU(PAER, PDP, PPMB, POZ, PTAVE, PVIEW, PWV, PABCU) |
8 |
use YOMCST |
|
9 |
use raddim |
! Purpose. Computes absorber amounts including pressure and |
10 |
use radepsi |
! temperature effects. |
11 |
use radopt |
|
12 |
use raddimlw |
! Method. Computes the pressure and temperature weighted amounts |
13 |
IMPLICIT none |
! of absorbers. |
14 |
C |
|
15 |
C PURPOSE. |
! Reference. See radiation's part of the model's documentation and |
16 |
C -------- |
! ECMWF research department documentation of the IFS. |
17 |
C COMPUTES ABSORBER AMOUNTS INCLUDING PRESSURE AND |
|
18 |
C TEMPERATURE EFFECTS |
! Author. Jean-Jacques Morcrette, ECMWF. |
19 |
C |
|
20 |
C METHOD. |
! Modifications. |
21 |
C ------- |
! Original : 89-07-14 |
22 |
C |
! Voigt lines (loop 404 modified) - JJM & PhD - 01/96 |
23 |
C 1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF |
|
24 |
C ABSORBERS. |
USE clesphys, ONLY: rcfc11, rcfc12, rch4, rco2, rn2o |
25 |
C |
USE suphec_m, ONLY: rg |
26 |
C |
USE raddim, ONLY: kdlon, kflev |
27 |
C REFERENCE. |
USE radepsi, ONLY: zepsco, zepscq |
28 |
C ---------- |
USE radopt, ONLY: levoigt |
29 |
C |
USE raddimlw, ONLY: ng1, ng1p1, ninter, nua |
30 |
C SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND |
|
31 |
C ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS |
! ARGUMENTS: |
32 |
C |
|
33 |
C AUTHOR. |
DOUBLE PRECISION PAER(KDLON, KFLEV, 5) |
34 |
C ------- |
DOUBLE PRECISION PDP(KDLON, KFLEV) |
35 |
C JEAN-JACQUES MORCRETTE *ECMWF* |
DOUBLE PRECISION PPMB(KDLON, KFLEV + 1) |
36 |
C |
DOUBLE PRECISION POZ(KDLON, KFLEV) |
37 |
C MODIFICATIONS. |
DOUBLE PRECISION PTAVE(KDLON, KFLEV) |
38 |
C -------------- |
DOUBLE PRECISION PVIEW(KDLON) |
39 |
C ORIGINAL : 89-07-14 |
DOUBLE PRECISION PWV(KDLON, KFLEV) |
40 |
C Voigt lines (loop 404 modified) - JJM & PhD - 01/96 |
|
41 |
C----------------------------------------------------------------------- |
DOUBLE PRECISION PABCU(KDLON, NUA, 3 * KFLEV + 1) |
42 |
C* ARGUMENTS: |
! effective absorber amounts |
43 |
cIM ctes ds clesphys.h |
|
44 |
c REAL*8 RCO2 |
! LOCAL VARIABLES: |
45 |
c REAL*8 RCH4, RN2O, RCFC11, RCFC12 |
|
46 |
REAL*8 PAER(KDLON,KFLEV,5) |
DOUBLE PRECISION ZABLY(KDLON, NUA, 3 * KFLEV + 1) |
47 |
REAL*8 PDP(KDLON,KFLEV) |
DOUBLE PRECISION ZDUC(KDLON, 3 * KFLEV + 1) |
48 |
REAL*8 PPMB(KDLON,KFLEV+1) |
DOUBLE PRECISION ZPHIO(KDLON) |
49 |
REAL*8 PPSOL(KDLON) |
DOUBLE PRECISION ZPSC2(KDLON) |
50 |
REAL*8 POZ(KDLON,KFLEV) |
DOUBLE PRECISION ZPSC3(KDLON) |
51 |
REAL*8 PTAVE(KDLON,KFLEV) |
DOUBLE PRECISION ZPSH1(KDLON) |
52 |
REAL*8 PVIEW(KDLON) |
DOUBLE PRECISION ZPSH2(KDLON) |
53 |
REAL*8 PWV(KDLON,KFLEV) |
DOUBLE PRECISION ZPSH3(KDLON) |
54 |
C |
DOUBLE PRECISION ZPSH4(KDLON) |
55 |
REAL*8 PABCU(KDLON,NUA,3*KFLEV+1) ! EFFECTIVE ABSORBER AMOUNTS |
DOUBLE PRECISION ZPSH5(KDLON) |
56 |
C |
DOUBLE PRECISION ZPSH6(KDLON) |
57 |
C----------------------------------------------------------------------- |
DOUBLE PRECISION ZPSIO(KDLON) |
58 |
C* LOCAL VARIABLES: |
DOUBLE PRECISION ZTCON(KDLON) |
59 |
REAL*8 ZABLY(KDLON,NUA,3*KFLEV+1) |
DOUBLE PRECISION ZPHM6(KDLON) |
60 |
REAL*8 ZDUC(KDLON,3*KFLEV+1) |
DOUBLE PRECISION ZPSM6(KDLON) |
61 |
REAL*8 ZPHIO(KDLON) |
DOUBLE PRECISION ZPHN6(KDLON) |
62 |
REAL*8 ZPSC2(KDLON) |
DOUBLE PRECISION ZPSN6(KDLON) |
63 |
REAL*8 ZPSC3(KDLON) |
DOUBLE PRECISION ZSSIG(KDLON, 3 * KFLEV + 1) |
64 |
REAL*8 ZPSH1(KDLON) |
DOUBLE PRECISION ZTAVI(KDLON) |
65 |
REAL*8 ZPSH2(KDLON) |
DOUBLE PRECISION ZUAER(KDLON, Ninter) |
66 |
REAL*8 ZPSH3(KDLON) |
DOUBLE PRECISION ZXOZ(KDLON) |
67 |
REAL*8 ZPSH4(KDLON) |
DOUBLE PRECISION ZXWV(KDLON) |
68 |
REAL*8 ZPSH5(KDLON) |
|
69 |
REAL*8 ZPSH6(KDLON) |
INTEGER jl, jk, jkj, jkjr, jkjp, ig1 |
70 |
REAL*8 ZPSIO(KDLON) |
INTEGER jki, jkip1, ja, jj |
71 |
REAL*8 ZTCON(KDLON) |
INTEGER jkl, jkp1, jkk, jkjpn |
72 |
REAL*8 ZPHM6(KDLON) |
INTEGER jae1, jae2, jae3, jae, jjpn |
73 |
REAL*8 ZPSM6(KDLON) |
INTEGER ir, jc, jcp1 |
74 |
REAL*8 ZPHN6(KDLON) |
DOUBLE PRECISION zdpm, zupm, zupmh2o, zupmco2, zupmo3, zu6, zup |
75 |
REAL*8 ZPSN6(KDLON) |
DOUBLE PRECISION zfppw, ztx, ztx2, zzably |
76 |
REAL*8 ZSSIG(KDLON,3*KFLEV+1) |
DOUBLE PRECISION zcah1, zcbh1, zcah2, zcbh2, zcah3, zcbh3 |
77 |
REAL*8 ZTAVI(KDLON) |
DOUBLE PRECISION zcah4, zcbh4, zcah5, zcbh5, zcah6, zcbh6 |
78 |
REAL*8 ZUAER(KDLON,Ninter) |
DOUBLE PRECISION zcac8, zcbc8 |
79 |
REAL*8 ZXOZ(KDLON) |
DOUBLE PRECISION zalup, zdiff |
80 |
REAL*8 ZXWV(KDLON) |
|
81 |
C |
DOUBLE PRECISION PVGCO2, PVGH2O, PVGO3 |
82 |
INTEGER jl, jk, jkj, jkjr, jkjp, ig1 |
|
83 |
INTEGER jki, jkip1, ja, jj |
DOUBLE PRECISION, PARAMETER:: R10E = 0.4342945 |
84 |
INTEGER jkl, jkp1, jkk, jkjpn |
! decimal / natural logarithm factor |
85 |
INTEGER jae1, jae2, jae3, jae, jjpn |
|
86 |
INTEGER ir, jc, jcp1 |
! Used Data Block: |
87 |
REAL*8 zdpm, zupm, zupmh2o, zupmco2, zupmo3, zu6, zup |
|
88 |
REAL*8 zfppw, ztx, ztx2, zzably |
DOUBLE PRECISION:: TREF = 250d0 |
89 |
REAL*8 zcah1, zcbh1, zcah2, zcbh2, zcah3, zcbh3 |
DOUBLE PRECISION:: RT1(2) = (/ - 0.577350269d0, 0.577350269d0/) |
90 |
REAL*8 zcah4, zcbh4, zcah5, zcbh5, zcah6, zcbh6 |
DOUBLE PRECISION RAER(5, 5) |
91 |
REAL*8 zcac8, zcbc8 |
DOUBLE PRECISION AT(8, 3), BT(8, 3) |
92 |
REAL*8 zalup, zdiff |
DOUBLE PRECISION:: OCT(4) = (/- 0.326D-3, - 0.102D-5, 0.137D-2, - 0.535D-5/) |
93 |
c |
|
94 |
REAL*8 PVGCO2, PVGH2O, PVGO3 |
DATA RAER / .038520, .037196, .040532, .054934, .038520, & |
95 |
C |
.12613, .18313, .10357, .064106, .126130, & |
96 |
REAL*8 R10E ! DECIMAL/NATURAL LOG.FACTOR |
.012579, .013649, .018652, .025181, .012579, & |
97 |
PARAMETER (R10E=0.4342945) |
.011890, .016142, .021105, .028908, .011890, & |
98 |
c |
.013792, .026810, .052203, .066338, .013792 / |
99 |
c Used Data Block: |
|
100 |
c |
DATA (AT(1, IR), IR = 1, 3) / 0.298199E-02, - .394023E-03, 0.319566E-04 / |
101 |
REAL*8 TREF |
DATA (BT(1, IR), IR = 1, 3) / - 0.106432E-04, 0.660324E-06, 0.174356E-06 / |
102 |
SAVE TREF |
DATA (AT(2, IR), IR = 1, 3) / 0.143676E-01, 0.366501E-02, -.160822E-02 / |
103 |
REAL*8 RT1(2) |
DATA (BT(2, IR), IR = 1, 3) / -0.553979E-04, - .101701E-04, 0.920868E-05 / |
104 |
SAVE RT1 |
DATA (AT(3, IR), IR = 1, 3) / 0.197861E-01, 0.315541E-02, - .174547E-02 / |
105 |
REAL*8 RAER(5,5) |
DATA (BT(3, IR), IR = 1, 3) / - 0.877012E-04, 0.513302E-04, 0.523138E-06 / |
106 |
SAVE RAER |
DATA (AT(4, IR), IR = 1, 3) / 0.289560E-01, - .208807E-02, - .121943E-02 / |
107 |
REAL*8 AT(8,3), BT(8,3) |
DATA (BT(4, IR), IR = 1, 3) / - 0.165960E-03, 0.157704E-03, - .146427E-04 / |
108 |
SAVE AT, BT |
DATA (AT(5, IR), IR = 1, 3) / 0.103800E-01, 0.436296E-02, - .161431E-02 / |
109 |
REAL*8 OCT(4) |
DATA (BT(5, IR), IR = 1, 3) / - .276744E-04, - .327381E-04, 0.127646E-04 / |
110 |
SAVE OCT |
DATA (AT(6, IR), IR = 1, 3) / 0.868859E-02, - .972752E-03, 0.000000E-00 / |
111 |
DATA TREF /250.0/ |
DATA (BT(6, IR), IR = 1, 3) / - .278412E-04, - .713940E-06, 0.117469E-05 / |
112 |
DATA (RT1(IG1),IG1=1,2) / -0.577350269, +0.577350269 / |
DATA (AT(7, IR), IR = 1, 3) / 0.250073E-03, 0.455875E-03, 0.109242E-03 / |
113 |
DATA RAER / .038520, .037196, .040532, .054934, .038520 |
DATA (BT(7, IR), IR = 1, 3) / 0.199846E-05, - .216313E-05, 0.175991E-06 / |
114 |
1 , .12613 , .18313 , .10357 , .064106, .126130 |
DATA (AT(8, IR), IR = 1, 3) / 0.307423E-01, 0.110879E-02, - .322172E-03 / |
115 |
2 , .012579, .013649, .018652, .025181, .012579 |
DATA (BT(8, IR), IR = 1, 3) / - 0.108482E-03, 0.258096E-05, - .814575E-06 / |
116 |
3 , .011890, .016142, .021105, .028908, .011890 |
|
117 |
4 , .013792, .026810, .052203, .066338, .013792 / |
!----------------------------------------------------------------------- |
118 |
DATA (AT(1,IR),IR=1,3) / |
|
119 |
S 0.298199E-02,-.394023E-03,0.319566E-04 / |
IF (LEVOIGT) THEN |
120 |
DATA (BT(1,IR),IR=1,3) / |
PVGCO2 = 60. |
121 |
S-0.106432E-04,0.660324E-06,0.174356E-06 / |
PVGH2O = 30. |
122 |
DATA (AT(2,IR),IR=1,3) / |
PVGO3 = 400. |
123 |
S 0.143676E-01,0.366501E-02,-.160822E-02 / |
ELSE |
124 |
DATA (BT(2,IR),IR=1,3) / |
PVGCO2 = 0. |
125 |
S-0.553979E-04,-.101701E-04,0.920868E-05 / |
PVGH2O = 0. |
126 |
DATA (AT(3,IR),IR=1,3) / |
PVGO3 = 0. |
127 |
S 0.197861E-01,0.315541E-02,-.174547E-02 / |
ENDIF |
128 |
DATA (BT(3,IR),IR=1,3) / |
|
129 |
S-0.877012E-04,0.513302E-04,0.523138E-06 / |
! 2. PRESSURE OVER GAUSS SUB-LEVELS |
130 |
DATA (AT(4,IR),IR=1,3) / |
|
131 |
S 0.289560E-01,-.208807E-02,-.121943E-02 / |
DO JL = 1, KDLON |
132 |
DATA (BT(4,IR),IR=1,3) / |
ZSSIG(JL, 1) = PPMB(JL, 1) * 100. |
133 |
S-0.165960E-03,0.157704E-03,-.146427E-04 / |
end DO |
134 |
DATA (AT(5,IR),IR=1,3) / |
|
135 |
S 0.103800E-01,0.436296E-02,-.161431E-02 / |
DO JK = 1, KFLEV |
136 |
DATA (BT(5,IR),IR=1,3) / |
JKJ = (JK - 1) * NG1P1 + 1 |
137 |
S -.276744E-04,-.327381E-04,0.127646E-04 / |
JKJR = JKJ |
138 |
DATA (AT(6,IR),IR=1,3) / |
JKJP = JKJ + NG1P1 |
139 |
S 0.868859E-02,-.972752E-03,0.000000E-00 / |
DO JL = 1, KDLON |
140 |
DATA (BT(6,IR),IR=1,3) / |
ZSSIG(JL, JKJP) = PPMB(JL, JK + 1) * 100. |
141 |
S -.278412E-04,-.713940E-06,0.117469E-05 / |
end DO |
142 |
DATA (AT(7,IR),IR=1,3) / |
DO IG1 = 1, NG1 |
143 |
S 0.250073E-03,0.455875E-03,0.109242E-03 / |
JKJ = JKJ + 1 |
144 |
DATA (BT(7,IR),IR=1,3) / |
DO JL = 1, KDLON |
145 |
S 0.199846E-05,-.216313E-05,0.175991E-06 / |
ZSSIG(JL, JKJ) = (ZSSIG(JL, JKJR) + ZSSIG(JL, JKJP)) * 0.5 & |
146 |
DATA (AT(8,IR),IR=1,3) / |
+ RT1(IG1) * (ZSSIG(JL, JKJP) - ZSSIG(JL, JKJR)) * 0.5 |
147 |
S 0.307423E-01,0.110879E-02,-.322172E-03 / |
end DO |
148 |
DATA (BT(8,IR),IR=1,3) / |
end DO |
149 |
S-0.108482E-03,0.258096E-05,-.814575E-06 / |
end DO |
150 |
c |
|
151 |
DATA OCT /-.326E-03, -.102E-05, .137E-02, -.535E-05/ |
! 4. PRESSURE THICKNESS AND MEAN PRESSURE OF SUB-LAYERS |
152 |
C----------------------------------------------------------------------- |
|
153 |
c |
DO JKI = 1, 3 * KFLEV |
154 |
IF (LEVOIGT) THEN |
JKIP1 = JKI + 1 |
155 |
PVGCO2= 60. |
DO JL = 1, KDLON |
156 |
PVGH2O= 30. |
ZABLY(JL, 5, JKI) = (ZSSIG(JL, JKI) + ZSSIG(JL, JKIP1)) * 0.5 |
157 |
PVGO3 =400. |
ZABLY(JL, 3, JKI) = (ZSSIG(JL, JKI) - ZSSIG(JL, JKIP1)) / (10. * RG) |
158 |
ELSE |
end DO |
159 |
PVGCO2= 0. |
end DO |
160 |
PVGH2O= 0. |
|
161 |
PVGO3 = 0. |
DO JK = 1, KFLEV |
162 |
ENDIF |
JKP1 = JK + 1 |
163 |
C |
JKL = KFLEV + 1 - JK |
164 |
C |
DO JL = 1, KDLON |
165 |
C* 2. PRESSURE OVER GAUSS SUB-LEVELS |
ZXWV(JL) = MAX(PWV(JL, JK), ZEPSCQ) |
166 |
C ------------------------------ |
ZXOZ(JL) = MAX(POZ(JL, JK) / PDP(JL, JK), ZEPSCO) |
167 |
C |
end DO |
168 |
200 CONTINUE |
JKJ = (JK - 1) * NG1P1 + 1 |
169 |
C |
JKJPN = JKJ + NG1 |
170 |
DO 201 JL = 1, KDLON |
DO JKK = JKJ, JKJPN |
171 |
ZSSIG(JL, 1 ) = PPMB(JL,1) * 100. |
DO JL = 1, KDLON |
172 |
201 CONTINUE |
ZDPM = ZABLY(JL, 3, JKK) |
173 |
C |
ZUPM = ZABLY(JL, 5, JKK) * ZDPM / 101325. |
174 |
DO 206 JK = 1 , KFLEV |
ZUPMCO2 = (ZABLY(JL, 5, JKK) + PVGCO2) * ZDPM / 101325. |
175 |
JKJ=(JK-1)*NG1P1+1 |
ZUPMH2O = (ZABLY(JL, 5, JKK) + PVGH2O) * ZDPM / 101325. |
176 |
JKJR = JKJ |
ZUPMO3 = (ZABLY(JL, 5, JKK) + PVGO3) * ZDPM / 101325. |
177 |
JKJP = JKJ + NG1P1 |
ZDUC(JL, JKK) = ZDPM |
178 |
DO 203 JL = 1, KDLON |
ZABLY(JL, 12, JKK) = ZXOZ(JL) * ZDPM |
179 |
ZSSIG(JL,JKJP)=PPMB(JL,JK+1)* 100. |
ZABLY(JL, 13, JKK) = ZXOZ(JL) * ZUPMO3 |
180 |
203 CONTINUE |
ZU6 = ZXWV(JL) * ZUPM |
181 |
DO 205 IG1=1,NG1 |
ZFPPW = 1.6078 * ZXWV(JL) / (1. + 0.608 * ZXWV(JL)) |
182 |
JKJ=JKJ+1 |
ZABLY(JL, 6, JKK) = ZXWV(JL) * ZUPMH2O |
183 |
DO 204 JL = 1, KDLON |
ZABLY(JL, 11, JKK) = ZU6 * ZFPPW |
184 |
ZSSIG(JL,JKJ)= (ZSSIG(JL,JKJR)+ZSSIG(JL,JKJP))*0.5 |
ZABLY(JL, 10, JKK) = ZU6 * (1. - ZFPPW) |
185 |
S + RT1(IG1) * (ZSSIG(JL,JKJP) - ZSSIG(JL,JKJR)) * 0.5 |
ZABLY(JL, 9, JKK) = RCO2 * ZUPMCO2 |
186 |
204 CONTINUE |
ZABLY(JL, 8, JKK) = RCO2 * ZDPM |
187 |
205 CONTINUE |
end DO |
188 |
206 CONTINUE |
end DO |
189 |
C |
end DO |
190 |
C----------------------------------------------------------------------- |
|
191 |
C |
! 5. CUMULATIVE ABSORBER AMOUNTS FROM TOP OF ATMOSPHERE |
192 |
C |
|
193 |
C* 4. PRESSURE THICKNESS AND MEAN PRESSURE OF SUB-LAYERS |
DO JA = 1, NUA |
194 |
C -------------------------------------------------- |
DO JL = 1, KDLON |
195 |
C |
PABCU(JL, JA, 3 * KFLEV + 1) = 0. |
196 |
400 CONTINUE |
end DO |
197 |
C |
end DO |
198 |
DO 402 JKI=1,3*KFLEV |
|
199 |
JKIP1=JKI+1 |
DO JK = 1, KFLEV |
200 |
DO 401 JL = 1, KDLON |
JJ = (JK - 1) * NG1P1 + 1 |
201 |
ZABLY(JL,5,JKI)=(ZSSIG(JL,JKI)+ZSSIG(JL,JKIP1))*0.5 |
JJPN = JJ + NG1 |
202 |
ZABLY(JL,3,JKI)=(ZSSIG(JL,JKI)-ZSSIG(JL,JKIP1)) |
JKL = KFLEV + 1 - JK |
203 |
S /(10.*RG) |
|
204 |
401 CONTINUE |
! 5.1 CUMULATIVE AEROSOL AMOUNTS FROM TOP OF ATMOSPHERE |
205 |
402 CONTINUE |
|
206 |
C |
JAE1 = 3 * KFLEV + 1 - JJ |
207 |
DO 406 JK = 1 , KFLEV |
JAE2 = 3 * KFLEV + 1 - (JJ + 1) |
208 |
JKP1=JK+1 |
JAE3 = 3 * KFLEV + 1 - JJPN |
209 |
JKL = KFLEV+1 - JK |
DO JAE = 1, 5 |
210 |
DO 403 JL = 1, KDLON |
DO JL = 1, KDLON |
211 |
ZXWV(JL) = MAX (PWV(JL,JK) , ZEPSCQ ) |
ZUAER(JL, JAE) = (RAER(JAE, 1) * PAER(JL, JKL, 1) & |
212 |
ZXOZ(JL) = MAX (POZ(JL,JK) / PDP(JL,JK) , ZEPSCO ) |
+ RAER(JAE, 2) * PAER(JL, JKL, 2) & |
213 |
403 CONTINUE |
+ RAER(JAE, 3) * PAER(JL, JKL, 3) & |
214 |
JKJ=(JK-1)*NG1P1+1 |
+ RAER(JAE, 4) * PAER(JL, JKL, 4) & |
215 |
JKJPN=JKJ+NG1 |
+ RAER(JAE, 5) * PAER(JL, JKL, 5)) & |
216 |
DO 405 JKK=JKJ,JKJPN |
/ (ZDUC(JL, JAE1) + ZDUC(JL, JAE2) + ZDUC(JL, JAE3)) |
217 |
DO 404 JL = 1, KDLON |
end DO |
218 |
ZDPM = ZABLY(JL,3,JKK) |
end DO |
219 |
ZUPM = ZABLY(JL,5,JKK) * ZDPM / 101325. |
|
220 |
ZUPMCO2 = ( ZABLY(JL,5,JKK) + PVGCO2 ) * ZDPM / 101325. |
! 5.2 INTRODUCES TEMPERATURE EFFECTS ON ABSORBER AMOUNTS |
221 |
ZUPMH2O = ( ZABLY(JL,5,JKK) + PVGH2O ) * ZDPM / 101325. |
|
222 |
ZUPMO3 = ( ZABLY(JL,5,JKK) + PVGO3 ) * ZDPM / 101325. |
DO JL = 1, KDLON |
223 |
ZDUC(JL,JKK) = ZDPM |
ZTAVI(JL) = PTAVE(JL, JKL) |
224 |
ZABLY(JL,12,JKK) = ZXOZ(JL) * ZDPM |
ZTCON(JL) = EXP(6.08 * (296. / ZTAVI(JL) - 1.)) |
225 |
ZABLY(JL,13,JKK) = ZXOZ(JL) * ZUPMO3 |
ZTX = ZTAVI(JL) - TREF |
226 |
ZU6 = ZXWV(JL) * ZUPM |
ZTX2 = ZTX * ZTX |
227 |
ZFPPW = 1.6078 * ZXWV(JL) / (1.+0.608*ZXWV(JL)) |
ZZABLY = ZABLY(JL, 6, JAE1) + ZABLY(JL, 6, JAE2) + ZABLY(JL, 6, JAE3) |
228 |
ZABLY(JL,6,JKK) = ZXWV(JL) * ZUPMH2O |
ZUP = MIN(MAX(0.5 * R10E * LOG(ZZABLY) + 5., 0d0), 6d0) |
229 |
ZABLY(JL,11,JKK) = ZU6 * ZFPPW |
ZCAH1 = AT(1, 1) + ZUP * (AT(1, 2) + ZUP * (AT(1, 3))) |
230 |
ZABLY(JL,10,JKK) = ZU6 * (1.-ZFPPW) |
ZCBH1 = BT(1, 1) + ZUP * (BT(1, 2) + ZUP * (BT(1, 3))) |
231 |
ZABLY(JL,9,JKK) = RCO2 * ZUPMCO2 |
ZPSH1(JL) = EXP(ZCAH1 * ZTX + ZCBH1 * ZTX2) |
232 |
ZABLY(JL,8,JKK) = RCO2 * ZDPM |
ZCAH2 = AT(2, 1) + ZUP * (AT(2, 2) + ZUP * (AT(2, 3))) |
233 |
404 CONTINUE |
ZCBH2 = BT(2, 1) + ZUP * (BT(2, 2) + ZUP * (BT(2, 3))) |
234 |
405 CONTINUE |
ZPSH2(JL) = EXP(ZCAH2 * ZTX + ZCBH2 * ZTX2) |
235 |
406 CONTINUE |
ZCAH3 = AT(3, 1) + ZUP * (AT(3, 2) + ZUP * (AT(3, 3))) |
236 |
C |
ZCBH3 = BT(3, 1) + ZUP * (BT(3, 2) + ZUP * (BT(3, 3))) |
237 |
C----------------------------------------------------------------------- |
ZPSH3(JL) = EXP(ZCAH3 * ZTX + ZCBH3 * ZTX2) |
238 |
C |
ZCAH4 = AT(4, 1) + ZUP * (AT(4, 2) + ZUP * (AT(4, 3))) |
239 |
C |
ZCBH4 = BT(4, 1) + ZUP * (BT(4, 2) + ZUP * (BT(4, 3))) |
240 |
C* 5. CUMULATIVE ABSORBER AMOUNTS FROM TOP OF ATMOSPHERE |
ZPSH4(JL) = EXP(ZCAH4 * ZTX + ZCBH4 * ZTX2) |
241 |
C -------------------------------------------------- |
ZCAH5 = AT(5, 1) + ZUP * (AT(5, 2) + ZUP * (AT(5, 3))) |
242 |
C |
ZCBH5 = BT(5, 1) + ZUP * (BT(5, 2) + ZUP * (BT(5, 3))) |
243 |
500 CONTINUE |
ZPSH5(JL) = EXP(ZCAH5 * ZTX + ZCBH5 * ZTX2) |
244 |
C |
ZCAH6 = AT(6, 1) + ZUP * (AT(6, 2) + ZUP * (AT(6, 3))) |
245 |
DO 502 JA = 1, NUA |
ZCBH6 = BT(6, 1) + ZUP * (BT(6, 2) + ZUP * (BT(6, 3))) |
246 |
DO 501 JL = 1, KDLON |
ZPSH6(JL) = EXP(ZCAH6 * ZTX + ZCBH6 * ZTX2) |
247 |
PABCU(JL,JA,3*KFLEV+1) = 0. |
ZPHM6(JL) = EXP(- 5.81E-4 * ZTX - 1.13E-6 * ZTX2) |
248 |
501 CONTINUE |
ZPSM6(JL) = EXP(- 5.57E-4 * ZTX - 3.30E-6 * ZTX2) |
249 |
502 CONTINUE |
ZPHN6(JL) = EXP(- 3.46E-5 * ZTX + 2.05E-7 * ZTX2) |
250 |
C |
ZPSN6(JL) = EXP(3.70E-3 * ZTX - 2.30E-6 * ZTX2) |
251 |
DO 529 JK = 1 , KFLEV |
end DO |
252 |
JJ=(JK-1)*NG1P1+1 |
|
253 |
JJPN=JJ+NG1 |
DO JL = 1, KDLON |
254 |
JKL=KFLEV+1-JK |
ZTAVI(JL) = PTAVE(JL, JKL) |
255 |
C |
ZTX = ZTAVI(JL) - TREF |
256 |
C |
ZTX2 = ZTX * ZTX |
257 |
C* 5.1 CUMULATIVE AEROSOL AMOUNTS FROM TOP OF ATMOSPHERE |
ZZABLY = ZABLY(JL, 9, JAE1) + ZABLY(JL, 9, JAE2) + ZABLY(JL, 9, JAE3) |
258 |
C -------------------------------------------------- |
ZALUP = R10E * LOG(ZZABLY) |
259 |
C |
ZUP = MAX(0d0, 5.0 + 0.5 * ZALUP) |
260 |
510 CONTINUE |
ZPSC2(JL) = (ZTAVI(JL) / TREF) ** ZUP |
261 |
C |
ZCAC8 = AT(8, 1) + ZUP * (AT(8, 2) + ZUP * (AT(8, 3))) |
262 |
JAE1=3*KFLEV+1-JJ |
ZCBC8 = BT(8, 1) + ZUP * (BT(8, 2) + ZUP * (BT(8, 3))) |
263 |
JAE2=3*KFLEV+1-(JJ+1) |
ZPSC3(JL) = EXP(ZCAC8 * ZTX + ZCBC8 * ZTX2) |
264 |
JAE3=3*KFLEV+1-JJPN |
ZPHIO(JL) = EXP(OCT(1) * ZTX + OCT(2) * ZTX2) |
265 |
DO 512 JAE=1,5 |
ZPSIO(JL) = EXP(2. * (OCT(3) * ZTX + OCT(4) * ZTX2)) |
266 |
DO 511 JL = 1, KDLON |
end DO |
267 |
ZUAER(JL,JAE) = (RAER(JAE,1)*PAER(JL,JKL,1) |
|
268 |
S +RAER(JAE,2)*PAER(JL,JKL,2)+RAER(JAE,3)*PAER(JL,JKL,3) |
DO JKK = JJ, JJPN |
269 |
S +RAER(JAE,4)*PAER(JL,JKL,4)+RAER(JAE,5)*PAER(JL,JKL,5)) |
JC = 3 * KFLEV + 1 - JKK |
270 |
S /(ZDUC(JL,JAE1)+ZDUC(JL,JAE2)+ZDUC(JL,JAE3)) |
JCP1 = JC + 1 |
271 |
511 CONTINUE |
DO JL = 1, KDLON |
272 |
512 CONTINUE |
ZDIFF = PVIEW(JL) |
273 |
C |
PABCU(JL, 10, JC) = PABCU(JL, 10, JCP1) & |
274 |
C |
+ ZABLY(JL, 10, JC) * ZDIFF |
275 |
C |
PABCU(JL, 11, JC) = PABCU(JL, 11, JCP1) & |
276 |
C* 5.2 INTRODUCES TEMPERATURE EFFECTS ON ABSORBER AMOUNTS |
+ ZABLY(JL, 11, JC) * ZTCON(JL) * ZDIFF |
277 |
C -------------------------------------------------- |
|
278 |
C |
PABCU(JL, 12, JC) = PABCU(JL, 12, JCP1) & |
279 |
520 CONTINUE |
+ ZABLY(JL, 12, JC) * ZPHIO(JL) * ZDIFF |
280 |
C |
PABCU(JL, 13, JC) = PABCU(JL, 13, JCP1) & |
281 |
DO 521 JL = 1, KDLON |
+ ZABLY(JL, 13, JC) * ZPSIO(JL) * ZDIFF |
282 |
ZTAVI(JL)=PTAVE(JL,JKL) |
|
283 |
ZTCON(JL)=EXP(6.08*(296./ZTAVI(JL)-1.)) |
PABCU(JL, 7, JC) = PABCU(JL, 7, JCP1) & |
284 |
ZTX=ZTAVI(JL)-TREF |
+ ZABLY(JL, 9, JC) * ZPSC2(JL) * ZDIFF |
285 |
ZTX2=ZTX*ZTX |
PABCU(JL, 8, JC) = PABCU(JL, 8, JCP1) & |
286 |
ZZABLY = ZABLY(JL,6,JAE1)+ZABLY(JL,6,JAE2)+ZABLY(JL,6,JAE3) |
+ ZABLY(JL, 9, JC) * ZPSC3(JL) * ZDIFF |
287 |
CMAF ZUP=MIN( MAX( 0.5*R10E*LOG( ZZABLY ) + 5., 0.), 6.0) |
PABCU(JL, 9, JC) = PABCU(JL, 9, JCP1) & |
288 |
ZUP=MIN( MAX( 0.5*R10E*LOG( ZZABLY ) + 5., 0.d+0), 6.d+0) |
+ ZABLY(JL, 9, JC) * ZPSC3(JL) * ZDIFF |
289 |
ZCAH1=AT(1,1)+ZUP*(AT(1,2)+ZUP*(AT(1,3))) |
|
290 |
ZCBH1=BT(1,1)+ZUP*(BT(1,2)+ZUP*(BT(1,3))) |
PABCU(JL, 1, JC) = PABCU(JL, 1, JCP1) & |
291 |
ZPSH1(JL)=EXP( ZCAH1 * ZTX + ZCBH1 * ZTX2 ) |
+ ZABLY(JL, 6, JC) * ZPSH1(JL) * ZDIFF |
292 |
ZCAH2=AT(2,1)+ZUP*(AT(2,2)+ZUP*(AT(2,3))) |
PABCU(JL, 2, JC) = PABCU(JL, 2, JCP1) & |
293 |
ZCBH2=BT(2,1)+ZUP*(BT(2,2)+ZUP*(BT(2,3))) |
+ ZABLY(JL, 6, JC) * ZPSH2(JL) * ZDIFF |
294 |
ZPSH2(JL)=EXP( ZCAH2 * ZTX + ZCBH2 * ZTX2 ) |
PABCU(JL, 3, JC) = PABCU(JL, 3, JCP1) & |
295 |
ZCAH3=AT(3,1)+ZUP*(AT(3,2)+ZUP*(AT(3,3))) |
+ ZABLY(JL, 6, JC) * ZPSH5(JL) * ZDIFF |
296 |
ZCBH3=BT(3,1)+ZUP*(BT(3,2)+ZUP*(BT(3,3))) |
PABCU(JL, 4, JC) = PABCU(JL, 4, JCP1) & |
297 |
ZPSH3(JL)=EXP( ZCAH3 * ZTX + ZCBH3 * ZTX2 ) |
+ ZABLY(JL, 6, JC) * ZPSH3(JL) * ZDIFF |
298 |
ZCAH4=AT(4,1)+ZUP*(AT(4,2)+ZUP*(AT(4,3))) |
PABCU(JL, 5, JC) = PABCU(JL, 5, JCP1) & |
299 |
ZCBH4=BT(4,1)+ZUP*(BT(4,2)+ZUP*(BT(4,3))) |
+ ZABLY(JL, 6, JC) * ZPSH4(JL) * ZDIFF |
300 |
ZPSH4(JL)=EXP( ZCAH4 * ZTX + ZCBH4 * ZTX2 ) |
PABCU(JL, 6, JC) = PABCU(JL, 6, JCP1) & |
301 |
ZCAH5=AT(5,1)+ZUP*(AT(5,2)+ZUP*(AT(5,3))) |
+ ZABLY(JL, 6, JC) * ZPSH6(JL) * ZDIFF |
302 |
ZCBH5=BT(5,1)+ZUP*(BT(5,2)+ZUP*(BT(5,3))) |
|
303 |
ZPSH5(JL)=EXP( ZCAH5 * ZTX + ZCBH5 * ZTX2 ) |
PABCU(JL, 14, JC) = PABCU(JL, 14, JCP1) & |
304 |
ZCAH6=AT(6,1)+ZUP*(AT(6,2)+ZUP*(AT(6,3))) |
+ ZUAER(JL, 1) * ZDUC(JL, JC) * ZDIFF |
305 |
ZCBH6=BT(6,1)+ZUP*(BT(6,2)+ZUP*(BT(6,3))) |
PABCU(JL, 15, JC) = PABCU(JL, 15, JCP1) & |
306 |
ZPSH6(JL)=EXP( ZCAH6 * ZTX + ZCBH6 * ZTX2 ) |
+ ZUAER(JL, 2) * ZDUC(JL, JC) * ZDIFF |
307 |
ZPHM6(JL)=EXP(-5.81E-4 * ZTX - 1.13E-6 * ZTX2 ) |
PABCU(JL, 16, JC) = PABCU(JL, 16, JCP1) & |
308 |
ZPSM6(JL)=EXP(-5.57E-4 * ZTX - 3.30E-6 * ZTX2 ) |
+ ZUAER(JL, 3) * ZDUC(JL, JC) * ZDIFF |
309 |
ZPHN6(JL)=EXP(-3.46E-5 * ZTX + 2.05E-7 * ZTX2 ) |
PABCU(JL, 17, JC) = PABCU(JL, 17, JCP1) & |
310 |
ZPSN6(JL)=EXP( 3.70E-3 * ZTX - 2.30E-6 * ZTX2 ) |
+ ZUAER(JL, 4) * ZDUC(JL, JC) * ZDIFF |
311 |
521 CONTINUE |
PABCU(JL, 18, JC) = PABCU(JL, 18, JCP1) & |
312 |
C |
+ ZUAER(JL, 5) * ZDUC(JL, JC) * ZDIFF |
313 |
DO 522 JL = 1, KDLON |
|
314 |
ZTAVI(JL)=PTAVE(JL,JKL) |
PABCU(JL, 19, JC) = PABCU(JL, 19, JCP1) & |
315 |
ZTX=ZTAVI(JL)-TREF |
+ ZABLY(JL, 8, JC) * RCH4 / RCO2 * ZPHM6(JL) * ZDIFF |
316 |
ZTX2=ZTX*ZTX |
PABCU(JL, 20, JC) = PABCU(JL, 20, JCP1) & |
317 |
ZZABLY = ZABLY(JL,9,JAE1)+ZABLY(JL,9,JAE2)+ZABLY(JL,9,JAE3) |
+ ZABLY(JL, 9, JC) * RCH4 / RCO2 * ZPSM6(JL) * ZDIFF |
318 |
ZALUP = R10E * LOG ( ZZABLY ) |
PABCU(JL, 21, JC) = PABCU(JL, 21, JCP1) & |
319 |
CMAF ZUP = MAX( 0.0 , 5.0 + 0.5 * ZALUP ) |
+ ZABLY(JL, 8, JC) * RN2O / RCO2 * ZPHN6(JL) * ZDIFF |
320 |
ZUP = MAX( 0.d+0 , 5.0 + 0.5 * ZALUP ) |
PABCU(JL, 22, JC) = PABCU(JL, 22, JCP1) & |
321 |
ZPSC2(JL) = (ZTAVI(JL)/TREF) ** ZUP |
+ ZABLY(JL, 9, JC) * RN2O / RCO2 * ZPSN6(JL) * ZDIFF |
322 |
ZCAC8=AT(8,1)+ZUP*(AT(8,2)+ZUP*(AT(8,3))) |
|
323 |
ZCBC8=BT(8,1)+ZUP*(BT(8,2)+ZUP*(BT(8,3))) |
PABCU(JL, 23, JC) = PABCU(JL, 23, JCP1) & |
324 |
ZPSC3(JL)=EXP( ZCAC8 * ZTX + ZCBC8 * ZTX2 ) |
+ ZABLY(JL, 8, JC) * RCFC11 / RCO2 * ZDIFF |
325 |
ZPHIO(JL) = EXP( OCT(1) * ZTX + OCT(2) * ZTX2) |
PABCU(JL, 24, JC) = PABCU(JL, 24, JCP1) & |
326 |
ZPSIO(JL) = EXP( 2.* (OCT(3)*ZTX+OCT(4)*ZTX2)) |
+ ZABLY(JL, 8, JC) * RCFC12 / RCO2 * ZDIFF |
327 |
522 CONTINUE |
end DO |
328 |
C |
end DO |
329 |
DO 524 JKK=JJ,JJPN |
end DO |
330 |
JC=3*KFLEV+1-JKK |
|
331 |
JCP1=JC+1 |
END SUBROUTINE LWU |
332 |
DO 523 JL = 1, KDLON |
|
333 |
ZDIFF = PVIEW(JL) |
end module LWU_m |
|
PABCU(JL,10,JC)=PABCU(JL,10,JCP1) |
|
|
S +ZABLY(JL,10,JC) *ZDIFF |
|
|
PABCU(JL,11,JC)=PABCU(JL,11,JCP1) |
|
|
S +ZABLY(JL,11,JC)*ZTCON(JL)*ZDIFF |
|
|
C |
|
|
PABCU(JL,12,JC)=PABCU(JL,12,JCP1) |
|
|
S +ZABLY(JL,12,JC)*ZPHIO(JL)*ZDIFF |
|
|
PABCU(JL,13,JC)=PABCU(JL,13,JCP1) |
|
|
S +ZABLY(JL,13,JC)*ZPSIO(JL)*ZDIFF |
|
|
C |
|
|
PABCU(JL,7,JC)=PABCU(JL,7,JCP1) |
|
|
S +ZABLY(JL,9,JC)*ZPSC2(JL)*ZDIFF |
|
|
PABCU(JL,8,JC)=PABCU(JL,8,JCP1) |
|
|
S +ZABLY(JL,9,JC)*ZPSC3(JL)*ZDIFF |
|
|
PABCU(JL,9,JC)=PABCU(JL,9,JCP1) |
|
|
S +ZABLY(JL,9,JC)*ZPSC3(JL)*ZDIFF |
|
|
C |
|
|
PABCU(JL,1,JC)=PABCU(JL,1,JCP1) |
|
|
S +ZABLY(JL,6,JC)*ZPSH1(JL)*ZDIFF |
|
|
PABCU(JL,2,JC)=PABCU(JL,2,JCP1) |
|
|
S +ZABLY(JL,6,JC)*ZPSH2(JL)*ZDIFF |
|
|
PABCU(JL,3,JC)=PABCU(JL,3,JCP1) |
|
|
S +ZABLY(JL,6,JC)*ZPSH5(JL)*ZDIFF |
|
|
PABCU(JL,4,JC)=PABCU(JL,4,JCP1) |
|
|
S +ZABLY(JL,6,JC)*ZPSH3(JL)*ZDIFF |
|
|
PABCU(JL,5,JC)=PABCU(JL,5,JCP1) |
|
|
S +ZABLY(JL,6,JC)*ZPSH4(JL)*ZDIFF |
|
|
PABCU(JL,6,JC)=PABCU(JL,6,JCP1) |
|
|
S +ZABLY(JL,6,JC)*ZPSH6(JL)*ZDIFF |
|
|
C |
|
|
PABCU(JL,14,JC)=PABCU(JL,14,JCP1) |
|
|
S +ZUAER(JL,1) *ZDUC(JL,JC)*ZDIFF |
|
|
PABCU(JL,15,JC)=PABCU(JL,15,JCP1) |
|
|
S +ZUAER(JL,2) *ZDUC(JL,JC)*ZDIFF |
|
|
PABCU(JL,16,JC)=PABCU(JL,16,JCP1) |
|
|
S +ZUAER(JL,3) *ZDUC(JL,JC)*ZDIFF |
|
|
PABCU(JL,17,JC)=PABCU(JL,17,JCP1) |
|
|
S +ZUAER(JL,4) *ZDUC(JL,JC)*ZDIFF |
|
|
PABCU(JL,18,JC)=PABCU(JL,18,JCP1) |
|
|
S +ZUAER(JL,5) *ZDUC(JL,JC)*ZDIFF |
|
|
C |
|
|
PABCU(JL,19,JC)=PABCU(JL,19,JCP1) |
|
|
S +ZABLY(JL,8,JC)*RCH4/RCO2*ZPHM6(JL)*ZDIFF |
|
|
PABCU(JL,20,JC)=PABCU(JL,20,JCP1) |
|
|
S +ZABLY(JL,9,JC)*RCH4/RCO2*ZPSM6(JL)*ZDIFF |
|
|
PABCU(JL,21,JC)=PABCU(JL,21,JCP1) |
|
|
S +ZABLY(JL,8,JC)*RN2O/RCO2*ZPHN6(JL)*ZDIFF |
|
|
PABCU(JL,22,JC)=PABCU(JL,22,JCP1) |
|
|
S +ZABLY(JL,9,JC)*RN2O/RCO2*ZPSN6(JL)*ZDIFF |
|
|
C |
|
|
PABCU(JL,23,JC)=PABCU(JL,23,JCP1) |
|
|
S +ZABLY(JL,8,JC)*RCFC11/RCO2 *ZDIFF |
|
|
PABCU(JL,24,JC)=PABCU(JL,24,JCP1) |
|
|
S +ZABLY(JL,8,JC)*RCFC12/RCO2 *ZDIFF |
|
|
523 CONTINUE |
|
|
524 CONTINUE |
|
|
C |
|
|
529 CONTINUE |
|
|
C |
|
|
C |
|
|
RETURN |
|
|
END |
|