NCEPLIBS-w3emc  2.9.3
r63w72.f
Go to the documentation of this file.
1 C> @file
2 C> @brief Convert w3fi63 parms to w3fi72 parms.
3 C> @author Mark Iredell @date 1992-10-31
4 
5 C> determines the integer pds and gds parameters
6 C> for the grib1 packing routine w3fi72 given the parameters
7 C> returned from the grib1 unpacking routine w3fi63.
8 C>
9 C> Program history log:
10 C> - Mark Iredell 1991-10-31
11 C> - Mark Iredell 1996-05-03 Corrected some level types and
12 C> some data representation types
13 C> - Mark Iredell 1997-02-14 Only altered ipds(26:27) for extended pds
14 C> - Chris Caruso 1998-06-01 Y2K fix for year of century
15 C> - Diane Stoken 2005-05-06 Recognize level 236
16 C>
17 C> Usage: call r63w72(kpds,kgds,ipds,igds)
18 C>
19 C> @param[in] kpds integer (200) pds parameters from w3fi63
20 C> @param[in] kgds integer (200) gds parameters from w3fi63
21 C> @param[out] ipds integer (200) pds parameters for w3fi72
22 C> @param[out] igds integer (200) gds parameters for w3fi72
23 C>
24 C> @note kgds and igds extend beyond their dimensions here
25 C> if pl parameters are present.
26 C>
27 C> @author Mark Iredell @date 1992-10-31
28  SUBROUTINE r63w72(KPDS,KGDS,IPDS,IGDS)
29  dimension kpds(200),kgds(200),ipds(200),igds(200)
30 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
31 C DETERMINE PRODUCT DEFINITION SECTION (PDS) PARAMETERS
32  IF(kpds(23).NE.2) THEN
33  ipds(1)=28 ! LENGTH OF PDS
34  ELSE
35  ipds(1)=45 ! LENGTH OF PDS
36  ENDIF
37  ipds(2)=kpds(19) ! PARAMETER TABLE VERSION
38  ipds(3)=kpds(1) ! ORIGINATING CENTER
39  ipds(4)=kpds(2) ! GENERATING MODEL
40  ipds(5)=kpds(3) ! GRID DEFINITION
41  ipds(6)=mod(kpds(4)/128,2) ! GDS FLAG
42  ipds(7)=mod(kpds(4)/64,2) ! BMS FLAG
43  ipds(8)=kpds(5) ! PARAMETER INDICATOR
44  ipds(9)=kpds(6) ! LEVEL TYPE
45  IF(kpds(6).EQ.101.OR.kpds(6).EQ.104.OR.kpds(6).EQ.106.OR.
46  & kpds(6).EQ.108.OR.kpds(6).EQ.110.OR.kpds(6).EQ.112.OR.
47  & kpds(6).EQ.114.OR.kpds(6).EQ.116.OR.kpds(6).EQ.121.OR.
48  & kpds(6).EQ.128.OR.kpds(6).EQ.141.OR.kpds(6).EQ.236) THEN
49  ipds(10)=mod(kpds(7)/256,256) ! LEVEL VALUE 1
50  ipds(11)=mod(kpds(7),256) ! LEVEL VALUE 2
51  ELSE
52  ipds(10)=0 ! LEVEL VALUE 1
53  ipds(11)=kpds(7) ! LEVEL VALUE 2
54  ENDIF
55  ipds(12)=kpds(8) ! YEAR OF CENTURY
56  ipds(13)=kpds(9) ! MONTH
57  ipds(14)=kpds(10) ! DAY
58  ipds(15)=kpds(11) ! HOUR
59  ipds(16)=kpds(12) ! MINUTE
60  ipds(17)=kpds(13) ! FORECAST TIME UNIT
61  ipds(18)=kpds(14) ! TIME RANGE 1
62  ipds(19)=kpds(15) ! TIME RANGE 2
63  ipds(20)=kpds(16) ! TIME RANGE INDICATOR
64  ipds(21)=kpds(17) ! NUMBER IN AVERAGE
65  ipds(22)=kpds(20) ! NUMBER MISSING IN AVERAGE
66  ipds(23)=kpds(21) ! CENTURY
67  ipds(24)=kpds(23) ! SUBCENTER
68  ipds(25)=kpds(22) ! DECIMAL SCALING
69  IF(ipds(1).GT.28) THEN
70  ipds(26)=0 ! PDS BYTE 29
71  ipds(27)=0 ! PDS BYTE 30
72  ENDIF
73 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
74 C DETERMINE GRID DEFINITION SECTION (GDS) PARAMETERS
75  igds(1)=kgds(19) ! NUMBER OF VERTICAL COORDINATES
76  igds(2)=kgds(20) ! VERTICAL COORDINATES
77  igds(3)=kgds(1) ! DATA REPRESENTATION
78  igds(4)=kgds(2) ! (UNIQUE TO REPRESENTATION)
79  igds(5)=kgds(3) ! (UNIQUE TO REPRESENTATION)
80  igds(6)=kgds(4) ! (UNIQUE TO REPRESENTATION)
81  igds(7)=kgds(5) ! (UNIQUE TO REPRESENTATION)
82  igds(8)=kgds(6) ! (UNIQUE TO REPRESENTATION)
83  igds(9)=kgds(7) ! (UNIQUE TO REPRESENTATION)
84  igds(10)=kgds(8) ! (UNIQUE TO REPRESENTATION)
85  igds(11)=kgds(9) ! (UNIQUE TO REPRESENTATION)
86  igds(12)=kgds(10) ! (UNIQUE TO REPRESENTATION)
87  igds(13)=kgds(11) ! (UNIQUE TO REPRESENTATION)
88  igds(14)=kgds(12) ! (UNIQUE TO REPRESENTATION)
89  igds(15)=kgds(13) ! (UNIQUE TO REPRESENTATION)
90  igds(16)=kgds(14) ! (UNIQUE TO REPRESENTATION)
91  igds(17)=kgds(15) ! (UNIQUE TO REPRESENTATION)
92  igds(18)=kgds(16) ! (UNIQUE TO REPRESENTATION)
93 C EXCEPTIONS FOR LATLON OR GAUSSIAN
94  IF(kgds(1).EQ.0.OR.kgds(1).EQ.4) THEN
95  igds(11)=kgds(10)
96  igds(12)=kgds(9)
97 C EXCEPTIONS FOR MERCATOR
98  ELSEIF(kgds(1).EQ.1) THEN
99  igds(11)=kgds(13)
100  igds(12)=kgds(12)
101  igds(13)=kgds(9)
102  igds(14)=kgds(11)
103 C EXCEPTIONS FOR LAMBERT CONFORMAL
104  ELSEIF(kgds(1).EQ.3) THEN
105  igds(15)=kgds(12)
106  igds(16)=kgds(13)
107  igds(17)=kgds(14)
108  igds(18)=kgds(15)
109  ENDIF
110 C EXTENSION FOR PL PARAMETERS
111  IF(kgds(1).EQ.0.AND.kgds(19).EQ.0.AND.kgds(20).NE.255) THEN
112  DO j=1,kgds(3)
113  igds(18+j)=kgds(21+j)
114  ENDDO
115  ENDIF
116 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
117  RETURN
118  END
r63w72
subroutine r63w72(KPDS, KGDS, IPDS, IGDS)
determines the integer pds and gds parameters for the grib1 packing routine w3fi72 given the paramete...
Definition: r63w72.f:29