Directory: | ./ |
---|---|
File: | rad/sw.f90 |
Date: | 2022-01-11 19:19:34 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 94 | 94 | 100.0% |
Branches: | 47 | 52 | 90.4% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | 600 | SUBROUTINE SW & | |
2 | & ( KIDIA, KFDIA , KLON , KLEV , KAER,& | ||
3 | 120 | & PSCT , PCARDI, PPSOL , PALBD, PALBP , PWV, PQS,& | |
4 | 120 | & PRMU0, PCG , PCLDSW, PDP , POMEGA, POZ, PPMB,& | |
5 | & PTAU , PTAVE , PAER,& | ||
6 | & PFDOWN, PFUP,& | ||
7 | & PCDOWN, PCUP,& | ||
8 | & PFDNN, PFDNV , PFUPN, PFUPV,& | ||
9 | & PCDNN, PCDNV , PCUPN, PCUPV,& | ||
10 | & PSUDU, PUVDF , PPARF, PPARCF, PDIFFS , PDIRFS, & | ||
11 | & LRDUST, PPIZA_DST,PCGA_DST,PTAUREL_DST & | ||
12 | & ) | ||
13 | |||
14 | |||
15 | !**** *SW* - COMPUTES THE SHORTWAVE RADIATION FLUXES. | ||
16 | |||
17 | ! PURPOSE. | ||
18 | ! -------- | ||
19 | |||
20 | ! THIS ROUTINE COMPUTES THE SHORTWAVE RADIATION FLUXES IN TWO | ||
21 | ! SPECTRAL INTERVALS FOLLOWING FOUQUART AND BONNEL (1980). | ||
22 | |||
23 | !** INTERFACE. | ||
24 | ! ---------- | ||
25 | |||
26 | ! *SW* IS CALLED FROM *RADLSW* | ||
27 | |||
28 | ! IMPLICIT ARGUMENTS : | ||
29 | ! -------------------- | ||
30 | |||
31 | ! ==== INPUTS === | ||
32 | ! ==== OUTPUTS === | ||
33 | |||
34 | ! METHOD. | ||
35 | ! ------- | ||
36 | |||
37 | ! 1. COMPUTES ABSORBER AMOUNTS (SWU) | ||
38 | ! 2. COMPUTES FLUXES IN U.V./VISIBLE SPECTRAL INTERVAL (SW1S) | ||
39 | ! 3. COMPUTES FLUXES IN NEAR-INFRARED SPECTRAL INTERVAL (SWNI) | ||
40 | |||
41 | ! EXTERNALS. | ||
42 | ! ---------- | ||
43 | |||
44 | ! *SWU*, *SW1S*, *SWNI* | ||
45 | |||
46 | ! REFERENCE. | ||
47 | ! ---------- | ||
48 | |||
49 | ! SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT | ||
50 | ! DOCUMENTATION, AND FOUQUART AND BONNEL (1980) | ||
51 | |||
52 | ! AUTHOR. | ||
53 | ! ------- | ||
54 | ! JEAN-JACQUES MORCRETTE *ECMWF* | ||
55 | |||
56 | ! MODIFICATIONS. | ||
57 | ! -------------- | ||
58 | ! ORIGINAL : 89-07-14 | ||
59 | ! 95-01-01 J.-J. MORCRETTE Direct/Diffuse Albedo | ||
60 | ! 95-12-07 J.-J. MORCRETTE Near-Infrared in nsw-1 Intervals | ||
61 | ! 990128 JJMorcrette sunshine duration | ||
62 | ! 99-05-25 JJMorcrette Revised aerosols | ||
63 | ! 00-12-18 JJMorcrette 6 spectral intervals | ||
64 | ! 02-09-01 JJMorcrette UV and PAR | ||
65 | ! M.Hamrud 01-Oct-2003 CY28 Cleaning | ||
66 | ! Y.Seity 04-11-18 : add two arguments for AROME extern. surface | ||
67 | ! Y.Seity 05-10-10 : add add 3 optional arg. for dust SW properties | ||
68 | ! JJMorcrette 20060721 PP of clear-sky PAR | ||
69 | ! ------------------------------------------------------------------ | ||
70 | |||
71 | USE PARKIND1 ,ONLY : JPIM ,JPRB | ||
72 | USE YOMHOOK ,ONLY : LHOOK, DR_HOOK | ||
73 | !USE YOERAD , ONLY : NSW | ||
74 | ! NSW mis dans .def MPL 20140211 | ||
75 | USE write_field_phy | ||
76 | |||
77 | IMPLICIT NONE | ||
78 | |||
79 | include "clesphys.h" | ||
80 | |||
81 | integer, save :: icount=0 | ||
82 | !$OMP THREADPRIVATE(icount) | ||
83 | INTEGER(KIND=JPIM),INTENT(IN) :: KLON | ||
84 | INTEGER(KIND=JPIM),INTENT(IN) :: KLEV | ||
85 | INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA | ||
86 | INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA | ||
87 | INTEGER(KIND=JPIM),INTENT(IN) :: KAER | ||
88 | REAL(KIND=JPRB) ,INTENT(IN) :: PSCT | ||
89 | REAL(KIND=JPRB) ,INTENT(IN) :: PCARDI | ||
90 | REAL(KIND=JPRB) ,INTENT(IN) :: PPSOL(KLON) | ||
91 | REAL(KIND=JPRB) ,INTENT(IN) :: PALBD(KLON,NSW) | ||
92 | REAL(KIND=JPRB) ,INTENT(IN) :: PALBP(KLON,NSW) | ||
93 | REAL(KIND=JPRB) ,INTENT(IN) :: PWV(KLON,KLEV) | ||
94 | REAL(KIND=JPRB) ,INTENT(IN) :: PQS(KLON,KLEV) | ||
95 | REAL(KIND=JPRB) ,INTENT(IN) :: PRMU0(KLON) | ||
96 | REAL(KIND=JPRB) ,INTENT(IN) :: PCG(KLON,NSW,KLEV) | ||
97 | REAL(KIND=JPRB) ,INTENT(IN) :: PCLDSW(KLON,KLEV) | ||
98 | REAL(KIND=JPRB) :: PDP(KLON,KLEV) ! Argument NOT used | ||
99 | REAL(KIND=JPRB) ,INTENT(IN) :: POMEGA(KLON,NSW,KLEV) | ||
100 | REAL(KIND=JPRB) ,INTENT(IN) :: POZ(KLON,KLEV) | ||
101 | REAL(KIND=JPRB) ,INTENT(IN) :: PPMB(KLON,KLEV+1) | ||
102 | REAL(KIND=JPRB) ,INTENT(IN) :: PTAU(KLON,NSW,KLEV) | ||
103 | REAL(KIND=JPRB) ,INTENT(IN) :: PTAVE(KLON,KLEV) | ||
104 | REAL(KIND=JPRB) ,INTENT(IN) :: PAER(KLON,6,KLEV) | ||
105 | !++MODIFCODE | ||
106 | LOGICAL ,INTENT(IN) :: LRDUST | ||
107 | REAL(KIND=JPRB) ,INTENT(IN) :: PPIZA_DST(KLON,KLEV,NSW) | ||
108 | REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(KLON,KLEV,NSW) | ||
109 | REAL(KIND=JPRB) ,INTENT(IN) :: PTAUREL_DST(KLON,KLEV,NSW) | ||
110 | !--MODIFCODE | ||
111 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFDOWN(KLON,KLEV+1) | ||
112 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFUP(KLON,KLEV+1) | ||
113 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCDOWN(KLON,KLEV+1) | ||
114 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCUP(KLON,KLEV+1) | ||
115 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFDNN(KLON) | ||
116 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFDNV(KLON) | ||
117 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFUPN(KLON) | ||
118 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFUPV(KLON) | ||
119 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCDNN(KLON) | ||
120 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCDNV(KLON) | ||
121 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCUPN(KLON) | ||
122 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCUPV(KLON) | ||
123 | REAL(KIND=JPRB) ,INTENT(OUT) :: PSUDU(KLON) | ||
124 | REAL(KIND=JPRB) ,INTENT(OUT) :: PUVDF(KLON) | ||
125 | REAL(KIND=JPRB) ,INTENT(OUT) :: PPARF(KLON) | ||
126 | REAL(KIND=JPRB) ,INTENT(OUT) :: PPARCF(KLON) | ||
127 | REAL(KIND=JPRB) ,INTENT(OUT) :: PDIFFS(KLON,NSW) | ||
128 | REAL(KIND=JPRB) ,INTENT(OUT) :: PDIRFS(KLON,NSW) | ||
129 | ! ------------------------------------------------------------------ | ||
130 | |||
131 | !* 0.1 ARGUMENTS | ||
132 | ! --------- | ||
133 | |||
134 | ! ------------------------------------------------------------------ | ||
135 | |||
136 | ! ------------ | ||
137 | |||
138 | 240 | REAL(KIND=JPRB) :: ZAKI(KLON,2,NSW)& | |
139 | 240 | & , ZCLD(KLON,KLEV) , ZCLEAR(KLON) & | |
140 | 240 | & , ZDSIG(KLON,KLEV) , ZFACT(KLON)& | |
141 | 240 | & , ZFD(KLON,KLEV+1) , ZCD(KLON,KLEV+1)& | |
142 | 240 | & , ZCDOWN(KLON,KLEV+1), ZCDNIR(KLON,KLEV+1), ZCDUVS(KLON,KLEV+1)& | |
143 | 240 | & , ZFDOWN(KLON,KLEV+1), ZFDNIR(KLON,KLEV+1), ZFDUVS(KLON,KLEV+1)& | |
144 | 240 | & , ZFU(KLON,KLEV+1) , ZCU(KLON,KLEV+1)& | |
145 | 240 | & , ZCUP(KLON,KLEV+1) , ZCUNIR(KLON,KLEV+1), ZCUUVS(KLON,KLEV+1)& | |
146 | 240 | & , ZFUP(KLON,KLEV+1) , ZFUNIR(KLON,KLEV+1), ZFUUVS(KLON,KLEV+1)& | |
147 | 240 | & , ZRMU(KLON) , ZSEC(KLON) & | |
148 | 240 | & , ZSUDU1(KLON) , ZSUDU2(KLON) & | |
149 | 240 | & , ZSUDU1T(KLON) , ZSUDU2T(KLON) & | |
150 | 240 | & , ZUD(KLON,5,KLEV+1) ,ZDIFF(KLON,KLEV) ,ZDIRF(KLON,KLEV) & | |
151 | 240 | & , ZDIFF2(KLON,KLEV) , ZDIRF2(KLON,KLEV) | |
152 | |||
153 | INTEGER(KIND=JPIM) :: JK, JL, JNU, INUVS, INUIR | ||
154 | |||
155 | REAL(KIND=JPRB) :: ZHOOK_HANDLE | ||
156 | LOGICAL :: LLDEBUG | ||
157 | character*1 str1 | ||
158 | |||
159 | INTERFACE | ||
160 | SUBROUTINE SW1S& | ||
161 | & ( KIDIA , KFDIA , KLON , KLEV , KAER , KNU,& | ||
162 | & PAER , PALBD , PALBP, PCG , PCLD , PCLEAR,& | ||
163 | & PDSIG , POMEGA, POZ , PRMU , PSEC , PTAU , PUD,& | ||
164 | & PFD , PFU , PCD , PCU , PSUDU1,PDIFF , PDIRF,& | ||
165 | & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST& | ||
166 | & ) | ||
167 | USE PARKIND1 ,ONLY : JPIM ,JPRB | ||
168 | include "clesphys.h" | ||
169 | INTEGER(KIND=JPIM),INTENT(IN) :: KLON | ||
170 | INTEGER(KIND=JPIM),INTENT(IN) :: KLEV | ||
171 | INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA | ||
172 | INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA | ||
173 | INTEGER(KIND=JPIM),INTENT(IN) :: KAER | ||
174 | INTEGER(KIND=JPIM),INTENT(IN) :: KNU | ||
175 | REAL(KIND=JPRB) ,INTENT(IN) :: PAER(KLON,6,KLEV) | ||
176 | REAL(KIND=JPRB) ,INTENT(IN) :: PALBD(KLON,NSW) | ||
177 | REAL(KIND=JPRB) ,INTENT(IN) :: PALBP(KLON,NSW) | ||
178 | REAL(KIND=JPRB) ,INTENT(IN) :: PCG(KLON,NSW,KLEV) | ||
179 | REAL(KIND=JPRB) ,INTENT(IN) :: PCLD(KLON,KLEV) | ||
180 | REAL(KIND=JPRB) ,INTENT(IN) :: PCLEAR(KLON) | ||
181 | REAL(KIND=JPRB) ,INTENT(IN) :: PDSIG(KLON,KLEV) | ||
182 | REAL(KIND=JPRB) ,INTENT(IN) :: POMEGA(KLON,NSW,KLEV) | ||
183 | REAL(KIND=JPRB) ,INTENT(IN) :: POZ(KLON,KLEV) | ||
184 | REAL(KIND=JPRB) ,INTENT(IN) :: PRMU(KLON) | ||
185 | REAL(KIND=JPRB) ,INTENT(IN) :: PSEC(KLON) | ||
186 | REAL(KIND=JPRB) ,INTENT(IN) :: PTAU(KLON,NSW,KLEV) | ||
187 | REAL(KIND=JPRB) ,INTENT(IN) :: PUD(KLON,5,KLEV+1) | ||
188 | LOGICAL ,INTENT(IN) :: LRDUST | ||
189 | REAL(KIND=JPRB) ,INTENT(IN) :: PPIZA_DST(KLON,KLEV) | ||
190 | REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(KLON,KLEV) | ||
191 | REAL(KIND=JPRB) ,INTENT(IN) :: PTAUREL_DST(KLON,KLEV) | ||
192 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFD(KLON,KLEV+1) | ||
193 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFU(KLON,KLEV+1) | ||
194 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCD(KLON,KLEV+1) | ||
195 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCU(KLON,KLEV+1) | ||
196 | REAL(KIND=JPRB) ,INTENT(OUT) :: PSUDU1(KLON) | ||
197 | REAL(KIND=JPRB) ,INTENT(OUT) :: PDIFF(KLON,KLEV) | ||
198 | REAL(KIND=JPRB) ,INTENT(OUT) :: PDIRF(KLON,KLEV) | ||
199 | END SUBROUTINE SW1S | ||
200 | END INTERFACE | ||
201 | INTERFACE | ||
202 | SUBROUTINE SWNI& | ||
203 | & ( KIDIA , KFDIA , KLON , KLEV , KAER , KNU,& | ||
204 | & PAER , PAKI , PALBD , PALBP, PCG , PCLD, PCLEAR,& | ||
205 | & PDSIG , POMEGA, POZ , PRMU , PSEC , PTAU,& | ||
206 | & PUD , PWV , PQS,& | ||
207 | & PFDOWN, PFUP , PCDOWN, PCUP , PSUDU2, PDIFF , PDIRF,& | ||
208 | & LRDUST,PPIZA_DST,PCGA_DST,PTAUREL_DST ) | ||
209 | USE PARKIND1 ,ONLY : JPIM ,JPRB | ||
210 | USE YOERAD , ONLY : NOVLP | ||
211 | include "clesphys.h" | ||
212 | INTEGER(KIND=JPIM),INTENT(IN) :: KLON | ||
213 | INTEGER(KIND=JPIM),INTENT(IN) :: KLEV | ||
214 | INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA | ||
215 | INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA | ||
216 | INTEGER(KIND=JPIM),INTENT(IN) :: KAER | ||
217 | INTEGER(KIND=JPIM),INTENT(IN) :: KNU | ||
218 | REAL(KIND=JPRB) ,INTENT(IN) :: PAER(KLON,6,KLEV) | ||
219 | REAL(KIND=JPRB) ,INTENT(IN) :: PAKI(KLON,2,NSW) | ||
220 | REAL(KIND=JPRB) ,INTENT(IN) :: PALBD(KLON,NSW) | ||
221 | REAL(KIND=JPRB) ,INTENT(IN) :: PALBP(KLON,NSW) | ||
222 | REAL(KIND=JPRB) ,INTENT(IN) :: PCG(KLON,NSW,KLEV) | ||
223 | REAL(KIND=JPRB) ,INTENT(IN) :: PCLD(KLON,KLEV) | ||
224 | REAL(KIND=JPRB) ,INTENT(IN) :: PCLEAR(KLON) | ||
225 | REAL(KIND=JPRB) ,INTENT(IN) :: PDSIG(KLON,KLEV) | ||
226 | REAL(KIND=JPRB) ,INTENT(IN) :: POMEGA(KLON,NSW,KLEV) | ||
227 | REAL(KIND=JPRB) ,INTENT(IN) :: POZ(KLON,KLEV) | ||
228 | REAL(KIND=JPRB) ,INTENT(IN) :: PRMU(KLON) | ||
229 | REAL(KIND=JPRB) ,INTENT(IN) :: PSEC(KLON) | ||
230 | REAL(KIND=JPRB) ,INTENT(IN) :: PTAU(KLON,NSW,KLEV) | ||
231 | REAL(KIND=JPRB) ,INTENT(IN) :: PUD(KLON,5,KLEV+1) | ||
232 | REAL(KIND=JPRB) ,INTENT(IN) :: PWV(KLON,KLEV) | ||
233 | REAL(KIND=JPRB) ,INTENT(IN) :: PQS(KLON,KLEV) | ||
234 | LOGICAL ,INTENT(IN) :: LRDUST | ||
235 | REAL(KIND=JPRB) ,INTENT(IN) :: PPIZA_DST(KLON,KLEV) | ||
236 | REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(KLON,KLEV) | ||
237 | REAL(KIND=JPRB) ,INTENT(IN) :: PTAUREL_DST(KLON,KLEV) | ||
238 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFDOWN(KLON,KLEV+1) | ||
239 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFUP(KLON,KLEV+1) | ||
240 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCDOWN(KLON,KLEV+1) | ||
241 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCUP(KLON,KLEV+1) | ||
242 | REAL(KIND=JPRB) ,INTENT(OUT) :: PSUDU2(KLON) | ||
243 | REAL(KIND=JPRB) ,INTENT(OUT) :: PDIFF(KLON,KLEV) | ||
244 | REAL(KIND=JPRB) ,INTENT(OUT) :: PDIRF(KLON,KLEV) | ||
245 | END SUBROUTINE SWNI | ||
246 | END INTERFACE | ||
247 | INTERFACE | ||
248 | SUBROUTINE SWU& | ||
249 | & ( KIDIA, KFDIA , KLON , KLEV,& | ||
250 | & PSCT , PCARDI, PCLDSW, PPMB , PPSOL, PRMU0, PTAVE, PWV,& | ||
251 | & PAKI , PCLD , PCLEAR, PDSIG, PFACT, PRMU , PSEC , PUD& | ||
252 | & ) | ||
253 | USE PARKIND1 ,ONLY : JPIM ,JPRB | ||
254 | USE YOERAD , ONLY : NOVLP | ||
255 | include "clesphys.h" | ||
256 | INTEGER(KIND=JPIM),INTENT(IN) :: KLON | ||
257 | INTEGER(KIND=JPIM),INTENT(IN) :: KLEV | ||
258 | INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA | ||
259 | INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA | ||
260 | REAL(KIND=JPRB) ,INTENT(IN) :: PSCT | ||
261 | REAL(KIND=JPRB) ,INTENT(IN) :: PCARDI | ||
262 | REAL(KIND=JPRB) ,INTENT(IN) :: PCLDSW(KLON,KLEV) | ||
263 | REAL(KIND=JPRB) ,INTENT(IN) :: PPMB(KLON,KLEV+1) | ||
264 | REAL(KIND=JPRB) ,INTENT(IN) :: PPSOL(KLON) | ||
265 | REAL(KIND=JPRB) ,INTENT(IN) :: PRMU0(KLON) | ||
266 | REAL(KIND=JPRB) ,INTENT(IN) :: PTAVE(KLON,KLEV) | ||
267 | REAL(KIND=JPRB) ,INTENT(IN) :: PWV(KLON,KLEV) | ||
268 | REAL(KIND=JPRB) ,INTENT(OUT) :: PAKI(KLON,2,NSW) | ||
269 | REAL(KIND=JPRB) ,INTENT(INOUT) :: PCLD(KLON,KLEV) | ||
270 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCLEAR(KLON) | ||
271 | REAL(KIND=JPRB) ,INTENT(OUT) :: PDSIG(KLON,KLEV) | ||
272 | REAL(KIND=JPRB) ,INTENT(OUT) :: PFACT(KLON) | ||
273 | REAL(KIND=JPRB) ,INTENT(OUT) :: PRMU(KLON) | ||
274 | REAL(KIND=JPRB) ,INTENT(OUT) :: PSEC(KLON) | ||
275 | REAL(KIND=JPRB) ,INTENT(OUT) :: PUD(KLON,5,KLEV+1) | ||
276 | END SUBROUTINE SWU | ||
277 | END INTERFACE | ||
278 | |||
279 | ! ------------------------------------------------------------------ | ||
280 | |||
281 | !* 1. ABSORBER AMOUNTS AND OTHER USEFUL QUANTITIES | ||
282 | ! -------------------------------------------- | ||
283 | |||
284 |
1/2✓ Branch 0 taken 120 times.
✗ Branch 1 not taken.
|
120 | IF (LHOOK) CALL DR_HOOK('SW',0,ZHOOK_HANDLE) |
285 | LLDEBUG=.FALSE. | ||
286 | CALL SWU ( KIDIA,KFDIA ,KLON ,KLEV,& | ||
287 | & PSCT ,PCARDI,PCLDSW,PPMB ,PPSOL,& | ||
288 | & PRMU0,PTAVE ,PWV,& | ||
289 | 120 | & ZAKI ,ZCLD ,ZCLEAR,ZDSIG,ZFACT,ZRMU,ZSEC,ZUD ) | |
290 | |||
291 | ! ------------------------------------------------------------------ | ||
292 | !* 2. INTERVAL (0.185/0.25-0.68 MICRON): U.V. AND VISIBLE | ||
293 | ! --------------------------------------------------- | ||
294 |
1/2✓ Branch 0 taken 120 times.
✗ Branch 1 not taken.
|
120 | IF (NSW <= 4) THEN |
295 | INUVS=1 | ||
296 | INUIR=2 | ||
297 |
1/2✓ Branch 0 taken 120 times.
✗ Branch 1 not taken.
|
120 | ELSEIF (NSW == 6) THEN |
298 | INUVS=1 | ||
299 | INUIR=4 | ||
300 | ENDIF | ||
301 | |||
302 |
2/2✓ Branch 0 taken 4800 times.
✓ Branch 1 taken 120 times.
|
4920 | DO JK = 1 , KLEV+1 |
303 |
2/2✓ Branch 0 taken 4771200 times.
✓ Branch 1 taken 4800 times.
|
4776120 | DO JL = KIDIA,KFDIA |
304 | 4771200 | ZFD(JL,JK) =0.0_JPRB | |
305 | 4771200 | ZFU(JL,JK) =0.0_JPRB | |
306 | 4771200 | ZCD(JL,JK) =0.0_JPRB | |
307 | 4776000 | ZCU(JL,JK) =0.0_JPRB | |
308 | ENDDO | ||
309 | ENDDO | ||
310 |
2/2✓ Branch 0 taken 119280 times.
✓ Branch 1 taken 120 times.
|
119400 | DO JL = KIDIA,KFDIA |
311 | 119280 | ZSUDU1T(JL)=0.0_JPRB | |
312 | 119280 | PUVDF(JL) =0.0_JPRB | |
313 | 119280 | PPARF(JL) =0.0_JPRB | |
314 | 119400 | PPARCF(JL) =0.0_JPRB | |
315 | ENDDO | ||
316 | |||
317 | IF(LLDEBUG) THEN | ||
318 | call writefield_phy('sw_zsec',ZSEC,1) | ||
319 | call writefield_phy('sw_zrmu',ZRMU,1) | ||
320 | call writefield_phy('sw_prmu0',PRMU0,1) | ||
321 | call writefield_phy('sw_zfact',ZFACT,1) | ||
322 | ENDIF | ||
323 | |||
324 | 120 | icount=icount+1 | |
325 |
2/2✓ Branch 0 taken 120 times.
✓ Branch 1 taken 360 times.
|
480 | DO JNU = INUVS , INUIR-1 |
326 | !++MODIFCODE | ||
327 | CALL SW1S & | ||
328 | &( KIDIA , KFDIA, KLON , KLEV , KAER , JNU & | ||
329 | &, PAER , PALBD , PALBP, PCG , ZCLD , ZCLEAR & | ||
330 | &, ZDSIG, POMEGA, POZ , ZRMU , ZSEC , PTAU , ZUD & | ||
331 | &, ZFDUVS,ZFUUVS, ZCDUVS,ZCUUVS, ZSUDU1, ZDIFF,ZDIRF & | ||
332 | &, LRDUST,PPIZA_DST(:,:,JNU) & ! SSA for this wavelength | ||
333 | &, PCGA_DST(:,:,JNU) & ! GCA for this wavelengt | ||
334 | 360 | &, PTAUREL_DST(:,:,JNU) ) ! TAUREL for this wavelength | |
335 | !--MODIFCODE | ||
336 | IF(LLDEBUG) THEN | ||
337 | ! Ecriture des champs avec un indicage du fichier par l'intervalle spectral | ||
338 | write(str1,'(i1)') jnu | ||
339 | call writefield_phy("sw_zcduvs"//str1,zcduvs,klev+1) | ||
340 | ENDIF | ||
341 | |||
342 | |||
343 |
2/2✓ Branch 0 taken 360 times.
✓ Branch 1 taken 357840 times.
|
358200 | DO JL=KIDIA,KFDIA |
344 | 357840 | PDIFFS(JL,JNU)=ZDIFF(JL,1)*ZFACT(JL) | |
345 | 358200 | PDIRFS(JL,JNU)=ZDIRF(JL,1)*ZFACT(JL) | |
346 | ENDDO | ||
347 |
2/2✓ Branch 0 taken 14400 times.
✓ Branch 1 taken 360 times.
|
14760 | DO JK = 1 , KLEV+1 |
348 |
2/2✓ Branch 0 taken 14313600 times.
✓ Branch 1 taken 14400 times.
|
14328360 | DO JL = KIDIA,KFDIA |
349 | 14313600 | ZFD(JL,JK)=ZFD(JL,JK)+ZFDUVS(JL,JK) | |
350 | 14313600 | ZFU(JL,JK)=ZFU(JL,JK)+ZFUUVS(JL,JK) | |
351 | 14313600 | ZCD(JL,JK)=ZCD(JL,JK)+ZCDUVS(JL,JK) | |
352 | 14328000 | ZCU(JL,JK)=ZCU(JL,JK)+ZCUUVS(JL,JK) | |
353 | ENDDO | ||
354 | ENDDO | ||
355 |
2/2✓ Branch 0 taken 357840 times.
✓ Branch 1 taken 360 times.
|
358200 | DO JL = KIDIA,KFDIA |
356 | 358200 | ZSUDU1T(JL)=ZSUDU1T(JL)+ZSUDU1(JL) | |
357 | ENDDO | ||
358 | |||
359 |
1/2✓ Branch 0 taken 360 times.
✗ Branch 1 not taken.
|
480 | IF (NSW == 6) THEN |
360 |
2/2✓ Branch 0 taken 120 times.
✓ Branch 1 taken 240 times.
|
360 | IF (JNU <= 2) THEN |
361 |
2/2✓ Branch 0 taken 238560 times.
✓ Branch 1 taken 240 times.
|
238800 | DO JL = KIDIA,KFDIA |
362 | 238800 | PUVDF(JL)=PUVDF(JL)+ZFDUVS(JL,1) | |
363 | ENDDO | ||
364 | ELSEIF (JNU == 3) THEN | ||
365 |
2/2✓ Branch 0 taken 120 times.
✓ Branch 1 taken 119280 times.
|
119400 | DO JL=KIDIA,KFDIA |
366 | 119280 | PPARF(JL)=PPARF(JL)+ZFDUVS(JL,1) | |
367 | 119400 | PPARCF(JL)=PPARCF(JL)+ZCDUVS(JL,1) | |
368 | ENDDO | ||
369 | ENDIF | ||
370 | ENDIF | ||
371 | ENDDO | ||
372 | |||
373 | !if (icount==5) stop'on arrete dans sw.F90 au bout de 5 appels' | ||
374 | ! ------------------------------------------------------------------ | ||
375 | |||
376 | !* 3. INTERVAL (0.68-4.00 MICRON): NEAR-INFRARED | ||
377 | ! ------------------------------------------ | ||
378 | |||
379 |
2/2✓ Branch 0 taken 4800 times.
✓ Branch 1 taken 120 times.
|
4920 | DO JK = 1 , KLEV+1 |
380 |
2/2✓ Branch 0 taken 4771200 times.
✓ Branch 1 taken 4800 times.
|
4776120 | DO JL = KIDIA,KFDIA |
381 | 4771200 | ZFDOWN(JL,JK)=0.0_JPRB | |
382 | 4771200 | ZFUP (JL,JK)=0.0_JPRB | |
383 | 4771200 | ZCDOWN(JL,JK)=0.0_JPRB | |
384 | 4771200 | ZCUP (JL,JK)=0.0_JPRB | |
385 | 4776000 | ZSUDU2T(JL) =0.0_JPRB | |
386 | ENDDO | ||
387 | ENDDO | ||
388 | |||
389 |
2/2✓ Branch 0 taken 120 times.
✓ Branch 1 taken 360 times.
|
480 | DO JNU = INUIR , NSW |
390 | !++MODIFCODE | ||
391 | CALL SWNI & | ||
392 | &( KIDIA ,KFDIA , KLON , KLEV , KAER , JNU & | ||
393 | &, PAER ,ZAKI , PALBD, PALBP, PCG , ZCLD, ZCLEAR & | ||
394 | &, ZDSIG ,POMEGA, POZ , ZRMU , ZSEC , PTAU, ZUD & | ||
395 | &, PWV ,PQS & | ||
396 | &, ZFDNIR,ZFUNIR,ZCDNIR,ZCUNIR,ZSUDU2,ZDIFF2,ZDIRF2 & | ||
397 | &, LRDUST,PPIZA_DST(:,:,JNU) & | ||
398 | &, PCGA_DST(:,:,JNU) & | ||
399 | &, PTAUREL_DST(:,:,JNU) & | ||
400 | 360 | &) | |
401 | !--MODIFCODE | ||
402 | |||
403 | IF(LLDEBUG) THEN | ||
404 | ! Ecriture des champs avec un indicage du fichier par l'intervalle spectral | ||
405 | write(str1,'(i1)') jnu | ||
406 | call writefield_phy("sw_zcdnir"//str1,zcdnir,klev+1) | ||
407 | ENDIF | ||
408 | |||
409 |
2/2✓ Branch 0 taken 360 times.
✓ Branch 1 taken 357840 times.
|
358200 | DO JL=KIDIA,KFDIA |
410 | 357840 | PDIFFS(JL,JNU)=ZDIFF2(JL,1)*ZFACT(JL) | |
411 | 358200 | PDIRFS(JL,JNU)=ZDIRF2(JL,1)*ZFACT(JL) | |
412 | ENDDO | ||
413 |
2/2✓ Branch 0 taken 14400 times.
✓ Branch 1 taken 360 times.
|
14760 | DO JK = 1 , KLEV+1 |
414 |
2/2✓ Branch 0 taken 14313600 times.
✓ Branch 1 taken 14400 times.
|
14328360 | DO JL = KIDIA,KFDIA |
415 | 14313600 | ZFDOWN(JL,JK)=ZFDOWN(JL,JK)+ZFDNIR(JL,JK) | |
416 | 14313600 | ZFUP (JL,JK)=ZFUP (JL,JK)+ZFUNIR(JL,JK) | |
417 | 14313600 | ZCDOWN(JL,JK)=ZCDOWN(JL,JK)+ZCDNIR(JL,JK) | |
418 | 14328000 | ZCUP (JL,JK)=ZCUP (JL,JK)+ZCUNIR(JL,JK) | |
419 | ENDDO | ||
420 | ENDDO | ||
421 |
2/2✓ Branch 0 taken 357840 times.
✓ Branch 1 taken 360 times.
|
358320 | DO JL = KIDIA,KFDIA |
422 | 358200 | ZSUDU2T(JL)=ZSUDU2T(JL)+ZSUDU2(JL) | |
423 | ENDDO | ||
424 | ENDDO | ||
425 | |||
426 | ! ------------------------------------------------------------------ | ||
427 | |||
428 | !* 4. FILL THE DIAGNOSTIC ARRAYS | ||
429 | ! -------------------------- | ||
430 | |||
431 |
2/2✓ Branch 0 taken 120 times.
✓ Branch 1 taken 119280 times.
|
119400 | DO JL = KIDIA,KFDIA |
432 | 119280 | PFDNN(JL)=ZFDOWN(JL,1)*ZFACT(JL) | |
433 | 119280 | PFDNV(JL)=ZFD(JL,1)*ZFACT(JL) | |
434 | 119280 | PFUPN(JL)=ZFUP(JL,KLEV+1)*ZFACT(JL) | |
435 | 119280 | PFUPV(JL)=ZFU(JL,KLEV+1)*ZFACT(JL) | |
436 | |||
437 | 119280 | PCDNN(JL)=ZCDOWN(JL,1)*ZFACT(JL) | |
438 | 119280 | PCDNV(JL)=ZCD(JL,1)*ZFACT(JL) | |
439 | 119280 | PCUPN(JL)=ZCUP(JL,KLEV+1)*ZFACT(JL) | |
440 | 119280 | PCUPV(JL)=ZCU(JL,KLEV+1)*ZFACT(JL) | |
441 | |||
442 | 119280 | PSUDU(JL)=(ZSUDU1T(JL)+ZSUDU2T(JL))*ZFACT(JL) | |
443 | 119280 | PUVDF(JL)=PUVDF(JL)*ZFACT(JL) | |
444 | 119280 | PPARF(JL)=PPARF(JL)*ZFACT(JL) | |
445 | 119400 | PPARCF(JL)=PPARCF(JL)*ZFACT(JL) | |
446 | ENDDO | ||
447 | |||
448 | !WRITE(*,'("---> Dans SW:")') | ||
449 | !WRITE(*,'("ZFUP ",10E12.5)') (ZFUP(1,JK),JK=1,KLEV+1) | ||
450 | !WRITE(*,'("ZFU ",10E12.5)') (ZFU(1,JK),JK=1,KLEV+1) | ||
451 | !WRITE(*,'("ZFUNIR",10E12.5)') (ZFUNIR(1,JK),JK=1,KLEV+1) | ||
452 | !WRITE(*,'("ZFACT ",E12.5)') ZFACT(1) | ||
453 | |||
454 |
2/2✓ Branch 0 taken 4800 times.
✓ Branch 1 taken 120 times.
|
4920 | DO JK = 1 , KLEV+1 |
455 |
2/2✓ Branch 0 taken 4771200 times.
✓ Branch 1 taken 4800 times.
|
4776120 | DO JL = KIDIA,KFDIA |
456 | 4771200 | PFUP(JL,JK) = (ZFUP(JL,JK) + ZFU(JL,JK)) * ZFACT(JL) | |
457 | 4771200 | PFDOWN(JL,JK) = (ZFDOWN(JL,JK) + ZFD(JL,JK)) * ZFACT(JL) | |
458 | 4771200 | PCUP(JL,JK) = (ZCUP(JL,JK) + ZCU(JL,JK)) * ZFACT(JL) | |
459 | 4776000 | PCDOWN(JL,JK) = (ZCDOWN(JL,JK) + ZCD(JL,JK)) * ZFACT(JL) | |
460 | ENDDO | ||
461 | ENDDO | ||
462 | IF(LLDEBUG) THEN | ||
463 | call writefield_phy('sw_pcdown',PCDOWN,KLEV+1) | ||
464 | ENDIF | ||
465 | |||
466 | ! ------------------------------------------------------------------ | ||
467 | |||
468 |
1/2✓ Branch 0 taken 120 times.
✗ Branch 1 not taken.
|
120 | IF (LHOOK) CALL DR_HOOK('SW',1,ZHOOK_HANDLE) |
469 | 120 | END SUBROUTINE SW | |
470 |