Page 1 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f 1 SUBROUTINE GRIBIT(IFLD,ILVL,GRID,IMOUT,JMOUT) 2 C$$$ SUBPROGRAM DOCUMENTATION BLOCK 3 C . . . 4 C SUBPROGRAM: GRIBIT POST FIELDS IN GRIB1 5 C PRGRMMR: TREADON ORG: W/NP2 DATE: 93-06-18 6 C 7 C ABSTRACT: 8 C THIS ROUTINE POSTS THE DATA IN THE PASSED ARRAY GRID 9 C TO THE OUTPUT FILE IN GRIB1 FORMAT. 10 C 11 C PROGRAM HISTORY LOG: 12 C 93-06-18 RUSS TREADON 13 C 93-11-23 RUSS TREADON - REMOVED CODE GENERATING GRIB INDEX FILE. 14 C 98-07-17 MIKE BALDWIN - REMOVED LABL84, NOW USING ID 15 C 16 C USAGE: CALL GRIBIT(IFLD,ILVL,GRID,IMOUT,JMOUT) 17 C INPUT ARGUMENT LIST: 18 C IFLD - FIELD ID TAG. 19 C ILVL - INTEGER TAG FOR LEVEL OF FIELD. 20 C GRID - FIELD TO BE POSTED IN GRIB. 21 C IMOUT - FIRST DIMENSION OF OUTPUT GRID. 22 C JMOUT - SECOND DIMENSION OF OUTPUT GRID. 23 C 24 C OUTPUT ARGUMENT LIST: 25 C 26 C OUTPUT FILES: 27 C STDOUT - RUN TIME STANDARD OUT. 28 C LUNOUT+1 - UNIT TO RECEIVE GRIB1 DATA. 29 C 30 C SUBPROGRAMS CALLED: 31 C UTILITIES: 32 C get_environment_variable GET VALUE OF ENVIRONMENT VARIABLE. 33 C MINMAX - DETERMINES MIN/MAX VALUES IN AN ARRAY. 34 C WRYTE - WRITE DATA OUT BY BYTES. 35 C GET_BITS - COMPUTE NUMBER OF BITS 36 C VARIOUS W3LIB ROUTINES 37 C LIBRARY: 38 C COMMON - CTLBLK 39 C MAPOT 40 C RQSTFLD 41 C IOUNIT 42 C OUTGRD 43 C GRBDAT 44 C AVBLFLDS 45 C 46 C ATTRIBUTES: 47 C LANGUAGE: FORTRAN 48 C MACHINE : CRAY C-90 49 C$$$ 50 C 51 C 52 C 53 C INCLUDE GRID DIMENSIONS. SET/DERIVE PARAMETERS. 54 C 55 INCLUDE "parmeta" 73 INCLUDE "parmout" 77 PARAMETER (LP1=LM+1,D01=0.01,D50=0.5E0) Page 2 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f 78 PARAMETER (IMT=2*IM-1,JMT=JM,IMJMT=IMT*JMT) 79 C 80 C GRIB1 PARAMETERS. 81 C MNBIT = MINIMUM NUMBER OF BITS TO USE IN PACKING. 82 C MXBIT = MAXIMUM NUMBER OF BITS TO USE IN PACKING. 83 C LENPDS = LENGTH OF GRIB1 PDS. 84 C LENGDS = LENGTH OF GRIB1 GDS. 85 C 86 PARAMETER (MNBIT=0,MXBIT=16,LENPDS=28,LENGDS=32) 87 C 88 C DECLARE VARIABLES. 89 C 90 LOGICAL RUN,FIRST,RESRT,SIGMA,OLDRD,STRD 91 LOGICAL NORTH 92 CHARACTER*1 KBUF(30+LENPDS+LENGDS+IMOUT*JMOUT*(MXBIT+2)/8) 93 CHARACTER*1 IFLAG 94 CHARACTER*4 RESTHR,BLANK 95 CHARACTER*6 CRUN,PROJ 96 CHARACTER*7 DESCR2 97 CHARACTER*28 PDS 98 c CHARACTER*50 ENVAR 99 character*128 ENVAR 100 CHARACTER*256 FNAME,OPATH 101 CHARACTER*90 CMD 102 INTEGER IBDSFL(9) 103 INTEGER IGRD(IMOUT,JMOUT),IGDS(18),IBMASK(IMOUT,JMOUT) 104 REAL GRID(IMOUT,JMOUT),GRIDOT(IMOUT,JMOUT) 105 C 106 C THE BELOW VARIABLE ARE ONLY NEEDED FOR THE CALL TO W3FI63. 107 REAL DATAFLD(IMOUT,JMOUT) 108 INTEGER KGDS(20),KPTR(16) 109 LOGICAL KBMS(IMOUT,JMOUT) 110 C 111 C INCLUDE COMMON BLOCKS. 112 INCLUDE "CTLBLK.comm" 127 INCLUDE "MAPOT.comm" 140 INCLUDE "RQSTFLD.comm" 153 INCLUDE "IOUNIT.comm" 161 INCLUDE "OUTGRD.comm" 166 INCLUDE "BITMAP.comm" 172 INCLUDE "GRBDAT.comm" 173 C 174 C SET DEFAULT GRIB1 PARAMETERS. 175 C PARAMETERS MNBIT, MXBIT, IBX, AND NBIT ARE USED 176 C IN THE CALL TO GET_BITS. 177 C IBX = DESIRED BINARY PRECISION. 178 C NBIT = NUMBER OF BITS TO USE IN PACKING DATA. 179 C 185 DATA IBX,NBIT / 0, 12 / 186 DATA BLANK /' '/ 187 SAVE OPATH 188 C 189 C***************************************************************************** 190 C START GRIBIT HERE. 191 C 192 C SET NUMBER OF OUTPUT GRID POINTS. 193 IJOUT = IMOUT*JMOUT Page 3 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f 194 C 195 C PREPARE GRIB PDS 196 C 197 C SET ARRAY ID VALUES TO GENERATE GRIB1 PDS. 198 C ID(1) = NUMBER OF BYTES IN PRODUCT DEFINITION SECTION (PDS) 199 C ID(2) = PARAMETER TABLE VERSION NUMBER 200 C ID(3) = IDENTIFICATION OF ORIGINATING CENTER 201 C ID(4) = MODEL IDENTIFICATION (ALLOCATED BY ORIGINATING CENTER) 202 C ID(5) = GRID IDENTIFICATION 203 C ID(6) = 0 IF NO GDS SECTION, 1 IF GDS SECTION IS INCLUDED 204 C ID(7) = 0 IF NO BMS SECTION, 1 IF BMS SECTION IS INCLUDED 205 C ID(8) = INDICATOR OF PARAMETER AND UNITS (TABLE 2) 206 C ID(9) = INDICATOR OF TYPE OF LEVEL (TABLE 3) 207 C ID(10) = VALUE 1 OF LEVEL (=0 FOR 1-100,102,103,105,107, 208 C 109,111,113,115,117,119,125,160,200,201 LEVEL IS IN ID WORD 11) 209 C ID(11) = VALUE 2 OF LEVEL 210 C ID(12) = YEAR OF CENTURY 211 C ID(13) = MONTH OF YEAR 212 C ID(14) = DAY OF MONTH 213 C ID(15) = HOUR OF DAY 214 C ID(16) = MINUTE OF HOUR (IN MOST CASES SET TO 0) 215 C ID(17) = FCST TIME UNIT 216 C ID(18) = P1 PERIOD OF TIME 217 C ID(19) = P2 PERIOD OF TIME 218 C ID(20) = TIME RANGE INDICATOR 219 C ID(21) = NUMBER INCLUDED IN AVERAGE 220 C ID(22) = NUMBER MISSING FROM AVERAGES 221 C ID(23) = CENTURY (20, CHANGE TO 21 ON JAN. 1, 2001) 222 C ID(24) = RESERVED - SET TO 0 223 C ID(25) = SCALING POWER OF 10 224 C 225 IF (IOUTYP.EQ.3.OR.IOUTYP.EQ.5) THEN 226 C 227 C PREPARE DATE PART OF GRIB PDS RECORD. 228 IFHR = NTSD/TSPH+D50 229 ICENT = (IDAT(3)-1)/100 + 1 230 IYY = IDAT(3) - (ICENT-1)*100 231 IMM = IDAT(1) 232 IDD = IDAT(2) 233 AYEAR0 = IYY 234 AMNTH0 = IMM 235 ADAY0 = IDD 236 AGMT0 = IHRST 237 ID(01) = 28 238 ID(02) = 131 239 ID(03) = 7 240 ID(12) = IYY 241 ID(13) = IMM 242 ID(14) = IDD 243 ID(15) = IHRST 244 ID(16) = 0 245 ID(17) = 1 246 C 247 C ASSUMING ID(18-20), (P1, P2, TIME RANGE INDICATOR) 248 C ARE PASSED IN CORRECTLY IF NOT AN INSTANTANEOUS FIELD 249 C 250 IF (ID(20).EQ.0) THEN Page 4 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f 251 ID(18) = IFHR 252 ID(19) = 0 253 ENDIF 254 255 ID(21) = 0 256 ID(22) = 0 257 ID(23) = ICENT 258 ID(24) = 15 ! SUBCENTER ????? 259 C 260 C 261 C SET OUTPUT GRID TYPE. WE ASSUME KGYTPE HOLDS THE GRIB 262 C ID FOR THE OUTPUT GRID. 263 C 264 KGTYP = KGTYPE 265 C 266 C SET GRID TYPE ID(5) 267 C GENERATING PROGRAM ID(4) 268 C 269 IJOUT = IMOUT*JMOUT 270 ID(4) = IMDLTY 271 ID(5) = KGTYP 272 C 273 C ID(6) =0 IF NO GDS SECTION, =1 IF GDS INCLUDED, 274 C ALWAYS INCLUDE GDS 275 C 276 ID(6) = 1 277 C 278 C SET DATA TYPE ID(8) AND SURFACE ID(9). 279 C 280 C DON'T SET PARAMETER IF PRECIP TYPE, SINCE THERE ARE 281 C 4 PARAMETER NUMBERS FOR THE SAME IFLD 282 C 283 IF (ID(8).LT.140.OR.ID(8).GT.143) ID(8) = IQ(IDENT(IFLD)) 284 IF (ID(9).EQ.0) ID(9) = IS(IDENT(IFLD)) 285 C 286 C SET VALUE OF LEVEL IF ON PRESSURE OR ETA SURFACE. 287 C OTHERWISE, WE ASSUME ID(10) AND (11) ARE SET 288 C APPROPRIATELY PRIOR TO ENTERING GRIBIT. 289 C 290 IF (ID(9).EQ.100) THEN 291 ISVALUE = NINT(SPL(ILVL)*D01) 292 ID(10) = 0 293 ID(11) = ISVALUE 294 ELSEIF (ID(9).EQ.119) THEN 295 ISVALUE = NINT(AETA(ILVL)*10000.) 296 C 297 C TKE IS ON THE ETA INTERFACE AT THE BOTTOM OF THE LAYER ILVL 298 C 299 IF (ID(8).EQ.158) ISVALUE = NINT(ETA(ILVL+1)*10000.) 300 ID(10) = 0 301 ID(11) = ISVALUE 302 ELSEIF (ID(9) .EQ. 109) THEN 303 ISVALUE = ILVL 304 ID(10) = 0 305 ID(11) = ISVALUE 306 ENDIF 307 C Page 5 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f 308 C END OF GRIB PDS LABEL PREPARATION. 309 C 310 ENDIF 311 312 C 313 C SET DECIMAL SCALING (IDECI) FROM LIST IN INCLUDE FILE 314 C RQSTFLD. A CALL TO GET_BITS WILL COMPUTE THE NUMBER OF 315 C BITS NECESSARY TO PACK THE DATA BASED ON THE RANGE OF 316 C THE FIELD. THE FIELD IS SCALED TO THIS PRECISION AND 317 C RETURNED FOR PACKING BY THE GRIB PACKER. 318 C 319 DO JJ = 1,JMOUT 320 DO II = 1,IMOUT 321 IBMASK(II,JJ)=IBMAP(II,JJ) 322 ENDDO 323 ENDDO 324 325 326 IBM = 0 327 IBITM = 0 328 SGDG = DEC(IFLD) 329 C 330 GRIDOT = GRID 331 332 C#!$omp parallel do 333 C DO J=1,JMOUT 334 C DO I=1,IMOUT 335 C GRIDOT(I,J)=GRID(I,J) 336 C ENDDO 337 C ENDDO 338 C 339 340 DO J=1,JMOUT 341 DO I=1,IMOUT 342 IBITM=IBITM+IBMASK(I,J) 343 ENDDO 344 ENDDO 345 C 346 C ID(7) =0 IF NO BMS SECTION, =1 IF BMS INCLUDED 347 C 348 IF (IBITM.EQ.IJOUT) THEN 349 ID(7) = 0 350 IBM = 0 351 ELSE 352 ID(7) = 1 353 IBM = 1 354 ENDIF 355 CALL GET_BITS(IBM,SGDG,IJOUT,IBMASK,GRID, 356 & IDECI,GRIDOT,GMIN,GMAX,NBIT) 357 C 358 C ID(25) = SCALING POWER OF 10 359 C 360 ID(25) = IDECI 361 C 362 C GENERATE COMPLETE GRIB1 MESSAGE USING W3FI72. 363 C ITYPE = 0 SPECIFIES REAL DATA TO BE PACKED. 364 C IGRD = DUMMY ARRAY FOR INTEGER DATA. Page 6 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f 365 C IBITL = NBIT TELLS W3FI72 TO PACK DATA USING NBIT BITS. 366 C IPFLAG = 0 IS PDS INFORMATION IN USER ARRAY ID. 367 C 1 IS PDS (GENERATED ABOVE BY W3FP12). 368 C ID = (DUMMY) ARRAY FOR USER DEFINED PDS. 369 C IGFLAG = 0 TELLS W3FI72 TO MAKE GDS USING IGRID. 370 C 1 IS GDS GENERATED BY USER IN ARRAY IGDS 371 C IGRID = GRIB1 GRID TYPE (TABLE B OF ON388). 372 C IGDS = ARRAY FOR USER DEFINED GDS. 373 C ICOMP = 0 FOR EARTH ORIENTED WINDS, 374 C 1 FOR GRID ORIENTED WINDS. 375 C IBFLAG = 0 TELLS W3FI72 TO MAKE BIT MAP FROM USER 376 C SUPPLIED DATA. 377 C IBMASK = ARRAY CONTAINING USER DEFINED BIT MAP. 378 C IBLEN = LENGTH OF ARRAY IBMASK. 379 C IBDSFL = ARRAY CONTAINING TABLE 11 (ON388) FLAG INFORMATION. 380 C NPTS = LENGTH OF ARRAY GRID OR IGRD. MUST AGREE WITH IBLEN. 381 C 382 C INTIALIZE VARIABLES. 383 ITYPE = 0 384 385 IGRD=0 386 387 C!$omp parallel do 388 C DO J=1,JMOUT 389 C DO I=1,IMOUT 390 C IGRD(I,J)=0 391 C ENDDO 392 c ENDDO 393 C 394 IBITL = MIN(NBIT,MXBIT) 395 C 396 IPFLAG = 0 397 C 398 IGFLAG = 0 399 IGRID = ID(5) 400 IF (IGRID.EQ.26) IGRID=6 401 DO 20 K = 1,18 402 IGDS(K) = 0 403 20 CONTINUE 404 ICOMP = 1 405 IF (INDEX(PROJ,'LOLA').NE.0) ICOMP = 0 406 IBFLAG = 0 407 IBLEN = IJOUT 408 DO 30 K = 1,9 409 IBDSFL(K) = 0 410 30 CONTINUE 411 C 412 write(*,*) 'gribit >> w3fi72' 413 414 CALL W3FI72(ITYPE,GRIDOT,IGRD,IBITL, 415 X IPFLAG,ID,PDS, 416 X IGFLAG,IGRID,IGDS,ICOMP, 417 X IBFLAG,IBMASK,IBLEN, 418 X IBDSFL, 419 X NPTS,KBUF,ITOT,IER) 420 write(*,*) 'gribit << w3fi72' 421 C Page 7 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f 422 C EXPLICITLY SET BYTE 12 OF KBUF (BYTE 4 OF THE PDS) 423 C TO 2. THIS WILL REFER ALL QUANTITIES TO PARAMETER 424 C TABLE VERSION 2 OF WHICH TABLE VERSION 1 IS A SUBSET. 425 C THIS IS NEEDED BECAUSE THE W3 ROUTINES HARDWIRE THIS 426 C VALUE TO 1 YET SOME OF THE OUTPUT VARIABLES ARE ONLY 427 C DEFINED IN VERSION 2 OF THE PARAMETER TABLE. 428 C 429 Cdule KBUF(12)=CHAR(2) 430 C 431 IF (IER.NE.0) THEN 432 WRITE(STDOUT,1040) IER,FIELD(IFLD) 433 1040 FORMAT('GRIBIT: ***W3FI72 ERROR IER=',I1, 434 X ' FOR ',A20) 435 WRITE(STDOUT,*)'GRIBIT: DID NOT POST THIS FIELD' 436 RETURN 437 ENDIF 438 C 439 C ON FIRST ENTRY MAKE OUTPUT DIRECTORY. SET SWITCH (RITEHD) 440 C TO FALSE FOR SUBSEQUENT ENTRIES. 441 IF ( ((IOUTYP.EQ.3).AND.RITEHD) .OR. 442 X ((IOUTYP.EQ.5).AND.RITEHD) .OR. 443 X ((IOUTYP.EQ.4).AND.RITE2 ) ) THEN 444 C 445 C PUT FORECAST HOUR INTO DIR PREFIX FOR GRIB FILE. 446 IHR = NTSD/TSPH + 0.5 447 C 448 C GET FULL PATH FOR OUTPUT FILE FROM ENVIRONMENT VARIABLE 449 C COMSP WHICH IS SET IN THE SCRIPT RUNNING THE MODEL. 450 C 451 C CONSTRUCT FULL PATH-FILENAME FOR OUTPUT FILE 452 ENVAR = ' ' 453 RESTHR = ' ' 454 CALL get_environment_variable('COMSP',ENVAR) 455 CALL get_environment_variable('tmmark',RESTHR) 456 KDAT = INDEX(DATSET,' ') -1 457 IF (KDAT.LE.0) KDAT = LEN(DATSET) 458 KENV = INDEX(ENVAR,' ') -1 459 IF (KENV.LE.0) KENV = LEN(ENVAR) 460 KTHR = INDEX(RESTHR,' ') -1 461 IF (KTHR.LE.0) KTHR = LEN(RESTHR) 462 IF (IOUTYP.EQ.5) THEN 463 WRITE(DESCR2,1010) IHR 464 1010 FORMAT('f',I2.2) 465 IF (ENVAR(1:4).EQ.BLANK.AND.RESTHR(1:4).EQ.BLANK) THEN 466 OPATH = DATSET(1:KDAT) // '/' // DESCR2(1:3) // '/' 467 ELSEIF (ENVAR(1:4).NE.BLANK.AND.RESTHR(1:4).EQ.BLANK) THEN 468 OPATH = ENVAR(1:KENV) // DATSET(1:KDAT) // '/' 469 & // DESCR2(1:3) // '/' 470 ELSEIF (ENVAR(1:4).EQ.BLANK.AND.RESTHR(1:4).NE.BLANK) THEN 471 OPATH = DATSET(1:KDAT) // '/' // DESCR2(1:3) // '.' // 472 & RESTHR(1:KTHR) // '/' 473 ELSE 474 OPATH = ENVAR(1:KENV) // DATSET(1:KDAT) // '/' 475 & // DESCR2(1:3) // '.' // RESTHR(1:KTHR) // '/' 476 ENDIF 477 C 478 WRITE(STDOUT,*)'GRIBIT: DIRECTORY ',OPATH, Page 8 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f 479 X ' CREATED FOR GRIB DATA ' 480 ELSE 481 C 482 C CONSTRUCT FULL PATH-FILENAME FOR OUTPUT FILE 483 IF (ENVAR(1:4).EQ.BLANK.AND.RESTHR(1:4).EQ.BLANK) THEN 484 WRITE(DESCR2,1011) IHR 485 1011 FORMAT('.GrbF',I2.2) 486 FNAME = DATSET(1:KDAT) // DESCR2 487 ELSEIF(ENVAR(1:4).EQ.BLANK.AND.RESTHR(1:4).NE.BLANK) THEN 488 WRITE(DESCR2,1012) IHR 489 FNAME = DATSET(1:KDAT) // DESCR2(1:2) //'.'// RESTHR 490 ELSE 491 WRITE(DESCR2,1012) IHR 492 1012 FORMAT(I2.2) 493 FNAME = ENVAR(1:KENV) // DATSET(1:KDAT) // DESCR2(1:2) 494 & //'.'// RESTHR 495 ENDIF 496 C 497 C ASSIGN AND OPEN UNIT FOR GRIB DATA FILE. 498 CLOSE(LUNOUT+1) 499 C CALL ASNUNIT(LUNOUT+1,'-s unblocked',IER) 500 print *, "FNAME=|",FNAME,"|" 501 CALL BAOPEN(LUNOUT+1,FNAME,IER) 502 IF (IER.NE.0) WRITE(STDOUT,*) 503 X 'GRIBIT: BAOPEN ERROR FOR GRIB DATA ', 504 X 'FILE. IER=',IER 505 WRITE(STDOUT,*)'GRIBIT: OPENED ',LUNOUT+1, 506 X ' FOR GRIB DATA ',FNAME 507 ENDIF 508 C 509 C SET OPEN-UNIT FLAGS TO FALSE. 510 RITEHD = .FALSE. 511 RITE2 = .FALSE. 512 ENDIF 513 C 514 C WRITE GRIB1 MESSAGE TO OUTPUT FILE. 515 CALL WRYTE(LUNOUT+1,ITOT,KBUF) 516 C 517 C WRITE DIAGNOSTIC MESSAGE. 518 C ID(8) = INDICATOR OF PARAMETER AND UNITS (TABLE 2) 519 C ID(9) = INDICATOR OF TYPE OF LEVEL (TABLE 3) 520 C ID(10) = VALUE 1 OF LEVEL (0 FOR 1-100,102,103,105,107 521 C 111,160 LEVEL IS IN ID WORD 11) 522 C ID(11) = VALUE 2 OF LEVEL 523 WRITE(STDOUT,1050) ID(8),FIELD(IFLD),ID(9),ID(10),ID(11) 524 1050 FORMAT('GRIBIT: ',I3,1X,A20,1X,I3,1X,I5,1X,I5) 525 C 526 C END OF ROUTINE. 527 print*,'End of GRIBIT' 528 C 529 RETURN 530 END Page 9 Source Listing GRIBIT 2025-03-12 18:23 Entry Points GRIBIT.f ENTRY POINTS Name gribit_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 1010 Label 464 463 1011 Label 485 484 1012 Label 492 488,491 1040 Label 433 432 1050 Label 524 523 20 Label 403 401 30 Label 410 408 ADAY0 Local 235 R(4) 4 scalar 235 AGMT0 Local 236 R(4) 4 scalar 236 AMNTH0 Local 234 R(4) 4 scalar 234 AYEAR0 Local 233 R(4) 4 scalar 233 BAOPEN Subr 501 501 BITMAP Common 168 366876 SAVE BLANK Local 94 CHAR 4 scalar 186,465,467,470,483,487 CMD Local 101 CHAR 90 scalar CRUN Local 95 CHAR 6 scalar CTLBLK Common 114 96 SAVE D01 Param 77 R(4) 4 scalar 291 D50 Param 77 R(4) 4 scalar 228 DATAFLD Local 107 R(4) 4 2 0 DESCR2 Local 96 CHAR 7 scalar 463,466,469,471,475,484,486,488,48 9,491,493 ENVAR Local 99 CHAR 128 scalar 452,454,458,459,465,467,468,470,47 4,483,487,493 FNAME Local 100 CHAR 256 scalar 486,489,493,500,501,506 GET_BITS Subr 355 355 GET_ENVIRONMENT_VARIABLE Intrin 454 454,455 GMAX Local 356 R(4) 4 scalar 356 GMIN Local 356 R(4) 4 scalar 356 GRBDAT Common 181 8 SAVE GRIBIT Subr 1 GRID Dummy 1 R(4) 4 2 0 ARG,INOUT 330,355 GRIDOT Local 104 R(4) 4 2 0 330,356,414 I Local 341 I(4) 4 scalar 341,342 IBDSFL Local 102 I(4) 4 1 9 409,418 IBFLAG Local 406 I(4) 4 scalar 406,417 IBITL Local 394 I(4) 4 scalar 394,414 IBITM Local 327 I(4) 4 scalar 327,342,348 IBLEN Local 407 I(4) 4 scalar 407,417 IBM Local 326 I(4) 4 scalar 326,350,353,355 IBMASK Local 103 I(4) 4 2 0 321,342,355,417 IBX Local 185 I(4) 4 scalar 185 ICENT Local 229 I(4) 4 scalar 229,230,257 ICOMP Local 404 I(4) 4 scalar 404,405,416 Page 10 Source Listing GRIBIT 2025-03-12 18:23 Symbol Table GRIBIT.f Name Object Declared Type Bytes Dimen Elements Attributes References IDD Local 232 I(4) 4 scalar 232,235,242 IDECI Local 356 I(4) 4 scalar 356,360 IDIM1 Param 69 I(4) 4 scalar IDIM2 Param 69 I(4) 4 scalar IER Local 419 I(4) 4 scalar 419,431,432,501,502,504 IFHR Local 228 I(4) 4 scalar 228,251 IFLAG Local 93 CHAR 1 scalar IFLD Dummy 1 I(4) 4 scalar ARG,INOUT 283,284,328,432,523 IGDS Local 103 I(4) 4 1 18 402,416 IGFLAG Local 398 I(4) 4 scalar 398,416 IGRD Local 103 I(4) 4 2 0 385,414 IGRID Local 399 I(4) 4 scalar 399,400,416 IGSTL Param 64 I(4) 4 scalar 69 IGSTR Param 64 I(4) 4 scalar 69 IHR Local 446 I(4) 4 scalar 446,463,484,488,491 II Local 320 I(4) 4 scalar 320,321 IJOUT Local 193 I(4) 4 scalar 193,269,348,355,407 ILVL Dummy 1 I(4) 4 scalar ARG,INOUT 291,295,299,303 IM Param 58 I(4) 4 scalar 66,69,76,78 IMJMT Param 78 I(4) 4 scalar IMM Local 231 I(4) 4 scalar 231,234,241 IMOUT Dummy 1 I(4) 4 scalar ARG,INOUT 92,103,104,107,109,193,269,320,341 IMT Param 78 I(4) 4 scalar 78 IMX Param 76 I(4) 4 scalar 169 INDEX Func 405 scalar 405,456,458,460 INPES Param 61 I(4) 4 scalar 66,69 IOUNIT Common 157 20 SAVE IPFLAG Local 396 I(4) 4 scalar 396,415 ISVALUE Local 291 I(4) 4 scalar 291,293,295,299,301,303,305 ITAIL Param 66 I(4) 4 scalar ITOT Local 419 I(4) 4 scalar 419,515 ITYPE Local 383 I(4) 4 scalar 383,414 IYY Local 230 I(4) 4 scalar 230,233,240 J Local 340 I(4) 4 scalar 340,342 JDIM1 Param 70 I(4) 4 scalar JDIM2 Param 70 I(4) 4 scalar JGSTL Param 65 I(4) 4 scalar 70 JGSTR Param 65 I(4) 4 scalar 70 JJ Local 319 I(4) 4 scalar 319,321 JM Param 58 I(4) 4 scalar 67,70,76,78 JMOUT Dummy 1 I(4) 4 scalar ARG,INOUT 92,103,104,107,109,193,269,319,340 JMT Param 78 I(4) 4 scalar 78 JMX Param 76 I(4) 4 scalar 169 JNPES Param 61 I(4) 4 scalar 67,70 JTAIL Param 67 I(4) 4 scalar K Local 401 I(4) 4 scalar 401,402,408,409 KBMS Local 109 L(4) 4 2 0 KBUF Local 92 CHAR 1 1 0 419,515 KDAT Local 456 I(4) 4 scalar 456,457,466,468,471,474,486,489,49 3 KENV Local 458 I(4) 4 scalar 458,459,468,474,493 KGDS Local 108 I(4) 4 1 20 KGTYP Local 264 I(4) 4 scalar 264,271 KPTR Local 108 I(4) 4 1 16 KTHR Local 460 I(4) 4 scalar 460,461,472,475 Page 11 Source Listing GRIBIT 2025-03-12 18:23 Symbol Table GRIBIT.f Name Object Declared Type Bytes Dimen Elements Attributes References LEN Func 457 scalar 457,459,461 LENGDS Param 86 I(4) 4 scalar 92 LENPDS Param 86 I(4) 4 scalar 92 LM Param 58 I(4) 4 scalar 76,77,135 LP1 Param 77 I(4) 4 scalar 135 LSM Param 58 I(4) 4 scalar 134 MAPOT Common 129 1448 SAVE MIN Func 394 scalar 394 MNBIT Param 86 I(4) 4 scalar MXBIT Param 86 I(4) 4 scalar 92,394 MXFLD Param 76 I(4) 4 scalar 142,148,149,150,151 MXLVL Param 76 I(4) 4 scalar 150 NBIT Local 185 I(4) 4 scalar 185,356,394 NINT Func 291 scalar 291,295,299 NPTS Local 419 I(4) 4 scalar 419 OLDRD Local 90 L(4) 4 scalar OPATH Local 100 CHAR 256 scalar SAVE 466,468,471,474,478 OUTGRD Common 163 50 SAVE PARALLEL Common 121 8240 PDS Local 97 CHAR 28 scalar 415 RESRT Local 90 L(4) 4 scalar RESTHR Local 94 CHAR 4 scalar 453,455,460,461,465,467,470,472,47 5,483,487,489,494 RQSTFLD Common 147 64130 SGDG Local 328 R(4) 4 scalar 328,355 STRD Local 90 L(4) 4 scalar W3FI72 Subr 414 414 WRYTE Subr 515 515 TYPE COMPONENTS/COMMON VARIABLES Name Type Bytes Offset Dimen Elements Attributes References AETA R(4) 4 808 1 45 COM 295 ALATVT R(4) 4 0 scalar COM ALONVT R(4) 4 4 scalar COM ALSL R(4) 4 472 1 39 COM AVBL CHAR 20 59130 1 250 COM CMLD R(4) 4 292 scalar COM CPHI0 R(4) 4 1420 scalar COM DATSET CHAR 6 54124 scalar COM 456,457,466,468,471,474,486,489,49 3 DEC R(4) 4 1016 1 250 COM 328 DETA R(4) 4 628 1 45 COM DISLP R(4) 4 308 scalar COM DLMD R(4) 4 284 scalar COM DP30 R(4) 4 296 scalar COM DPHD R(4) 4 288 scalar COM DT R(4) 4 48 scalar COM ERLAM0 R(4) 4 1416 scalar COM ETA R(4) 4 988 1 46 COM 299 FIELD CHAR 20 54130 1 250 COM 432,523 FIRST L(4) 4 24 scalar COM GI2 R(4) 4 36 scalar COM Page 12 Source Listing GRIBIT 2025-03-12 18:23 Symbol Table GRIBIT.f Name Type Bytes Offset Dimen Elements Attributes References IBMAP I(4) 4 0 2 91719 COM 321 ICNT I(4) 4 40 1 1024 COM ID I(4) 4 54016 1 25 COM 237,238,239,240,241,242,243,244,24 5,250,251,252,255,256,257,258,270, 271,276,283,284,290,292,293,294,29 9,300,301,302,304,305,349,352,360, 399,415,523 IDAT I(4) 4 8 1 3 COM 229,230,231,232 IDENT I(4) 4 52016 1 250 COM 283,284 IDN I(4) 4 36 scalar COM IDSP I(4) 4 4136 1 1024 COM IDTAD I(4) 4 68 scalar COM IFILV I(4) 4 53016 1 250 COM IGET I(4) 4 16 1 250 COM IGOUT I(4) 4 20 scalar COM IHRST I(4) 4 20 scalar COM 236,243 IMDLTY I(4) 4 28 scalar COM 270 IOUT I(4) 4 44 scalar COM IOUTYP I(4) 4 4 scalar COM 225,441,442,443,462 IQ I(4) 4 2016 1 250 COM 283 IS I(4) 4 3016 1 250 COM 284 ISHDE I(4) 4 12 1 61 COM ISMFUL I(4) 4 5016 1 250 COM ISMOUT I(4) 4 6016 1 250 COM ISMSTG I(4) 4 4016 1 250 COM IUNIT I(4) 4 1440 scalar COM IUP I(4) 4 32 scalar COM IXM I(4) 4 4 scalar COM IYM I(4) 4 8 scalar COM JEND I(4) 4 12 scalar COM JEND_2U I(4) 4 8236 scalar COM JEND_M I(4) 4 20 scalar COM JEND_M2 I(4) 4 28 scalar COM JGOUT I(4) 4 24 scalar COM JSTA I(4) 4 8 scalar COM JSTA_2L I(4) 4 8232 scalar COM JSTA_M I(4) 4 16 scalar COM JSTA_M2 I(4) 4 24 scalar COM KGTYPE I(4) 4 0 scalar COM 264 KUNIT I(4) 4 1428 scalar COM LCNTRL I(4) 4 4 scalar COM LENGI I(4) 4 4 scalar COM LIST I(4) 4 40 scalar COM LSKIP I(4) 4 0 scalar COM LSL I(4) 4 0 scalar COM LUNCO I(4) 4 8 scalar COM LUNIT I(4) 4 1432 scalar COM LUNLL I(4) 4 12 scalar COM LUNOUT I(4) 4 16 scalar COM 498,501,505,515 LVLS I(4) 4 7016 2 11250 COM ME I(4) 4 4 scalar COM MUNIT I(4) 4 1436 scalar COM NBC I(4) 4 36 scalar COM NBOCO I(4) 4 72 scalar COM NCP I(4) 4 80 scalar COM Page 13 Source Listing GRIBIT 2025-03-12 18:23 Symbol Table GRIBIT.f Name Type Bytes Offset Dimen Elements Attributes References NDDAMP I(4) 4 60 scalar COM NFCST I(4) 4 32 scalar COM NFLD I(4) 4 12 scalar COM NORTH L(4) 4 40 scalar COM NPHS I(4) 4 84 scalar COM NPREC I(4) 4 64 scalar COM NRADL I(4) 4 92 scalar COM NRADS I(4) 4 88 scalar COM NSHDE I(4) 4 76 scalar COM NTSD I(4) 4 52 scalar COM 228,446 NTSTM I(4) 4 56 scalar COM NUM_PROCS I(4) 4 0 scalar COM NUNIT I(4) 4 1444 scalar COM POLEI R(4) 4 8 scalar COM POLEJ R(4) 4 12 scalar COM PROJ CHAR 6 44 scalar COM 405 PT R(4) 4 260 scalar COM R R(4) 4 256 scalar COM RE R(4) 4 32 scalar COM RESTRT R(4) 4 28 scalar COM RITE2 L(4) 4 54120 scalar COM 443,511 RITEHD L(4) 4 54116 scalar COM 441,442,510 RUN L(4) 4 4 scalar COM SBD R(4) 4 272 scalar COM SIGMA L(4) 4 0 scalar COM SPHI0 R(4) 4 1424 scalar COM SPL R(4) 4 316 1 39 COM 291 STDOUT I(4) 4 0 scalar COM 432,435,478,502,505,523 SVALUE R(4) 4 8 scalar COM TLM0D R(4) 4 276 scalar COM TPH0D R(4) 4 280 scalar COM TSHDE R(4) 4 1172 1 61 COM TSPH R(4) 4 264 scalar COM 228,446 WBD R(4) 4 268 scalar COM X1P R(4) 4 300 scalar COM XMESHL R(4) 4 16 scalar COM Y1P R(4) 4 304 scalar COM Z0SLP R(4) 4 312 scalar COM Page 14 Source Listing GRIBIT 2025-03-12 18:23 Subprograms/Common Blocks GRIBIT.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References BITMAP Common 168 366876 SAVE CTLBLK Common 114 96 SAVE GRBDAT Common 181 8 SAVE GRIBIT Subr 1 IOUNIT Common 157 20 SAVE MAPOT Common 129 1448 SAVE OUTGRD Common 163 50 SAVE PARALLEL Common 121 8240 RQSTFLD Common 147 64130 COMPILER OPTIONS BEING USED -align noall -align nonone -align nocommons -align nodcommons -align noqcommons -align nozcommons -align records -align nosequence -align norec1byte -align norec2byte -align norec4byte -align norec8byte -align norec16byte -align norec32byte -align norec64byte -align noarray8byte -align noarray16byte -align noarray32byte -align noarray64byte -align noarray128byte -align noarray256byte -altparam -assume accuracy_sensitive -assume nobscc -assume nobuffered_io -assume nobuffered_stdout -assume byterecl -assume nocontiguous_assumed_shape -assume nocontiguous_pointer -assume nocc_omp -assume nocstring -assume nodummy_aliases -assume nofpe_summary -assume noieee_fpe_flags -assume nominus0 -assume noold_boz -assume old_complex_align -assume old_unit_star -assume old_inquire_recl -assume old_ldout_format -assume old_ldout_zero -assume noold_logical_assign -assume noold_logical_ldio -assume old_maxminloc -assume old_xor -assume noprotect_allocates -assume protect_constants -assume noprotect_parens -assume split_common -assume source_include -assume nostd_intent_in -assume std_minus0_rounding -assume nostd_mod_proc_name -assume std_value -assume realloc_lhs -assume underscore -assume no2underscores -assume norecursion no -auto -auto_scalar no -bintext -ccdefault default -check noarg_temp_created -check noassume -check nobounds -check nocontiguous -check noformat -check nooutput_conversion -check nooverflow -check nopointers -check noshape -check nostack -check nouninitialized -check noudio_iostat -coarray-num-procs 0 no -coarray-config-file -convert big_endian -cross_reference Page 15 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f -D __INTEL_COMPILER=1910 -D __INTEL_COMPILER_UPDATE=3 -D __unix__ -D __unix -D __linux__ -D __linux -D __gnu_linux__ -D unix -D linux -D __ELF__ -D __x86_64 -D __x86_64__ -D __amd64 -D __amd64__ -D __INTEL_COMPILER_BUILD_DATE=20200925 -D __INTEL_OFFLOAD -D __MMX__ -D __SSE__ -D __SSE_MATH__ -D __SSE2__ -D __SSE2_MATH__ -D __SSE3__ -D __SSSE3__ -D __SSE4_1__ -D __SSE4_2__ -D __POPCNT__ -D __PCLMUL__ -D __AES__ -D __AVX__ -D __F16C__ -D __AVX_I__ -D __RDRND__ -D __FMA__ -D __FP_FAST_FMA -D __FP_FAST_FMAF -D __BMI__ -D __LZCNT__ -D __AVX2__ -D __haswell -D __haswell__ -D __tune_haswell__ -D __core_avx2 -D __core_avx2__ -D __tune_core_avx2__ -D __CRAY_X86_ROME -D __CRAYXT_COMPUTE_LINUX_TARGET -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 -fixed 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 -g2 -iface nomixed_str_len_arg -iface nono_mixed_str_len_arg -init noarrays -init nohuge -init noinfinity -init nominus_huge -init nominus_infinity -init nominus_tiny -init nonan -init nosnan -init notiny -init nozero no -intconstant -integer_size 32 no -mixed_str_len_arg no -module -names lowercase no -noinclude no -o -offload-build=host -openmp-simd -O2 no -pad_source -real_size 32 no -recursive -reentrancy threaded -vec=simd -show nofullpath -show noinclude -show map -show options no -syntax_only no -threadcom no -U no -vms -w noall -w nonone -w alignments -w nodeclarations Page 16 Source Listing GRIBIT 2025-03-12 18:23 GRIBIT.f -w noexternals -w general -w noignore_bounds -w noignore_loc -w nointerfaces -w noshape -w notruncated_source -w uncalled -w uninitialized -w nounused -w usage no -wrap-margins -includepath : /pe/intel/compilers_and_libraries_2020.4.304/linux/pstl/include/,/pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/, .f90,./.f90,/opt/cray/pe/mpich/8.1.12/ofi/intel/19.0/include/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/ipp/include/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/mkl/include/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/pstl/include/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/pstl/stdlib/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/tbb/include/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/intel64/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/icc/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/.f90,/usr/lib64/gcc/x86_64-suse-linux/7/include/.f90, /usr/lib64/gcc/x86_64-suse-linux/7/include-fixed/.f90,/usr/include/.f90,/usr/include/.f90,/usr/include/.f90 -list filename : GRIBIT.lst no -o COMPILER: Intel(R) Fortran 19.1-1655