001 /*
002 * $Id: StormAODTInfo.java,v 1.1 2012/01/04 20:40:51 tommyj Exp $
003 *
004 * This file is part of McIDAS-V
005 *
006 * Copyright 2007-2012
007 * Space Science and Engineering Center (SSEC)
008 * University of Wisconsin - Madison
009 * 1225 W. Dayton Street, Madison, WI 53706, USA
010 * https://www.ssec.wisc.edu/mcidas
011 *
012 * All Rights Reserved
013 *
014 * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
015 * some McIDAS-V source code is based on IDV and VisAD source code.
016 *
017 * McIDAS-V is free software; you can redistribute it and/or modify
018 * it under the terms of the GNU Lesser Public License as published by
019 * the Free Software Foundation; either version 3 of the License, or
020 * (at your option) any later version.
021 *
022 * McIDAS-V is distributed in the hope that it will be useful,
023 * but WITHOUT ANY WARRANTY; without even the implied warranty of
024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
025 * GNU Lesser Public License for more details.
026 *
027 * You should have received a copy of the GNU Lesser Public License
028 * along with this program. If not, see http://www.gnu.org/licenses.
029 */
030
031 package edu.wisc.ssec.mcidasv.data.cyclone;
032
033 import java.util.ArrayList;
034 import java.util.List;
035
036 /**
037 * Created by IntelliJ IDEA. User: yuanho Date: Feb 25, 2009 Time: 2:23:27 PM To
038 * change this template use File | Settings | File Templates.
039 */
040 public class StormAODTInfo {
041
042 /* various constants */
043
044 /** _more_ */
045 static public int kstart_v72 = 24; /*
046 * inner cloud region analysis radius
047 * (km)
048 */
049
050 /** _more_ */
051 static public int kend_v72 = 136; /* outer cloud region analysis radius (km) */
052
053 /** _more_ */
054 static public int kenda_v72 = 190; /*
055 * automated cursor position analysis
056 * radius (km)
057 */
058
059 /** _more_ */
060 static public int keyerM_v72 = 24; /*
061 * outer eye region search radius (km) -
062 * Manual position
063 */
064
065 /** _more_ */
066 static public int keyerA_v72 = 75; /*
067 * outer eye region search radius (km) -
068 * Auto position
069 */
070
071 /** _more_ */
072 static public int kres_v72 = 4; /* width of the cloud region analysis rings */
073
074 /** _more_ */
075 static public int arfd_v72; /* the FILE id for the image in question */
076
077 /* global variables */
078 /*
079 * char eyetype_v72[7][20]={
080 * "EYE","PINHOLE EYE","LARGE EYE","LARGE RAGGED","RAGGED","OBSCURED","NONE"
081 * };
082 */
083
084 /** _more_ */
085 static public String eyetype_v72[] = { "EYE", "PINHOLE EYE", "LARGE EYE",
086 "NONE" };
087
088 /** _more_ */
089 static public String cloudtype_v72[] = { "UNIFORM CDO", "EMBEDDED CENTER",
090 "IRREGULAR CDO", "CURVED BAND", "SHEAR", "EYE" };
091
092 /** _more_ */
093 static public String cbasin_v72[] = { "ATLANTIC", "PACIFIC " };
094
095 /** _more_ */
096 static public String cmon_v72[] = { "JAN", "FEB", "MAR", "APR", "MAY",
097 "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" };
098 /* T#-Pressure/Wind relationships (Atlantic and Pacific) */
099 /* increased from 73 to 83 to allow for >8.0 storms */
100
101 /** _more_ */
102 static public double tno_v72[] = { -9999., -8888., 1.0, 1.1, 1.2, 1.3, 1.4,
103 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7,
104 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4.0,
105 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 5.3,
106 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6,
107 6.7, 6.8, 6.9, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9,
108 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9.0 };
109
110 /** _more_ */
111 static public double pres_v72[][] = {
112 /* Atlantic pressure relationship values */
113 { -9999.0, -8888.0, 1014.0, 1013.6, 1013.2, 1012.8, 1012.4, 1012.0,
114 1011.4, 1010.8, 1010.2, 1009.6, 1009.0, 1008.2, 1007.4,
115 1006.6, 1005.8, 1005.0, 1004.0, 1003.0, 1002.0, 1001.0,
116 1000.0, 998.8, 997.6, 996.4, 995.2, 994.0, 992.6, 991.2,
117 989.8, 988.4, 987.0, 985.4, 983.8, 982.2, 980.6, 979.0,
118 977.2, 975.4, 973.6, 971.8, 970.0, 968.0, 966.0, 964.0,
119 962.0, 960.0, 957.6, 955.2, 952.8, 950.4, 948.0, 945.4,
120 942.8, 940.2, 937.6, 935.0, 932.2, 929.4, 926.6, 923.8,
121 921.0, 918.0, 915.0, 912.0, 909.0, 906.0, 902.8, 899.6,
122 896.4, 893.2, 890.0, 886.6, 883.2, 879.8, 876.4, 873.0,
123 869.4, 865.8, 862.2, 858.6, 855.0 },
124 /* Pacific pressure relationship values */
125 { -9999.0, -8888.0, 1005.0, 1004.6, 1004.2, 1003.8, 1003.4, 1003.0,
126 1002.4, 1001.8, 1001.2, 1000.6, 1000.0, 999.4, 998.8,
127 998.2, 997.6, 997.0, 995.8, 994.6, 993.4, 992.2, 991.0,
128 989.6, 988.2, 986.8, 985.4, 984.0, 982.4, 980.8, 979.2,
129 977.6, 976.0, 974.0, 972.0, 970.0, 968.0, 966.0, 963.6,
130 961.2, 958.8, 956.4, 954.0, 951.4, 948.8, 946.2, 943.6,
131 941.0, 938.2, 935.4, 932.6, 929.8, 927.0, 924.4, 921.8,
132 919.2, 916.6, 914.0, 910.8, 907.6, 904.4, 901.2, 898.0,
133 894.2, 890.4, 886.6, 882.8, 879.0, 874.8, 870.6, 866.4,
134 862.2, 858.0, 853.4, 848.8, 844.2, 839.6, 835.0, 830.0,
135 825.0, 820.0, 815.0, 810.0 } };
136
137 /* Atlantic/Pacific pressure relationship values */
138
139 /** _more_ */
140 static public double wind_v72[] = { -9999.0, -8888.0, 25.0, 25.0, 25.0,
141 25.0, 25.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0,
142 34.0, 35.0, 37.0, 39.0, 41.0, 43.0, 45.0, 47.0, 49.0, 51.0, 53.0,
143 55.0, 57.0, 59.0, 61.0, 63.0, 65.0, 67.4, 69.8, 72.2, 74.6, 77.0,
144 79.6, 82.2, 84.8, 87.4, 90.0, 92.4, 94.8, 97.2, 99.6, 102.0, 104.6,
145 107.2, 109.8, 112.4, 115.0, 117.4, 119.8, 122.2, 124.6, 127.0,
146 129.6, 132.2, 134.8, 137.4, 140.0, 143.0, 146.0, 149.0, 152.0,
147 155.0, 158.0, 161.0, 164.0, 167.0, 170.0, 173.0, 176.0, 179.0,
148 182.0, 185.0, 188.0, 191.0, 194.0, 197.0, 200.0 };
149 /* BD curve break points */
150
151 /** _more_ */
152 static public double ebd_v72[] = { 30.0, 9.0, -30.0, -42.0, -54.0, -64.0,
153 -70.0, -76.0, -80.0, -84.0, -100.0 };
154
155 /* AODT library global variables */
156
157 /** _more_ */
158 boolean odt_v72, olist_v72, oautomode_v72, override_v72;
159
160 /** _more_ */
161 boolean ostartstr_v72, oland_v72, osearch_v72;
162
163 /** _more_ */
164 float[][] spiralband_v72 = new float[2][37];
165
166 /** _more_ */
167 float fcstlat_v72, fcstlon_v72;
168
169 /** _more_ */
170 double fcsttime_v72, starttime_v72, endtime_v72;
171
172 /** _more_ */
173 String hfile_v72, fixfile_v72;
174
175 /** _more_ */
176 String diagnostics_v72;
177
178 /** _more_ */
179 IRData odthistoryfirst_v72;
180
181 /** _more_ */
182 IRData odtcurrent_v72;
183
184 /** _more_ */
185 public ArrayList<RingData> tcircfirst_v72;
186
187 /** _more_ */
188 // DataGrid areadata_v72;
189
190 public StormAODTInfo() {
191 }
192
193 public static class ImgCoeffs {
194 String sat_id;
195 int sat_num;
196 int chan;
197 int det;
198 float scal_m;
199 float scal_b;
200 float side;
201 float conv_n;
202 float conv_a;
203 float conv_b;
204 float conv_g;
205
206 public ImgCoeffs(List<String> toks) {
207 sat_id = toks.get(0);
208 sat_num = Integer.parseInt(toks.get(1));
209 chan = Integer.parseInt(toks.get(2));
210 det = Integer.parseInt(toks.get(3));
211 scal_m = Float.parseFloat(toks.get(4));
212 scal_b = Float.parseFloat(toks.get(5));
213 side = Float.parseFloat(toks.get(6));
214 conv_n = Float.parseFloat(toks.get(7));
215 conv_a = Float.parseFloat(toks.get(8));
216 conv_b = Float.parseFloat(toks.get(9));
217 conv_g = Float.parseFloat(toks.get(10));
218
219 }
220
221 public String getSat_id() {
222 return sat_id;
223 }
224
225 }
226
227 /**
228 * Class RingData _more_
229 *
230 *
231 * @author IDV Development Team
232 * @version $Revision: 1.1 $
233 */
234 public static class RingData {
235
236 /** _more_ */
237 float dist;
238
239 /** _more_ */
240 float angle;
241
242 /** _more_ */
243 float temp;
244
245 /**
246 * _more_
247 */
248 RingData() {
249 }
250
251 /**
252 * _more_
253 *
254 * @param dist
255 * _more_
256 * @param angle
257 * _more_
258 * @param temp
259 * _more_
260 */
261 RingData(float dist, float angle, float temp) {
262 this.dist = dist;
263 this.angle = angle;
264 this.temp = temp;
265 }
266
267 }
268
269 /**
270 * Class DataGrid _more_
271 *
272 *
273 * @author IDV Development Team
274 * @version $Revision: 1.1 $
275 */
276
277 public static class DataGrid {
278 float[][] temp;
279
280 /** _more_ */
281 float[][] lat;
282
283 /** _more_ */
284 float[][] lon;
285
286 /** _more_ */
287 int numx;
288
289 /** _more_ */
290 int numy;
291
292 public DataGrid(float[][] temp, float[][] lon, float[][] lat, int numx,
293 int numy) {
294 this.temp = temp;
295 this.lat = lat;
296 this.lon = lon;
297 this.numx = numx;
298 this.numy = numy;
299 }
300
301 public float[][] getlons() {
302 return lon;
303 }
304
305 public float[][] getlats() {
306 return lat;
307 }
308
309 };
310
311 /**
312 * Class IRData _more_
313 *
314 *
315 * @author IDV Development Team
316 * @version $Revision: 1.1 $
317 */
318 public static class IRData {
319
320 int domain;
321
322 /** _more_ */
323 double date;
324
325 /** _more_ */
326 // int time;
327
328 /** _more_ */
329 float TrawO;
330
331 /** _more_ */
332 float Traw;
333
334 /** _more_ */
335 float Tfinal;
336
337 /** _more_ */
338 float Tfinal3;
339
340 /** _more_ */
341 float CI;
342
343 /** _more_ */
344 float eyet;
345
346 /** _more_ */
347 float warmt;
348
349 /** _more_ */
350 float cloudt;
351
352 /** _more_ */
353 float cloudt2;
354
355 /** _more_ */
356 float cwcloudt;
357
358 /** _more_ */
359 float latitude;
360
361 /** _more_ */
362 float longitude;
363
364 /** _more_ */
365 float warmlatitude;
366
367 /** _more_ */
368 float warmlongitude;
369
370 /** _more_ */
371 float eyecdosize;
372
373 /** _more_ */
374 float eyestdv;
375
376 /** _more_ */
377 float cloudsymave;
378
379 /** _more_ */
380 int sattype;
381
382 /** _more_ */
383 int eyescene;
384
385 /** _more_ */
386 int cloudscene;
387
388 /** _more_ */
389 int eyesceneold;
390
391 /** _more_ */
392 int cloudsceneold;
393
394 /** _more_ */
395 int rule9;
396
397 /** _more_ */
398 int rule8;
399
400 /** _more_ */
401 int land;
402
403 /** _more_ */
404 int eyefft;
405
406 /** _more_ */
407 int cloudfft;
408
409 /** _more_ */
410 int cwring;
411
412 /** _more_ */
413 int ringcb;
414
415 /** _more_ */
416 int ringcbval;
417
418 /** _more_ */
419 int ringcbvalmax;
420
421 /** _more_ */
422 float ringcblatmax;
423
424 /** _more_ */
425 float ringcblonmax;
426
427 /** _more_ */
428 float CIadjp;
429 /* float sst; */
430 /* float TIEraw; */
431 /* float TIEavg; */
432 /* int TIEflag; */
433
434 /** _more_ */
435 int autopos;
436
437 /** _more_ */
438 int LBflag;
439
440 /** _more_ */
441 int rapiddiss;
442
443 /** _more_ */
444 float rmw;
445
446 /** _more_ */
447 char[] comment = new char[50];
448
449 /**
450 * _more_
451 */
452 IRData() {
453 }
454
455 /**
456 * _more_
457 *
458 * @param date
459 * _more_
460 * @param TrawO
461 * _more_
462 * @param Traw
463 * _more_
464 * @param Tfinal
465 * _more_
466 * @param Tfinal3
467 * _more_
468 * @param CI
469 * _more_
470 * @param eyet
471 * _more_
472 * @param warmt
473 * _more_
474 * @param cloudt
475 * _more_
476 * @param cloudt2
477 * _more_
478 * @param cwcloudt
479 * _more_
480 * @param latitude
481 * _more_
482 * @param longitude
483 * _more_
484 * @param warmlatitude
485 * _more_
486 * @param warmlongitude
487 * _more_
488 * @param eyecdosize
489 * _more_
490 * @param eyestdv
491 * _more_
492 * @param cloudsymave
493 * _more_
494 * @param sattype
495 * _more_
496 * @param eyescene
497 * _more_
498 * @param cloudscene
499 * _more_
500 * @param eyesceneold
501 * _more_
502 * @param cloudsceneold
503 * _more_
504 * @param rule9
505 * _more_
506 * @param rule8
507 * _more_
508 * @param land
509 * _more_
510 * @param eyefft
511 * _more_
512 * @param cloudfft
513 * _more_
514 * @param cwring
515 * _more_
516 * @param ringcb
517 * _more_
518 * @param ringcbval
519 * _more_
520 * @param ringcbvalmax
521 * _more_
522 * @param ringcblatmax
523 * _more_
524 * @param ringcblonmax
525 * _more_
526 * @param CIadjp
527 * _more_
528 * @param autopos
529 * _more_
530 * @param LBflag
531 * _more_
532 * @param rapiddiss
533 * _more_
534 * @param rmw
535 * _more_
536 * @param comment
537 * _more_
538 */
539 IRData(double date, float TrawO, float Traw, float Tfinal,
540 float Tfinal3, float CI, float eyet, float warmt, float cloudt,
541 float cloudt2, float cwcloudt, float latitude, float longitude,
542 float warmlatitude, float warmlongitude, float eyecdosize,
543 float eyestdv, float cloudsymave, int sattype, int eyescene,
544 int cloudscene, int eyesceneold, int cloudsceneold, int rule9,
545 int rule8, int land, int eyefft, int cloudfft, int cwring,
546 int ringcb, int ringcbval, int ringcbvalmax,
547 float ringcblatmax, float ringcblonmax, float CIadjp,
548 int autopos, int LBflag, int rapiddiss, float rmw,
549 char[] comment) {
550
551 this.date = date;
552
553 this.TrawO = TrawO;
554 this.Traw = Traw;
555 this.Tfinal = Tfinal;
556 this.Tfinal3 = Tfinal3;
557 this.CI = CI;
558 this.eyet = eyet;
559 this.warmt = warmt;
560 this.cloudt = cloudt;
561 this.cloudt2 = cloudt2;
562 this.cwcloudt = cwcloudt;
563 this.latitude = latitude;
564 this.longitude = longitude;
565 this.warmlatitude = warmlatitude;
566 this.warmlongitude = warmlongitude;
567 this.eyecdosize = eyecdosize;
568 this.eyestdv = eyestdv;
569 this.cloudsymave = cloudsymave;
570 this.sattype = sattype;
571 this.eyescene = eyescene;
572 this.cloudscene = cloudscene;
573 this.eyesceneold = eyesceneold;
574 this.cloudsceneold = cloudsceneold;
575 this.rule9 = rule9;
576 this.rule8 = rule8;
577 this.land = land;
578 this.eyefft = eyefft;
579 this.cloudfft = cloudfft;
580 this.cwring = cwring;
581 this.ringcb = ringcb;
582 this.ringcbval = ringcbval;
583 this.ringcbvalmax = ringcbvalmax;
584 this.ringcblatmax = ringcblatmax;
585 this.ringcblonmax = ringcblonmax;
586 this.CIadjp = CIadjp;
587 /* float sst; */
588 /* float TIEraw; */
589 /* float TIEavg; */
590 /* int TIEflag; */
591 this.autopos = autopos;
592 this.LBflag = LBflag;
593 this.rapiddiss = rapiddiss;
594 this.rmw = rmw;
595 this.comment = comment;
596 }
597 }
598
599 }