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