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