/[lmdze]/trunk/libf/phylmd/Radlwsw/lwvd.f
ViewVC logotype

Contents of /trunk/libf/phylmd/Radlwsw/lwvd.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24 - (show annotations)
Wed Mar 3 13:23:49 2010 UTC (14 years, 2 months ago) by guez
File size: 5976 byte(s)
Created directory "phylmd/Radlwsw". Split "radlwsw.f" in files
containing a single procedure.

Removed variable "itaufinp1" in "leapfrog".

1 SUBROUTINE LWVD(KUAER,KTRAER
2 S , PABCU,PDBDT
3 R , PGA,PGB
4 S , PCNTRB,PDISD,PDISU)
5 use dimens_m
6 use dimphy
7 use raddim
8 use raddimlw
9 IMPLICIT none
10 C
11 C-----------------------------------------------------------------------
12 C PURPOSE.
13 C --------
14 C CARRIES OUT THE VERTICAL INTEGRATION ON THE DISTANT LAYERS
15 C
16 C METHOD.
17 C -------
18 C
19 C 1. PERFORMS THE VERTICAL INTEGRATION CORRESPONDING TO THE
20 C CONTRIBUTIONS OF THE DISTANT LAYERS USING TRAPEZOIDAL RULE
21 C
22 C REFERENCE.
23 C ----------
24 C
25 C SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
26 C ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
27 C
28 C AUTHOR.
29 C -------
30 C JEAN-JACQUES MORCRETTE *ECMWF*
31 C
32 C MODIFICATIONS.
33 C --------------
34 C ORIGINAL : 89-07-14
35 C-----------------------------------------------------------------------
36 C* ARGUMENTS:
37 C
38 INTEGER KUAER,KTRAER
39 C
40 REAL*8 PABCU(KDLON,NUA,3*KFLEV+1) ! ABSORBER AMOUNTS
41 REAL*8 PDBDT(KDLON,Ninter,KFLEV) ! LAYER PLANCK FUNCTION GRADIENT
42 REAL*8 PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
43 REAL*8 PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
44 C
45 REAL*8 PCNTRB(KDLON,KFLEV+1,KFLEV+1) ! ENERGY EXCHANGE MATRIX
46 REAL*8 PDISD(KDLON,KFLEV+1) ! CONTRIBUTION BY DISTANT LAYERS
47 REAL*8 PDISU(KDLON,KFLEV+1) ! CONTRIBUTION BY DISTANT LAYERS
48 C
49 C* LOCAL VARIABLES:
50 C
51 REAL*8 ZGLAYD(KDLON)
52 REAL*8 ZGLAYU(KDLON)
53 REAL*8 ZTT(KDLON,NTRA)
54 REAL*8 ZTT1(KDLON,NTRA)
55 REAL*8 ZTT2(KDLON,NTRA)
56 C
57 INTEGER jl, jk, ja, ikp1, ikn, ikd1, jkj, ikd2
58 INTEGER ikjp1, ikm1, ikj, jlk, iku1, ijkl, iku2
59 INTEGER ind1, ind2, ind3, ind4, itt
60 REAL*8 zww, zdzxdg, zdzxmg
61 C
62 C* 1. INITIALIZATION
63 C --------------
64 C
65 100 CONTINUE
66 C
67 C* 1.1 INITIALIZE LAYER CONTRIBUTIONS
68 C ------------------------------
69 C
70 110 CONTINUE
71 C
72 DO 112 JK = 1, KFLEV+1
73 DO 111 JL = 1, KDLON
74 PDISD(JL,JK) = 0.
75 PDISU(JL,JK) = 0.
76 111 CONTINUE
77 112 CONTINUE
78 C
79 C* 1.2 INITIALIZE TRANSMISSION FUNCTIONS
80 C ---------------------------------
81 C
82 120 CONTINUE
83 C
84 C
85 DO 122 JA = 1, NTRA
86 DO 121 JL = 1, KDLON
87 ZTT (JL,JA) = 1.0
88 ZTT1(JL,JA) = 1.0
89 ZTT2(JL,JA) = 1.0
90 121 CONTINUE
91 122 CONTINUE
92 C
93 C ------------------------------------------------------------------
94 C
95 C* 2. VERTICAL INTEGRATION
96 C --------------------
97 C
98 200 CONTINUE
99 C
100 IND1=0
101 IND3=0
102 IND4=1
103 IND2=1
104 C
105 C
106 C* 2.2 CONTRIBUTION FROM DISTANT LAYERS
107 C ---------------------------------
108 C
109 220 CONTINUE
110 C
111 C
112 C* 2.2.1 DISTANT AND ABOVE LAYERS
113 C ------------------------
114 C
115 2210 CONTINUE
116 C
117 C
118 C
119 C* 2.2.2 FIRST UPPER LEVEL
120 C -----------------
121 C
122 2220 CONTINUE
123 C
124 DO 225 JK = 1 , KFLEV-1
125 IKP1=JK+1
126 IKN=(JK-1)*NG1P1+1
127 IKD1= JK *NG1P1+1
128 C
129 CALL LWTTM(PGA(1,1,1,JK), PGB(1,1,1,JK)
130 2 , PABCU(1,1,IKN),PABCU(1,1,IKD1),ZTT1)
131 C
132 C
133 C
134 C* 2.2.3 HIGHER UP
135 C ---------
136 C
137 2230 CONTINUE
138 C
139 ITT=1
140 DO 224 JKJ=IKP1,KFLEV
141 IF(ITT.EQ.1) THEN
142 ITT=2
143 ELSE
144 ITT=1
145 ENDIF
146 IKJP1=JKJ+1
147 IKD2= JKJ *NG1P1+1
148 C
149 IF(ITT.EQ.1) THEN
150 CALL LWTTM(PGA(1,1,1,JKJ),PGB(1,1,1,JKJ)
151 2 , PABCU(1,1,IKN),PABCU(1,1,IKD2),ZTT1)
152 ELSE
153 CALL LWTTM(PGA(1,1,1,JKJ),PGB(1,1,1,JKJ)
154 2 , PABCU(1,1,IKN),PABCU(1,1,IKD2),ZTT2)
155 ENDIF
156 C
157 DO 2235 JA = 1, KTRAER
158 DO 2234 JL = 1, KDLON
159 ZTT(JL,JA) = (ZTT1(JL,JA)+ZTT2(JL,JA))*0.5
160 2234 CONTINUE
161 2235 CONTINUE
162 C
163 DO 2236 JL = 1, KDLON
164 ZWW=PDBDT(JL,1,JKJ)*ZTT(JL,1) *ZTT(JL,10)
165 S +PDBDT(JL,2,JKJ)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
166 S +PDBDT(JL,3,JKJ)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
167 S +PDBDT(JL,4,JKJ)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
168 S +PDBDT(JL,5,JKJ)*ZTT(JL,3) *ZTT(JL,14)
169 S +PDBDT(JL,6,JKJ)*ZTT(JL,6) *ZTT(JL,15)
170 ZGLAYD(JL)=ZWW
171 ZDZXDG=ZGLAYD(JL)
172 PDISD(JL,JK)=PDISD(JL,JK)+ZDZXDG
173 PCNTRB(JL,JK,IKJP1)=ZDZXDG
174 2236 CONTINUE
175 C
176 C
177 224 CONTINUE
178 225 CONTINUE
179 C
180 C
181 C* 2.2.4 DISTANT AND BELOW LAYERS
182 C ------------------------
183 C
184 2240 CONTINUE
185 C
186 C
187 C
188 C* 2.2.5 FIRST LOWER LEVEL
189 C -----------------
190 C
191 2250 CONTINUE
192 C
193 DO 228 JK=3,KFLEV+1
194 IKN=(JK-1)*NG1P1+1
195 IKM1=JK-1
196 IKJ=JK-2
197 IKU1= IKJ *NG1P1+1
198 C
199 C
200 CALL LWTTM(PGA(1,1,1,IKJ),PGB(1,1,1,IKJ)
201 2 , PABCU(1,1,IKU1),PABCU(1,1,IKN),ZTT1)
202 C
203 C
204 C
205 C* 2.2.6 DOWN BELOW
206 C ----------
207 C
208 2260 CONTINUE
209 C
210 ITT=1
211 DO 227 JLK=1,IKJ
212 IF(ITT.EQ.1) THEN
213 ITT=2
214 ELSE
215 ITT=1
216 ENDIF
217 IJKL=IKM1-JLK
218 IKU2=(IJKL-1)*NG1P1+1
219 C
220 C
221 IF(ITT.EQ.1) THEN
222 CALL LWTTM(PGA(1,1,1,IJKL),PGB(1,1,1,IJKL)
223 2 , PABCU(1,1,IKU2),PABCU(1,1,IKN),ZTT1)
224 ELSE
225 CALL LWTTM(PGA(1,1,1,IJKL),PGB(1,1,1,IJKL)
226 2 , PABCU(1,1,IKU2),PABCU(1,1,IKN),ZTT2)
227 ENDIF
228 C
229 DO 2265 JA = 1, KTRAER
230 DO 2264 JL = 1, KDLON
231 ZTT(JL,JA) = (ZTT1(JL,JA)+ZTT2(JL,JA))*0.5
232 2264 CONTINUE
233 2265 CONTINUE
234 C
235 DO 2266 JL = 1, KDLON
236 ZWW=PDBDT(JL,1,IJKL)*ZTT(JL,1) *ZTT(JL,10)
237 S +PDBDT(JL,2,IJKL)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
238 S +PDBDT(JL,3,IJKL)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
239 S +PDBDT(JL,4,IJKL)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
240 S +PDBDT(JL,5,IJKL)*ZTT(JL,3) *ZTT(JL,14)
241 S +PDBDT(JL,6,IJKL)*ZTT(JL,6) *ZTT(JL,15)
242 ZGLAYU(JL)=ZWW
243 ZDZXMG=ZGLAYU(JL)
244 PDISU(JL,JK)=PDISU(JL,JK)+ZDZXMG
245 PCNTRB(JL,JK,IJKL)=ZDZXMG
246 2266 CONTINUE
247 C
248 C
249 227 CONTINUE
250 228 CONTINUE
251 C
252 RETURN
253 END

  ViewVC Help
Powered by ViewVC 1.1.21