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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 71 - (show annotations)
Mon Jul 8 18:12:18 2013 UTC (10 years, 9 months ago) by guez
File size: 5511 byte(s)
No reason to call inidissip in ce0l.

In inidissip, set random seed to 1 beacuse PGI compiler does not
accept all zeros.

dq was computed needlessly in caladvtrac. Arguments masse and dq of
calfis not used.

Replaced real*8 by double precision.

Pass arrays with inverted order of vertical levels to conflx instead
of creating local variables for this inside conflx.

1 SUBROUTINE LWVN(KUAER,KTRAER
2 R , PABCU,PDBSL,PGA,PGB
3 S , PADJD,PADJU,PCNTRB,PDBDT)
4 use dimens_m
5 use dimphy
6 use raddim
7 use raddimlw
8 IMPLICIT none
9 C
10 C-----------------------------------------------------------------------
11 C PURPOSE.
12 C --------
13 C CARRIES OUT THE VERTICAL INTEGRATION ON NEARBY LAYERS
14 C TO GIVE LONGWAVE FLUXES OR RADIANCES
15 C
16 C METHOD.
17 C -------
18 C
19 C 1. PERFORMS THE VERTICAL INTEGRATION CORRESPONDING TO THE
20 C CONTRIBUTIONS OF THE ADJACENT LAYERS USING A GAUSSIAN QUADRATURE
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
37 C* ARGUMENTS:
38 C
39 INTEGER KUAER,KTRAER
40 C
41 DOUBLE PRECISION PABCU(KDLON,NUA,3*KFLEV+1) ! ABSORBER AMOUNTS
42 DOUBLE PRECISION PDBSL(KDLON,Ninter,KFLEV*2) ! SUB-LAYER PLANCK FUNCTION GRADIENT
43 DOUBLE PRECISION PGA(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
44 DOUBLE PRECISION PGB(KDLON,8,2,KFLEV) ! PADE APPROXIMANTS
45 C
46 DOUBLE PRECISION PADJD(KDLON,KFLEV+1) ! CONTRIBUTION OF ADJACENT LAYERS
47 DOUBLE PRECISION PADJU(KDLON,KFLEV+1) ! CONTRIBUTION OF ADJACENT LAYERS
48 DOUBLE PRECISION PCNTRB(KDLON,KFLEV+1,KFLEV+1) ! CLEAR-SKY ENERGY EXCHANGE MATRIX
49 DOUBLE PRECISION PDBDT(KDLON,Ninter,KFLEV) ! LAYER PLANCK FUNCTION GRADIENT
50 C
51 C* LOCAL ARRAYS:
52 C
53 DOUBLE PRECISION ZGLAYD(KDLON)
54 DOUBLE PRECISION ZGLAYU(KDLON)
55 DOUBLE PRECISION ZTT(KDLON,NTRA)
56 DOUBLE PRECISION ZTT1(KDLON,NTRA)
57 DOUBLE PRECISION ZTT2(KDLON,NTRA)
58 DOUBLE PRECISION ZUU(KDLON,NUA)
59 C
60 INTEGER jk, jl, ja, im12, ind, inu, ixu, jg
61 INTEGER ixd, ibs, idd, imu, jk1, jk2, jnu
62 DOUBLE PRECISION zwtr
63 c
64 C* Data Block:
65 c
66 DOUBLE PRECISION WG1(2)
67 SAVE WG1
68 DATA (WG1(jk),jk=1,2) /1.0, 1.0/
69 C-----------------------------------------------------------------------
70 C
71 C* 1. INITIALIZATION
72 C --------------
73 C
74 100 CONTINUE
75 C
76 C* 1.1 INITIALIZE LAYER CONTRIBUTIONS
77 C ------------------------------
78 C
79 110 CONTINUE
80 C
81 DO 112 JK = 1 , KFLEV+1
82 DO 111 JL = 1, KDLON
83 PADJD(JL,JK) = 0.
84 PADJU(JL,JK) = 0.
85 111 CONTINUE
86 112 CONTINUE
87 C
88 C* 1.2 INITIALIZE TRANSMISSION FUNCTIONS
89 C ---------------------------------
90 C
91 120 CONTINUE
92 C
93 DO 122 JA = 1 , NTRA
94 DO 121 JL = 1, KDLON
95 ZTT (JL,JA) = 1.0
96 ZTT1(JL,JA) = 1.0
97 ZTT2(JL,JA) = 1.0
98 121 CONTINUE
99 122 CONTINUE
100 C
101 DO 124 JA = 1 , NUA
102 DO 123 JL = 1, KDLON
103 ZUU(JL,JA) = 0.
104 123 CONTINUE
105 124 CONTINUE
106 C
107 C ------------------------------------------------------------------
108 C
109 C* 2. VERTICAL INTEGRATION
110 C --------------------
111 C
112 200 CONTINUE
113 C
114 C
115 C* 2.1 CONTRIBUTION FROM ADJACENT LAYERS
116 C ---------------------------------
117 C
118 210 CONTINUE
119 C
120 DO 215 JK = 1 , KFLEV
121 C
122 C* 2.1.1 DOWNWARD LAYERS
123 C ---------------
124 C
125 2110 CONTINUE
126 C
127 IM12 = 2 * (JK - 1)
128 IND = (JK - 1) * NG1P1 + 1
129 IXD = IND
130 INU = JK * NG1P1 + 1
131 IXU = IND
132 C
133 DO 2111 JL = 1, KDLON
134 ZGLAYD(JL) = 0.
135 ZGLAYU(JL) = 0.
136 2111 CONTINUE
137 C
138 DO 213 JG = 1 , NG1
139 IBS = IM12 + JG
140 IDD = IXD + JG
141 DO 2113 JA = 1 , KUAER
142 DO 2112 JL = 1, KDLON
143 ZUU(JL,JA) = PABCU(JL,JA,IND) - PABCU(JL,JA,IDD)
144 2112 CONTINUE
145 2113 CONTINUE
146 C
147 C
148 CALL LWTT(PGA(1,1,1,JK), PGB(1,1,1,JK), ZUU, ZTT)
149 C
150 DO 2114 JL = 1, KDLON
151 ZWTR=PDBSL(JL,1,IBS)*ZTT(JL,1) *ZTT(JL,10)
152 S +PDBSL(JL,2,IBS)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
153 S +PDBSL(JL,3,IBS)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
154 S +PDBSL(JL,4,IBS)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
155 S +PDBSL(JL,5,IBS)*ZTT(JL,3) *ZTT(JL,14)
156 S +PDBSL(JL,6,IBS)*ZTT(JL,6) *ZTT(JL,15)
157 ZGLAYD(JL)=ZGLAYD(JL)+ZWTR*WG1(JG)
158 2114 CONTINUE
159 C
160 C* 2.1.2 DOWNWARD LAYERS
161 C ---------------
162 C
163 2120 CONTINUE
164 C
165 IMU = IXU + JG
166 DO 2122 JA = 1 , KUAER
167 DO 2121 JL = 1, KDLON
168 ZUU(JL,JA) = PABCU(JL,JA,IMU) - PABCU(JL,JA,INU)
169 2121 CONTINUE
170 2122 CONTINUE
171 C
172 C
173 CALL LWTT(PGA(1,1,1,JK), PGB(1,1,1,JK), ZUU, ZTT)
174 C
175 DO 2123 JL = 1, KDLON
176 ZWTR=PDBSL(JL,1,IBS)*ZTT(JL,1) *ZTT(JL,10)
177 S +PDBSL(JL,2,IBS)*ZTT(JL,2)*ZTT(JL,7)*ZTT(JL,11)
178 S +PDBSL(JL,3,IBS)*ZTT(JL,4)*ZTT(JL,8)*ZTT(JL,12)
179 S +PDBSL(JL,4,IBS)*ZTT(JL,5)*ZTT(JL,9)*ZTT(JL,13)
180 S +PDBSL(JL,5,IBS)*ZTT(JL,3) *ZTT(JL,14)
181 S +PDBSL(JL,6,IBS)*ZTT(JL,6) *ZTT(JL,15)
182 ZGLAYU(JL)=ZGLAYU(JL)+ZWTR*WG1(JG)
183 2123 CONTINUE
184 C
185 213 CONTINUE
186 C
187 DO 214 JL = 1, KDLON
188 PADJD(JL,JK) = ZGLAYD(JL)
189 PCNTRB(JL,JK,JK+1) = ZGLAYD(JL)
190 PADJU(JL,JK+1) = ZGLAYU(JL)
191 PCNTRB(JL,JK+1,JK) = ZGLAYU(JL)
192 PCNTRB(JL,JK ,JK) = 0.0
193 214 CONTINUE
194 C
195 215 CONTINUE
196 C
197 DO 218 JK = 1 , KFLEV
198 JK2 = 2 * JK
199 JK1 = JK2 - 1
200 DO 217 JNU = 1 , Ninter
201 DO 216 JL = 1, KDLON
202 PDBDT(JL,JNU,JK) = PDBSL(JL,JNU,JK1) + PDBSL(JL,JNU,JK2)
203 216 CONTINUE
204 217 CONTINUE
205 218 CONTINUE
206 C
207 RETURN
208 C
209 END

  ViewVC Help
Powered by ViewVC 1.1.21