| Directory: | ./ |
|---|---|
| File: | rad/swclr.f90 |
| Date: | 2022-01-11 19:19:34 |
| Exec | Total | Coverage | |
|---|---|---|---|
| Lines: | 128 | 170 | 75.3% |
| Branches: | 57 | 82 | 69.5% |
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | 1440 | SUBROUTINE SWCLR & | |
| 2 | & ( KIDIA , KFDIA , KLON , KLEV , KAER , KNU,& | ||
| 3 | 720 | & PAER , PALBP , PDSIG , PRAYL , PSEC,& | |
| 4 | 720 | & PCGAZ , PPIZAZ, PRAY1 , PRAY2 , PREFZ , PRJ,& | |
| 5 | & PRK , PRMU0 , PTAUAZ, PTRA1 , PTRA2 , PTRCLR, & | ||
| 6 | !++MODIFCODE | ||
| 7 | & LDDUST,PPIZA_DST, PCGA_DST, PTAU_DST ) | ||
| 8 | !--MODIFCODE | ||
| 9 | |||
| 10 | !**** *SWCLR* - CLEAR-SKY COLUMN COMPUTATIONS | ||
| 11 | |||
| 12 | ! PURPOSE. | ||
| 13 | ! -------- | ||
| 14 | ! COMPUTES THE REFLECTIVITY AND TRANSMISSIVITY IN CASE OF | ||
| 15 | ! CLEAR-SKY COLUMN | ||
| 16 | |||
| 17 | !** INTERFACE. | ||
| 18 | ! ---------- | ||
| 19 | |||
| 20 | ! *SWCLR* IS CALLED EITHER FROM *SW1S* | ||
| 21 | ! OR FROM *SWNI* | ||
| 22 | |||
| 23 | ! IMPLICIT ARGUMENTS : | ||
| 24 | ! -------------------- | ||
| 25 | |||
| 26 | ! ==== INPUTS === | ||
| 27 | ! ==== OUTPUTS === | ||
| 28 | |||
| 29 | ! METHOD. | ||
| 30 | ! ------- | ||
| 31 | |||
| 32 | ! EXTERNALS. | ||
| 33 | ! ---------- | ||
| 34 | |||
| 35 | ! NONE | ||
| 36 | |||
| 37 | ! REFERENCE. | ||
| 38 | ! ---------- | ||
| 39 | |||
| 40 | ! SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT | ||
| 41 | ! DOCUMENTATION, AND FOUQUART AND BONNEL (1980) | ||
| 42 | |||
| 43 | ! AUTHOR. | ||
| 44 | ! ------- | ||
| 45 | ! JEAN-JACQUES MORCRETTE *ECMWF* | ||
| 46 | |||
| 47 | ! MODIFICATIONS. | ||
| 48 | ! -------------- | ||
| 49 | ! ORIGINAL : 94-11-15 | ||
| 50 | ! Modified : 96-03-19 JJM-PhD (loop 107 in absence of aerosols) | ||
| 51 | ! JJMorcrette 990128 : sunshine duration | ||
| 52 | ! JJMorcrette 990128 : sunshine duration | ||
| 53 | ! 99-05-25 JJMorcrette Revised aerosols | ||
| 54 | ! JJMorcrette 001218 : 6 spectral intervals | ||
| 55 | ! 03-10-10 Deborah Salmond and Marta Janiskova Optimisation | ||
| 56 | ! M.Hamrud 01-Oct-2003 CY28 Cleaning | ||
| 57 | ! A.Grini (Meteo-France: 2005-11-10) | ||
| 58 | ! Y.Seity 05-10-10 : add add 3 optional arg. for dust SW properties | ||
| 59 | ! Y.Seity 06-09-09 : add modset from O.Thouron (MesoNH) under NOVLP tests | ||
| 60 | ! O.Boucher fev.2014: modification sur les aerosols pour utiliser les variables DST | ||
| 61 | ! ------------------------------------------------------------------ | ||
| 62 | |||
| 63 | USE PARKIND1 ,ONLY : JPIM ,JPRB | ||
| 64 | USE YOMHOOK ,ONLY : LHOOK, DR_HOOK | ||
| 65 | |||
| 66 | USE YOESW , ONLY : RTAUA ,RPIZA ,RCGA | ||
| 67 | !USE YOERAD , ONLY : NOVLP ,NSW | ||
| 68 | ! NSW mis dans .def MPL 20140211 | ||
| 69 | USE YOERAD , ONLY : NOVLP | ||
| 70 | USE YOERDI , ONLY : REPCLC | ||
| 71 | USE YOERDU , ONLY : REPSCT | ||
| 72 | |||
| 73 | IMPLICIT NONE | ||
| 74 | INCLUDE "clesphys.h" | ||
| 75 | |||
| 76 | INTEGER(KIND=JPIM),INTENT(IN) :: KLON | ||
| 77 | INTEGER(KIND=JPIM),INTENT(IN) :: KLEV | ||
| 78 | INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA | ||
| 79 | INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA | ||
| 80 | INTEGER(KIND=JPIM),INTENT(IN) :: KAER | ||
| 81 | INTEGER(KIND=JPIM),INTENT(IN) :: KNU | ||
| 82 | REAL(KIND=JPRB) ,INTENT(IN) :: PAER(KLON,6,KLEV) | ||
| 83 | REAL(KIND=JPRB) ,INTENT(IN) :: PALBP(KLON,NSW) | ||
| 84 | REAL(KIND=JPRB) ,INTENT(IN) :: PDSIG(KLON,KLEV) | ||
| 85 | REAL(KIND=JPRB) ,INTENT(IN) :: PRAYL(KLON) | ||
| 86 | REAL(KIND=JPRB) ,INTENT(IN) :: PSEC(KLON) | ||
| 87 | !++MODIFCODE | ||
| 88 | LOGICAL ,INTENT(IN) :: LDDUST ! flag for DUST | ||
| 89 | REAL(KIND=JPRB) ,INTENT(IN) :: PPIZA_DST(KLON,KLEV) | ||
| 90 | REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(KLON,KLEV) | ||
| 91 | REAL(KIND=JPRB) ,INTENT(IN) :: PTAU_DST(KLON,KLEV) | ||
| 92 | !--MODIFCODE | ||
| 93 | REAL(KIND=JPRB) ,INTENT(OUT) :: PCGAZ(KLON,KLEV) | ||
| 94 | REAL(KIND=JPRB) ,INTENT(OUT) :: PPIZAZ(KLON,KLEV) | ||
| 95 | REAL(KIND=JPRB) ,INTENT(OUT) :: PRAY1(KLON,KLEV+1) | ||
| 96 | REAL(KIND=JPRB) ,INTENT(OUT) :: PRAY2(KLON,KLEV+1) | ||
| 97 | REAL(KIND=JPRB) ,INTENT(OUT) :: PREFZ(KLON,2,KLEV+1) | ||
| 98 | REAL(KIND=JPRB) ,INTENT(OUT) :: PRJ(KLON,6,KLEV+1) | ||
| 99 | REAL(KIND=JPRB) ,INTENT(OUT) :: PRK(KLON,6,KLEV+1) | ||
| 100 | REAL(KIND=JPRB) ,INTENT(OUT) :: PRMU0(KLON,KLEV+1) | ||
| 101 | REAL(KIND=JPRB) ,INTENT(OUT) :: PTAUAZ(KLON,KLEV) | ||
| 102 | REAL(KIND=JPRB) ,INTENT(OUT) :: PTRA1(KLON,KLEV+1) | ||
| 103 | REAL(KIND=JPRB) ,INTENT(OUT) :: PTRA2(KLON,KLEV+1) | ||
| 104 | REAL(KIND=JPRB) ,INTENT(OUT) :: PTRCLR(KLON) | ||
| 105 | ! ------------------------------------------------------------------ | ||
| 106 | |||
| 107 | !* 0.1 ARGUMENTS | ||
| 108 | ! --------- | ||
| 109 | |||
| 110 | ! ------------------------------------------------------------------ | ||
| 111 | |||
| 112 | ! ------------ | ||
| 113 | |||
| 114 | 1440 | REAL(KIND=JPRB) :: ZC0I(KLON,KLEV+1)& | |
| 115 | 1440 | & , ZCLE0(KLON,KLEV), ZCLEAR(KLON) & | |
| 116 | 1440 | & , ZR21(KLON)& | |
| 117 | 1440 | & , ZR23(KLON) , ZSS0(KLON) , ZSCAT(KLON)& | |
| 118 | 1440 | & , ZTR(KLON,2,KLEV+1) | |
| 119 | |||
| 120 | INTEGER(KIND=JPIM) :: IKL, JA, JAE, JAJ, JK, JKL, JKLP1, JKM1, JL, INU1 | ||
| 121 | |||
| 122 | REAL(KIND=JPRB) :: ZBMU0, ZBMU1, ZCORAE, ZDEN, ZDEN1, ZFACOA,& | ||
| 123 | & ZFF, ZGAP, ZGAR, ZMU1, ZMUE, ZRATIO, ZRE11, & | ||
| 124 | & ZTO, ZTRAY, ZWW, ZDENB | ||
| 125 | REAL(KIND=JPRB) :: ZRR,ZMU0,ZI2MU1,ZIMU1,ZIDEN,ZIDEN1 | ||
| 126 | REAL(KIND=JPRB) :: ZHOOK_HANDLE | ||
| 127 | !++MODIFCODE | ||
| 128 | 1440 | REAL(KIND=JPRB) ::ZFACOA_NEW(KLON,KLEV) | |
| 129 | !--MODIFCODE | ||
| 130 | |||
| 131 | |||
| 132 | ! ------------------------------------------------------------------ | ||
| 133 | |||
| 134 | !* 1. OPTICAL PARAMETERS FOR AEROSOLS AND RAYLEIGH | ||
| 135 | ! -------------------------------------------- | ||
| 136 | |||
| 137 |
1/2✓ Branch 0 taken 720 times.
✗ Branch 1 not taken.
|
720 | IF (LHOOK) CALL DR_HOOK('SWCLR',0,ZHOOK_HANDLE) |
| 138 |
2/2✓ Branch 0 taken 28800 times.
✓ Branch 1 taken 720 times.
|
29520 | DO JK = 1 , KLEV+1 |
| 139 |
2/2✓ Branch 0 taken 172800 times.
✓ Branch 1 taken 28800 times.
|
202320 | DO JA = 1 , 6 |
| 140 |
2/2✓ Branch 0 taken 171763200 times.
✓ Branch 1 taken 172800 times.
|
171964800 | DO JL = KIDIA,KFDIA |
| 141 | 171763200 | PRJ(JL,JA,JK) = 0.0_JPRB | |
| 142 | 171936000 | PRK(JL,JA,JK) = 0.0_JPRB | |
| 143 | ENDDO | ||
| 144 | ENDDO | ||
| 145 | ENDDO | ||
| 146 | |||
| 147 | ! ------ NB: 'PAER' AEROSOLS ARE ENTERED FROM TOP TO BOTTOM | ||
| 148 | |||
| 149 |
2/2✓ Branch 0 taken 28080 times.
✓ Branch 1 taken 720 times.
|
28800 | DO JK = 1 , KLEV |
| 150 | 28080 | IKL=KLEV+1-JK | |
| 151 |
2/2✓ Branch 0 taken 27911520 times.
✓ Branch 1 taken 28080 times.
|
27939600 | DO JL = KIDIA,KFDIA |
| 152 | 27911520 | PCGAZ(JL,JK) = 0.0_JPRB | |
| 153 | 27911520 | PPIZAZ(JL,JK) = 0.0_JPRB | |
| 154 | 27911520 | PTAUAZ(JL,JK) = 0.0_JPRB | |
| 155 | 27939600 | ZFACOA_NEW(JL,JK) = 0.0_JPRB | |
| 156 | ENDDO | ||
| 157 | |||
| 158 | !++MODIFCODE | ||
| 159 | !--OB on fait passer les aerosols LMDZ dans la variable DST | ||
| 160 |
1/2✓ Branch 0 taken 28080 times.
✗ Branch 1 not taken.
|
28080 | IF(NOVLP < 5)THEN !ECMWF VERSION |
| 161 | ! DO JAE=1,6 | ||
| 162 |
2/2✓ Branch 0 taken 27911520 times.
✓ Branch 1 taken 28080 times.
|
27939600 | DO JL = KIDIA,KFDIA |
| 163 | ! PTAUAZ(JL,JK)=PTAUAZ(JL,JK)+PAER(JL,JAE,IKL)*RTAUA(KNU,JAE) | ||
| 164 | 27911520 | PTAUAZ(JL,JK)=PTAU_DST(JL,IKL) | |
| 165 | ! PPIZAZ(JL,JK)=PPIZAZ(JL,JK)+PAER(JL,JAE,IKL)& | ||
| 166 | ! & * RTAUA(KNU,JAE)*RPIZA(KNU,JAE) | ||
| 167 | 27911520 | PPIZAZ(JL,JK)=PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL) | |
| 168 | ! PCGAZ(JL,JK) = PCGAZ(JL,JK) +PAER(JL,JAE,IKL)& | ||
| 169 | ! & * RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE) | ||
| 170 | 27939600 | PCGAZ(JL,JK)=PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL) | |
| 171 | ENDDO | ||
| 172 | ! ENDDO | ||
| 173 | ELSE ! MESONH VERSION | ||
| 174 | !--OB on utilise directement les aerosols LMDZ | ||
| 175 | ! DO JAE=1,6 | ||
| 176 | ✗ | DO JL = KIDIA,KFDIA | |
| 177 | !Special optical properties for dust | ||
| 178 | ! IF (LDDUST.AND.(JAE==3)) THEN | ||
| 179 | !Ponderation of aerosol optical properties:first step | ||
| 180 | !ti | ||
| 181 | ! PTAUAZ(JL,JK)=PTAUAZ(JL,JK) + PAER(JL,JAE,IKL) * PTAUREL_DST(JL,IKL) | ||
| 182 | ✗ | PTAUAZ(JL,JK)= PTAU_DST(JL,IKL) | |
| 183 | !wi*ti | ||
| 184 | ! PPIZAZ(JL,JK)=PPIZAZ(JL,JK) + PAER(JL,JAE,IKL) & | ||
| 185 | ! & *PTAUREL_DST(JL,IKL)*PPIZA_DST(JL,IKL) | ||
| 186 | ✗ | PPIZAZ(JL,JK)=PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL) | |
| 187 | !wi*ti*gi | ||
| 188 | ! PCGAZ(JL,JK) = PCGAZ(JL,JK) + PAER(JL,JAE,IKL) & | ||
| 189 | ! & *PTAUREL_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL) | ||
| 190 | ✗ | PCGAZ(JL,JK) = PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL) | |
| 191 | !wi*ti*(gi**2) | ||
| 192 | ! ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+PAER(JL, JAE, IKL)& | ||
| 193 | ! & *PTAUREL_DST(JL,IKL) *PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)*& | ||
| 194 | ! & PCGA_DST(JL,IKL) | ||
| 195 | ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+& | ||
| 196 | & PTAU_DST(JL,IKL) *PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)*& | ||
| 197 | ✗ | & PCGA_DST(JL,IKL) | |
| 198 | ! ELSE | ||
| 199 | !Ponderation of aerosol optical properties:first step | ||
| 200 | !ti | ||
| 201 | ! PTAUAZ(JL,JK)=PTAUAZ(JL,JK)+PAER(JL, JAE, IKL)*RTAUA(KNU,JAE) | ||
| 202 | !wi*ti | ||
| 203 | ! PPIZAZ(JL,JK)=PPIZAZ(JL,JK)+PAER(JL, JAE, IKL)& | ||
| 204 | ! &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE) | ||
| 205 | !wi*ti*gi | ||
| 206 | ! PCGAZ(JL,JK) = PCGAZ(JL,JK) +PAER(JL, JAE, IKL)& | ||
| 207 | ! &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE) | ||
| 208 | !wi*ti*(gi**2) | ||
| 209 | ! ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+PAER(JL, JAE, IKL)& | ||
| 210 | ! &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE)*RCGA(KNU,JAE) | ||
| 211 | ! ENDIF | ||
| 212 | ENDDO | ||
| 213 | ! ENDDO | ||
| 214 | ENDIF | ||
| 215 | !--MODIFCODE | ||
| 216 | |||
| 217 | !++MODIFCODE | ||
| 218 |
1/2✓ Branch 0 taken 28080 times.
✗ Branch 1 not taken.
|
28800 | IF (NOVLP < 5) then !ECMWF VERSION |
| 219 |
2/2✓ Branch 0 taken 27911520 times.
✓ Branch 1 taken 28080 times.
|
27939600 | DO JL = KIDIA,KFDIA |
| 220 |
1/2✓ Branch 0 taken 27911520 times.
✗ Branch 1 not taken.
|
27939600 | IF (KAER /= 0) THEN |
| 221 | 27911520 | PCGAZ(JL,JK)=PCGAZ(JL,JK)/PPIZAZ(JL,JK) | |
| 222 | 27911520 | PPIZAZ(JL,JK)=PPIZAZ(JL,JK)/PTAUAZ(JL,JK) | |
| 223 | !!!! wrong ZRATIO = ZTRAY / (ZTRAY + PTAUAZ(JL,JK)) | ||
| 224 | !-- | ||
| 225 | ZGAR = PCGAZ(JL,JK) | ||
| 226 | 27911520 | ZFF = ZGAR * ZGAR | |
| 227 | |||
| 228 | !-- bug-fix: ZRATIO must be defined from the transformed value of optical thickness | ||
| 229 | ! MPLFH : ZTRAY N'EST PAS INITIALISE !!!!! A REVOIR (MPL) | ||
| 230 | 27911520 | ZTRAY= PRAYL(JL) * PDSIG(JL,JK) | |
| 231 | ! print *,'>>>>>>> swclr: ZTRAY ',ZTRAY | ||
| 232 | 27911520 | ZDENB = ZTRAY + PTAUAZ(JL,JK)*(1.0_JPRB-PPIZAZ(JL,JK)*ZFF) | |
| 233 | 27911520 | ZRATIO=ZTRAY/ZDENB | |
| 234 | !-- | ||
| 235 | 27911520 | PTAUAZ(JL,JK)=ZTRAY+PTAUAZ(JL,JK)*(1.0_JPRB-PPIZAZ(JL,JK)*ZFF) | |
| 236 | 27911520 | PCGAZ(JL,JK) = ZGAR * (1.0_JPRB - ZRATIO) / (1.0_JPRB + ZGAR) | |
| 237 | PPIZAZ(JL,JK) =ZRATIO+(1.0_JPRB-ZRATIO)*PPIZAZ(JL,JK)*(1.0_JPRB-ZFF)& | ||
| 238 | 27911520 | & / (1.0_JPRB - PPIZAZ(JL,JK) * ZFF) | |
| 239 | ELSE | ||
| 240 | ✗ | ZTRAY = PRAYL(JL) * PDSIG(JL,JK) | |
| 241 | ✗ | PTAUAZ(JL,JK) = ZTRAY | |
| 242 | ✗ | PCGAZ(JL,JK) = 0.0_JPRB | |
| 243 | ✗ | PPIZAZ(JL,JK) = 1.0_JPRB-REPSCT | |
| 244 | ENDIF | ||
| 245 | ENDDO | ||
| 246 | ELSE !MESONH VERSION | ||
| 247 | ✗ | DO JL = KIDIA,KFDIA | |
| 248 | ✗ | IF (KAER /= 0) THEN | |
| 249 | ✗ | ZTRAY = PRAYL(JL) * PDSIG(JL,JK) | |
| 250 | ✗ | ZRATIO =PPIZAZ(JL,JK)+ZTRAY | |
| 251 | !Ponderation G**2 | ||
| 252 | ✗ | ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)/ZRATIO | |
| 253 | !Ponderation w | ||
| 254 | ✗ | PPIZAZ(JL,JK)=ZRATIO/(PTAUAZ(JL,JK)+ZTRAY) | |
| 255 | !Ponderation g | ||
| 256 | ✗ | PCGAZ(JL,JK)=PCGAZ(JL,JK)/ZRATIO | |
| 257 | !Ponderation+delta-modified parameters tau | ||
| 258 | PTAUAZ(JL,JK)=(ZTRAY+PTAUAZ(JL,JK))*& | ||
| 259 | ✗ | & (1.0_JPRB-PPIZAZ(JL,JK)*ZFACOA_NEW(JL,JK)) | |
| 260 | !delta-modified parameters w | ||
| 261 | PPIZAZ(JL,JK)=PPIZAZ(JL,JK)*(1.0_JPRB-ZFACOA_NEW(JL,JK))/& | ||
| 262 | ✗ | & (1.0_JPRB-ZFACOA_NEW(JL,JK)*PPIZAZ(JL,JK)) | |
| 263 | !delta-modified parameters g | ||
| 264 | ✗ | PCGAZ(JL,JK)=PCGAZ(JL,JK)/(1.0_JPRB+PCGAZ(JL,JK)) | |
| 265 | |||
| 266 | ELSE | ||
| 267 | ✗ | ZTRAY = PRAYL(JL) * PDSIG(JL,JK) | |
| 268 | ✗ | ZFACOA_NEW(JL,JK)= 0.0_JPRB | |
| 269 | ✗ | PTAUAZ(JL,JK) = ZTRAY | |
| 270 | ✗ | PCGAZ(JL,JK) = 0.0_JPRB | |
| 271 | ✗ | PPIZAZ(JL,JK) = 1.0_JPRB-REPSCT | |
| 272 | ENDIF | ||
| 273 | ENDDO | ||
| 274 | ENDIF | ||
| 275 | !--MODIFCODE | ||
| 276 | |||
| 277 | ENDDO | ||
| 278 | |||
| 279 | ! ------------------------------------------------------------------ | ||
| 280 | |||
| 281 | !* 2. TOTAL EFFECTIVE CLOUDINESS ABOVE A GIVEN LEVEL | ||
| 282 | ! ---------------------------------------------- | ||
| 283 | |||
| 284 |
2/2✓ Branch 0 taken 715680 times.
✓ Branch 1 taken 720 times.
|
716400 | DO JL = KIDIA,KFDIA |
| 285 | 715680 | ZR23(JL) = 0.0_JPRB | |
| 286 | 715680 | ZC0I(JL,KLEV+1) = 0.0_JPRB | |
| 287 | 715680 | ZCLEAR(JL) = 1.0_JPRB | |
| 288 | 716400 | ZSCAT(JL) = 0.0_JPRB | |
| 289 | ENDDO | ||
| 290 | |||
| 291 | JK = 1 | ||
| 292 | JKL = KLEV+1 - JK | ||
| 293 | JKLP1 = JKL + 1 | ||
| 294 |
2/2✓ Branch 0 taken 715680 times.
✓ Branch 1 taken 720 times.
|
716400 | DO JL = KIDIA,KFDIA |
| 295 | !++MODIFCODE | ||
| 296 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 715680 times.
|
715680 | IF (NOVLP >= 5) THEN |
| 297 | ✗ | ZFACOA = PTAUAZ(JL,JK) | |
| 298 | ✗ | ZCORAE = ZFACOA * PSEC(JL) | |
| 299 | ELSE | ||
| 300 | 715680 | ZFACOA = 1.0_JPRB - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL) | |
| 301 | 715680 | ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL) | |
| 302 | ENDIF | ||
| 303 | !--MODIFCODE | ||
| 304 | 715680 | ZR21(JL) = EXP(-ZCORAE ) | |
| 305 | 715680 | ZSS0(JL) = 1.0_JPRB-ZR21(JL) | |
| 306 | 715680 | ZCLE0(JL,JKL) = ZSS0(JL) | |
| 307 | |||
| 308 |
1/2✓ Branch 0 taken 715680 times.
✗ Branch 1 not taken.
|
716400 | IF (NOVLP == 1 .OR. NOVLP == 4) THEN |
| 309 | !* maximum-random | ||
| 310 | ZCLEAR(JL) = ZCLEAR(JL)& | ||
| 311 | & *(1.0_JPRB-MAX(ZSS0(JL),ZSCAT(JL)))& | ||
| 312 | 715680 | & /(1.0_JPRB-MIN(ZSCAT(JL),1.0_JPRB-REPCLC)) | |
| 313 | 715680 | ZC0I(JL,JKL) = 1.0_JPRB - ZCLEAR(JL) | |
| 314 | 715680 | ZSCAT(JL) = ZSS0(JL) | |
| 315 | ✗ | ELSEIF (NOVLP == 2) THEN | |
| 316 | !* maximum | ||
| 317 | ✗ | ZSCAT(JL) = MAX( ZSS0(JL) , ZSCAT(JL) ) | |
| 318 | ✗ | ZC0I(JL,JKL) = ZSCAT(JL) | |
| 319 | !++MODIFCODE | ||
| 320 | ✗ | ELSEIF ((NOVLP == 3).OR.(NOVLP >= 5)) THEN | |
| 321 | !--MODIFCODE | ||
| 322 | !* random | ||
| 323 | ✗ | ZCLEAR(JL)=ZCLEAR(JL)*(1.0_JPRB-ZSS0(JL)) | |
| 324 | ✗ | ZSCAT(JL) = 1.0_JPRB - ZCLEAR(JL) | |
| 325 | ✗ | ZC0I(JL,JKL) = ZSCAT(JL) | |
| 326 | ENDIF | ||
| 327 | ENDDO | ||
| 328 | |||
| 329 |
2/2✓ Branch 0 taken 27360 times.
✓ Branch 1 taken 720 times.
|
28080 | DO JK = 2 , KLEV |
| 330 | 27360 | JKL = KLEV+1 - JK | |
| 331 | JKLP1 = JKL + 1 | ||
| 332 |
2/2✓ Branch 0 taken 27195840 times.
✓ Branch 1 taken 27360 times.
|
27223920 | DO JL = KIDIA,KFDIA |
| 333 | !++MODIFCODE | ||
| 334 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 27195840 times.
|
27195840 | IF (NOVLP >= 5) THEN |
| 335 | ✗ | ZFACOA = PTAUAZ(JL,JK) | |
| 336 | ✗ | ZCORAE = ZFACOA * PSEC(JL) | |
| 337 | ELSE | ||
| 338 | 27195840 | ZFACOA = 1.0_JPRB - PPIZAZ(JL,JKL)*PCGAZ(JL,JKL)*PCGAZ(JL,JKL) | |
| 339 | 27195840 | ZCORAE = ZFACOA * PTAUAZ(JL,JKL) * PSEC(JL) | |
| 340 | ENDIF | ||
| 341 | !--MODIFCODE | ||
| 342 | 27195840 | ZR21(JL) = EXP(-ZCORAE ) | |
| 343 | 27195840 | ZSS0(JL) = 1.0_JPRB-ZR21(JL) | |
| 344 | 27195840 | ZCLE0(JL,JKL) = ZSS0(JL) | |
| 345 | |||
| 346 |
1/2✓ Branch 0 taken 27195840 times.
✗ Branch 1 not taken.
|
27223200 | IF (NOVLP == 1 .OR. NOVLP == 4) THEN |
| 347 | !* maximum-random | ||
| 348 | ZCLEAR(JL) = ZCLEAR(JL)& | ||
| 349 | & *(1.0_JPRB-MAX(ZSS0(JL),ZSCAT(JL)))& | ||
| 350 | 27195840 | & /(1.0_JPRB-MIN(ZSCAT(JL),1.0_JPRB-REPCLC)) | |
| 351 | 27195840 | ZC0I(JL,JKL) = 1.0_JPRB - ZCLEAR(JL) | |
| 352 | 27195840 | ZSCAT(JL) = ZSS0(JL) | |
| 353 | ✗ | ELSEIF (NOVLP == 2) THEN | |
| 354 | !* maximum | ||
| 355 | ✗ | ZSCAT(JL) = MAX( ZSS0(JL) , ZSCAT(JL) ) | |
| 356 | ✗ | ZC0I(JL,JKL) = ZSCAT(JL) | |
| 357 | !++MODIFCODE | ||
| 358 | ✗ | ELSEIF ((NOVLP == 3).OR.(NOVLP >= 5)) THEN | |
| 359 | !--MODIFCODE | ||
| 360 | !* random | ||
| 361 | ✗ | ZCLEAR(JL)=ZCLEAR(JL)*(1.0_JPRB-ZSS0(JL)) | |
| 362 | ✗ | ZSCAT(JL) = 1.0_JPRB - ZCLEAR(JL) | |
| 363 | ✗ | ZC0I(JL,JKL) = ZSCAT(JL) | |
| 364 | ENDIF | ||
| 365 | ENDDO | ||
| 366 | ENDDO | ||
| 367 | |||
| 368 | ! ------------------------------------------------------------------ | ||
| 369 | |||
| 370 | !* 3. REFLECTIVITY/TRANSMISSIVITY FOR PURE SCATTERING | ||
| 371 | ! ----------------------------------------------- | ||
| 372 | |||
| 373 |
2/2✓ Branch 0 taken 715680 times.
✓ Branch 1 taken 720 times.
|
716400 | DO JL = KIDIA,KFDIA |
| 374 | 715680 | PRAY1(JL,KLEV+1) = 0.0_JPRB | |
| 375 | 715680 | PRAY2(JL,KLEV+1) = 0.0_JPRB | |
| 376 | 715680 | PREFZ(JL,2,1) = PALBP(JL,KNU) | |
| 377 | 715680 | PREFZ(JL,1,1) = PALBP(JL,KNU) | |
| 378 | 715680 | PTRA1(JL,KLEV+1) = 1.0_JPRB | |
| 379 | 716400 | PTRA2(JL,KLEV+1) = 1.0_JPRB | |
| 380 | ENDDO | ||
| 381 | |||
| 382 |
2/2✓ Branch 0 taken 28080 times.
✓ Branch 1 taken 720 times.
|
28800 | DO JK = 2 , KLEV+1 |
| 383 | 28080 | JKM1 = JK-1 | |
| 384 |
2/2✓ Branch 0 taken 27911520 times.
✓ Branch 1 taken 28080 times.
|
27940320 | DO JL = KIDIA,KFDIA |
| 385 | |||
| 386 | ! ------------------------------------------------------------------ | ||
| 387 | |||
| 388 | !* 3.1 EQUIVALENT ZENITH ANGLE | ||
| 389 | ! ----------------------- | ||
| 390 | |||
| 391 | 27911520 | ZMUE = (1.0_JPRB-ZC0I(JL,JK)) * PSEC(JL)+ ZC0I(JL,JK) * 1.66_JPRB | |
| 392 | 27911520 | PRMU0(JL,JK) = 1.0_JPRB/ZMUE | |
| 393 | ZMU0=PRMU0(JL,JK) | ||
| 394 | |||
| 395 | ! ------------------------------------------------------------------ | ||
| 396 | |||
| 397 | !* 3.2 REFLECT./TRANSMISSIVITY DUE TO RAYLEIGH AND AEROSOLS | ||
| 398 | ! ---------------------------------------------------- | ||
| 399 | |||
| 400 | 27911520 | ZGAP = PCGAZ(JL,JKM1) | |
| 401 | 27911520 | ZBMU0 = 0.5_JPRB - 0.75_JPRB * ZGAP *ZMU0 | |
| 402 | 27911520 | ZWW = PPIZAZ(JL,JKM1) | |
| 403 | 27911520 | ZTO = PTAUAZ(JL,JKM1) | |
| 404 | ZDEN = 1.0_JPRB + (1.0_JPRB - ZWW + ZBMU0 * ZWW) * ZTO * ZMUE & | ||
| 405 | 27911520 | & + (1-ZWW) * (1.0_JPRB - ZWW +2.0_JPRB*ZBMU0*ZWW)*ZTO*ZTO*ZMUE*ZMUE | |
| 406 | 27911520 | ZIDEN=1.0_JPRB / ZDEN | |
| 407 | 27911520 | PRAY1(JL,JKM1) = ZBMU0 * ZWW * ZTO * ZMUE * ZIDEN | |
| 408 | 27911520 | PTRA1(JL,JKM1) = ZIDEN | |
| 409 | |||
| 410 | ZMU1 = 0.5_JPRB | ||
| 411 | ZIMU1=2.0_JPRB | ||
| 412 | ZI2MU1=4.0_JPRB | ||
| 413 | 27911520 | ZBMU1 = 0.5_JPRB - 0.75_JPRB * ZGAP * ZMU1 | |
| 414 | ZDEN1= 1.0_JPRB + (1.0_JPRB - ZWW + ZBMU1 * ZWW) * ZTO * ZIMU1 & | ||
| 415 | 27911520 | & + (1-ZWW) * (1.0_JPRB - ZWW +2.0_JPRB*ZBMU1*ZWW)*ZTO*ZTO*ZI2MU1 | |
| 416 | 27911520 | ZIDEN1=1.0_JPRB / ZDEN1 | |
| 417 | 27911520 | PRAY2(JL,JKM1) = ZBMU1 * ZWW * ZTO * ZIMU1 *ZIDEN1 | |
| 418 | 27911520 | PTRA2(JL,JKM1) = ZIDEN1 | |
| 419 | |||
| 420 | 27911520 | ZRR=1.0_JPRB/(1.0_JPRB-PRAY2(JL,JKM1)*PREFZ(JL,1,JKM1)) | |
| 421 | PREFZ(JL,1,JK) = PRAY1(JL,JKM1)& | ||
| 422 | & + PREFZ(JL,1,JKM1) * PTRA1(JL,JKM1)& | ||
| 423 | & * PTRA2(JL,JKM1)& | ||
| 424 | 27911520 | & *ZRR | |
| 425 | |||
| 426 | ZTR(JL,1,JKM1) = PTRA1(JL,JKM1)& | ||
| 427 | 27911520 | & *ZRR | |
| 428 | |||
| 429 | PREFZ(JL,2,JK) = PRAY1(JL,JKM1)& | ||
| 430 | & + PREFZ(JL,2,JKM1) * PTRA1(JL,JKM1)& | ||
| 431 | 27911520 | & * PTRA2(JL,JKM1) | |
| 432 | |||
| 433 | 27939600 | ZTR(JL,2,JKM1) = PTRA1(JL,JKM1) | |
| 434 | |||
| 435 | ENDDO | ||
| 436 | ENDDO | ||
| 437 |
2/2✓ Branch 0 taken 715680 times.
✓ Branch 1 taken 720 times.
|
716400 | DO JL = KIDIA,KFDIA |
| 438 | 715680 | ZMUE = (1.0_JPRB-ZC0I(JL,1))*PSEC(JL)+ZC0I(JL,1)*1.66_JPRB | |
| 439 | 715680 | PRMU0(JL,1)=1.0_JPRB/ZMUE | |
| 440 | 716400 | PTRCLR(JL)=1.0_JPRB-ZC0I(JL,1) | |
| 441 | ENDDO | ||
| 442 | |||
| 443 | ! ------------------------------------------------------------------ | ||
| 444 | |||
| 445 | !* 3.5 REFLECT./TRANSMISSIVITY BETWEEN SURFACE AND LEVEL | ||
| 446 | ! ------------------------------------------------- | ||
| 447 | |||
| 448 |
1/2✓ Branch 0 taken 720 times.
✗ Branch 1 not taken.
|
720 | IF (NSW <= 4) THEN |
| 449 | INU1=1 | ||
| 450 |
1/2✓ Branch 0 taken 720 times.
✗ Branch 1 not taken.
|
720 | ELSEIF (NSW == 6) THEN |
| 451 | INU1=3 | ||
| 452 | ENDIF | ||
| 453 | |||
| 454 |
2/2✓ Branch 0 taken 360 times.
✓ Branch 1 taken 360 times.
|
720 | IF (KNU <= INU1) THEN |
| 455 | JAJ = 2 | ||
| 456 |
2/2✓ Branch 0 taken 357840 times.
✓ Branch 1 taken 360 times.
|
358200 | DO JL = KIDIA,KFDIA |
| 457 | 357840 | PRJ(JL,JAJ,KLEV+1) = 1.0_JPRB | |
| 458 | 358200 | PRK(JL,JAJ,KLEV+1) = PREFZ(JL, 1,KLEV+1) | |
| 459 | ENDDO | ||
| 460 | |||
| 461 |
2/2✓ Branch 0 taken 14040 times.
✓ Branch 1 taken 360 times.
|
14400 | DO JK = 1 , KLEV |
| 462 | 14040 | JKL = KLEV+1 - JK | |
| 463 | 14040 | JKLP1 = JKL + 1 | |
| 464 |
2/2✓ Branch 0 taken 13955760 times.
✓ Branch 1 taken 14040 times.
|
13970160 | DO JL = KIDIA,KFDIA |
| 465 | 13955760 | ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL, 1,JKL) | |
| 466 | 13955760 | PRJ(JL,JAJ,JKL) = ZRE11 | |
| 467 | 13969800 | PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL, 1,JKL) | |
| 468 | ENDDO | ||
| 469 | ENDDO | ||
| 470 | |||
| 471 | ELSE | ||
| 472 | |||
| 473 |
2/2✓ Branch 0 taken 360 times.
✓ Branch 1 taken 720 times.
|
1080 | DO JAJ = 1 , 2 |
| 474 |
2/2✓ Branch 0 taken 715680 times.
✓ Branch 1 taken 720 times.
|
716400 | DO JL = KIDIA,KFDIA |
| 475 | 715680 | PRJ(JL,JAJ,KLEV+1) = 1.0_JPRB | |
| 476 | 716400 | PRK(JL,JAJ,KLEV+1) = PREFZ(JL,JAJ,KLEV+1) | |
| 477 | ENDDO | ||
| 478 | |||
| 479 |
2/2✓ Branch 0 taken 28080 times.
✓ Branch 1 taken 720 times.
|
29160 | DO JK = 1 , KLEV |
| 480 | 28080 | JKL = KLEV+1 - JK | |
| 481 | 28080 | JKLP1 = JKL + 1 | |
| 482 |
2/2✓ Branch 0 taken 27911520 times.
✓ Branch 1 taken 28080 times.
|
27940320 | DO JL = KIDIA,KFDIA |
| 483 | 27911520 | ZRE11= PRJ(JL,JAJ,JKLP1) * ZTR(JL,JAJ,JKL) | |
| 484 | 27911520 | PRJ(JL,JAJ,JKL) = ZRE11 | |
| 485 | 27939600 | PRK(JL,JAJ,JKL) = ZRE11 * PREFZ(JL,JAJ,JKL) | |
| 486 | ENDDO | ||
| 487 | ENDDO | ||
| 488 | ENDDO | ||
| 489 | |||
| 490 | ENDIF | ||
| 491 | |||
| 492 | ! ------------------------------------------------------------------ | ||
| 493 | |||
| 494 |
1/2✓ Branch 0 taken 720 times.
✗ Branch 1 not taken.
|
720 | IF (LHOOK) CALL DR_HOOK('SWCLR',1,ZHOOK_HANDLE) |
| 495 | 720 | END SUBROUTINE SWCLR | |
| 496 |