merge standard release WRF/WPS V3.0.1.1 into wrffire
[wrffire.git] / WPS / ungrib / src / table.F
blob127f09ae7d1c161e54f8ddd2350845a73cd8f17f
2 ! This file contains a module, which is used to pass around information
3 ! from the Vtable from one program component to another
5 module Table
6   implicit none
8 ! We have parameterized the maximum number of variables we expect to want to 
9 ! read:
10   integer, parameter :: maxlines=100
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 = ' '
16 ! Array DUNITS holds the unit strings for the fields.
17   character (LEN=25), dimension(maxlines) :: Dunits = ' '
19 ! Array DDESC holds the description strings for the fields.
20   character (LEN=46), dimension(maxlines) :: Ddesc =  ' '
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 = ' '
29 ! MAXVAR is the count of variables we have read.  It is initialized to ZERO.
30   integer :: maxvar = 0
32 ! MAXOUT is the count of the variables we want to output.
33 ! Initialize it to zero.
34   integer :: maxout = 0
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
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(5,maxlines) :: g2code
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
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
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
62   integer :: blankcode = -99
63   integer :: splatcode = -88
65 end module Table