| 1 | ! |
|---|
| 2 | ! This file contains a module, which is used to pass around information |
|---|
| 3 | ! from the Vtable from one program component to another |
|---|
| 4 | ! |
|---|
| 5 | module Table |
|---|
| 6 | implicit none |
|---|
| 7 | |
|---|
| 8 | ! We have parameterized the maximum number of variables we expect to want to |
|---|
| 9 | ! read: |
|---|
| 10 | integer, parameter :: maxlines=100 |
|---|
| 11 | |
|---|
| 12 | ! Each variable has a name. The names are stored in array NAMVAR. |
|---|
| 13 | ! Initialize the NAMVAR field to blanks: |
|---|
| 14 | character (LEN=9) , dimension(maxlines) :: namvar = ' ' |
|---|
| 15 | |
|---|
| 16 | ! Array DUNITS holds the unit strings for the fields. |
|---|
| 17 | character (LEN=25), dimension(maxlines) :: Dunits = ' ' |
|---|
| 18 | |
|---|
| 19 | ! Array DDESC holds the description strings for the fields. |
|---|
| 20 | character (LEN=46), dimension(maxlines) :: Ddesc = ' ' |
|---|
| 21 | |
|---|
| 22 | ! Most of the fields are output, but some are not. The names of the |
|---|
| 23 | ! fields we want to output are stored in NAMEOUT. Initialize the |
|---|
| 24 | ! NAMEOUT field to blanks: |
|---|
| 25 | character (LEN=9) , dimension(maxlines) :: nameout = ' ' |
|---|
| 26 | character (LEN=25), dimension(maxlines) :: unitout = ' ' |
|---|
| 27 | character (LEN=46), dimension(maxlines) :: descout = ' ' |
|---|
| 28 | |
|---|
| 29 | ! MAXVAR is the count of variables we have read. It is initialized to ZERO. |
|---|
| 30 | integer :: maxvar = 0 |
|---|
| 31 | |
|---|
| 32 | ! MAXOUT is the count of the variables we want to output. |
|---|
| 33 | ! Initialize it to zero. |
|---|
| 34 | integer :: maxout = 0 |
|---|
| 35 | |
|---|
| 36 | ! Array GCODE holds the GRIB1 param numbers of the fields we want to access: |
|---|
| 37 | integer, dimension(maxlines) :: gcode |
|---|
| 38 | ! Array LCODE holds the GRIB1 level types of the params we want to access: |
|---|
| 39 | integer, dimension(maxlines) :: lcode |
|---|
| 40 | |
|---|
| 41 | ! Array G2_GCODE holds the GRIB2 param numbers of the fields we want to access |
|---|
| 42 | ! and the GRIB2 level types of the params we want to access: |
|---|
| 43 | integer, dimension(4,maxlines) :: g2code |
|---|
| 44 | |
|---|
| 45 | ! Array LEVEL1 holds the Level-1 values of the fields we want: |
|---|
| 46 | ! If the Vtable has a '*' for the Level-1 value, LEVEL1 has |
|---|
| 47 | ! the value -99. |
|---|
| 48 | integer, dimension(maxlines) :: level1 |
|---|
| 49 | |
|---|
| 50 | ! Array LEVEL2 holds the Level-2 values of the fields we want. |
|---|
| 51 | ! If LEVEL2 is not needed for a particular field, it is set to |
|---|
| 52 | ! -99. |
|---|
| 53 | integer, dimension(maxlines) :: level2 |
|---|
| 54 | |
|---|
| 55 | ! Array IPRTY holds the priority values of the fields: |
|---|
| 56 | ! Priorities are used with surface fields, when we have |
|---|
| 57 | ! encountered the situation where a field may be stored in two different |
|---|
| 58 | ! ways in a file. Ultimately, the field with the lower priority number |
|---|
| 59 | ! (i.e., higher priority) is what is output. |
|---|
| 60 | integer, dimension(maxlines) :: iprty |
|---|
| 61 | |
|---|
| 62 | integer :: blankcode = -99 |
|---|
| 63 | integer :: splatcode = -88 |
|---|
| 64 | |
|---|
| 65 | end module Table |
|---|