GCC Code Coverage Report


Directory: ./
File: rad/srtm_spcvrt_mcica.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 108 0.0%
Branches: 0 46 0.0%

Line Branch Exec Source
1 SUBROUTINE SRTM_SPCVRT_MCICA &
2 & ( KLEV , KMOL , KSW , KCOLS , PONEMINUS, &
3 & PAVEL , PTAVEL , PZ , PTZ , PTBOUND , PALBD , PALBP, &
4 & PFRCL , PTAUC , PASYC , POMGC , PTAUA , PASYA , POMGA , PRMU0, &
5 & PCOLDRY , PWKL, &
6 & KLAYTROP, KLAYSWTCH, KLAYLOW ,&
7 & PCO2MULT, PCOLCH4 , PCOLCO2 , PCOLH2O , PCOLMOL , PCOLN2O , PCOLO2 , PCOLO3 ,&
8 & PFORFAC , PFORFRAC , KINDFOR , PSELFFAC, PSELFFRAC, KINDSELF ,&
9 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
10 & KJP , KJT , KJT1 ,&
11 !-- output arrays
12 & PBBFD, PBBFU, PBBCD, PBBCU )
13
14 ! & PBBFD, PBBFU, PUVFD, PUVFU, PVSFD, PVSFU , PNIFD , PNIFU ,&
15 ! & PBBCD, PBBCU, PUVCD, PUVCU, PVSCD, PVSCU , PNICD , PNICU &
16 ! & )
17
18 !**** *SRTM_SPCVRT* - SPECTRAL LOOP TO COMPUTE THE SHORTWAVE RADIATION FLUXES.
19
20 ! PURPOSE.
21 ! --------
22
23 ! THIS ROUTINE COMPUTES THE TWO-STREAM METHOD OF BARKER
24
25 !** INTERFACE.
26 ! ----------
27
28 ! *SRTM_SPCVRT_MCICA* IS CALLED FROM *SRTM_SRTM_224GP*
29
30 ! IMPLICIT ARGUMENTS :
31 ! --------------------
32
33 ! ==== INPUTS ===
34 ! ==== OUTPUTS ===
35
36 ! METHOD.
37 ! -------
38
39 ! EXTERNALS.
40 ! ----------
41
42 ! *SWVRTQDR*
43
44 ! REFERENCE.
45 ! ----------
46
47 ! SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
48 ! DOCUMENTATION
49 ! AUTHOR.
50 ! -------
51 ! from Howard Barker
52 ! JEAN-JACQUES MORCRETTE *ECMWF*
53
54 ! MODIFICATIONS.
55 ! --------------
56 ! ORIGINAL : 03-02-27
57 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
58 ! JJMorcrette 20050110 McICA version
59 ! ------------------------------------------------------------------
60
61 USE PARKIND1 ,ONLY : JPIM ,JPRB
62 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
63
64 USE PARSRTM , ONLY : JPLAY, JPB1, JPB2, JPGPT
65
66 USE YOESRTWN , ONLY : NGC
67 USE YOERDI , ONLY : REPCLC
68
69 !USE YOERAD , ONLY : NSW
70 !USE YOERDU , ONLY : RCDAY
71 !USE YOESWN , ONLY : NTBANDS, NBANDS, NGS, NUV, NVS, RWGT, NDBUG
72
73 IMPLICIT NONE
74
75 ! ------------------------------------------------------------------
76
77 !* 0.1 ARGUMENTS
78 ! ---------
79
80 INTEGER(KIND=JPIM),INTENT(IN) :: KSW
81 INTEGER(KIND=JPIM),INTENT(IN) :: KCOLS
82
83 INTEGER(KIND=JPIM) :: KLEV ! UNDETERMINED INTENT
84 INTEGER(KIND=JPIM) :: KMOL ! Argument NOT used
85 !INTEGER(KIND=JPIM) :: KPT
86
87 REAL(KIND=JPRB) :: PONEMINUS ! UNDETERMINED INTENT
88 REAL(KIND=JPRB) :: PAVEL(JPLAY) ! Argument NOT used
89 REAL(KIND=JPRB) :: PTAVEL(JPLAY) ! Argument NOT used
90 REAL(KIND=JPRB) :: PZ(0:JPLAY) ! Argument NOT used
91 REAL(KIND=JPRB) :: PTZ(0:JPLAY) ! Argument NOT used
92 REAL(KIND=JPRB) :: PTBOUND ! Argument NOT used
93 REAL(KIND=JPRB) ,INTENT(IN) :: PALBD(KSW)
94 REAL(KIND=JPRB) ,INTENT(IN) :: PALBP(KSW)
95 REAL(KIND=JPRB) ,INTENT(IN) :: PFRCL(KCOLS,JPLAY) ! bottom to top
96 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUC(JPLAY,KCOLS) ! bottom to top
97 REAL(KIND=JPRB) ,INTENT(IN) :: PASYC(JPLAY,KCOLS) ! bottom to top
98 REAL(KIND=JPRB) ,INTENT(IN) :: POMGC(JPLAY,KCOLS) ! bottom to top
99 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUA(JPLAY,KSW) ! bottom to top
100 REAL(KIND=JPRB) ,INTENT(IN) :: PASYA(JPLAY,KSW) ! bottom to top
101 REAL(KIND=JPRB) ,INTENT(IN) :: POMGA(JPLAY,KSW) ! bottom to top
102 REAL(KIND=JPRB) :: PRMU0 ! UNDETERMINED INTENT
103 REAL(KIND=JPRB) :: PCOLDRY(JPLAY) ! Argument NOT used
104 REAL(KIND=JPRB) :: PWKL(35,JPLAY) ! Argument NOT used
105 INTEGER(KIND=JPIM) :: KLAYTROP ! UNDETERMINED INTENT
106 INTEGER(KIND=JPIM) :: KLAYSWTCH ! Argument NOT used
107 INTEGER(KIND=JPIM) :: KLAYLOW ! Argument NOT used
108 REAL(KIND=JPRB) :: PCO2MULT(JPLAY) ! Argument NOT used
109 REAL(KIND=JPRB) :: PCOLCH4(JPLAY) ! UNDETERMINED INTENT
110 REAL(KIND=JPRB) :: PCOLCO2(JPLAY) ! UNDETERMINED INTENT
111 REAL(KIND=JPRB) :: PCOLH2O(JPLAY) ! UNDETERMINED INTENT
112 REAL(KIND=JPRB) :: PCOLMOL(JPLAY) ! UNDETERMINED INTENT
113 REAL(KIND=JPRB) :: PCOLN2O(JPLAY) ! Argument NOT used
114 REAL(KIND=JPRB) :: PCOLO2(JPLAY) ! UNDETERMINED INTENT
115 REAL(KIND=JPRB) :: PCOLO3(JPLAY) ! UNDETERMINED INTENT
116 REAL(KIND=JPRB) :: PFORFAC(JPLAY) ! UNDETERMINED INTENT
117 REAL(KIND=JPRB) :: PFORFRAC(JPLAY) ! UNDETERMINED INTENT
118 INTEGER(KIND=JPIM) :: KINDFOR(JPLAY) ! UNDETERMINED INTENT
119 REAL(KIND=JPRB) :: PSELFFAC(JPLAY) ! UNDETERMINED INTENT
120 REAL(KIND=JPRB) :: PSELFFRAC(JPLAY) ! UNDETERMINED INTENT
121 INTEGER(KIND=JPIM) :: KINDSELF(JPLAY) ! UNDETERMINED INTENT
122 REAL(KIND=JPRB) :: PFAC00(JPLAY) ! UNDETERMINED INTENT
123 REAL(KIND=JPRB) :: PFAC01(JPLAY) ! UNDETERMINED INTENT
124 REAL(KIND=JPRB) :: PFAC10(JPLAY) ! UNDETERMINED INTENT
125 REAL(KIND=JPRB) :: PFAC11(JPLAY) ! UNDETERMINED INTENT
126 INTEGER(KIND=JPIM) :: KJP(JPLAY) ! UNDETERMINED INTENT
127 INTEGER(KIND=JPIM) :: KJT(JPLAY) ! UNDETERMINED INTENT
128 INTEGER(KIND=JPIM) :: KJT1(JPLAY) ! UNDETERMINED INTENT
129 REAL(KIND=JPRB) ,INTENT(INOUT) :: PBBFD(JPLAY+1)
130 REAL(KIND=JPRB) ,INTENT(INOUT) :: PBBFU(JPLAY+1)
131 !REAL(KIND=JPRB) :: PUVFD(JPLAY+1) ! Argument NOT used
132 !REAL(KIND=JPRB) :: PUVFU(JPLAY+1) ! Argument NOT used
133 !REAL(KIND=JPRB) :: PVSFD(JPLAY+1) ! Argument NOT used
134 !REAL(KIND=JPRB) :: PVSFU(JPLAY+1) ! Argument NOT used
135 !REAL(KIND=JPRB) :: PNIFD(JPLAY+1) ! Argument NOT used
136 !REAL(KIND=JPRB) :: PNIFU(JPLAY+1) ! Argument NOT used
137 REAL(KIND=JPRB) ,INTENT(INOUT) :: PBBCD(JPLAY+1)
138 REAL(KIND=JPRB) ,INTENT(INOUT) :: PBBCU(JPLAY+1)
139 !REAL(KIND=JPRB) :: PUVCD(JPLAY+1) ! Argument NOT used
140 !REAL(KIND=JPRB) :: PUVCU(JPLAY+1) ! Argument NOT used
141 !REAL(KIND=JPRB) :: PVSCD(JPLAY+1) ! Argument NOT used
142 !REAL(KIND=JPRB) :: PVSCU(JPLAY+1) ! Argument NOT used
143 !REAL(KIND=JPRB) :: PNICD(JPLAY+1) ! Argument NOT used
144 !REAL(KIND=JPRB) :: PNICU(JPLAY+1) ! Argument NOT used
145 ! ------------------------------------------------------------------
146
147 ! ------------
148
149 LOGICAL :: LLRTCHK(JPLAY)
150
151 REAL(KIND=JPRB) :: &
152 & ZCLEAR , ZCLOUD &
153 & , ZDBT(JPLAY+1) &
154 & , ZGCC(JPLAY) , ZGCO(JPLAY) &
155 & , ZOMCC(JPLAY) , ZOMCO(JPLAY) &
156 & , ZRDND(JPLAY+1), ZRDNDC(JPLAY+1)&
157 & , ZREF(JPLAY+1) , ZREFC(JPLAY+1) , ZREFO(JPLAY+1) &
158 & , ZREFD(JPLAY+1), ZREFDC(JPLAY+1), ZREFDO(JPLAY+1) &
159 & , ZRUP(JPLAY+1) , ZRUPD(JPLAY+1) &
160 & , ZRUPC(JPLAY+1), ZRUPDC(JPLAY+1)&
161 & , ZTAUC(JPLAY) , ZTAUO(JPLAY) &
162 & , ZTDBT(JPLAY+1) &
163 & , ZTRA(JPLAY+1) , ZTRAC(JPLAY+1) , ZTRAO(JPLAY+1) &
164 & , ZTRAD(JPLAY+1), ZTRADC(JPLAY+1), ZTRADO(JPLAY+1)
165 REAL(KIND=JPRB) :: &
166 & ZDBTC(JPLAY+1), ZTDBTC(JPLAY+1), ZINCFLX(JPGPT) &
167 & , ZINCF14(14) , ZINCTOT
168
169 INTEGER(KIND=JPIM) :: IB1, IB2, IBM, IGT, IKL, IW, JB, JG, JK, I_KMODTS
170
171 REAL(KIND=JPRB) :: ZARG1, ZARG2, ZDBTMC, ZDBTMO, ZF, ZINCFLUX, ZWF
172
173 !-- Output of SRTM_TAUMOLn routines
174
175 REAL(KIND=JPRB) :: ZTAUG(JPLAY,16), ZTAUR(JPLAY,16), ZSFLXZEN(16)
176
177 !-- Output of SRTM_VRTQDR routine
178 REAL(KIND=JPRB) :: &
179 & ZCD(JPLAY+1,JPGPT), ZCU(JPLAY+1,JPGPT) &
180 & , ZFD(JPLAY+1,JPGPT), ZFU(JPLAY+1,JPGPT)
181 REAL(KIND=JPRB) :: ZHOOK_HANDLE
182
183
184 INTERFACE
185 SUBROUTINE SRTM_TAUMOL16&
186 & ( KLEV,&
187 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
188 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
189 & P_COLH2O , P_COLCH4 , P_COLMOL,&
190 & K_LAYTROP , P_SELFFAC , P_SELFFRAC, K_INDSELF , P_FORFAC , P_FORFRAC, K_INDFOR,&
191 & P_SFLUXZEN, P_TAUG , P_TAUR&
192 & )
193 USE PARKIND1 ,ONLY : JPIM ,JPRB
194 USE PARSRTM , ONLY : JPLAY, JPG, NG16
195 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
196 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
197 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
198 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
199 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
200 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
201 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
202 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
203 REAL(KIND=JPRB) ,INTENT(IN) :: P_ONEMINUS
204 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
205 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLCH4(JPLAY)
206 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
207 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
208 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
209 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
210 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
211 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
212 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
213 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
214 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
215 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
216 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
217 END SUBROUTINE SRTM_TAUMOL16
218 END INTERFACE
219 INTERFACE
220 SUBROUTINE SRTM_TAUMOL17&
221 & ( KLEV,&
222 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
223 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
224 & P_COLH2O , P_COLCO2 , P_COLMOL,&
225 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
226 & P_SFLUXZEN, P_TAUG , P_TAUR&
227 & )
228 USE PARKIND1 ,ONLY : JPIM ,JPRB
229 USE PARSRTM , ONLY : JPLAY, JPG, NG17
230 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
231 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
232 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
233 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
234 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
235 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
236 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
237 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
238 REAL(KIND=JPRB) ,INTENT(IN) :: P_ONEMINUS
239 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
240 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLCO2(JPLAY)
241 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
242 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
243 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
244 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
245 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
246 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
247 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
248 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
249 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
250 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
251 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
252 END SUBROUTINE SRTM_TAUMOL17
253 END INTERFACE
254 INTERFACE
255 SUBROUTINE SRTM_TAUMOL18&
256 & ( KLEV,&
257 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
258 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
259 & P_COLH2O , P_COLCH4 , P_COLMOL,&
260 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
261 & P_SFLUXZEN, P_TAUG , P_TAUR&
262 & )
263 USE PARKIND1 ,ONLY : JPIM ,JPRB
264 USE PARSRTM , ONLY : JPLAY, JPG, NG18
265 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
266 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
267 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
268 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
269 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
270 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
271 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
272 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
273 REAL(KIND=JPRB) ,INTENT(IN) :: P_ONEMINUS
274 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
275 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLCH4(JPLAY)
276 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
277 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
278 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
279 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
280 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
281 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
282 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
283 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
284 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
285 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
286 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
287 END SUBROUTINE SRTM_TAUMOL18
288 END INTERFACE
289 INTERFACE
290 SUBROUTINE SRTM_TAUMOL19&
291 & ( KLEV,&
292 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
293 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
294 & P_COLH2O , P_COLCO2 , P_COLMOL,&
295 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
296 & P_SFLUXZEN, P_TAUG , P_TAUR&
297 & )
298 USE PARKIND1 ,ONLY : JPIM ,JPRB
299 USE PARSRTM , ONLY : JPLAY, JPG, NG19
300 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
301 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
302 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
303 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
304 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
305 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
306 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
307 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
308 REAL(KIND=JPRB) ,INTENT(IN) :: P_ONEMINUS
309 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
310 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLCO2(JPLAY)
311 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
312 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
313 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
314 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
315 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
316 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
317 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
318 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
319 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
320 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
321 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
322 END SUBROUTINE SRTM_TAUMOL19
323 END INTERFACE
324 INTERFACE
325 SUBROUTINE SRTM_TAUMOL20&
326 & ( KLEV,&
327 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
328 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
329 & P_COLH2O , P_COLCH4 , P_COLMOL,&
330 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
331 & P_SFLUXZEN, P_TAUG , P_TAUR&
332 & )
333 USE PARKIND1 ,ONLY : JPIM ,JPRB
334 USE PARSRTM , ONLY : JPLAY, JPG, NG20
335 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
336 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
337 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
338 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
339 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
340 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
341 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
342 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
343 REAL(KIND=JPRB) :: P_ONEMINUS
344 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
345 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLCH4(JPLAY)
346 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
347 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
348 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
349 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
350 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
351 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
352 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
353 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
354 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
355 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
356 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
357 END SUBROUTINE SRTM_TAUMOL20
358 END INTERFACE
359 INTERFACE
360 SUBROUTINE SRTM_TAUMOL21&
361 & ( KLEV,&
362 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
363 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
364 & P_COLH2O , P_COLCO2 , P_COLMOL,&
365 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
366 & P_SFLUXZEN, P_TAUG , P_TAUR&
367 & )
368 USE PARKIND1 ,ONLY : JPIM ,JPRB
369 USE PARSRTM , ONLY : JPLAY, JPG, NG21
370 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
371 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
372 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
373 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
374 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
375 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
376 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
377 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
378 REAL(KIND=JPRB) ,INTENT(IN) :: P_ONEMINUS
379 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
380 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLCO2(JPLAY)
381 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
382 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
383 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
384 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
385 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
386 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
387 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
388 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
389 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
390 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
391 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
392 END SUBROUTINE SRTM_TAUMOL21
393 END INTERFACE
394 INTERFACE
395 SUBROUTINE SRTM_TAUMOL22&
396 & ( KLEV,&
397 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
398 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
399 & P_COLH2O , P_COLMOL , P_COLO2,&
400 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
401 & P_SFLUXZEN, P_TAUG , P_TAUR&
402 & )
403 USE PARKIND1 ,ONLY : JPIM ,JPRB
404 USE PARSRTM , ONLY : JPLAY, JPG, NG22
405 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
406 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
407 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
408 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
409 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
410 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
411 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
412 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
413 REAL(KIND=JPRB) ,INTENT(IN) :: P_ONEMINUS
414 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
415 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
416 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLO2(JPLAY)
417 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
418 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
419 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
420 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
421 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
422 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
423 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
424 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
425 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
426 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
427 END SUBROUTINE SRTM_TAUMOL22
428 END INTERFACE
429 INTERFACE
430 SUBROUTINE SRTM_TAUMOL23&
431 & ( KLEV,&
432 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
433 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
434 & P_COLH2O , P_COLMOL,&
435 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
436 & P_SFLUXZEN, P_TAUG , P_TAUR&
437 & )
438 USE PARKIND1 ,ONLY : JPIM ,JPRB
439 USE PARSRTM , ONLY : JPLAY, JPG, NG23
440 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
441 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
442 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
443 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
444 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
445 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
446 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
447 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
448 REAL(KIND=JPRB) :: P_ONEMINUS
449 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
450 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
451 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
452 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
453 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
454 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
455 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
456 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
457 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
458 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
459 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
460 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
461 END SUBROUTINE SRTM_TAUMOL23
462 END INTERFACE
463 INTERFACE
464 SUBROUTINE SRTM_TAUMOL24&
465 & ( KLEV,&
466 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
467 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
468 & P_COLH2O , P_COLMOL , P_COLO2 , P_COLO3,&
469 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
470 & P_SFLUXZEN, P_TAUG , P_TAUR&
471 & )
472 USE PARKIND1 ,ONLY : JPIM ,JPRB
473 USE PARSRTM , ONLY : JPLAY, JPG, NG24
474 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
475 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
476 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
477 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
478 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
479 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
480 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
481 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
482 REAL(KIND=JPRB) ,INTENT(IN) :: P_ONEMINUS
483 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
484 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
485 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLO2(JPLAY)
486 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLO3(JPLAY)
487 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
488 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
489 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
490 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
491 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
492 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
493 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
494 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
495 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
496 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
497 END SUBROUTINE SRTM_TAUMOL24
498 END INTERFACE
499 INTERFACE
500 SUBROUTINE SRTM_TAUMOL25&
501 & ( KLEV,&
502 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
503 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
504 & P_COLH2O , P_COLMOL , P_COLO3,&
505 & K_LAYTROP,&
506 & P_SFLUXZEN, P_TAUG , P_TAUR&
507 & )
508 USE PARKIND1 ,ONLY : JPIM ,JPRB
509 USE PARSRTM , ONLY : JPLAY, JPG, NG25
510 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
511 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
512 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
513 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
514 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
515 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
516 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
517 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
518 REAL(KIND=JPRB) :: P_ONEMINUS
519 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
520 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
521 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLO3(JPLAY)
522 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
523 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
524 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
525 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
526 END SUBROUTINE SRTM_TAUMOL25
527 END INTERFACE
528 INTERFACE
529 SUBROUTINE SRTM_TAUMOL26&
530 & ( KLEV,&
531 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
532 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
533 & P_COLH2O , P_COLCO2 , P_COLMOL,&
534 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
535 & P_SFLUXZEN, P_TAUG , P_TAUR&
536 & )
537 USE PARKIND1 ,ONLY : JPIM ,JPRB
538 USE PARSRTM , ONLY : JPLAY, JPG, NG26
539 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
540 REAL(KIND=JPRB) :: P_FAC00(JPLAY)
541 REAL(KIND=JPRB) :: P_FAC01(JPLAY)
542 REAL(KIND=JPRB) :: P_FAC10(JPLAY)
543 REAL(KIND=JPRB) :: P_FAC11(JPLAY)
544 INTEGER(KIND=JPIM) :: K_JP(JPLAY)
545 INTEGER(KIND=JPIM) :: K_JT(JPLAY)
546 INTEGER(KIND=JPIM) :: K_JT1(JPLAY)
547 REAL(KIND=JPRB) :: P_ONEMINUS
548 REAL(KIND=JPRB) :: P_COLH2O(JPLAY)
549 REAL(KIND=JPRB) :: P_COLCO2(JPLAY)
550 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
551 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
552 REAL(KIND=JPRB) :: P_SELFFAC(JPLAY)
553 REAL(KIND=JPRB) :: P_SELFFRAC(JPLAY)
554 INTEGER(KIND=JPIM) :: K_INDSELF(JPLAY)
555 REAL(KIND=JPRB) :: P_FORFAC(JPLAY)
556 REAL(KIND=JPRB) :: P_FORFRAC(JPLAY)
557 INTEGER(KIND=JPIM) :: K_INDFOR(JPLAY)
558 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
559 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
560 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
561 END SUBROUTINE SRTM_TAUMOL26
562 END INTERFACE
563 INTERFACE
564 SUBROUTINE SRTM_TAUMOL27&
565 & ( KLEV,&
566 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
567 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
568 & P_COLMOL , P_COLO3,&
569 & K_LAYTROP,&
570 & P_SFLUXZEN, P_TAUG , P_TAUR&
571 & )
572 USE PARKIND1 ,ONLY : JPIM ,JPRB
573 USE PARSRTM , ONLY : JPLAY, JPG, NG27
574 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
575 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
576 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
577 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
578 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
579 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
580 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
581 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
582 REAL(KIND=JPRB) :: P_ONEMINUS
583 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
584 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLO3(JPLAY)
585 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
586 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
587 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
588 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
589 END SUBROUTINE SRTM_TAUMOL27
590 END INTERFACE
591 INTERFACE
592 SUBROUTINE SRTM_TAUMOL28&
593 & ( KLEV,&
594 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
595 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
596 & P_COLMOL , P_COLO2 , P_COLO3,&
597 & K_LAYTROP,&
598 & P_SFLUXZEN, P_TAUG , P_TAUR&
599 & )
600 USE PARKIND1 ,ONLY : JPIM ,JPRB
601 USE PARSRTM , ONLY : JPLAY, JPG, NG28
602 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
603 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
604 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
605 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
606 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
607 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
608 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
609 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
610 REAL(KIND=JPRB) ,INTENT(IN) :: P_ONEMINUS
611 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
612 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLO2(JPLAY)
613 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLO3(JPLAY)
614 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
615 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
616 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
617 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
618 END SUBROUTINE SRTM_TAUMOL28
619 END INTERFACE
620 INTERFACE
621 SUBROUTINE SRTM_TAUMOL29&
622 & ( KLEV,&
623 & P_FAC00 , P_FAC01 , P_FAC10 , P_FAC11,&
624 & K_JP , K_JT , K_JT1 , P_ONEMINUS,&
625 & P_COLH2O , P_COLCO2 , P_COLMOL,&
626 & K_LAYTROP , P_SELFFAC, P_SELFFRAC, K_INDSELF , P_FORFAC, P_FORFRAC, K_INDFOR,&
627 & P_SFLUXZEN, P_TAUG , P_TAUR&
628 & )
629 USE PARKIND1 ,ONLY : JPIM ,JPRB
630 USE PARSRTM , ONLY : JPLAY, JPG, NG29
631 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
632 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(JPLAY)
633 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(JPLAY)
634 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(JPLAY)
635 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(JPLAY)
636 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(JPLAY)
637 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(JPLAY)
638 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(JPLAY)
639 REAL(KIND=JPRB) :: P_ONEMINUS
640 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLH2O(JPLAY)
641 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLCO2(JPLAY)
642 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLMOL(JPLAY)
643 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
644 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(JPLAY)
645 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(JPLAY)
646 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(JPLAY)
647 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFAC(JPLAY)
648 REAL(KIND=JPRB) ,INTENT(IN) :: P_FORFRAC(JPLAY)
649 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDFOR(JPLAY)
650 REAL(KIND=JPRB) ,INTENT(OUT) :: P_SFLUXZEN(JPG)
651 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUG(JPLAY,JPG)
652 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAUR(JPLAY,JPG)
653 END SUBROUTINE SRTM_TAUMOL29
654 END INTERFACE
655 INTERFACE
656 SUBROUTINE SRTM_REFTRA&
657 & ( KLEV , KMODTS,&
658 & LDRTCHK,&
659 & PGG , PRMUZ, PTAU , PW,&
660 & PREF , PREFD, PTRA , PTRAD&
661 & )
662 USE PARKIND1 ,ONLY : JPIM ,JPRB
663 USE PARSRTM , ONLY : JPLAY
664 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
665 INTEGER(KIND=JPIM),INTENT(OUT) :: KMODTS
666 LOGICAL ,INTENT(IN) :: LDRTCHK(JPLAY)
667 REAL(KIND=JPRB) ,INTENT(IN) :: PGG(JPLAY)
668 REAL(KIND=JPRB) ,INTENT(IN) :: PRMUZ
669 REAL(KIND=JPRB) ,INTENT(IN) :: PTAU(JPLAY)
670 REAL(KIND=JPRB) ,INTENT(IN) :: PW(JPLAY)
671 REAL(KIND=JPRB) ,INTENT(INOUT) :: PREF(JPLAY)
672 REAL(KIND=JPRB) ,INTENT(INOUT) :: PREFD(JPLAY)
673 REAL(KIND=JPRB) ,INTENT(INOUT) :: PTRA(JPLAY)
674 REAL(KIND=JPRB) ,INTENT(INOUT) :: PTRAD(JPLAY)
675 END SUBROUTINE SRTM_REFTRA
676 END INTERFACE
677 INTERFACE
678 SUBROUTINE SRTM_VRTQDR&
679 & ( KLEV , KW,&
680 & PREF , PREFD, PTRA , PTRAD,&
681 & PDBT , PRDND, PRUP , PRUPD , PTDBT,&
682 & PFD , PFU&
683 & )
684 USE PARKIND1 ,ONLY : JPIM ,JPRB
685 USE PARSRTM , ONLY : JPLAY, JPGPT
686 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
687 INTEGER(KIND=JPIM),INTENT(IN) :: KW
688 REAL(KIND=JPRB) ,INTENT(IN) :: PREF(JPLAY+1)
689 REAL(KIND=JPRB) ,INTENT(IN) :: PREFD(JPLAY+1)
690 REAL(KIND=JPRB) ,INTENT(IN) :: PTRA(JPLAY+1)
691 REAL(KIND=JPRB) ,INTENT(IN) :: PTRAD(JPLAY+1)
692 REAL(KIND=JPRB) ,INTENT(IN) :: PDBT(JPLAY+1)
693 REAL(KIND=JPRB) ,INTENT(OUT) :: PRDND(JPLAY+1)
694 REAL(KIND=JPRB) ,INTENT(INOUT) :: PRUP(JPLAY+1)
695 REAL(KIND=JPRB) ,INTENT(INOUT) :: PRUPD(JPLAY+1)
696 REAL(KIND=JPRB) ,INTENT(IN) :: PTDBT(JPLAY+1)
697 REAL(KIND=JPRB) ,INTENT(INOUT) :: PFD(JPLAY+1,JPGPT)
698 REAL(KIND=JPRB) ,INTENT(INOUT) :: PFU(JPLAY+1,JPGPT)
699 END SUBROUTINE SRTM_VRTQDR
700 END INTERFACE
701 ! ------------------------------------------------------------------
702 IF (LHOOK) CALL DR_HOOK('SRTM_SPCVRT_MCICA',0,ZHOOK_HANDLE)
703
704 !-- Two-stream model 1: Eddington, 2: PIFM, Zdunkowski et al., 3: discret ordinates
705 ! KMODTS is set in SWREFTRA
706 !NDBUG=4
707
708 IB1=JPB1
709 IB2=JPB2
710 !print *,'IB1, IB2, KSW, KMOL, KLEV: ', IB1,IB2,KSW,KMOL,KLEV
711
712 IW=0
713 ZINCFLUX=0.0_JPRB
714 ZINCTOT=0.0_JPRB
715
716 JB=IB1-1
717 DO JB = IB1, IB2
718 IBM = JB-15
719 IGT = NGC(IBM)
720 ZINCF14(IBM)=0.0_JPRB
721
722 ! print *,'=== spectral band === JB= ',JB,' ====== i.e. IBM= ',IBM,' with IGT= ',IGT
723
724 !-- for each band, computes the gaseous and Rayleigh optical thickness
725 ! for all g-points within the band
726
727 IF (JB == 16) THEN
728 CALL SRTM_TAUMOL16 &
729 & ( KLEV ,&
730 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
731 & KJP , KJT , KJT1 , PONEMINUS,&
732 & PCOLH2O , PCOLCH4 , PCOLMOL ,&
733 & KLAYTROP, PSELFFAC , PSELFFRAC, KINDSELF, PFORFAC , PFORFRAC, KINDFOR ,&
734 & ZSFLXZEN, ZTAUG , ZTAUR &
735 & )
736 ! print *,'After SRTM_TAUMOL16'
737
738 ELSEIF (JB == 17) THEN
739 CALL SRTM_TAUMOL17 &
740 & ( KLEV ,&
741 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
742 & KJP , KJT , KJT1 , PONEMINUS ,&
743 & PCOLH2O , PCOLCO2 , PCOLMOL ,&
744 & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
745 & ZSFLXZEN, ZTAUG , ZTAUR &
746 & )
747 ! print *,'After SRTM_TAUMOL17'
748
749 ELSEIF (JB == 18) THEN
750 CALL SRTM_TAUMOL18 &
751 & ( KLEV ,&
752 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
753 & KJP , KJT , KJT1 , PONEMINUS ,&
754 & PCOLH2O , PCOLCH4 , PCOLMOL ,&
755 & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
756 & ZSFLXZEN, ZTAUG , ZTAUR &
757 & )
758 ! print *,'After SRTM_TAUMOL18'
759
760 ELSEIF (JB == 19) THEN
761 CALL SRTM_TAUMOL19 &
762 & ( KLEV ,&
763 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
764 & KJP , KJT , KJT1 , PONEMINUS ,&
765 & PCOLH2O , PCOLCO2 , PCOLMOL ,&
766 & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
767 & ZSFLXZEN, ZTAUG , ZTAUR &
768 & )
769 ! print *,'After SRTM_TAUMOL19'
770
771 ELSEIF (JB == 20) THEN
772 CALL SRTM_TAUMOL20 &
773 & ( KLEV ,&
774 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
775 & KJP , KJT , KJT1 , PONEMINUS ,&
776 & PCOLH2O , PCOLCH4 , PCOLMOL ,&
777 & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
778 & ZSFLXZEN, ZTAUG , ZTAUR &
779 & )
780 ! print *,'After SRTM_TAUMOL20'
781
782 ELSEIF (JB == 21) THEN
783 CALL SRTM_TAUMOL21 &
784 & ( KLEV ,&
785 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
786 & KJP , KJT , KJT1 , PONEMINUS ,&
787 & PCOLH2O , PCOLCO2 , PCOLMOL ,&
788 & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
789 & ZSFLXZEN, ZTAUG , ZTAUR &
790 & )
791 ! print *,'After SRTM_TAUMOL21'
792
793 ELSEIF (JB == 22) THEN
794 CALL SRTM_TAUMOL22 &
795 & ( KLEV ,&
796 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
797 & KJP , KJT , KJT1 , PONEMINUS ,&
798 & PCOLH2O , PCOLMOL , PCOLO2 ,&
799 & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
800 & ZSFLXZEN, ZTAUG , ZTAUR &
801 & )
802 ! print *,'After SRTM_TAUMOL22'
803
804 ELSEIF (JB == 23) THEN
805 CALL SRTM_TAUMOL23 &
806 & ( KLEV ,&
807 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
808 & KJP , KJT , KJT1 , PONEMINUS ,&
809 & PCOLH2O , PCOLMOL ,&
810 & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
811 & ZSFLXZEN, ZTAUG , ZTAUR &
812 & )
813 ! print *,'After SRTM_TAUMOL23'
814
815 ELSEIF (JB == 24) THEN
816 CALL SRTM_TAUMOL24 &
817 & ( KLEV ,&
818 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
819 & KJP , KJT , KJT1 , PONEMINUS ,&
820 & PCOLH2O , PCOLMOL , PCOLO2 , PCOLO3 ,&
821 & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
822 & ZSFLXZEN, ZTAUG , ZTAUR &
823 & )
824 ! print *,'After SRTM_TAUMOL24'
825
826 ELSEIF (JB == 25) THEN
827 !--- visible 16000-22650 cm-1 0.4415 - 0.6250 um
828 CALL SRTM_TAUMOL25 &
829 & ( KLEV ,&
830 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
831 & KJP , KJT , KJT1 , PONEMINUS ,&
832 & PCOLH2O , PCOLMOL , PCOLO3 ,&
833 & KLAYTROP ,&
834 & ZSFLXZEN, ZTAUG , ZTAUR &
835 & )
836 ! print *,'After SRTM_TAUMOL25'
837
838 ELSEIF (JB == 26) THEN
839 !--- UV-A 22650-29000 cm-1 0.3448 - 0.4415 um
840 CALL SRTM_TAUMOL26 &
841 & ( KLEV ,&
842 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
843 & KJP , KJT , KJT1 , PONEMINUS ,&
844 & PCOLH2O , PCOLCO2 , PCOLMOL ,&
845 & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
846 & ZSFLXZEN, ZTAUG , ZTAUR &
847 & )
848 ! print *,'After SRTM_TAUMOL26'
849
850 ELSEIF (JB == 27) THEN
851 !--- UV-B 29000-38000 cm-1 0.2632 - 0.3448 um
852 CALL SRTM_TAUMOL27 &
853 & ( KLEV ,&
854 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
855 & KJP , KJT , KJT1 , PONEMINUS ,&
856 & PCOLMOL , PCOLO3 ,&
857 & KLAYTROP ,&
858 & ZSFLXZEN, ZTAUG , ZTAUR &
859 & )
860 ! print *,'After SRTM_TAUMOL27'
861
862 ELSEIF (JB == 28) THEN
863 !--- UV-C 38000-50000 cm-1 0.2000 - 0.2632 um
864 CALL SRTM_TAUMOL28 &
865 & ( KLEV ,&
866 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
867 & KJP , KJT , KJT1 , PONEMINUS ,&
868 & PCOLMOL , PCOLO2 , PCOLO3 ,&
869 & KLAYTROP ,&
870 & ZSFLXZEN, ZTAUG , ZTAUR &
871 & )
872 ! print *,'After SRTM_TAUMOL28'
873
874 ELSEIF (JB == 29) THEN
875 CALL SRTM_TAUMOL29 &
876 & ( KLEV ,&
877 & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,&
878 & KJP , KJT , KJT1 , PONEMINUS ,&
879 & PCOLH2O , PCOLCO2 , PCOLMOL ,&
880 & KLAYTROP , PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,&
881 & ZSFLXZEN , ZTAUG , ZTAUR &
882 & )
883 ! print *,'After SRTM_TAUMOL29'
884
885 ENDIF
886
887 ! IF (NDBUG.LE.3) THEN
888 ! print *,'Incident Solar Flux'
889 ! PRINT 9010,(ZSFLXZEN(JG),JG=1,16)
890 9010 format(1x,'SolFlx ',16F8.4)
891 ! print *,'Optical thickness for molecular absorption for JB= ',JB
892 ! DO JK=1,KLEV
893 ! PRINT 9011,JK,(ZTAUG(JK,JG),JG=1,16)
894 9011 format(1x,'TauGas ',I3,16E9.2)
895 ! ENDDO
896 ! print *,'Optical thickness for Rayleigh scattering for JB= ',JB
897 ! DO JK=1,KLEV
898 ! PRINT 9012,JK,(ZTAUR(JK,JG),JG=1,16)
899 9012 format(1x,'TauRay ',I3,16E9.2)
900 ! ENDDO
901 ! ENDIF
902
903 DO JG=1,IGT
904 IW=IW+1
905
906 ! IF (NDBUG.LE.1) THEN
907 ! print *,' === JG= ',JG,' === for JB= ',JB,' with IW, IBM, JPLAY, KLEV=',IW,IBM,JPLAY,KLEV
908 ! ENDIF
909 ! IF (NDBUG.LE.3) THEN
910 ! print *,'Cloud optical properties for JB= ',JB
911 ! DO JK=1,KLEV
912 ! PRINT 9013,JK,PFRCL(IW,JK),PTAUC(JK,IW),POMGC(JK,IW),PASYC(JK,IW)
913 9013 format(1x,'Cloud optprop ',I3,f8.4,f8.3,2f8.5)
914 ! ENDDO
915 ! ENDIF
916
917 ZINCFLX(IW) =ZSFLXZEN(JG)*PRMU0
918 ZINCFLUX =ZINCFLUX+ZSFLXZEN(JG)*PRMU0
919 ZINCTOT =ZINCTOT+ZSFLXZEN(JG)
920 ZINCF14(IBM)=ZINCF14(IBM)+ZSFLXZEN(JG)
921
922 !-- CALL to compute layer reflectances and transmittances for direct
923 ! and diffuse sources, first clear then cloudy.
924 ! Use direct/parallel albedo for direct radiation and diffuse albedo
925 ! otherwise.
926
927 ! ZREFC(JK) direct albedo for clear
928 ! ZREFO(JK) direct albedo for cloud
929 ! ZREFDC(JK) diffuse albedo for clear
930 ! ZREFDO(JK) diffuse albedo for cloud
931 ! ZTRAC(JK) direct transmittance for clear
932 ! ZTRAO(JK) direct transmittance for cloudy
933 ! ZTRADC(JK) diffuse transmittance for clear
934 ! ZTRADO(JK) diffuse transmittance for cloudy
935
936 ! ZREF(JK) direct reflectance
937 ! ZREFD(JK) diffuse reflectance
938 ! ZTRA(JK) direct transmittance
939 ! ZTRAD(JK) diffuse transmittance
940
941 ! ZDBTC(JK) clear direct beam transmittance
942 ! ZDBTO(JK) cloudy direct beam transmittance
943 ! ZDBT(JK) layer mean direct beam transmittance
944 ! ZTDBT(JK) total direct beam transmittance at levels
945
946 !-- clear-sky
947 !----- TOA direct beam
948 ZTDBTC(1)=1._JPRB
949 !----- surface values
950 ZDBTC(KLEV+1) =0.0_JPRB
951 ZTRAC(KLEV+1) =0.0_JPRB
952 ZTRADC(KLEV+1)=0.0_JPRB
953 ZREFC(KLEV+1) =PALBP(IBM)
954 ZREFDC(KLEV+1)=PALBD(IBM)
955 ZRUPC(KLEV+1) =PALBP(IBM)
956 ZRUPDC(KLEV+1)=PALBD(IBM)
957
958 !-- total sky
959 !----- TOA direct beam
960 ZTDBT(1)=1._JPRB
961 !----- surface values
962 ZDBT(KLEV+1) =0.0_JPRB
963 ZTRA(KLEV+1) =0.0_JPRB
964 ZTRAD(KLEV+1)=0.0_JPRB
965 ZREF(KLEV+1) =PALBP(IBM)
966 ZREFD(KLEV+1)=PALBD(IBM)
967 ZRUP(KLEV+1) =PALBP(IBM)
968 ZRUPD(KLEV+1)=PALBD(IBM)
969 ! if (NDBUG < 2) print *,'SWSPCTRL after 1 with JB,JG,IBM and IW= ',JB,JG,IBM,IW
970
971
972 !-- NB: a two-stream calculations from top to bottom, but RRTM_SW quantities
973 ! are given bottom to top (argh!)
974 ! Inputs for clouds and aerosols are bottom to top as inputs
975
976 DO JK=1,KLEV
977 IKL=KLEV+1-JK
978
979 !-- clear-sky optical parameters
980 LLRTCHK(JK)=.TRUE.
981
982 ! print 9000,JK,JG,IKL,ZTAUR(IKL,JG),ZTAUG(IKL,JG),PTAUC(IKL,IW)
983 9000 format(1x,'Cloud quantities ',3I4,3E12.5)
984
985 !-- original
986 ! ZTAUC(JK)=ZTAUR(IKL,JG)+ZTAUG(IKL,JG)
987 ! ZOMCC(JK)=ZTAUR(IKL,JG)/ZTAUC(JK)
988 ! ZGCC (JK)=0.0001_JPRB
989
990 !-- total sky optical parameters
991 ! ZTAUO(JK)=ZTAUR(IKL,JG)+ZTAUG(IKL,JG)+PTAUC(IKL,IW)
992 ! ZOMCO(JK)=PTAUC(IKL,IW)*POMGC(IKL,IW)+ZTAUR(IKL,JG)
993 ! ZGCO (JK)=(PTAUC(IKL,IW)*POMGC(IKL,IW)*PASYC(IKL,IW) &
994 ! & +ZTAUR(IKL,JG)*0.0001_JPRB)/ZOMCO(JK)
995 ! ZOMCO(JK)=ZOMCO(JK)/ZTAUO(JK)
996
997 !-- clear-sky optical parameters including aerosols
998 ZTAUC(JK) = ZTAUR(IKL,JG) + ZTAUG(IKL,JG) + PTAUA(IKL,IBM)
999 ZOMCC(JK) = ZTAUR(IKL,JG)*1.0_JPRB + PTAUA(IKL,IBM)*POMGA(IKL,IBM)
1000 ZGCC (JK) = PASYA(IKL,IBM)*POMGA(IKL,IBM)*PTAUA(IKL,IBM) / ZOMCC(JK)
1001 ZOMCC(JK) = ZOMCC(JK) / ZTAUC(JK)
1002
1003 ENDDO
1004 DO JK=1,KLEV
1005 IKL=KLEV+1-JK
1006 !-- total sky optical parameters
1007 ZTAUO(JK) = ZTAUR(IKL,JG) + ZTAUG(IKL,JG) + PTAUA(IKL,IBM) + PTAUC(IKL,IW)
1008 ZOMCO(JK) = PTAUA(IKL,IBM)*POMGA(IKL,IBM) + PTAUC(IKL,IW)*POMGC(IKL,IW) &
1009 & + ZTAUR(IKL,JG)*1.0_JPRB
1010 ZGCO (JK) = (PTAUC(IKL,IW)*POMGC(IKL,IW)*PASYC(IKL,IW) &
1011 & + PTAUA(IKL,IBM)*POMGA(IKL,IBM)*PASYA(IKL,IBM)) &
1012 & / ZOMCO(JK)
1013 ZOMCO(JK) = ZOMCO(JK) / ZTAUO(JK)
1014
1015 ! if (NDBUG <2) THEN
1016 ! print 9001,JK,JG,LRTCHK(JK),0.00,ZTAUC(JK),ZOMCC(JK),ZGCC(JK),ZTAUR(IKL,JG),ZTAUG(IKL,JG)
1017 9001 format(1x,'clear :',2I3,L4,7(1x,E13.6))
1018 ! print 9002,JK,JG,LRTCHK(JK),PFRCL(IW,IKL),ZTAUO(JK),ZOMCO(JK),ZGCO(JK) &
1019 ! &,PTAUC(IKL,IW),POMGC(IKL,IW),PASYC(IKL,IW)
1020 9002 format(1x,'total0:',2I3,L4,7(1x,E13.6))
1021 ! end if
1022 ENDDO
1023 ! if (NDBUG < 2) print *,'SWSPCTRL after 2'
1024
1025 !-- Delta scaling for clear-sky / aerosol optical quantities
1026 DO JK=1,KLEV
1027 ZF=ZGCC(JK)*ZGCC(JK)
1028 ZWF=ZOMCC(JK)*ZF
1029 ZTAUC(JK)=(1._JPRB-ZWF)*ZTAUC(JK)
1030 ZOMCC(JK)=(ZOMCC(JK)-ZWF)/(1.0_JPRB-ZWF)
1031 ZGCC (JK)=(ZGCC(JK)-ZF)/(1.0_JPRB-ZF)
1032 ENDDO
1033
1034 CALL SRTM_REFTRA ( KLEV, I_KMODTS ,&
1035 & LLRTCHK, ZGCC , PRMU0, ZTAUC , ZOMCC ,&
1036 & ZREFC , ZREFDC, ZTRAC, ZTRADC )
1037 ! if (NDBUG < 2) print *,'SWSPCTR after SWREFTRA for clear-sky'
1038
1039 !-- Delta scaling for cloudy quantities
1040 DO JK=1,KLEV
1041 IKL=KLEV+1-JK
1042 LLRTCHK(JK)=.FALSE.
1043 ZF=ZGCO(JK)*ZGCO(JK)
1044 ZWF=ZOMCO(JK)*ZF
1045 ZTAUO(JK)=(1._JPRB-ZWF)*ZTAUO(JK)
1046 ZOMCO(JK)=(ZOMCO(JK)-ZWF)/(1._JPRB-ZWF)
1047 ZGCO (JK)=(ZGCO(JK)-ZF)/(1._JPRB-ZF)
1048 LLRTCHK(JK)=(PFRCL(IW,IKL) > REPCLC)
1049
1050 ! if (NDBUG < 2) THEN
1051 ! print 9003,JK,LRTCHK(JK),PFRCL(IW,IKL),ZTAUO(JK),ZOMCO(JK),ZGCO(JK) &
1052 ! &,PTAUC(IKL,IW),POMGC(IKL,IW),PASYC(IKL,IW)
1053 9003 format(1x,'totalD:',I3,L4,7(1x,E13.6))
1054 ! end if
1055
1056 ENDDO
1057 ! if (NDBUG < 2) print *,'SWSPCTR after Delta scaling'
1058
1059 CALL SRTM_REFTRA ( KLEV, I_KMODTS ,&
1060 & LLRTCHK, ZGCO , PRMU0, ZTAUO , ZOMCO ,&
1061 & ZREFO , ZREFDO, ZTRAO, ZTRADO )
1062 ! if (NDBUG < 2) print *,'SWSPCTR after SWREFTRA for cloudy'
1063
1064 DO JK=1,KLEV
1065
1066 !-- combine clear and cloudy contributions for total sky
1067
1068 IKL=KLEV+1-JK
1069 ZCLEAR = 1.0_JPRB - PFRCL(IW,IKL)
1070 ZCLOUD = PFRCL(IW,IKL)
1071
1072 ZREF(JK) = ZCLEAR*ZREFC(JK) + ZCLOUD*ZREFO(JK)
1073 ZREFD(JK)= ZCLEAR*ZREFDC(JK)+ ZCLOUD*ZREFDO(JK)
1074 ZTRA(JK) = ZCLEAR*ZTRAC(JK) + ZCLOUD*ZTRAO(JK)
1075 ZTRAD(JK)= ZCLEAR*ZTRADC(JK)+ ZCLOUD*ZTRADO(JK)
1076
1077 !-- direct beam transmittance
1078 ZARG1 = MIN( 200._JPRB, ZTAUC(JK)/PRMU0 )
1079 ZARG2 = MIN( 200._JPRB, ZTAUO(JK)/PRMU0 )
1080 ! if (PRMU0 <= 0.05_JPRB ) THEN
1081 ! print 9198,JB,IW,JK,PRMU0,ZTAUC(JK),ZTAUO(JK),PTAUC(IKL,IW),ZARG1,ZARG2,ZCLEAR,ZCLOUD,ZTDBT(JK),PFRCL(IW,IKL)
1082 9198 format(1x,'Dbg:',3I4,10E13.6)
1083 ! print 9198,KPT,JB,IW,JK,ZTAUC(JK),ZTAUO(JK),ZARG1,ZARG2,ZCLEAR,ZCLOUD,ZTDBT(JK),PFRCL(IW,IKL)
1084 !9198 format(1x,'Dbg:',4I4,9E13.6)
1085 ! endif
1086 ZDBTMC = EXP(-ZARG1 )
1087 ZDBTMO = EXP(-ZARG2 )
1088 ZDBT(JK) = ZCLEAR*ZDBTMC+ZCLOUD*ZDBTMO
1089 ZTDBT(JK+1)= ZDBT(JK)*ZTDBT(JK)
1090
1091 !-- clear-sky
1092 ZDBTC(JK) =ZDBTMC
1093 ZTDBTC(JK+1)=ZDBTC(JK)*ZTDBTC(JK)
1094
1095
1096 IF (PRMU0 <= 0.05_JPRB) THEN
1097 ! if (NDBUG < 2) print 9200,JK,ZREFC(JK),ZREFDC(JK),ZTRAC(JK),ZTRADC(JK),ZDBTC(JK),ZTDBTC(JK+1)
1098 ! if (NDBUG < 2) print 9199,JK,ZREF(JK),ZREFD(JK),ZTRA(JK),ZTRAD(JK),ZDBT(JK),ZTDBT(JK+1)
1099 ! print 9200,JK,ZREFC(JK),ZREFDC(JK),ZTRAC(JK),ZTRADC(JK),ZDBTC(JK),ZTDBTC(JK+1),ZCLEAR,ZCLOUD,PRMU0
1100 ! print 9199,JK,ZREF (JK),ZREFD (JK),ZTRA (JK),ZTRAD (JK),ZDBT (JK),ZTDBT (JK+1),ZTAUC(JK),ZTAUO(JK)
1101 ENDIF
1102 9199 format(1x,'Comb total:',I3,9E13.6)
1103 9200 format(1x,'Comb clear:',I3,9E13.6)
1104
1105 ENDDO
1106 ! if (NDBUG < 2) print *,'SRTM_SPCVRT after combining clear and cloudy'
1107
1108 !-- vertical quadrature producing clear-sky fluxes
1109
1110 ! print *,'SRTM_SPCVRT after 3 before SRTM_VRTQDR clear'
1111
1112 CALL SRTM_VRTQDR ( KLEV, IW ,&
1113 & ZREFC, ZREFDC, ZTRAC , ZTRADC ,&
1114 & ZDBTC, ZRDNDC, ZRUPC , ZRUPDC, ZTDBTC ,&
1115 & ZCD , ZCU )
1116
1117 ! IF (NDBUG < 2) THEN
1118 ! print *,'SRTM_SPCVRT out of SRTM_VRTQDR for clear IW=',IW
1119 ! DO JK=1,KLEV+1
1120 ! print 9201,JK,ZCD(JK,IW),ZCU(JK,IW)
1121 9201 format(1x,'clear-sky contrib to fluxes',I3,2F12.4)
1122 ! ENDDO
1123 ! ENDIF
1124
1125 !-- vertical quadrature producing cloudy fluxes
1126
1127 ! print *,'SRTM_SPCVRT after 4 before SRTM_VRTQDR cloudy'
1128
1129 CALL SRTM_VRTQDR ( KLEV, IW ,&
1130 & ZREF , ZREFD , ZTRA , ZTRAD ,&
1131 & ZDBT , ZRDND , ZRUP , ZRUPD , ZTDBT ,&
1132 & ZFD , ZFU )
1133
1134 ! IF (NDBUG < 2) THEN
1135 ! print *,'SRTM_SPCVRT out of SRTM_VRTQDR for cloudy IW=',IW
1136 ! DO JK=1,KLEV+1
1137 ! print 9202,JK,ZFD(JK,IW),ZFU(JK,IW)
1138 9202 format(1x,'cloudy sky contrib to fluxes',I3,2F12.4)
1139 ! ENDDO
1140 ! ENDIF
1141
1142 !-- up and down-welling fluxes at levels
1143 DO JK=1,KLEV+1
1144 !-- accumulation of spectral fluxes
1145 PBBFU(JK) = PBBFU(JK) + ZINCFLX(IW)*ZFU(JK,IW)
1146 PBBFD(JK) = PBBFD(JK) + ZINCFLX(IW)*ZFD(JK,IW)
1147 PBBCU(JK) = PBBCU(JK) + ZINCFLX(IW)*ZCU(JK,IW)
1148 PBBCD(JK) = PBBCD(JK) + ZINCFLX(IW)*ZCD(JK,IW)
1149
1150 ! to get NIR, visible and UV quantities
1151
1152 ! PBBFU(JK)=PBBFU(JK)+RWGT(IW)*ZFU(JK,IW)
1153 ! PBBFD(JK)=PBBFD(JK)+RWGT(IW)*ZFD(JK,IW)
1154 ! PBBCU(JK)=PBBCU(JK)+RWGT(IW)*ZCU(JK,IW)
1155 ! PBBCD(JK)=PBBCD(JK)+RWGT(IW)*ZCD(JK,IW)
1156 ! IF (IW <= NUV) THEN
1157 ! PUVFD(JK)=PUVFD(JK)+RWGT(IW)*ZFD(JK,IW)
1158 ! PUVFU(JK)=PUVFU(JK)+RWGT(IW)*ZFU(JK,IW)
1159 ! PUVCD(JK)=PUVCD(JK)+RWGT(IW)*ZCD(JK,IW)
1160 ! PUVCU(JK)=PUVCU(JK)+RWGT(IW)*ZCU(JK,IW)
1161 ! ELSE IF (IW == NUV+1 .AND. IW <= NVS) THEN
1162 ! PVSFD(JK)=PVSFD(JK)+RWGT(IW)*ZFD(JK,IW)
1163 ! PVSFU(JK)=PVSFU(JK)+RWGT(IW)*ZFU(JK,IW)
1164 ! PVSCD(JK)=PVSCD(JK)+RWGT(IW)*ZCD(JK,IW)
1165 ! PVSCU(JK)=PVSCU(JK)+RWGT(IW)*ZCU(JK,IW)
1166 ! ELSE IF (IW > NVS) THEN
1167 ! PNIFD(JK)=PNIFD(JK)+RWGT(IW)*ZFD(JK,IW)
1168 ! PNIFU(JK)=PNIFU(JK)+RWGT(IW)*ZFU(JK,IW)
1169 ! PNICD(JK)=PNICD(JK)+RWGT(IW)*ZCD(JK,IW)
1170 ! PNICU(JK)=PNICU(JK)+RWGT(IW)*ZCU(JK,IW)
1171 ! ENDIF
1172 ! if (NDBUG < 2) then
1173 !! if (JG.EQ.IGT) THEN
1174 ! print 9206,JB,JG,JK,IW,PBBCU(JK),PBBCD(JK),PBBFU(JK),PBBFD(JK)
1175 9206 format(1x,'fluxes up to:',3I3,I4,6E13.6)
1176 ! end if
1177 ENDDO
1178
1179 ! if (NDBUG < 2) print *,'SRTM_SPCVRT end of JG=',JG,' for JB=',JB,' i.e. IW=',IW
1180 ENDDO
1181 !-- end loop on JG
1182
1183 ! print *,' --- JB= ',JB,' with IB1, IB2= ',IB1,IB2
1184 ENDDO
1185 !-- end loop on JB
1186 !if (NDBUG < 2) print *,'SRTM_SPCVRT about to come out'
1187 !print *,'SRTM_SPCVRT about to come out'
1188
1189 !DO IBM=1,14
1190 ! print 9301,IBM,ZINCF14(IBM), ZINCTOT, ZINCF14(IBM)/ZINCTOT
1191 9301 format(1x,'Incident Spectral Flux: ',I3,2E15.8,F12.8)
1192 !ENDDO
1193
1194 ! ------------------------------------------------------------------
1195 IF (LHOOK) CALL DR_HOOK('SRTM_SPCVRT_MCICA',1,ZHOOK_HANDLE)
1196 END SUBROUTINE SRTM_SPCVRT_MCICA
1197