GCC Code Coverage Report


Directory: ./
File: rad/swni.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 218 230 94.8%
Branches: 85 88 96.6%

Line Branch Exec Source
1 360 SUBROUTINE SWNI &
2 & ( KIDIA , KFDIA , KLON , KLEV , KAER , KNU,&
3 360 & PAER , PAKI , PALBD , PALBP, PCG , PCLD, PCLEAR,&
4 360 & PDSIG , POMEGA, POZ , PRMU , PSEC , PTAU,&
5 360 & PUD , PWV , PQS,&
6 360 & PFDOWN, PFUP , PCDOWN, PCUP , PSUDU2, PDIFF , PDIRF, &
7 !++MODIFCODE
8 & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST )
9 !--MODIFCODE
10
11 !**** *SWNI* - SHORTWAVE RADIATION, NEAR-INFRARED SPECTRAL INTERVALS
12
13 ! PURPOSE.
14 ! --------
15
16 ! COMPUTES THE SHORTWAVE RADIATION FLUXES IN THE NEAR-INFRARED
17 ! SPECTRAL INTERVALS FOLLOWING FOUQUART AND BONNEL (1980).
18
19 !** INTERFACE.
20 ! ----------
21
22 ! *SWNI* IS CALLED FROM *SW*.
23
24 ! IMPLICIT ARGUMENTS :
25 ! --------------------
26
27 ! ==== INPUTS ===
28 ! ==== OUTPUTS ===
29
30 ! METHOD.
31 ! -------
32
33 ! 1. COMPUTES REFLECTIVITY/TRANSMISSIVITY CORRESPONDING TO
34 ! CONTINUUM SCATTERING
35 ! 2. COMPUTES REFLECTIVITY/TRANSMISSIVITY CORRESPONDING FOR
36 ! A GREY MOLECULAR ABSORPTION
37 ! 3. LAPLACE TRANSFORM ON THE PREVIOUS TO GET EFFECTIVE AMOUNTS
38 ! OF ABSORBERS
39 ! 4. APPLY H2O AND U.M.G. TRANSMISSION FUNCTIONS
40 ! 5. MULTIPLY BY OZONE TRANSMISSION FUNCTION
41
42 ! EXTERNALS.
43 ! ----------
44
45 ! *SWCLR*, *SWR*, *SWDE*, *SWTT*
46
47 ! REFERENCE.
48 ! ----------
49
50 ! SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
51 ! DOCUMENTATION, AND FOUQUART AND BONNEL (1980)
52
53 ! AUTHOR.
54 ! -------
55 ! JEAN-JACQUES MORCRETTE *ECMWF*
56
57 ! MODIFICATIONS.
58 ! --------------
59 ! ORIGINAL : 89-07-14
60 ! 94-11-15 J.-J. MORCRETTE DIRECT/DIFFUSE ALBEDO
61 ! 95-12-07 J.-J. MORCRETTE NEAR-INFRARED SW
62 ! 990128 JJMorcrette Sunshine duration
63 ! 99-05-25 JJMorcrette Revised aerosols
64 ! 03-03-17 JJMorcrette Sunshine duration (correction)
65 ! 03-10-10 Deborah Salmond and Marta Janiskova Optimisation
66 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
67 ! 04-11-18 Y.Seity : add 2 arguments for AROME extern. surface
68 ! Y.Seity 05-10-10 : add add 3 optional arg. for dust SW properties
69 ! Y.Seity 06-09-09 : add modset from O.Thouron (MesoNH) under NOVLP tests
70 ! ------------------------------------------------------------------
71
72 USE PARKIND1 ,ONLY : JPIM ,JPRB
73 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
74
75 USE YOESW , ONLY : RRAY ,RSUN ,RSWCE ,RSWCP
76 !++MODIFCODE
77 !USE YOERAD , ONLY : NSW ,NOVLP
78 ! NSW mis dans .def MPL 20140211
79 USE YOERAD , ONLY : NOVLP
80 !--MODIFCODE
81 USE YOERDU , ONLY : REPLOG ,REPSCQ ,REPSC
82 USE write_field_phy
83
84 IMPLICIT NONE
85
86 include "clesphys.h"
87
88 character*1 str1
89 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
90 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
91 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
92 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
93 INTEGER(KIND=JPIM),INTENT(IN) :: KAER
94 INTEGER(KIND=JPIM),INTENT(IN) :: KNU
95 REAL(KIND=JPRB) ,INTENT(IN) :: PAER(KLON,6,KLEV)
96 REAL(KIND=JPRB) ,INTENT(IN) :: PAKI(KLON,2,NSW)
97 REAL(KIND=JPRB) ,INTENT(IN) :: PALBD(KLON,NSW)
98 REAL(KIND=JPRB) ,INTENT(IN) :: PALBP(KLON,NSW)
99 REAL(KIND=JPRB) ,INTENT(IN) :: PCG(KLON,NSW,KLEV)
100 REAL(KIND=JPRB) ,INTENT(IN) :: PCLD(KLON,KLEV)
101 REAL(KIND=JPRB) ,INTENT(IN) :: PCLEAR(KLON)
102 REAL(KIND=JPRB) ,INTENT(IN) :: PDSIG(KLON,KLEV)
103 REAL(KIND=JPRB) ,INTENT(IN) :: POMEGA(KLON,NSW,KLEV)
104 REAL(KIND=JPRB) ,INTENT(IN) :: POZ(KLON,KLEV)
105 REAL(KIND=JPRB) ,INTENT(IN) :: PRMU(KLON)
106 REAL(KIND=JPRB) ,INTENT(IN) :: PSEC(KLON)
107 REAL(KIND=JPRB) ,INTENT(IN) :: PTAU(KLON,NSW,KLEV)
108 REAL(KIND=JPRB) ,INTENT(IN) :: PUD(KLON,5,KLEV+1)
109 REAL(KIND=JPRB) ,INTENT(IN) :: PWV(KLON,KLEV)
110 REAL(KIND=JPRB) ,INTENT(IN) :: PQS(KLON,KLEV)
111 !++MODIFCODE
112 LOGICAL ,INTENT(IN) :: LRDUST
113 REAL(KIND=JPRB) ,INTENT(IN) :: PPIZA_DST(KLON,KLEV)
114 REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(KLON,KLEV)
115 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUREL_DST(KLON,KLEV)
116 !--MODIFCODE
117 REAL(KIND=JPRB) ,INTENT(OUT) :: PFDOWN(KLON,KLEV+1)
118 REAL(KIND=JPRB) ,INTENT(OUT) :: PFUP(KLON,KLEV+1)
119 REAL(KIND=JPRB) ,INTENT(OUT) :: PCDOWN(KLON,KLEV+1)
120 REAL(KIND=JPRB) ,INTENT(OUT) :: PCUP(KLON,KLEV+1)
121 REAL(KIND=JPRB) ,INTENT(OUT) :: PSUDU2(KLON)
122 REAL(KIND=JPRB) ,INTENT(OUT) :: PDIFF(KLON,KLEV)
123 REAL(KIND=JPRB) ,INTENT(OUT) :: PDIRF(KLON,KLEV)
124 !#include "yoeaer.h"
125 ! ------------------------------------------------------------------
126
127 !* 0.1 ARGUMENTS
128 ! ---------
129
130 ! ------------------------------------------------------------------
131
132 ! ------------
133
134 INTEGER(KIND=JPIM) :: IIND2(2), IIND3(6)
135 720 REAL(KIND=JPRB) :: ZCGAZ(KLON,KLEV) , ZDIFF(KLON) , ZDIRF(KLON)&
136 720 & , ZFD(KLON,KLEV+1) , ZFU(KLON,KLEV+1) &
137 720 & , ZG(KLON) , ZGG(KLON)
138 720 REAL(KIND=JPRB) :: ZPIZAZ(KLON,KLEV)&
139 720 & , ZRAYL(KLON) , ZRAY1(KLON,KLEV+1) , ZRAY2(KLON,KLEV+1)&
140 720 & , ZREF(KLON) , ZREFZ(KLON,2,KLEV+1)&
141 720 & , ZRE1(KLON) , ZRE2(KLON)&
142 720 & , ZRJ(KLON,6,KLEV+1), ZRJ0(KLON,6,KLEV+1)&
143 720 & , ZRK(KLON,6,KLEV+1), ZRK0(KLON,6,KLEV+1)&
144 720 & , ZRL(KLON,8)&
145 720 & , ZRMUE(KLON,KLEV+1), ZRMU0(KLON,KLEV+1) , ZRMUZ(KLON)&
146 720 & , ZRNEB(KLON) , ZRUEF(KLON,8) , ZR1(KLON) &
147 720 & , ZR2(KLON,2) , ZR3(KLON,6) , ZR4(KLON,2)&
148 720 & , ZR21(KLON) , ZR22(KLON)
149 720 REAL(KIND=JPRB) :: ZS(KLON)&
150 720 & , ZTAUAZ(KLON,KLEV) , ZTO1(KLON) , ZTR(KLON,2,KLEV+1)&
151 720 & , ZTRA1(KLON,KLEV+1), ZTRA2(KLON,KLEV+1)&
152 720 & , ZTRCLD(KLON) , ZTRCLR(KLON)&
153 720 & , ZTR1(KLON) , ZTR2(KLON)&
154 720 & , ZW(KLON) , ZW1(KLON) , ZW2(KLON,2)&
155 720 & , ZW3(KLON,6) , ZW4(KLON,2) , ZW5(KLON,2)
156
157 INTEGER(KIND=JPIM) :: IABS, IKL, IKM1, JABS, JAJ, JAJP, JK, JKKI,&
158 & JKKP4, JKL, JKLP1, JKM1, JL, JN, JN2J, JREF
159
160 REAL(KIND=JPRB) :: ZAA, ZBB, ZCNEB, ZRE11, ZRKI, ZRMUM1, ZWH2O, ZCHKG, ZCHKS
161 REAL(KIND=JPRB) :: ZRR,ZRRJ,ZRRK
162 REAL(KIND=JPRB) :: ZHOOK_HANDLE
163 !++MODIF_CODE
164 720 REAL(KIND=JPRB) :: ZB_ODI(KLON)
165 !--MODIF_CODE
166 LOGICAL :: LLDEBUG
167
168 INTERFACE
169 SUBROUTINE SWCLR&
170 & ( KIDIA , KFDIA , KLON , KLEV , KAER , KNU,&
171 & PAER , PALBP , PDSIG , PRAYL , PSEC,&
172 & PCGAZ , PPIZAZ, PRAY1 , PRAY2 , PREFZ , PRJ,&
173 & PRK , PRMU0 , PTAUAZ, PTRA1 , PTRA2 , PTRCLR,&
174 & LRDUST,PPIZA_DST, PCGA_DST, PTAUREL_DST )
175 USE PARKIND1 ,ONLY : JPIM ,JPRB
176 USE YOERAD , ONLY : NOVLP
177 include "clesphys.h"
178 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
179 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
180 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
181 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
182 INTEGER(KIND=JPIM),INTENT(IN) :: KAER
183 INTEGER(KIND=JPIM),INTENT(IN) :: KNU
184 REAL(KIND=JPRB) ,INTENT(IN) :: PAER(KLON,6,KLEV)
185 REAL(KIND=JPRB) ,INTENT(IN) :: PALBP(KLON,NSW)
186 REAL(KIND=JPRB) ,INTENT(IN) :: PDSIG(KLON,KLEV)
187 REAL(KIND=JPRB) ,INTENT(IN) :: PRAYL(KLON)
188 REAL(KIND=JPRB) ,INTENT(IN) :: PSEC(KLON)
189 LOGICAL ,INTENT(IN) :: LRDUST
190 REAL(KIND=JPRB) ,INTENT(IN) :: PPIZA_DST(KLON,KLEV)
191 REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(KLON,KLEV)
192 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUREL_DST(KLON,KLEV)
193 REAL(KIND=JPRB) ,INTENT(OUT) :: PCGAZ(KLON,KLEV)
194 REAL(KIND=JPRB) ,INTENT(OUT) :: PPIZAZ(KLON,KLEV)
195 REAL(KIND=JPRB) ,INTENT(OUT) :: PRAY1(KLON,KLEV+1)
196 REAL(KIND=JPRB) ,INTENT(OUT) :: PRAY2(KLON,KLEV+1)
197 REAL(KIND=JPRB) ,INTENT(OUT) :: PREFZ(KLON,2,KLEV+1)
198 REAL(KIND=JPRB) ,INTENT(OUT) :: PRJ(KLON,6,KLEV+1)
199 REAL(KIND=JPRB) ,INTENT(OUT) :: PRK(KLON,6,KLEV+1)
200 REAL(KIND=JPRB) ,INTENT(OUT) :: PRMU0(KLON,KLEV+1)
201 REAL(KIND=JPRB) ,INTENT(OUT) :: PTAUAZ(KLON,KLEV)
202 REAL(KIND=JPRB) ,INTENT(OUT) :: PTRA1(KLON,KLEV+1)
203 REAL(KIND=JPRB) ,INTENT(OUT) :: PTRA2(KLON,KLEV+1)
204 REAL(KIND=JPRB) ,INTENT(OUT) :: PTRCLR(KLON)
205 END SUBROUTINE SWCLR
206 END INTERFACE
207 INTERFACE
208 SUBROUTINE SWDE&
209 & ( KIDIA, KFDIA, KLON,&
210 & PGG , PREF , PRMUZ, PTO1, PW,&
211 & PRE1 , PRE2 , PTR1 , PTR2&
212 & )
213 USE PARKIND1 ,ONLY : JPIM ,JPRB
214 USE YOMJFH , ONLY : N_VMASS
215 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
216 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
217 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
218 REAL(KIND=JPRB) ,INTENT(IN) :: PGG(KLON)
219 REAL(KIND=JPRB) ,INTENT(IN) :: PREF(KLON)
220 REAL(KIND=JPRB) ,INTENT(IN) :: PRMUZ(KLON)
221 REAL(KIND=JPRB) ,INTENT(IN) :: PTO1(KLON)
222 REAL(KIND=JPRB) ,INTENT(IN) :: PW(KLON)
223 REAL(KIND=JPRB) ,INTENT(OUT) :: PRE1(KLON)
224 REAL(KIND=JPRB) ,INTENT(OUT) :: PRE2(KLON)
225 REAL(KIND=JPRB) ,INTENT(OUT) :: PTR1(KLON)
226 REAL(KIND=JPRB) ,INTENT(OUT) :: PTR2(KLON)
227 END SUBROUTINE SWDE
228 END INTERFACE
229 INTERFACE
230 SUBROUTINE SWR&
231 & ( KIDIA , KFDIA , KLON , KLEV , KNU,&
232 & PALBD , PCG , PCLD , POMEGA, PSEC , PTAU,&
233 & PCGAZ , PPIZAZ, PRAY1, PRAY2 , PREFZ, PRJ , PRK , PRMUE,&
234 & PTAUAZ, PTRA1 , PTRA2, PTRCLD&
235 & )
236 USE PARKIND1 ,ONLY : JPIM ,JPRB
237 USE YOERAD , ONLY : NOVLP
238 include "clesphys.h"
239 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
240 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
241 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
242 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
243 INTEGER(KIND=JPIM),INTENT(IN) :: KNU
244 REAL(KIND=JPRB) ,INTENT(IN) :: PALBD(KLON,NSW)
245 REAL(KIND=JPRB) ,INTENT(IN) :: PCG(KLON,NSW,KLEV)
246 REAL(KIND=JPRB) ,INTENT(IN) :: PCLD(KLON,KLEV)
247 REAL(KIND=JPRB) ,INTENT(IN) :: POMEGA(KLON,NSW,KLEV)
248 REAL(KIND=JPRB) ,INTENT(IN) :: PSEC(KLON)
249 REAL(KIND=JPRB) ,INTENT(IN) :: PTAU(KLON,NSW,KLEV)
250 REAL(KIND=JPRB) ,INTENT(IN) :: PCGAZ(KLON,KLEV)
251 REAL(KIND=JPRB) ,INTENT(IN) :: PPIZAZ(KLON,KLEV)
252 REAL(KIND=JPRB) ,INTENT(OUT) :: PRAY1(KLON,KLEV+1)
253 REAL(KIND=JPRB) ,INTENT(OUT) :: PRAY2(KLON,KLEV+1)
254 REAL(KIND=JPRB) ,INTENT(OUT) :: PREFZ(KLON,2,KLEV+1)
255 REAL(KIND=JPRB) ,INTENT(OUT) :: PRJ(KLON,6,KLEV+1)
256 REAL(KIND=JPRB) ,INTENT(OUT) :: PRK(KLON,6,KLEV+1)
257 REAL(KIND=JPRB) ,INTENT(OUT) :: PRMUE(KLON,KLEV+1)
258 REAL(KIND=JPRB) ,INTENT(IN) :: PTAUAZ(KLON,KLEV)
259 REAL(KIND=JPRB) ,INTENT(OUT) :: PTRA1(KLON,KLEV+1)
260 REAL(KIND=JPRB) ,INTENT(OUT) :: PTRA2(KLON,KLEV+1)
261 REAL(KIND=JPRB) ,INTENT(OUT) :: PTRCLD(KLON)
262 END SUBROUTINE SWR
263 END INTERFACE
264 INTERFACE
265 SUBROUTINE SWTT ( KIDIA, KFDIA, KLON, KNU, KA , PU, PTR)
266 USE PARKIND1 ,ONLY : JPIM ,JPRB
267 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
268 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
269 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
270 INTEGER(KIND=JPIM),INTENT(IN) :: KNU
271 INTEGER(KIND=JPIM),INTENT(IN) :: KA
272 REAL(KIND=JPRB) ,INTENT(IN) :: PU(KLON)
273 REAL(KIND=JPRB) ,INTENT(OUT) :: PTR(KLON)
274 END SUBROUTINE SWTT
275 END INTERFACE
276 INTERFACE
277 SUBROUTINE SWTT1 ( KIDIA,KFDIA,KLON,KNU,KABS,KIND, PU, PTR )
278 USE PARKIND1 ,ONLY : JPIM ,JPRB
279 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
280 INTEGER(KIND=JPIM),INTENT(IN) :: KABS
281 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
282 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
283 INTEGER(KIND=JPIM),INTENT(IN) :: KNU
284 INTEGER(KIND=JPIM),INTENT(IN) :: KIND(KABS)
285 REAL(KIND=JPRB) ,INTENT(IN) :: PU(KLON,KABS)
286 REAL(KIND=JPRB) ,INTENT(OUT) :: PTR(KLON,KABS)
287 END SUBROUTINE SWTT1
288 END INTERFACE
289
290 LLDEBUG=.FALSE.
291
292 IF(LLDEBUG) THEN
293 write(str1,'(i1)') knu
294 ! call writefield_phy("sw_zcduvs"//str1,zcduvs,klev+1)
295 ENDIF
296
297 ! ------------------------------------------------------------------
298
299 !* 1. NEAR-INFRARED SPECTRAL INTERVAL (0.68-4.00 MICRON)
300 ! --------------------------------------------------
301
302 !* 1.1 OPTICAL THICKNESS FOR RAYLEIGH SCATTERING
303 ! -----------------------------------------
304
305
1/2
✓ Branch 0 taken 360 times.
✗ Branch 1 not taken.
360 IF (LHOOK) CALL DR_HOOK('SWNI',0,ZHOOK_HANDLE)
306
2/2
✓ Branch 0 taken 357840 times.
✓ Branch 1 taken 360 times.
358200 DO JL = KIDIA,KFDIA
307 357840 ZRMUM1 = 1.0_JPRB - PRMU(JL)
308 ZRAYL(JL) = RRAY(KNU,1) + ZRMUM1 * (RRAY(KNU,2) + ZRMUM1 &
309 & * (RRAY(KNU,3) + ZRMUM1 * (RRAY(KNU,4) + ZRMUM1 &
310 357840 & * (RRAY(KNU,5) + ZRMUM1 * RRAY(KNU,6) ))))
311 358200 ZRAYL(JL) = MAX (ZRAYL(JL), 0.0_JPRB)
312 ENDDO
313
314 ! ------------------------------------------------------------------
315
316 !* 2. CONTINUUM SCATTERING CALCULATIONS
317 ! ---------------------------------
318
319 !* 2.1 CLEAR-SKY FRACTION OF THE COLUMN
320 ! --------------------------------
321
322
323 !++MODIFCODE
324 CALL SWCLR &
325 &( KIDIA , KFDIA , KLON , KLEV , KAER , KNU &
326 &, PAER , PALBP , PDSIG , ZRAYL, PSEC &
327 &, ZCGAZ , ZPIZAZ, ZRAY1 , ZRAY2, ZREFZ, ZRJ0 &
328 &, ZRK0 , ZRMU0 , ZTAUAZ, ZTRA1, ZTRA2, ZTRCLR &
329 &, LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST &
330 360 &)
331 !--MODIFCODE
332
333 !* 2.2 CLOUDY FRACTION OF THE COLUMN
334 ! -----------------------------
335
336 CALL SWR &
337 & ( KIDIA , KFDIA , KLON , KLEV , KNU,&
338 & PALBD , PCG , PCLD , POMEGA, PSEC , PTAU,&
339 & ZCGAZ , ZPIZAZ, ZRAY1, ZRAY2 , ZREFZ, ZRJ , ZRK, ZRMUE,&
340 & ZTAUAZ, ZTRA1 , ZTRA2, ZTRCLD &
341 360 & )
342
343 ! ------------------------------------------------------------------
344
345 !* 3. SCATTERING CALCULATIONS WITH GREY MOLECULAR ABSORPTION
346 ! ------------------------------------------------------
347
348 JN = 2
349
350
2/2
✓ Branch 0 taken 720 times.
✓ Branch 1 taken 360 times.
1080 DO JABS=1,2
351
352 !* 3.1 SURFACE CONDITIONS
353 ! ------------------
354
355
2/2
✓ Branch 0 taken 715680 times.
✓ Branch 1 taken 720 times.
716400 DO JL = KIDIA,KFDIA
356 715680 ZREFZ(JL,2,1) = PALBD(JL,KNU)
357 716400 ZREFZ(JL,1,1) = PALBD(JL,KNU)
358 ENDDO
359
360 !* 3.2 INTRODUCING CLOUD EFFECTS
361 ! -------------------------
362
363
2/2
✓ Branch 0 taken 28080 times.
✓ Branch 1 taken 720 times.
28800 DO JK = 2 , KLEV+1
364 28080 JKM1 = JK - 1
365 28080 IKL=KLEV+1-JKM1
366
2/2
✓ Branch 0 taken 27911520 times.
✓ Branch 1 taken 28080 times.
27939600 DO JL = KIDIA,KFDIA
367 27911520 ZRNEB(JL) = PCLD(JL,JKM1)
368
4/4
✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 13955760 times.
✓ Branch 2 taken 3276111 times.
✓ Branch 3 taken 10679649 times.
27911520 IF (JABS == 1.AND. ZRNEB(JL) > REPSC ) THEN
369 3276111 ZWH2O=MAX(PWV(JL,IKL),REPSCQ)
370 3276111 ZCNEB=MAX(REPSC ,MIN(ZRNEB(JL),1.0_JPRB-REPSC ))
371 3276111 ZBB=PUD(JL,JABS,JKM1)*PQS(JL,IKL)/ZWH2O
372 3276111 ZAA=MAX((PUD(JL,JABS,JKM1)-ZCNEB*ZBB)/(1.0_JPRB-ZCNEB),REPSCQ)
373 ELSE
374 24635409 ZAA=PUD(JL,JABS,JKM1)
375 ZBB=ZAA
376 ZCNEB=0.0_JPRB
377 ZWH2O=MAX(PWV(JL,IKL),REPSCQ)
378 ENDIF
379
380 ! ZEXP1=-ZRKI * ZAA * 1.66_JPRB
381 ! ZEXP2=-ZRKI * ZAA / ZRMUE(JL,JK)
382 ! IF ( ZEXP1 > _ZERO_ .OR. ZEXP2 > _ZERO_ &
383 ! & .OR. ZEXP1 < -700._JPRB .OR. ZEXP2 < -700._JPRB ) THEN
384 ! WRITE (NULOUT,'(" SWNI 3.2 : JK=",I4," JL=",I4," JABS=",I4,,8E13.6)') &
385 ! & JK,JL,JABS,ZAA,ZBB,ZRKI,ZCNEB,ZWH2O,ZRMUE(JL,JK),ZEXP1,ZEXP2
386 ! END IF
387
388 27911520 ZRKI = PAKI(JL,JABS,KNU)
389 ! ZS(JL) = EXP(-ZRKI * ZAA * 1.66_JPRB)
390 ! ZG(JL) = EXP(-ZRKI * ZAA / ZRMUE(JL,JK) )
391
392 27911520 ZCHKS = MIN( 200._JPRB, ZRKI * ZAA * 1.66_JPRB )
393 27911520 ZCHKG = MIN( 200._JPRB, ZRKI * ZAA / ZRMUE(JL,JK))
394 27911520 ZS(JL) = EXP( - ZCHKS )
395 27911520 ZG(JL) = EXP( - ZCHKG )
396
397 27911520 ZTR1(JL) = 0.0_JPRB
398 27911520 ZRE1(JL) = 0.0_JPRB
399 27911520 ZTR2(JL) = 0.0_JPRB
400 27911520 ZRE2(JL) = 0.0_JPRB
401
402 !++MODIFCODE
403
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 27911520 times.
27911520 IF (NOVLP >= 5)THEN !MESONH VERSION
404 ZW(JL) =PCG(JL,KNU,JKM1)*PCG(JL,KNU,JKM1)
405 ZTO1(JL) = PTAU(JL,KNU,JKM1)*(1-(POMEGA(JL,KNU,JKM1)*ZW(JL)))
406 ZW(JL) =POMEGA(JL,KNU,JKM1)*(1-ZW(JL))/(1-(POMEGA(JL,KNU,JKM1)*ZW(JL)))
407 ZGG(JL) =PCG(JL,KNU,JKM1)/(1+PCG(JL,KNU,JKM1))
408 ZGG(JL)=ZTO1(JL)*ZW(JL)*ZGG(JL)+ZTAUAZ(JL,JKM1)*ZPIZAZ(JL,JKM1)*ZCGAZ(JL,JKM1)
409 ZGG(JL)=ZGG(JL)/(ZTO1(JL)*ZW(JL)+ZTAUAZ(JL,JKM1)*ZPIZAZ(JL,JKM1))
410 ZB_ODI(JL)=ZTO1(JL) / ZW(JL)&
411 &+ ZTAUAZ(JL,JKM1) / ZPIZAZ(JL,JKM1)&
412 !if g=0 tau/w=tau'/w'
413 &+ ZBB * ZRKI
414 ZB_ODI(JL)=(1/( (ZTO1(JL) / ZW(JL))&
415 &+ (ZTAUAZ(JL,JKM1) / ZPIZAZ(JL,JKM1)) ))-(1/ZB_ODI(JL))
416 ZB_ODI(JL)=((ZTO1(JL) + ZTAUAZ(JL,JKM1))**2)*ZB_ODI(JL)
417 ZW(JL)=ZTO1(JL)*ZW(JL)+ZTAUAZ(JL,JKM1)*ZPIZAZ(JL,JKM1)-ZB_ODI(JL)
418 ZTO1(JL) = ZTO1(JL) + ZTAUAZ(JL,JKM1)
419 ZW(JL)=ZW(JL)/ZTO1(JL)
420 ELSE !ECMWF VERSION
421 27911520 ZW(JL)= POMEGA(JL,KNU,JKM1)
422 ZTO1(JL) = PTAU(JL,KNU,JKM1) / ZW(JL)&
423 & + ZTAUAZ(JL,JKM1) / ZPIZAZ(JL,JKM1)&
424 27911520 & + ZBB * ZRKI
425 27911520 ZR21(JL) = PTAU(JL,KNU,JKM1) + ZTAUAZ(JL,JKM1)
426 27911520 ZR22(JL) = PTAU(JL,KNU,JKM1) / ZR21(JL)
427 ZGG(JL) = ZR22(JL) * PCG(JL,KNU,JKM1)&
428 27911520 & + (1.0_JPRB - ZR22(JL)) * ZCGAZ(JL,JKM1)
429 27911520 ZW(JL) = ZR21(JL) / ZTO1(JL)
430 ENDIF
431 !--MODIFCODE
432 27911520 ZREF(JL) = ZREFZ(JL,1,JKM1)
433 27939600 ZRMUZ(JL) = ZRMUE(JL,JK)
434 ENDDO
435
436 CALL SWDE ( KIDIA, KFDIA, KLON,&
437 & ZGG , ZREF , ZRMUZ, ZTO1, ZW,&
438 28080 & ZRE1 , ZRE2 , ZTR1 , ZTR2 )
439
440
2/2
✓ Branch 0 taken 27911520 times.
✓ Branch 1 taken 28080 times.
27940320 DO JL = KIDIA,KFDIA
441
442 27911520 ZRR=1.0_JPRB/(1.0_JPRB-ZRAY2(JL,JKM1)*ZREFZ(JL,1,JKM1))
443 ZREFZ(JL,2,JK) = (1.0_JPRB-ZRNEB(JL)) * (ZRAY1(JL,JKM1)&
444 & + ZREFZ(JL,2,JKM1) * ZTRA1(JL,JKM1)&
445 & * ZTRA2(JL,JKM1) ) * ZG(JL) * ZS(JL)&
446 27911520 & + ZRNEB(JL) * ZRE1(JL)
447
448 ZTR(JL,2,JKM1)=ZRNEB(JL)*ZTR1(JL)&
449 27911520 & + (ZTRA1(JL,JKM1)) * ZG(JL) * (1.0_JPRB-ZRNEB(JL))
450
451 ZREFZ(JL,1,JK)=(1.0_JPRB-ZRNEB(JL))*(ZRAY1(JL,JKM1)&
452 & +ZREFZ(JL,1,JKM1)*ZTRA1(JL,JKM1)*ZTRA2(JL,JKM1)&
453 & *ZRR ) &
454 & *ZG(JL)*ZS(JL)&
455 27911520 & + ZRNEB(JL) * ZRE2(JL)
456
457 ZTR(JL,1,JKM1)= ZRNEB(JL) * ZTR2(JL)&
458 & + (ZTRA1(JL,JKM1) &
459 & *ZRR ) &
460 27939600 & * ZG(JL) * (1.0_JPRB -ZRNEB(JL))
461
462 ENDDO
463 ENDDO
464
465 !* 3.3 REFLECT./TRANSMISSIVITY BETWEEN SURFACE AND LEVEL
466 ! -------------------------------------------------
467
468
2/2
✓ Branch 0 taken 1440 times.
✓ Branch 1 taken 720 times.
2520 DO JREF=1,2
469
470 1440 JN = JN + 1
471
472
2/2
✓ Branch 0 taken 1431360 times.
✓ Branch 1 taken 1440 times.
1432800 DO JL = KIDIA,KFDIA
473 1431360 ZRJ(JL,JN,KLEV+1) = 1.0_JPRB
474 1432800 ZRK(JL,JN,KLEV+1) = ZREFZ(JL,JREF,KLEV+1)
475 ENDDO
476
477
2/2
✓ Branch 0 taken 56160 times.
✓ Branch 1 taken 1440 times.
58320 DO JK = 1 , KLEV
478 56160 JKL = KLEV+1 - JK
479 56160 JKLP1 = JKL + 1
480
2/2
✓ Branch 0 taken 55823040 times.
✓ Branch 1 taken 56160 times.
55880640 DO JL = KIDIA,KFDIA
481 55823040 ZRE11 = ZRJ(JL,JN,JKLP1) * ZTR(JL,JREF,JKL)
482 55823040 ZRJ(JL,JN,JKL) = ZRE11
483 55879200 ZRK(JL,JN,JKL) = ZRE11 * ZREFZ(JL,JREF,JKL)
484 ENDDO
485 ENDDO
486 ENDDO
487 ENDDO
488
489 ! ------------------------------------------------------------------
490
491 !* 4. INVERT GREY AND CONTINUUM FLUXES
492 ! --------------------------------
493
494 !* 4.1 UPWARD (ZRK) AND DOWNWARD (ZRJ) PSEUDO-FLUXES
495 ! ---------------------------------------------
496
497
2/2
✓ Branch 0 taken 14400 times.
✓ Branch 1 taken 360 times.
14760 DO JK = 1 , KLEV+1
498
2/2
✓ Branch 0 taken 28800 times.
✓ Branch 1 taken 14400 times.
43560 DO JAJ = 1 , 5 , 2
499 43200 JAJP = JAJ + 1
500
2/2
✓ Branch 0 taken 42940800 times.
✓ Branch 1 taken 43200 times.
42998400 DO JL = KIDIA,KFDIA
501 42940800 ZRJ(JL,JAJ,JK)= ZRJ(JL,JAJ,JK) - ZRJ(JL,JAJP,JK)
502 42940800 ZRK(JL,JAJ,JK)= ZRK(JL,JAJ,JK) - ZRK(JL,JAJP,JK)
503 42940800 ZRJ(JL,JAJ,JK)= MAX( ZRJ(JL,JAJ,JK) , REPLOG )
504 42984000 ZRK(JL,JAJ,JK)= MAX( ZRK(JL,JAJ,JK) , REPLOG )
505 ENDDO
506 ENDDO
507 ENDDO
508
509
2/2
✓ Branch 0 taken 14400 times.
✓ Branch 1 taken 360 times.
14760 DO JK = 1 , KLEV+1
510
2/2
✓ Branch 0 taken 28800 times.
✓ Branch 1 taken 14400 times.
43560 DO JAJ = 2 , 6 , 2
511
2/2
✓ Branch 0 taken 42940800 times.
✓ Branch 1 taken 43200 times.
42998400 DO JL = KIDIA,KFDIA
512 42940800 ZRJ(JL,JAJ,JK)= MAX( ZRJ(JL,JAJ,JK) , REPLOG )
513 42984000 ZRK(JL,JAJ,JK)= MAX( ZRK(JL,JAJ,JK) , REPLOG )
514 ENDDO
515 ENDDO
516 ENDDO
517
518 !* 4.2 EFFECTIVE ABSORBER AMOUNTS BY INVERSE LAPLACE
519 ! ---------------------------------------------
520
521
2/2
✓ Branch 0 taken 14400 times.
✓ Branch 1 taken 360 times.
14760 DO JK = 1 , KLEV+1
522 JKKI = 1
523
2/2
✓ Branch 0 taken 28800 times.
✓ Branch 1 taken 14400 times.
43200 DO JAJ = 1 , 2
524 28800 IIND2(1)=JAJ
525 28800 IIND2(2)=JAJ
526
2/2
✓ Branch 0 taken 57600 times.
✓ Branch 1 taken 28800 times.
100800 DO JN = 1 , 2
527 57600 JN2J = JN + 2 * JAJ
528 57600 JKKP4 = JKKI + 4
529
530 !* 4.2.1 EFFECTIVE ABSORBER AMOUNTS
531 ! --------------------------
532
533
2/2
✓ Branch 0 taken 57254400 times.
✓ Branch 1 taken 57600 times.
57312000 DO JL = KIDIA,KFDIA
534 57254400 ZRR=1.0_JPRB/PAKI(JL,JAJ,KNU)
535 57254400 ZRRJ=ZRJ(JL,JN,JK) / ZRJ(JL,JN2J,JK)
536 57254400 ZRRK=ZRK(JL,JN,JK) / ZRK(JL,JN2J,JK)
537 ! ZW2(JL,1) = LOG( ZRRJ ) * ZRR
538 ! ZW2(JL,2) = LOG( ZRRK ) * ZRR
539 !--correction Olivier Boucher based on ECMWF code
540 57254400 ZW2(JL,1) = LOG( MAX(1.0_JPRB,ZRRJ) ) * ZRR
541 57312000 ZW2(JL,2) = LOG( MAX(1.0_JPRB,ZRRK) ) * ZRR
542 ENDDO
543
544 !* 4.2.2 TRANSMISSION FUNCTION
545 ! ---------------------
546
547 CALL SWTT1 ( KIDIA,KFDIA,KLON, KNU, 2, IIND2,&
548 & ZW2,&
549 57600 & ZR2 )
550
551
2/2
✓ Branch 0 taken 57254400 times.
✓ Branch 1 taken 57600 times.
57312000 DO JL = KIDIA,KFDIA
552 57254400 ZRL(JL,JKKI) = ZR2(JL,1)
553 57254400 ZRUEF(JL,JKKI) = ZW2(JL,1)
554 57254400 ZRL(JL,JKKP4) = ZR2(JL,2)
555 57312000 ZRUEF(JL,JKKP4) = ZW2(JL,2)
556 ENDDO
557
558 86400 JKKI=JKKI+1
559 ENDDO
560 ENDDO
561
562 !* 4.3 UPWARD AND DOWNWARD FLUXES WITH H2O AND UMG ABSORPTION
563 ! ------------------------------------------------------
564
565
2/2
✓ Branch 0 taken 14313600 times.
✓ Branch 1 taken 14400 times.
14328360 DO JL = KIDIA,KFDIA
566 PFDOWN(JL,JK) = ZRJ(JL,1,JK) * ZRL(JL,1) * ZRL(JL,3)&
567 14313600 & + ZRJ(JL,2,JK) * ZRL(JL,2) * ZRL(JL,4)
568 PFUP(JL,JK) = ZRK(JL,1,JK) * ZRL(JL,5) * ZRL(JL,7)&
569 14328000 & + ZRK(JL,2,JK) * ZRL(JL,6) * ZRL(JL,8)
570 ENDDO
571 ! WRITE(*,'("---> Dans SWNI: ZRK1 ZRK2 ",2E12.5)') ZRK(1,1,JK),ZRK(1,2,JK)
572 ! WRITE(*,'("ZRK1 ZRL5 ZRL7 ",3E12.5)') ZRK(1,1,JK),ZRL(1,5),ZRL(1,7)
573 ! WRITE(*,'("ZRK2 ZRL6 ZRL8 ",3E12.5)') ZRK(1,2,JK),ZRL(1,6),ZRL(1,8)
574 ENDDO
575
576 ! ------------------------------------------------------------------
577
578 !* 5. MOLECULAR ABSORPTION ON CLEAR-SKY FLUXES
579 ! ----------------------------------------
580
581 !* 5.1 DOWNWARD FLUXES
582 ! ---------------
583
584 JAJ = 2
585 360 IIND3(1)=1
586 360 IIND3(2)=2
587 360 IIND3(3)=3
588 360 IIND3(4)=1
589 360 IIND3(5)=2
590 360 IIND3(6)=3
591
592
2/2
✓ Branch 0 taken 357840 times.
✓ Branch 1 taken 360 times.
358200 DO JL = KIDIA,KFDIA
593 357840 ZW3(JL,1)=0.0_JPRB
594 357840 ZW3(JL,2)=0.0_JPRB
595 357840 ZW3(JL,3)=0.0_JPRB
596 357840 ZW3(JL,4)=0.0_JPRB
597 357840 ZW3(JL,5)=0.0_JPRB
598 357840 ZW3(JL,6)=0.0_JPRB
599
600 357840 ZW4(JL,1)=0.0_JPRB
601 357840 ZW5(JL,1)=0.0_JPRB
602 357840 ZR4(JL,1)=1.0_JPRB
603 357840 ZW4(JL,2)=0.0_JPRB
604 357840 ZW5(JL,2)=0.0_JPRB
605 357840 ZR4(JL,2)=1.0_JPRB
606 358200 ZFD(JL,KLEV+1)= ZRJ0(JL,JAJ,KLEV+1)
607 ENDDO
608
2/2
✓ Branch 0 taken 14040 times.
✓ Branch 1 taken 360 times.
14400 DO JK = 1 , KLEV
609 14040 IKL = KLEV+1-JK
610
2/2
✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 14040 times.
13969800 DO JL = KIDIA,KFDIA
611 13955760 ZRR=1.0_JPRB/ZRMU0(JL,IKL)
612 13955760 ZW3(JL,1)=ZW3(JL,1)+PUD(JL,1,IKL)*ZRR
613 13955760 ZW3(JL,2)=ZW3(JL,2)+PUD(JL,2,IKL)*ZRR
614 13955760 ZW3(JL,3)=ZW3(JL,3)+POZ(JL, IKL)*ZRR
615 13955760 ZW4(JL,1)=ZW4(JL,1)+PUD(JL,4,IKL)*ZRR
616 13955760 ZW5(JL,1)=ZW5(JL,1)+PUD(JL,5,IKL)*ZRR
617
618 13955760 ZRR=1.0_JPRB/ZRMUE(JL,IKL)
619 13955760 ZW3(JL,4)=ZW3(JL,4)+PUD(JL,1,IKL)*ZRR
620 13955760 ZW3(JL,5)=ZW3(JL,5)+PUD(JL,2,IKL)*ZRR
621 13955760 ZW3(JL,6)=ZW3(JL,6)+POZ(JL, IKL)*ZRR
622 13955760 ZW4(JL,2)=ZW4(JL,2)+PUD(JL,4,IKL)*ZRR
623 13969800 ZW5(JL,2)=ZW5(JL,2)+PUD(JL,5,IKL)*ZRR
624 ENDDO
625
626 CALL SWTT1 ( KIDIA,KFDIA,KLON, KNU, 6, IIND3,&
627 & ZW3,&
628 14040 & ZR3 )
629
630
2/2
✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 14040 times.
13970160 DO JL = KIDIA,KFDIA
631 13955760 ZR4(JL,1) = EXP(-RSWCE(KNU)*ZW4(JL,1)-RSWCP(KNU)*ZW5(JL,1))
632 13955760 ZR4(JL,2) = EXP(-RSWCE(KNU)*ZW4(JL,2)-RSWCP(KNU)*ZW5(JL,2))
633 13969800 ZFD(JL,IKL) = ZR3(JL,1)*ZR3(JL,2)*ZR3(JL,3)*ZR4(JL,1)* ZRJ0(JL,JAJ,IKL)
634 ENDDO
635 ENDDO
636 IF(LLDEBUG) THEN
637 call writefield_phy('swni_zfd'//str1,ZFD,KLEV+1)
638 call writefield_phy('swni_zrj0'//str1,ZRJ0(:,jaj,:),KLEV+1)
639 ENDIF
640
641
2/2
✓ Branch 0 taken 357840 times.
✓ Branch 1 taken 360 times.
358200 DO JL=KIDIA,KFDIA
642 357840 ZDIFF(JL) = ZR3(JL,4)*ZR3(JL,5)*ZR3(JL,6)*ZR4(JL,2)*ZTRCLD(JL)
643 357840 ZDIRF(JL) = ZR3(JL,1)*ZR3(JL,2)*ZR3(JL,3)*ZR4(JL,1)*ZTRCLR(JL)
644 PSUDU2(JL) = ((1.0_JPRB-PCLEAR(JL)) * ZDIFF(JL)&
645 358200 & +PCLEAR(JL) * ZDIRF(JL)) * RSUN(KNU)
646 ENDDO
647
648 !* 5.2 UPWARD FLUXES
649 ! -------------
650
651
2/2
✓ Branch 0 taken 357840 times.
✓ Branch 1 taken 360 times.
358200 DO JL = KIDIA,KFDIA
652 358200 ZFU(JL,1) = ZFD(JL,1)*PALBP(JL,KNU)
653 ENDDO
654
655
2/2
✓ Branch 0 taken 14040 times.
✓ Branch 1 taken 360 times.
14400 DO JK = 2 , KLEV+1
656 14040 IKM1=JK-1
657
2/2
✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 14040 times.
13969800 DO JL = KIDIA,KFDIA
658 13955760 ZW3(JL,1)=ZW3(JL,1)+PUD(JL,1,IKM1)*1.66_JPRB
659 13955760 ZW3(JL,2)=ZW3(JL,2)+PUD(JL,2,IKM1)*1.66_JPRB
660 13955760 ZW3(JL,3)=ZW3(JL,3)+POZ(JL, IKM1)*1.66_JPRB
661 13955760 ZW4(JL,1)=ZW4(JL,1)+PUD(JL,4,IKM1)*1.66_JPRB
662 13969800 ZW5(JL,1)=ZW5(JL,1)+PUD(JL,5,IKM1)*1.66_JPRB
663 ENDDO
664
665 CALL SWTT1 ( KIDIA,KFDIA,KLON, KNU, 3, IIND3,&
666 & ZW3,&
667 14040 & ZR3 )
668
669
2/2
✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 14040 times.
13970160 DO JL = KIDIA,KFDIA
670 13955760 ZR4(JL,1) = EXP(-RSWCE(KNU)*ZW4(JL,1)-RSWCP(KNU)*ZW5(JL,1))
671 13969800 ZFU(JL,JK) = ZR3(JL,1)*ZR3(JL,2)*ZR3(JL,3)*ZR4(JL,1)* ZRK0(JL,JAJ,JK)
672 ENDDO
673 ENDDO
674
675 ! ------------------------------------------------------------------
676
677 !* 6. INTRODUCTION OF OZONE AND H2O CONTINUUM ABSORPTION
678 ! --------------------------------------------------
679
680 360 IABS=3
681
682 !* 6.1 DOWNWARD FLUXES
683 ! ---------------
684
685
2/2
✓ Branch 0 taken 357840 times.
✓ Branch 1 taken 360 times.
358200 DO JL = KIDIA,KFDIA
686 357840 ZW1(JL)=0.0_JPRB
687 357840 ZW4(JL,1)=0.0_JPRB
688 357840 ZW5(JL,1)=0.0_JPRB
689 357840 ZR1(JL)=0.0_JPRB
690 PFDOWN(JL,KLEV+1) = ((1.0_JPRB-PCLEAR(JL))*PFDOWN(JL,KLEV+1)&
691 357840 & + PCLEAR(JL) * ZFD(JL,KLEV+1)) * RSUN(KNU)
692 358200 PCDOWN(JL,KLEV+1) = ZFD(JL,KLEV+1) * RSUN(KNU)
693 ENDDO
694
695
2/2
✓ Branch 0 taken 14040 times.
✓ Branch 1 taken 360 times.
14400 DO JK = 1 , KLEV
696 14040 IKL=KLEV+1-JK
697
2/2
✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 14040 times.
13969800 DO JL = KIDIA,KFDIA
698 13955760 ZRR=1.0_JPRB/ZRMUE(JL,IKL)
699 13955760 ZW1(JL) = ZW1(JL)+POZ(JL, IKL) * ZRR
700 13955760 ZW4(JL,1) = ZW4(JL,1)+PUD(JL,4,IKL) * ZRR
701 13955760 ZW5(JL,1) = ZW5(JL,1)+PUD(JL,5,IKL) * ZRR
702 13969800 ZR4(JL,1) = EXP(-RSWCE(KNU)*ZW4(JL,1)-RSWCP(KNU)*ZW5(JL,1))
703 ENDDO
704
705 14040 CALL SWTT ( KIDIA,KFDIA,KLON, KNU, IABS, ZW1, ZR1 )
706
707
2/2
✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 14040 times.
13970160 DO JL = KIDIA,KFDIA
708 13955760 PDIFF(JL,IKL)=ZR1(JL)*ZR4(JL,1)*PFDOWN(JL,IKL)*RSUN(KNU)*(1.0_JPRB-PCLEAR(JL))
709 13955760 PDIRF(JL,IKL)=ZFD(JL,IKL)*RSUN(KNU)* PCLEAR(JL)
710 PFDOWN(JL,IKL) = ((1.0_JPRB-PCLEAR(JL))*ZR1(JL)*ZR4(JL,1)*PFDOWN(JL,IKL)&
711 13955760 & +PCLEAR(JL)*ZFD(JL,IKL)) * RSUN(KNU)
712 13969800 PCDOWN(JL,IKL) = ZFD(JL,IKL) * RSUN(KNU)
713 ENDDO
714 ENDDO
715
716 !* 6.2 UPWARD FLUXES
717 ! -------------
718
719
2/2
✓ Branch 0 taken 357840 times.
✓ Branch 1 taken 360 times.
358200 DO JL = KIDIA,KFDIA
720 PFUP(JL,1) = ((1.0_JPRB-PCLEAR(JL))*ZR1(JL)*ZR4(JL,1) * PFUP(JL,1)&
721 357840 & +PCLEAR(JL)*ZFU(JL,1)) * RSUN(KNU)
722 358200 PCUP(JL,1) = ZFU(JL,1) * RSUN(KNU)
723 ENDDO
724
725
2/2
✓ Branch 0 taken 14040 times.
✓ Branch 1 taken 360 times.
14400 DO JK = 2 , KLEV+1
726 14040 IKM1=JK-1
727
2/2
✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 14040 times.
13969800 DO JL = KIDIA,KFDIA
728 13955760 ZW1(JL) = ZW1(JL)+POZ(JL ,IKM1)*1.66_JPRB
729 13955760 ZW4(JL,1) = ZW4(JL,1)+PUD(JL,4,IKM1)*1.66_JPRB
730 13955760 ZW5(JL,1) = ZW5(JL,1)+PUD(JL,5,IKM1)*1.66_JPRB
731 13969800 ZR4(JL,1) = EXP(-RSWCE(KNU)*ZW4(JL,1)-RSWCP(KNU)*ZW5(JL,1))
732 ENDDO
733
734 14040 CALL SWTT ( KIDIA,KFDIA,KLON, KNU, IABS, ZW1, ZR1 )
735
736
2/2
✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 14040 times.
13970160 DO JL = KIDIA,KFDIA
737 PFUP(JL,JK) = ((1.0_JPRB-PCLEAR(JL))*ZR1(JL)*ZR4(JL,1) * PFUP(JL,JK)&
738 13955760 & +PCLEAR(JL)*ZFU(JL,JK)) * RSUN(KNU)
739 13969800 PCUP(JL,JK) = ZFU(JL,JK) * RSUN(KNU)
740 ENDDO
741 ENDDO
742
743 IF(LLDEBUG) THEN
744 call writefield_phy('swni_zfd_fin'//str1,ZFD,KLEV+1)
745 call writefield_phy('swni_pcdown'//str1,PCDOWN,KLEV+1)
746 ENDIF
747 ! ------------------------------------------------------------------
748
749
1/2
✓ Branch 0 taken 360 times.
✗ Branch 1 not taken.
360 IF (LHOOK) CALL DR_HOOK('SWNI',1,ZHOOK_HANDLE)
750 360 END SUBROUTINE SWNI
751