| 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 |