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    }