Page 1 Source Listing PQPF 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 1 program pqpf 2 ! 3 !$$$ MAIN PROGRAM DOCUMENTATION BLOCK 4 ! 5 ! MAIN PROGRAM: PQPF PROBABILISTI! QUANTITATIVE SNOW FORECAST 6 ! PRGMMR: YUEJIAN ZHU ORG:NP23 DATE: 01-09-21 7 ! PRGMMR: Bo Cui MOD:NP20 DATE: 09-07-21 8 ! 9 ! ABSTRACT: THIS PROGRAM WILL CALCULATE ENSEMBLE BASED 10 ! PROBABILISTIC QUANTITATIVE PRECIPITATION FORECAST (PQPF) 11 ! PROBABILISTIC QUANTITATIVE RAIN FORECAST (PQRF) 12 ! PROBABILISTIC QUANTITATIVE SNOW FORECAST (PQSF) 13 ! PROBABILISTIC QUANTITATIVE ICE PELLETS FORECAST (PQIF) 14 ! PROBABILISTIC QUANTITATIVE FREEZING RAIN FORECAST (PQFF) 15 ! 16 ! PROGRAM HISTORY LOG: 17 ! 01-09-21 YUEJIAN ZHU (WX20YZ) 18 ! 03-05-05 YUEJIAN ZHU: calculate for 6-hour intevals. 19 ! 02-08-06 YUEJIAN ZHU: Modify for new implementation. 20 ! 07-01-09 BO Cui : Modify for new options (1 degree, 6hr, 12hr and 24hr interval) 21 ! Calculate GEFS ensemble based (PQPF) at 1 by 1 degree resolution, 24 hour output 22 ! at 6 hour increments to 16 days for more threads(1, 2, 4 and 6 inches). 23 ! 24 ! USAGE: 25 ! 26 ! INPUT FILES: 27 ! UNIT 11 PRECIPITATION GRIB FILE ( 360*181 ) 28 ! UNIT 12 CATEGORICAL RAIN (1=RAIN, 0=NOT) GRIB FILE (360*181) 29 ! UNIT 13 CATEGORICAL FREEZING RAIN (1=FRAIN,0=NOT) GRIB FILE (360*181) 30 ! UNIT 14 CATEGORICAL ICE PELLETS (1=ICE, 0=NOT) GRIB FILE (360*181) 31 ! UNIT 15 CATEGORICAL SNOW (1=SNOW, 0=NOT) GRIB FILE (360*181) 32 ! UNIT 21 PRECIPITATION GRIB INDEX FILE 33 ! UNIT 22 CATEGORICAL RAIN INDEX (1=RAIN, 0=NOT) INDEX FILE (360*181) 34 ! UNIT 23 CATEGORICAL FREEZING RAIN (1=FRAIN,0=NOT) INDEX FILE (360*181) 35 ! UNIT 24 CATEGORICAL ICE PELLETS (1=ICE, 0=NOT) INDEX FILE (360*181) 36 ! UNIT 25 CATEGORICAL SNOW (1=SNOW, 0=NOT) INDEX FILE (360*181) 37 ! 38 ! OUTPUT FILES: 39 ! UNIT 51 PQPF GRIB FILE ( 360*181 ) 40 ! UNIT 52 PQRF GRIB FILE ( 360*181 ) 41 ! UNIT 53 PQFF GRIB FILE ( 360*181 ) 42 ! UNIT 54 PQIF GRIB FILE ( 360*181 ) 43 ! UNIT 55 PQSF GRIB FILE ( 360*181 ) 44 ! 45 ! SUBPROGRAMS CALLED: 46 ! GETGBE -- W3LIB ROUTINE 47 ! PUTGBEX-- W3LIB ROUTINE 48 ! GRANGE -- LOCAL ROUTINE ( included after main program ) 49 ! 50 ! ATTRIBUTES: 51 ! LANGUAGE: FORTRAN 52 ! 53 !$$$ 54 55 implicit none 56 57 integer jf,kf,len,mem,ijd,irk,hrini,hrinter,hrcont,icyc Page 2 Source Listing PQPF 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 58 parameter(jf=65160,len=64,mem=21,ijd=65160,irk=13) 59 real f(ijd),ff(ijd,mem),pp(ijd,mem),ss(ijd,mem),aa(ijd) 60 real pp1(ijd,mem),pp2(ijd,mem),pp3(ijd,mem) 61 real xprob(2),imembr(80) 62 real rk(irk,5),kpds5(5) 63 integer ipds(25),igds(22),iens(5),iprob(2),iclust(16) 64 integer jpds(25),jgds(22),jens(5) 65 integer kpds(25),kgds(22),kens(5) 66 integer kens2(mem),kens3(mem) 67 logical(1) lb(ijd) 68 character*80 cpgb,cpgi,cpge 69 character*80 crain,craini,craino 70 character*80 cfrzr,cfrzri,cfrzro 71 character*80 cicep,cicepi,cicepo 72 character*80 csnow,csnowi,csnowo 73 namelist /namin/icyc,hrinter,cpgb,cpgi,cpge,crain,craini,craino, & 74 cfrzr,cfrzri,cfrzro,cicep,cicepi,cicepo,csnow,csnowi,csnowo 75 data kens2/1,3,3,3,3,3,3,3,3,3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3/ 76 data kens3/2,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20/ 77 data rk/0.254,1.00,1.27,2.54,5.00,6.35,10.00,12.7,20.0,25.4,50.8,101.6,152.4,& 78 0.254,1.00,1.27,2.54,5.00,6.35,10.00,12.7,20.0,25.4,50.8,101.6,152.4,& 79 0.254,1.00,1.27,2.54,5.00,6.35,10.00,12.7,20.0,25.4,50.8,101.6,152.4,& 80 0.254,1.00,1.27,2.54,5.00,6.35,10.00,12.7,20.0,25.4,50.8,101.6,152.4,& 81 0.254,1.00,1.27,2.54,5.00,6.35,10.00,12.7,20.0,25.4,50.8,101.6,152.4/ 82 data kpds5/61,140,141,142,143/ 83 84 integer lpgb,lpge,lrain,lraino,lfrzr,lfrzro,licep,licepo,lsnow,lsnowo 85 integer iret,iretb,irete,ireti,irese,iresb,irere,irerb,irefb,ireie,ireib,irefe 86 integer imem,imems,ivar,m,mm,ii,jj,j,k,n,l,icnt,ncnt 87 real bb,cc 88 89 read (5,namin) 90 91 lpgb = len_trim(cpgb) 92 lpge = len_trim(cpge) 93 94 lrain = len_trim(crain) 95 lraino = len_trim(craino) 96 97 lfrzr = len_trim(cfrzr) 98 lfrzro = len_trim(cfrzro) 99 100 licep = len_trim(cicep) 101 licepo = len_trim(cicepo) 102 103 lsnow = len_trim(csnow) 104 lsnowo = len_trim(csnowo) 105 106 print *, cpgb(1:lpgb) 107 print *, cpge(1:lpge) 108 call baopenr(11,cpgb(1:lpgb),iretb) 109 call baopen (51,cpge(1:lpge),irete) 110 111 print *, crain(1:lrain) 112 print *, craino(1:lraino) 113 call baopenr(12,crain(1:lrain),irerb) 114 call baopen (52,craino(1:lraino),irere) Page 3 Source Listing PQPF 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 115 116 print *, cfrzr(1:lfrzr) 117 print *, cfrzro(1:lfrzro) 118 call baopenr(13,cfrzr(1:lfrzr),irefb) 119 call baopen (53,cfrzro(1:lfrzro),irefe) 120 121 print *, cicep(1:licep) 122 print *, cicepo(1:licepo) 123 call baopenr(14,cicep(1:licep),ireib) 124 call baopen (54,cicepo(1:licepo),ireie) 125 126 print *, csnow(1:lsnow) 127 print *, csnowo(1:lsnowo) 128 call baopenr(15,csnow(1:lsnow),iresb) 129 call baopen (55,csnowo(1:lsnowo),irese) 130 131 ncnt=0 132 iprob=0 133 xprob=0.0 134 iclust=0 135 imembr=0 136 137 if(hrinter.gt.6) ivar=1 138 if(hrinter.eq.6) ivar=5 139 140 print *, 'hrinter,len,ivar',hrinter,len,ivar 141 142 ! Part 1: get all ensemble members precipitation data 143 144 do n = 1, len !### 16 (days) * 4 = 64 (6-hr) 145 do l = 1, ivar !### 5 or 1 categorical 146 147 icnt=0 148 pp=0.0 149 imems=1 150 imem=mem 151 152 print *, ' ' 153 print *, '----- Input Information for Current Time ------' 154 155 do m = imems, imem 156 j=0 157 jpds=-1 158 jgds=-1 159 jens=-1 160 jpds(23)=2 161 jpds(11)=icyc 162 jpds(5)=kpds5(l) 163 164 ! PDS(13) --> time unit 165 ! PDS(14) --> start hours 166 ! PDS(15) --> end hours 167 ! There is time unit change: 168 ! hour <= 252 time unit=1, (hour) 169 ! hour > 252 time unit=12, (12-hour) 170 ! hour > 252 time unit=11, (6-hour) 171 ! -- Yuejian Zhu (05/05/2003) Page 4 Source Listing PQPF 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 172 173 if (n.le.42) then 174 jpds(13)=1 175 jpds(14)=(n-1)*6 176 jpds(15)=(n+0)*6 177 else 178 jpds(13)=11 179 jpds(14)=n-1 180 jpds(15)=n+0 181 endif 182 183 jens(2)=kens2(m) 184 jens(3)=kens3(m) 185 186 call getgbe(10+l,0,jf,j,jpds,jgds,jens,kf,k,kpds,kgds,kens,lb,f,iret) 187 188 if(iret.eq.0) then 189 190 icnt=icnt + 1 191 192 call printinfr(f,kf,kpds,kens,lb,l) 193 194 do ii=1,ijd 195 if (l.eq.1) then 196 ff(ii,icnt)=f(ii) 197 else 198 pp(ii,icnt)=f(ii) 199 endif 200 enddo 201 202 ! pass PDS, GDS and ENS extended message to output 203 204 do ii = 1, 25 205 ipds(ii)=kpds(ii) 206 enddo 207 do ii = 1, 22 208 igds(ii)=kgds(ii) 209 enddo 210 do ii = 1, 5 211 iens(ii)=kens(ii) 212 enddo 213 214 else 215 216 ncnt=ncnt+1 217 if ( ncnt.le.1 ) then 218 print *,' n=',n,' iret=',iret 219 endif 220 221 endif ! end of iret.eq.0 222 223 enddo !### for m = imems, imem 224 225 !print *,' icnt=',icnt 226 !if(icnt.eq.0) print *,' icnt=',icnt 227 if(icnt.eq.0) goto 100 228 Page 5 Source Listing PQPF 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 229 ! PART II: to calculate the probability scores 230 ! icnt is a real read in members of ensemble 231 ! l=1, for tatol precipitation 232 ! l>1, for all categorical precipitation 233 234 ! l=1, calculate the probabilistic quatitative precipitation forecast 235 236 ! to calculate possible 12 hrs interval PQPF only for hrinter=12 237 ! such as 00-12 hrs 238 ! 06-18 hrs 239 ! 12-24 hrs 240 ! ...... 241 ! 366-378 hrs 242 ! 372-384 hrs 243 ! 244 ! to calculate poosible 24 hrs interval PQPF only for hrinter=24 245 ! such as 00-24 hrs 246 ! 06-12 hrs 247 ! 12-36 hrs 248 ! 18-42 hrs 249 ! 24-48 hrs 250 ! ...... 251 ! 360-384 hrs 252 253 print *, ' ' 254 print *, '----- Output Information for Current Time ------' 255 print *, ' ' 256 257 do k = 1, irk 258 aa=0.0 259 260 if (l.eq.1) then 261 262 do ii = 1, ijd 263 do mm = 1, icnt 264 265 ! if(hrinter.eq.24.and.n.ge.4.and.mod(n,2).eq.0) then 266 if(hrinter.eq.24.and.n.ge.4) then 267 bb=(ff(ii,mm)+pp1(ii,mm)+pp2(ii,mm)+pp3(ii,mm)) 268 elseif(hrinter.eq.12.and.n.ge.2) then 269 bb=ff(ii,mm)+pp1(ii,mm) 270 elseif(hrinter.eq.6) then 271 bb=ff(ii,mm) 272 endif 273 274 if(k.eq.2.and.ii.eq.1250.and.mm.eq.1) then 275 print *, 'ff,pp1,pp2,pp3,bb',hrinter,ff(ii,mm),pp1(ii,mm),pp2(ii,mm),pp3(ii,mm),bb 276 endif 277 278 if (bb.ge.rk(k,l)) then 279 aa(ii) = aa(ii) + 1.0 280 endif 281 282 enddo ! end of mm = 1, icnt 283 enddo ! end of ii = 1, ijd 284 285 do ii = 1, ijd Page 6 Source Listing PQPF 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 286 aa(ii) = aa(ii)*100.0/float(icnt) 287 if (aa(ii).ge.99.0) then 288 aa(ii) = 100.0 289 endif 290 enddo 291 292 else 293 294 do ii = 1, ijd 295 do mm = 1, icnt 296 bb=ff(ii,mm) 297 cc=pp(ii,mm) 298 if (cc.eq.1.0) then 299 if (bb.ge.rk(k,l)) then 300 aa(ii) = aa(ii) + 1.0 301 endif 302 endif 303 enddo ! end of mm = 1, icnt 304 enddo ! end of ii = 1, ijd 305 306 do ii = 1, ijd 307 aa(ii) = aa(ii)*100.0/float(icnt) 308 if (aa(ii).ge.99.0) then 309 aa(ii) = 100.0 310 endif 311 enddo 312 313 endif ! end of if (l.eq.1) 314 315 ! testing print 316 ! 1250-1259 (70N, 115W-95W) 317 318 !if (n.eq.61.and.k.eq.2) then 319 ! write(*,*) 'test' 320 ! write(*,999) l,n,(aa(ii),ii=1250,1259) 321 !endif 322 323 999 format (2i3,10f8.1) 324 325 ipds(5)=191 !: OCT 9 326 327 if(hrinter.eq.12.and.n.ge.2) then 328 ipds(13)=11 !: Time unit = 12 hours 329 ipds(14)=n-2 330 ipds(15)=n 331 ! elseif(hrinter.eq.24.and.n.ge.4.and.mod(n,2).eq.0) then 332 elseif(hrinter.eq.24.and.n.ge.4) then 333 ipds(13)=11 !: Time unit = 24 hours 334 ipds(14)=n-4 335 ipds(15)=n 336 elseif(hrinter.eq.6) then 337 ipds(13)=11 !: Time unit = 6 hours 338 ipds(14)=n-1 339 ipds(15)=n 340 endif 341 342 iens(2)=5 !: OCT 42 Page 7 Source Listing PQPF 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 343 iens(3)=0 !: OCT 43 344 iens(4)=0 !: OCT 44 345 iprob(1)=61 !: OCT 46 346 iprob(2)=2 !: OCT 47 347 xprob(1)=0.0 !: OCT 48-51 348 xprob(2)=rk(k,l) !: OCT 52-55 349 iclust(1)=icnt !: OCT 61 350 351 352 ! if(hrinter.eq.24.and.n.ge.4.and.mod(n,2).eq.0) then 353 if(hrinter.eq.24.and.n.ge.4) then 354 call putgbex(50+l,ijd,ipds,igds,iens,iprob,xprob,iclust,imembr,lb,aa,iret) 355 call printinfr(aa,kf,ipds,iens,lb,k) 356 elseif(hrinter.eq.12.and.n.ge.2) then 357 call putgbex(50+l,ijd,ipds,igds,iens,iprob,xprob,iclust,imembr,lb,aa,iret) 358 call printinfr(aa,kf,ipds,iens,lb,k) 359 elseif(hrinter.eq.6) then 360 call putgbex(50+l,ijd,ipds,igds,iens,iprob,xprob,iclust,imembr,lb,aa,iret) 361 call printinfr(aa,kf,ipds,iens,lb,k) 362 endif 363 364 enddo !### for k = 1, irk 365 366 100 continue 367 368 enddo !### for l=1,ivar 369 370 if(hrinter.eq.24) then 371 if (icnt.gt.0) then 372 do ii = 1, ijd 373 do jj = 1, mem 374 if(n.eq.1) pp1(ii,jj)=ff(ii,jj) 375 if(n.eq.2) pp2(ii,jj)=ff(ii,jj) 376 if(n.eq.3) pp3(ii,jj)=ff(ii,jj) 377 if(n.ge.4) then 378 pp1(ii,jj)=pp2(ii,jj) 379 pp2(ii,jj)=pp3(ii,jj) 380 pp3(ii,jj)=ff(ii,jj) 381 endif 382 enddo !### do jj = 1, mem 383 enddo !### do ii = 1, ijd 384 endif !### if icnt.gt.0 385 endif !### if hrinter.eq.24 386 387 if(hrinter.eq.12) then 388 if (icnt.gt.0) then 389 do ii = 1, ijd 390 do jj = 1, mem 391 if(n.eq.1) pp1(ii,jj)=ff(ii,jj) 392 if(n.ge.2) pp1(ii,jj)=ff(ii,jj) 393 enddo !### do ii = 1, ijd 394 enddo !### do jj = 1, mem 395 endif !### if (icnt.gt.0) 396 endif !### if hrinter.eq.12 397 398 enddo !### for n = 1, len 399 Page 8 Source Listing PQPF 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 400 call baclose(11,iretb) 401 call baclose(21,ireti) 402 call baclose(51,irete) 403 call baclose(12,iretb) 404 call baclose(22,ireti) 405 call baclose(52,irete) 406 call baclose(13,iretb) 407 call baclose(23,ireti) 408 call baclose(53,irete) 409 call baclose(14,iretb) 410 call baclose(24,ireti) 411 call baclose(54,irete) 412 call baclose(15,iretb) 413 call baclose(25,ireti) 414 call baclose(55,irete) 415 416 !CALL W3TAGE('PQPF') 417 418 stop 419 end ENTRY POINTS Name MAIN__ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 100 Label 366 227 999 Label 323 AA Local 59 R(4) 4 1 65160 258,279,286,287,288,300,307,308,30 9,354,355,357,358,360,361 BACLOSE Subr 400 400,401,402,403,404,405,406,407,40 8,409,410,411,412,413,414 BAOPEN Subr 109 109,114,119,124,129 BAOPENR Subr 108 108,113,118,123,128 BB Local 87 R(4) 4 scalar 267,269,271,275,278,296,299 CC Local 87 R(4) 4 scalar 297,298 CFRZR Local 70 CHAR 80 scalar 74,97,116,118 CFRZRI Local 70 CHAR 80 scalar 74 CFRZRO Local 70 CHAR 80 scalar 74,98,117,119 CICEP Local 71 CHAR 80 scalar 74,100,121,123 CICEPI Local 71 CHAR 80 scalar 74 CICEPO Local 71 CHAR 80 scalar 74,101,122,124 CPGB Local 68 CHAR 80 scalar 73,91,106,108 CPGE Local 68 CHAR 80 scalar 73,92,107,109 CPGI Local 68 CHAR 80 scalar 73 CRAIN Local 69 CHAR 80 scalar 73,94,111,113 CRAINI Local 69 CHAR 80 scalar 73 CRAINO Local 69 CHAR 80 scalar 73,95,112,114 CSNOW Local 72 CHAR 80 scalar 74,103,126,128 CSNOWI Local 72 CHAR 80 scalar 74 Page 9 Source Listing PQPF 2013-12-16 19:39 Symbol Table gefs_pgrb_enspqpf.f90 Name Object Declared Type Bytes Dimen Elements Attributes References CSNOWO Local 72 CHAR 80 scalar 74,104,127,129 F Local 59 R(4) 4 1 65160 186,192,196,198 FF Local 59 R(4) 4 2 1368360 196,267,269,271,275,296,374,375,37 6,380,391,392 FLOAT Func 286 scalar 286,307 GETGBE Subr 186 186 HRCONT Local 57 I(4) 4 scalar HRINI Local 57 I(4) 4 scalar HRINTER Local 57 I(4) 4 scalar 73,137,138,140,266,268,270,275,327 ,332,336,353,356,359,370,387 ICLUST Local 63 I(4) 4 1 16 134,349,354,357,360 ICNT Local 86 I(4) 4 scalar 147,190,196,198,227,263,286,295,30 7,349,371,388 ICYC Local 57 I(4) 4 scalar 73,161 IENS Local 63 I(4) 4 1 5 211,342,343,344,354,355,357,358,36 0,361 IGDS Local 63 I(4) 4 1 22 208,354,357,360 II Local 86 I(4) 4 scalar 194,196,198,204,205,207,208,210,21 1,262,267,269,271,274,275,279,285, 286,287,288,294,296,297,300,306,30 7,308,309,372,374,375,376,378,379, 380,389,391,392 IJD Param 57 I(4) 4 scalar 59,60,67,194,262,285,294,306,354,3 57,360,372,389 IMEM Local 86 I(4) 4 scalar 150,155 IMEMBR Local 61 R(4) 4 1 80 135,354,357,360 IMEMS Local 86 I(4) 4 scalar 149,155 IPDS Local 63 I(4) 4 1 25 205,325,328,329,330,333,334,335,33 7,338,339,354,355,357,358,360,361 IPROB Local 63 I(4) 4 1 2 132,345,346,354,357,360 IREFB Local 85 I(4) 4 scalar 118 IREFE Local 85 I(4) 4 scalar 119 IREIB Local 85 I(4) 4 scalar 123 IREIE Local 85 I(4) 4 scalar 124 IRERB Local 85 I(4) 4 scalar 113 IRERE Local 85 I(4) 4 scalar 114 IRESB Local 85 I(4) 4 scalar 128 IRESE Local 85 I(4) 4 scalar 129 IRET Local 85 I(4) 4 scalar 186,188,218,354,357,360 IRETB Local 85 I(4) 4 scalar 108,400,403,406,409,412 IRETE Local 85 I(4) 4 scalar 109,402,405,408,411,414 IRETI Local 85 I(4) 4 scalar 401,404,407,410,413 IRK Param 57 I(4) 4 scalar 62,257 IVAR Local 86 I(4) 4 scalar 137,138,140,145 J Local 86 I(4) 4 scalar 156,186 JENS Local 64 I(4) 4 1 5 159,183,184,186 JF Param 57 I(4) 4 scalar 186 JGDS Local 64 I(4) 4 1 22 158,186 JJ Local 86 I(4) 4 scalar 373,374,375,376,378,379,380,390,39 1,392 JPDS Local 64 I(4) 4 1 25 157,160,161,162,174,175,176,178,17 9,180,186 K Local 86 I(4) 4 scalar 186,257,274,278,299,348,355,358,36 1 KENS Local 65 I(4) 4 1 5 186,192,211 Page 10 Source Listing PQPF 2013-12-16 19:39 Symbol Table gefs_pgrb_enspqpf.f90 Name Object Declared Type Bytes Dimen Elements Attributes References KENS2 Local 66 I(4) 4 1 21 75,183 KENS3 Local 66 I(4) 4 1 21 76,184 KF Local 57 I(4) 4 scalar 186,192,355,358,361 KGDS Local 65 I(4) 4 1 22 186,208 KPDS Local 65 I(4) 4 1 25 186,192,205 KPDS5 Local 62 R(4) 4 1 5 82,162 L Local 86 I(4) 4 scalar 145,162,186,192,195,260,278,299,34 8,354,357,360 LB Local 67 L(1) 1 1 65160 186,192,354,355,357,358,360,361 LEN Param 57 I(4) 4 scalar 140,144 LEN_TRIM Func 91 scalar 91,92,94,95,97,98,100,101,103,104 LFRZR Local 84 I(4) 4 scalar 97,116,118 LFRZRO Local 84 I(4) 4 scalar 98,117,119 LICEP Local 84 I(4) 4 scalar 100,121,123 LICEPO Local 84 I(4) 4 scalar 101,122,124 LPGB Local 84 I(4) 4 scalar 91,106,108 LPGE Local 84 I(4) 4 scalar 92,107,109 LRAIN Local 84 I(4) 4 scalar 94,111,113 LRAINO Local 84 I(4) 4 scalar 95,112,114 LSNOW Local 84 I(4) 4 scalar 103,126,128 LSNOWO Local 84 I(4) 4 scalar 104,127,129 M Local 86 I(4) 4 scalar 155,183,184 MEM Param 57 I(4) 4 scalar 59,60,66,150,373,390 MM Local 86 I(4) 4 scalar 263,267,269,271,274,275,295,296,29 7 N Local 86 I(4) 4 scalar 144,173,175,176,179,180,218,266,26 8,327,329,330,332,334,335,338,339, 353,356,374,375,376,377,391,392 NAMIN Local 73 scalar 89 NCNT Local 86 I(4) 4 scalar 131,216,217 PP Local 59 R(4) 4 2 1368360 148,198,297 PP1 Local 60 R(4) 4 2 1368360 267,269,275,374,378,391,392 PP2 Local 60 R(4) 4 2 1368360 267,275,375,378,379 PP3 Local 60 R(4) 4 2 1368360 267,275,376,379,380 PQPF Prog 1 PRINTINFR Subr 192 192,355,358,361 PUTGBEX Subr 354 354,357,360 RK Local 62 R(4) 4 2 65 77,278,299,348 SS Local 59 R(4) 4 2 1368360 XPROB Local 61 R(4) 4 1 2 133,347,348,354,357,360 Page 11 Source Listing PQPF 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 420 421 subroutine printinfr(grid,maxgrd,kpds,kens,lbms,ivar) 422 423 ! print data information 424 425 implicit none 426 427 integer kpds(200),kens(200),ivar,maxgrd,i 428 real grid(maxgrd),dmin,dmax 429 logical(1) lbms(maxgrd) 430 431 call grange(maxgrd,lbms,grid,dmin,dmax) 432 433 print*, 'Irec pds5 pds6 pds7 pds8 pds9 pd10 pd11 pd14 pd15 pd16 e2 e3 ndata Maximun Minimum Example' 434 print '(i4,10i5,2i4,i8,3f10.2)',ivar,(kpds(i),i=5,11),(kpds(i),i=14,16),(kens(i),i=2,3),maxgrd,dmax,dmin,grid(8601) 435 print *, ' ' 436 437 return 438 end ENTRY POINTS Name printinfr_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References DMAX Local 428 R(4) 4 scalar 431,434 DMIN Local 428 R(4) 4 scalar 431,434 GRANGE Subr 431 431 GRID Dummy 421 R(4) 4 1 0 ARG,INOUT 431,434 I Local 427 I(4) 4 scalar 434 IVAR Dummy 421 I(4) 4 scalar ARG,INOUT 434 KENS Dummy 421 I(4) 4 1 200 ARG,INOUT 434 KPDS Dummy 421 I(4) 4 1 200 ARG,INOUT 434 LBMS Dummy 421 L(1) 1 1 0 ARG,INOUT 431 MAXGRD Dummy 421 I(4) 4 scalar ARG,INOUT 428,429,431,434 PRINTINFR Subr 421 Page 12 Source Listing PRINTINFR 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 439 440 subroutine grange(n,ld,d,dmin,dmax) 441 !$$$ SUBPROGRAM DOCUMENTATION BLOCK 442 ! 443 ! SUBPROGRAM: GRANGE(N,LD,D,DMIN,DMAX) 444 ! PRGMMR: YUEJIAN ZHU ORG:NP23 DATE: 97-03-17 445 ! 446 ! ABSTRACT: THIS SUBROUTINE WILL ALCULATE THE MAXIMUM AND 447 ! MINIMUM OF A ARRAY 448 ! 449 ! PROGRAM HISTORY LOG: 450 ! 97-03-17 YUEJIAN ZHU (WD20YZ) 451 ! 452 ! USAGE: 453 ! 454 ! INPUT ARGUMENTS: 455 ! N -- INTEGER 456 ! LD(N) -- LOGICAL OF DIMENSION N 457 ! D(N) -- REAL ARRAY OF DIMENSION N 458 ! 459 ! OUTPUT ARGUMENTS: 460 ! DMIN -- REAL NUMBER ( MINIMUM ) 461 ! DMAX -- REAL NUMBER ( MAXIMUM ) 462 ! 463 ! 464 ! ATTRIBUTES: 465 ! LANGUAGE: FORTRAN 466 ! 467 !$$$ 468 logical(1) ld(n) 469 real d(n) 470 real dmin,dmax 471 integer i,n 472 dmin=1.e30 473 dmax=-1.e30 474 do i=1,n 475 if(ld(i)) then 476 dmin=min(dmin,d(i)) 477 dmax=max(dmax,d(i)) 478 endif 479 enddo 480 return 481 end Page 13 Source Listing GRANGE 2013-12-16 19:39 Entry Points gefs_pgrb_enspqpf.f90 ENTRY POINTS Name grange_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References D Dummy 440 R(4) 4 1 0 ARG,INOUT 476,477 DMAX Dummy 440 R(4) 4 scalar ARG,INOUT 473,477 DMIN Dummy 440 R(4) 4 scalar ARG,INOUT 472,476 GRANGE Subr 440 I Local 471 I(4) 4 scalar 474,475,476,477 LD Dummy 440 L(1) 1 1 0 ARG,INOUT 475 MAX Func 477 scalar 477 MIN Func 476 scalar 476 N Dummy 440 I(4) 4 scalar ARG,INOUT 468,469,474 Page 14 Source Listing GRANGE 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 482 483 Page 15 Source Listing GRANGE 2013-12-16 19:39 Subprograms/Common Blocks gefs_pgrb_enspqpf.f90 SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References GRANGE Subr 440 PQPF Prog 1 PRINTINFR Subr 421 COMPILER OPTIONS BEING USED -align nocommons -align nodcommons -align noqcommons -align records -align nosequence -align norec1byte -align norec2byte -align norec4byte -align norec8byte -align norec16byte -altparam -assume accuracy_sensitive -assume nobscc -assume nobuffered_io -assume nobyterecl -assume nocc_omp -assume nocstring -assume nodummy_aliases -assume nofpe_summary -assume noieee_fpe_flags -assume nominus0 -assume noold_boz -assume old_unit_star -assume old_ldout_format -assume noold_logical_ldio -assume old_maxminloc -assume old_xor -assume protect_constants -assume noprotect_parens -assume split_common -assume source_include -assume nostd_intent_in -assume nostd_mod_proc_name -assume norealloc_lhs -assume underscore -assume no2underscores no -auto -auto_scalar no -bintext -ccdefault default -check noargs -check noarg_temp_created -check nobounds -check noformat -check nooutput_conversion -check nooverflow -check nopointers -check power -check noshape -check nounderflow -check nouninitialized -coarray-num-procs 0 no -coarray-config-file -convert native -cross_reference -D __INTEL_COMPILER=1210 -D __unix__ -D __unix -D __linux__ -D __linux -D __gnu_linux__ -D unix -D linux -D __ELF__ -D __x86_64 -D __x86_64__ -D _MT -D __INTEL_COMPILER_BUILD_DATE=20120612 -D __i686 -D __i686__ -D __pentiumpro -D __pentiumpro__ -D __pentium4 -D __pentium4__ -D __tune_pentium4__ -D __SSE2__ -D __SSE__ -D __MMX__ -double_size 64 no -d_lines no -Qdyncom -error_limit 30 no -f66 no -f77rtl no -fast -fpscomp nofilesfromcmd -fpscomp nogeneral -fpscomp noioformat -fpscomp noldio_spacing -fpscomp nologicals Page 16 Source Listing GRANGE 2013-12-16 19:39 gefs_pgrb_enspqpf.f90 no -fpconstant -fpe3 -fprm nearest no -ftz -fp_model noprecise -fp_model fast -fp_model nostrict -fp_model nosource -fp_model nodouble -fp_model noextended -fp_model novery_fast -fp_model noexcept -fp_model nono_except -heap_arrays 0 no -threadprivate_compat -free -g0 -iface nomixed_str_len_arg -iface nono_mixed_str_len_arg no -intconstant -integer_size 32 no -mixed_str_len_arg no -module -names lowercase no -noinclude -O3 no -pad_source -real_size 32 no -recursive -reentrancy none no -sharable_localsaves -vec=simd -show noinclude -show map -show options no -syntax_only no -threadcom no -U no -vms -w noall -w nonone -w alignments -w noargument_checking -w nodeclarations -w general -w noignore_bounds -w noignore_loc -w nointerfaces -w notruncated_source -w uncalled -w uninitialized -w nounused -w usage -includepath : /gpfs/tp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/,.f,./.f,/usrx/local/intel/composerxe/mkl/include/.f, /usrx/local/intel/composerxe/tbb/include/.f,/gpfs/tp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/intel64/.f, /gpfs/tp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/.f,/usr/local/include/.f,/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/.f, /usr/include/.f,/usr/include/.f -list filename : gefs_pgrb_enspqpf.lst -o filename : none COMPILER: Intel(R) Fortran 12.1-2100