#include #include #include "gribw.h" static struct param { char *pname; int dec_scale; } NMC_parm[256] = { /* 0 */ {"var0", 0 }, /* 1 */ {"PRES", -1 }, /* 2 */ {"PRMSL", -1 }, /* 3 */ {"PTEND", 5 }, /* 4 */ {"var4", 0 }, /* 5 */ {"var5", 0 }, /* 6 */ {"GP", -1 }, /* 7 */ {"HGT", 0 }, /* 8 */ {"DIST", 0 }, /* 9 */ {"HSTDV", 0 }, /* 10 */ {"HVAR", 0 }, /* 11 */ {"TMP", 1 }, /* 12 */ {"VTMP", 1 }, /* 13 */ {"POT", 1 }, /* 14 */ {"EPOT", 1 }, /* 15 */ {"TMAX", 1 }, /* 16 */ {"TMIN", 1 }, /* 17 */ {"DPT", 1 }, /* 18 */ {"DEPR", 1 }, /* 19 */ {"LAPR", 4 }, /* 20 */ {"VISIB", 0 }, /* 21 */ {"RDSP1", 0 }, /* 22 */ {"RDSP2", 0 }, /* 23 */ {"RDSP3", 0 }, /* 24 */ {"var24", 0 }, /* 25 */ {"TMPA", 1 }, /* 26 */ {"PRESA", -1 }, /* 27 */ {"GPA", 0 }, /* 28 */ {"WVSP1", 0 }, /* 29 */ {"WVSP2", 0 }, /* 30 */ {"WVSP3", 0 }, /* 31 */ {"WDIR", 0 }, /* 32 */ {"WIND", 1 }, /* 33 */ {"UGRD", 1 }, /* 34 */ {"VGRD", 1 }, /* 35 */ {"STRM", -4 }, /* 36 */ {"VPOT", -4 }, /* 37 */ {"MNTSF", -1 }, /* 38 */ {"SGCVV", 8 }, /* 39 */ {"VVEL", 3 }, /* 40 */ {"DZDT", 4 }, /* 41 */ {"ABSV", 6 }, /* 42 */ {"ABSD", 6 }, /* 43 */ {"RELV", 6 }, /* 44 */ {"RELD", 6 }, /* 45 */ {"VUCSH", 4 }, /* 46 */ {"VVCSH", 4 }, /* 47 */ {"DIRC", 0 }, /* 48 */ {"SPC", 0 }, /* 49 */ {"UOGRD", 0 }, /* 50 */ {"VOGRD", 0 }, /* 51 */ {"SPFH", 4 }, /* 52 */ {"RH", 0 }, /* 53 */ {"MIXR", 4 }, /* 54 */ {"PWAT", 1 }, /* 55 */ {"VAPP", -1 }, /* 56 */ {"SATD", -1 }, /* 57 */ {"EVP", 1 }, /* 58 */ {"CICE", 1 }, /* 59 */ {"PRATE", 6 }, /* 60 */ {"TSTM", 0 }, /* 61 */ {"APCP", 1 }, /* 62 */ {"NCPCP", 1 }, /* 63 */ {"ACPCP", 1 }, /* 64 */ {"SRWEQ", 6 }, /* 65 */ {"WEASD", 0 }, /* 66 */ {"SNOD", 2 }, /* 67 */ {"MIXHT", 0 }, /* 68 */ {"TTHDP", 0 }, /* 69 */ {"MTHD", 0 }, /* 70 */ {"MTHA", 0 }, /* 71 */ {"TCDC", 0 }, /* 72 */ {"CDCON", 0 }, /* 73 */ {"LCDC", 0 }, /* 74 */ {"MCDC", 0 }, /* 75 */ {"HCDC", 0 }, /* 76 */ {"CWAT", 1 }, /* 77 */ {"var77", 0 }, /* 78 */ {"SNOC", 1 }, /* 79 */ {"SNOL", 1 }, /* 80 */ {"WTMP", 1 }, /* 81 */ {"LAND", 0 }, /* 82 */ {"DSLM", 0 }, /* 83 */ {"SFCR", 5 }, /* 84 */ {"ALBDO", 0 }, /* 85 */ {"TSOIL", 1 }, /* 86 */ {"SOILM", 0 }, /* 87 */ {"VEG", 0 }, /* 88 */ {"SALTY", 0 }, /* 89 */ {"DEN", 4 }, /* 90 */ {"RUNOF", 1 }, /* 91 */ {"ICEC", 0 }, /* 92 */ {"ICETK", 0 }, /* 93 */ {"DICED", 0 }, /* 94 */ {"SICED", 0 }, /* 95 */ {"UICE", 0 }, /* 96 */ {"VICE", 0 }, /* 97 */ {"ICEG", 0 }, /* 98 */ {"ICED", 0 }, /* 99 */ {"SNOM", 1 }, /* 100 */ {"HTSGW", 0 }, /* 101 */ {"WVDIR", 0 }, /* 102 */ {"WVHGT", 0 }, /* 103 */ {"WVPER", 0 }, /* 104 */ {"SWDIR", 0 }, /* 105 */ {"SWELL", 0 }, /* 106 */ {"SWPER", 0 }, /* 107 */ {"DIRPW", 0 }, /* 108 */ {"PERPW", 0 }, /* 109 */ {"DIRSW", 0 }, /* 110 */ {"PERSW", 0 }, /* 111 */ {"NSWRS", 0 }, /* 112 */ {"NLWRS", 0 }, /* 113 */ {"NSWRT", 0 }, /* 114 */ {"NLWRT", 0 }, /* 115 */ {"LWAVR", 0 }, /* 116 */ {"SWAVR", 0 }, /* 117 */ {"GRAD", 0 }, /* 118 */ {"var118", 0 }, /* 119 */ {"var119", 0 }, /* 120 */ {"var120", 0 }, /* 121 */ {"LHTFL", 0 }, /* 122 */ {"SHTFL", 0 }, /* 123 */ {"BLYDP", 0 }, /* 124 */ {"UFLX", 3 }, /* 125 */ {"VFLX", 3 }, /* 126 */ {"WMIXE", 0 }, /* 127 */ {"IMGD", 0 }, /* 128 */ {"MSLSA", -1 }, /* 129 */ {"MSLMA", -1 }, /* 130 */ {"MSLET", -1 }, /* 131 */ {"LFTX", 1 }, /* 132 */ {"4LFTX", 1 }, /* 133 */ {"KX", 1 }, /* 134 */ {"SX", 1 }, /* 135 */ {"MCONV", 10 }, /* 136 */ {"VSSH", 4 }, /* 137 */ {"TSLSA", 5 }, /* 138 */ {"BVF2", 6 }, /* 139 */ {"PVMW", 11 }, /* 140 */ {"CRAIN", 0 }, /* 141 */ {"CFRZR", 0 }, /* 142 */ {"CICEP", 0 }, /* 143 */ {"CSNOW", 0 }, /* 144 */ {"SOILW", 0 }, /* 145 */ {"PEVPR", 0 }, /* 146 */ {"CWORK", 0 }, /* 147 */ {"U-GWD", 0 }, /* 148 */ {"V-GWD", 0 }, /* 149 */ {"PV___", 0 }, /* 150 */ {"var150", 0 }, /* 151 */ {"var151", 0 }, /* 152 */ {"var152", 0 }, /* 153 */ {"MFXDV", 0 }, /* 154 */ {"var154", 0 }, /* 155 */ {"GFLUX", 0 }, /* 156 */ {"CIN", 0 }, /* 157 */ {"CAPE", 0 }, /* 158 */ {"TKE", 0 }, /* 159 */ {"CONDP", 0 }, /* 160 */ {"CSUSF", 0 }, /* 161 */ {"CSDSF", 0 }, /* 162 */ {"CSULF", 0 }, /* 163 */ {"CSDLF", 0 }, /* 164 */ {"CFNSF", 0 }, /* 165 */ {"CFNLF", 0 }, /* 166 */ {"VBDSF", 0 }, /* 167 */ {"VDDSF", 0 }, /* 168 */ {"NBDSF", 0 }, /* 169 */ {"NDDSF", 0 }, /* 170 */ {"USTR", 3 }, /* 171 */ {"VSTR", 3 }, /* 172 */ {"MFLX", 3 }, /* 173 */ {"LMH", 0 }, /* 174 */ {"LMV", 0 }, /* 175 */ {"SGLYR", 0 }, /* 176 */ {"NLAT", 2 }, /* 177 */ {"NLON", 2 }, /* 178 */ {"UMAS", 2 }, /* 179 */ {"VMAS", 2 }, /* 180 */ {"var180", 0 }, /* 181 */ {"LPSX", 9 }, /* 182 */ {"LPSY", 9 }, /* 183 */ {"HGTX", 5 }, /* 184 */ {"HGTY", 5 }, /* 185 */ {"STDZ", 0 }, /* 186 */ {"STDU", 0 }, /* 187 */ {"STDV", 0 }, /* 188 */ {"STDQ", 0 }, /* 189 */ {"STDT", 0 }, /* 190 */ {"CBUW", 0 }, /* 191 */ {"CBVW", 0 }, /* 192 */ {"CBUQ", 0 }, /* 193 */ {"CBVQ", 0 }, /* 194 */ {"CBTW", 0 }, /* 195 */ {"CBQW", 0 }, /* 196 */ {"CBMZW", 0 }, /* 197 */ {"CBTZW", 0 }, /* 198 */ {"CBTMW", 0 }, /* 199 */ {"STDRH", 0 }, /* 200 */ {"SDTZ", 0 }, /* 201 */ {"ICWAT", 0 }, /* 202 */ {"SDTU", 0 }, /* 203 */ {"SDTV", 0 }, /* 204 */ {"DSWRF", 0 }, /* 205 */ {"DLWRF", 0 }, /* 206 */ {"SDTQ", 0 }, /* 207 */ {"MSTAV", 0 }, /* 208 */ {"SFEXC", 0 }, /* 209 */ {"MIXLY", 0 }, /* 210 */ {"SDTT", 0 }, /* 211 */ {"USWRF", 0 }, /* 212 */ {"ULWRF", 0 }, /* 213 */ {"CDLYR", 0 }, /* 214 */ {"CPRAT", 6 }, /* 215 */ {"TTDIA", 7 }, /* 216 */ {"TTRAD", 7 }, /* 217 */ {"TTPHY", 7 }, /* 218 */ {"PREIX", 2 }, /* 219 */ {"TSD1D", 1 }, /* 220 */ {"NLSGP", 4 }, /* 221 */ {"SDTRH", 0 }, /* 222 */ {"5WAVH", 0 }, /* 223 */ {"CWAT", 1 }, /* 224 */ {"PLTRS", 1 }, /* 225 */ {"var225", 1 }, /* 226 */ {"BMIXL", 0 }, /* 227 */ {"AMIXL", 0 }, /* 228 */ {"PEVAP", 1 }, /* 229 */ {"SNOHF", 0 }, /* 230 */ {"var230", 0 }, /* 231 */ {"MFLUX", 3 }, /* 232 */ {"DTRF", 0 }, /* 233 */ {"UTRF", 0 }, /* 234 */ {"BGRUN", 0 }, /* 235 */ {"SSRUN", 0 }, /* 236 */ {"var236", 0 }, /* 237 */ {"OZONE", 0 }, /* 238 */ {"SNOC", 0 }, /* 239 */ {"SNOT", 1 }, /* 240 */ {"GLCR", 0 }, /* 241 */ {"LRGHR", 7 }, /* 242 */ {"CNVHR", 7 }, /* 243 */ {"CNVMR", 10 }, /* 244 */ {"SHAHR", 7 }, /* 245 */ {"SHAMR", 10 }, /* 246 */ {"VDFHR", 7 }, /* 247 */ {"VDFUA", 7 }, /* 248 */ {"VDFVA", 7 }, /* 249 */ {"VDFMR", 10 }, /* 250 */ {"SWHR", 7 }, /* 251 */ {"LWHR", 7 }, /* 252 */ {"CD", 0 }, /* 253 */ {"FRICV", 0 }, /* 254 */ {"RI", 0 }, /* 255 */ {"var255", 0 } }; void set_NMCparm(unsigned char *pds, char *name) { int i; for (i = 1; i < 256; i++) { if (strcmp(name, NMC_parm[i].pname) == 0) break; } if (i == 256) { fprintf(stderr,"could not match param %s\n", name); exit(8); } pds[8] = i; set_DecScale(pds, NMC_parm[i].dec_scale); } void set_NMCnparm(unsigned char *pds, int parm) { pds[8] = parm; set_DecScale(pds, NMC_parm[parm].dec_scale); } char *get_NMCparm(unsigned char *pds) { return NMC_parm[pds[8]].pname; } int get_NMCnparm(unsigned char *pds) { return pds[8]; }