Merge branch 'ncep_14.2.1' of ssh://collaborate3.nws.noaa.gov:29418/AWIPS2_Dev_Baseline into master_14.2.1
Former-commit-id:8d4a1e1204
[formerly24785068be
] [formerlyd710aec521
] [formerly8d4a1e1204
[formerly24785068be
] [formerlyd710aec521
] [formerlyfda6ab1344
[formerlyd710aec521
[formerly ac54324fb0eff1483dd2c3aa8d94273760451dab]]]] Former-commit-id:fda6ab1344
Former-commit-id:d197a72c20
[formerlyc5502af3fa
] [formerly 6ec1b00cf64c71cead90fca582edef188ec24710 [formerly0aff5875b0
]] Former-commit-id: 28dc637ae8563b78153684cbfa60e954caea69c9 [formerlydcade6e18a
] Former-commit-id:26e19974d1
This commit is contained in:
commit
0a1ef77d16
13 changed files with 3981 additions and 3921 deletions
Binary file not shown.
|
@ -477,8 +477,8 @@ float cave_ship(){
|
|||
|
||||
t500 = i_temp(500, I_PRES);
|
||||
lr75 = lapse_rate(&ix1, 700, 500);
|
||||
fzlh = agl(i_hght(temp_lvl( 0, &ix1 ), I_PRES));
|
||||
//fzlh = mtof(agl(i_hght(temp_lvl(0, &ix1), I_PRES)));
|
||||
// Chin V9 was:: fzlh = agl(i_hght(temp_lvl( 0, &ix1 ), I_PRES));
|
||||
fzlh = mtof(agl(i_hght(temp_lvl(0, &ix1), I_PRES)));//Chin: according to bignsharpV2013Jun12
|
||||
ship = sig_hail(mucape, mumixr, lr75, t500, kt_to_mps(shr6), fzlh, mucinh, 0, 0, 25, mlcape);
|
||||
/* ----- Set Parcel Back ----- */
|
||||
if (oldlplchoice == 1)
|
||||
|
@ -861,122 +861,148 @@ void low_inv ( float *inv_mb, float *inv_dC )
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void mix_height ( float *mh_mb, float *mh_drct, float *mh_sped,
|
||||
float *mh_dC, float *mh_lr, float *mh_drct_max,
|
||||
float *mh_sped_max, short flag )
|
||||
/************************************************************************
|
||||
* OPC MODIFICATION - J. Morgan 5/3/05 *
|
||||
* MIX_HEIGHT - New function *
|
||||
* *
|
||||
* MIX_HEIGHT *
|
||||
* J. Morgan OPC *
|
||||
* *
|
||||
* Calculates the mixing height. *
|
||||
* flag = 0 Surface-based lapse rate *
|
||||
* flag = 1 Layer-based lapse rate *
|
||||
* *
|
||||
* mh_mb - Pressure at mixing height (mb) *
|
||||
* mh_drct - Wind direction at mixing height (deg) *
|
||||
* mh_sped - Wind speed at mixing height (kt) *
|
||||
* mh_dC - Layer change in temperature (C) *
|
||||
* mh_lr - Layer lapse rate (C/km) *
|
||||
* mh_drct_max - Layer maximum wind direction (deg) *
|
||||
* mh_sped_max - Layer maximum wind speed (kt) *
|
||||
* *
|
||||
* Called by xwvid1.c: draw_skewt() *
|
||||
* Called by xwvid3.c: show_mixheight() *
|
||||
*
|
||||
* Chin:: not in BigNsharp, therefore ported to here. 6/8/2011
|
||||
***********************************************************************/
|
||||
void mix_height ( float *mh_pres, float *mh_drct, float *mh_sped,
|
||||
float *mh_dC, float *mh_lr, float *mh_drct_max,
|
||||
float *mh_sped_max, short flag )
|
||||
/****************************************************************************
|
||||
* mix_height *
|
||||
* *
|
||||
* This function modifies original mix_height funtion which *
|
||||
* computes hydro meteorological parameters within empirical mix *
|
||||
* boundary layer. *
|
||||
* *
|
||||
* Calculates the mixing height. *
|
||||
* *
|
||||
* mh_pres - Pressure at mixing height (mb) *
|
||||
* mh_drct - Wind direction at mixing height (deg) *
|
||||
* mh_sped - Wind speed at mixing height (kts) *
|
||||
* mh_dC - Layer change in temperature (C) *
|
||||
* mh_lr - Layer lapse rate (C/km) *
|
||||
* mh_drct_max - Layer maximum wind direction (deg) *
|
||||
* mh_sped_max - Layer maximum wind speed (kts) *
|
||||
* flag - 0: Surface-based lapse rate *
|
||||
* 1: Layer-based lapse rate *
|
||||
* *
|
||||
* Chin:: not in BigNsharp, therefore ported to here. 6/8/2011 * *
|
||||
* J. Morgan 5/2005 Created *
|
||||
* T. Lee 2/2014 Cleanup and fixed surface based and layer based *
|
||||
* parameters always have same values *
|
||||
****************************************************************************/
|
||||
{
|
||||
short ii, bb, b_1;
|
||||
float thresh, lapser, lapser_1, mdrct, msped, drct, sped;
|
||||
float dt, dz;
|
||||
short pIndex, zIndex, tIndex, drIndex, spIndex;
|
||||
pIndex = getParmIndex("PRES");
|
||||
zIndex = getParmIndex("HGHT");
|
||||
tIndex = getParmIndex("TEMP");
|
||||
spIndex = getParmIndex("SPED");
|
||||
drIndex = getParmIndex("DRCT");
|
||||
if (!sndg || pIndex == -1 || zIndex == -1 || tIndex == -1 || drIndex == -1 || spIndex == -1) return;
|
||||
short ii, bb, b_1;
|
||||
float thresh, lapse_rate, lapser_1, mxdrct, mxsped, drct, sped;
|
||||
float dt, dz;
|
||||
short pIndex, zIndex, tIndex, drIndex, spIndex;
|
||||
Boolean first_level = True;
|
||||
|
||||
*mh_mb = -9999;
|
||||
*mh_drct = -9999;
|
||||
*mh_sped = -9999;
|
||||
*mh_dC = -9999;
|
||||
*mh_lr = -9999;
|
||||
*mh_drct_max = -9999;
|
||||
*mh_sped_max = -9999;
|
||||
pIndex = getParmIndex("PRES");
|
||||
zIndex = getParmIndex("HGHT");
|
||||
tIndex = getParmIndex("TEMP");
|
||||
spIndex = getParmIndex("SPED");
|
||||
drIndex = getParmIndex("DRCT");
|
||||
if (!sndg || pIndex == -1 || zIndex == -1 || tIndex == -1 || drIndex == -1 || spIndex == -1) return;
|
||||
|
||||
thresh = 8.3;
|
||||
lapser_1 = 0.0;
|
||||
mdrct = 0.0;
|
||||
msped = 0.0;
|
||||
drct = 0.0;
|
||||
sped = 0.0;
|
||||
*mh_pres = -9999;
|
||||
*mh_drct = -9999;
|
||||
*mh_sped = -9999;
|
||||
*mh_dC = -9999;
|
||||
*mh_lr = -9999;
|
||||
*mh_drct_max = -9999;
|
||||
*mh_sped_max = -9999;
|
||||
|
||||
for ( ii = 0; ii < numlvl-1; ii++ ) {//Chin
|
||||
thresh = 8.3;
|
||||
lapser_1 = 0.0;
|
||||
mxdrct = 0.0;
|
||||
mxsped = 0.0;
|
||||
drct = 0.0;
|
||||
sped = 0.0;
|
||||
|
||||
if ( qc( sndg[ii+1][tIndex] ) && qc( sndg[ii][tIndex] )) {
|
||||
/* ----- Set Method Values ----- */
|
||||
if( flag == 0 ) {
|
||||
bb = 0;
|
||||
b_1 = 0;
|
||||
}
|
||||
else {
|
||||
bb = ii;
|
||||
b_1 = ii-1;
|
||||
}
|
||||
for ( ii = 0; ii < numlvl-1; ii++ ) {//Chin
|
||||
|
||||
/* ----- Calculate Lapse Rate ----- */
|
||||
dt = sndg[ii+1][tIndex] - sndg[bb][tIndex] ;
|
||||
dz = sndg[ii+1][zIndex] - sndg[bb][zIndex];
|
||||
lapser = (dt / dz)*-1000;
|
||||
if ( qc( sndg[ii+1][tIndex] ) ) { //TL
|
||||
/* ----- Set Method Values ----- */
|
||||
if( flag == 0 ) {
|
||||
bb = 0;
|
||||
b_1 = 0;
|
||||
}
|
||||
else {
|
||||
bb = ii;
|
||||
b_1 = ii-1;
|
||||
}
|
||||
|
||||
/* ----- Test Lapse Rate ----- */
|
||||
if ( lapser > thresh ) {
|
||||
if ( first_level ) {
|
||||
mxdrct = sndg[0][drIndex];
|
||||
mxsped = sndg[0][spIndex];
|
||||
*mh_drct = sndg[0][drIndex];
|
||||
*mh_sped = sndg[0][spIndex];
|
||||
}
|
||||
|
||||
/* ----- Store Maximum Wind Data ----- */
|
||||
drct = sndg[ii][drIndex];
|
||||
sped = sndg[ii][spIndex];
|
||||
if ( drct > mdrct ) {
|
||||
mdrct = drct;
|
||||
msped = sped;
|
||||
}
|
||||
}
|
||||
else if( ii == 0 ) { /* ----- Surface Test failed, Mixing Height=Surface ----- */
|
||||
*mh_mb = sndg[ii][pIndex];
|
||||
*mh_drct = sndg[ii][drIndex];
|
||||
*mh_sped = sndg[ii][spIndex];
|
||||
*mh_dC = -(sndg[ii+1][tIndex] - sndg[ii][tIndex] );
|
||||
*mh_lr = lapser;
|
||||
*mh_drct_max = sndg[ii][drIndex];
|
||||
*mh_sped_max = sndg[ii][spIndex];
|
||||
/* ----- Calculate Lapse Rate ----- */
|
||||
if ( qc ( snd[bb][tIndex] ) ) {
|
||||
dt = sndg[ii+1][tIndex] - sndg[bb][tIndex];
|
||||
dz = sndg[ii+1][zIndex] - sndg[bb][zIndex];
|
||||
} else {
|
||||
dt = sndg[ii+1][tIndex] - sndg[0][tIndex];
|
||||
dz = sndg[ii+1][zIndex] - sndg[0][zIndex];
|
||||
}
|
||||
lapse_rate = (dt / dz)*-1000;
|
||||
|
||||
return;
|
||||
}
|
||||
else if( ii > 0 ) { /* ----- Above Mixing Height ----- */
|
||||
/* ----- Calculate Previous Rate ----- */
|
||||
dt = sndg[ii][tIndex] - sndg[b_1][tIndex] ;
|
||||
dz = sndg[ii][zIndex] - sndg[b_1][zIndex];
|
||||
lapser_1 = (dt / dz)*-1000;
|
||||
}
|
||||
if(ii!=0){ //Chin
|
||||
*mh_mb = sndg[ii-1][pIndex];
|
||||
*mh_drct = sndg[ii-1][drIndex];
|
||||
*mh_sped = sndg[ii-1][spIndex];
|
||||
*mh_dC = -(sndg[ii][tIndex] - sndg[b_1][tIndex] );
|
||||
*mh_lr = lapser_1;
|
||||
*mh_drct_max = mdrct;
|
||||
*mh_sped_max = msped;
|
||||
/* ----- Test Lapse Rate ----- */
|
||||
if ( lapse_rate > thresh ) {
|
||||
first_level = False;
|
||||
|
||||
}
|
||||
/* ----- Store Maximum Wind Data ----- */
|
||||
if ( qc (sndg[ii+1][drIndex] ) ) {
|
||||
drct = sndg[ii+1][drIndex];
|
||||
sped = sndg[ii+1][spIndex];
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
if ( sped >= mxsped ) { // TL
|
||||
mxdrct = drct;
|
||||
mxsped = sped;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if( first_level ) { /* ----- Surface Test failed, Mixing Height=Surface ----- */
|
||||
*mh_pres = sndg[0][pIndex];
|
||||
*mh_drct = sndg[0][drIndex];
|
||||
*mh_sped = sndg[0][spIndex];
|
||||
*mh_dC = -(sndg[ii+1][tIndex] - sndg[0][tIndex]);
|
||||
*mh_lr = lapse_rate;
|
||||
*mh_drct_max = sndg[0][drIndex];
|
||||
*mh_sped_max = sndg[0][spIndex];
|
||||
|
||||
return;
|
||||
}
|
||||
else if( ii > 0 ) { /* ----- Above Mixing Height ----- */
|
||||
/* ----- Calculate lapse rate within mixing layer ----- */
|
||||
if ( qc ( sndg[b_1][tIndex]) ) {
|
||||
dt = sndg[ii][tIndex] - sndg[b_1][tIndex];
|
||||
dz = sndg[ii][zIndex] - sndg[b_1][zIndex];
|
||||
} else {
|
||||
dt = sndg[ii][tIndex] - sndg[0][tIndex];
|
||||
dz = sndg[ii][zIndex] - sndg[0][zIndex];
|
||||
}
|
||||
*mh_dC = -dt;
|
||||
if ( dz != 0. ) lapser_1 = (dt / dz)*-1000;
|
||||
*mh_pres = sndg[ii][pIndex];
|
||||
if ( qc (sndg[ii][drIndex] ) ) {
|
||||
*mh_drct = sndg[ii][drIndex];
|
||||
*mh_sped = sndg[ii][spIndex];
|
||||
} else {
|
||||
*mh_drct = drct;
|
||||
*mh_sped = sped;
|
||||
}
|
||||
*mh_lr = lapser_1;
|
||||
*mh_drct_max = mxdrct;
|
||||
*mh_sped_max = mxsped;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int cave_ww_type()
|
||||
/********************************************************************/
|
||||
/* Watch type guidance */
|
||||
|
@ -993,6 +1019,9 @@ int cave_ww_type()
|
|||
* 3: MRGL TOR, color 2 red
|
||||
* 4: TOR, color 2 red
|
||||
* 5: PDS TOR, color 7 Magenta
|
||||
*
|
||||
*
|
||||
* Chin: 10/2/2013 : modified according to BigNsharpV2013-06-12
|
||||
*/
|
||||
/********************************************************************/
|
||||
{
|
||||
|
@ -1077,15 +1106,16 @@ int cave_ww_type()
|
|||
/*printf("sig_tor=%f sig_tor_winter=%f srh1=%f esrh=%f sr46_spd=%f shr8=%f sblcl=%f\n mllcl=%f lr1=%f bot=%f low_mid_rh=%f rm_scp=%f\n mucn=%f dncp=%f sighail=%f cbsig=%f wind_dmg=%f",
|
||||
sig_tor,sig_tor_winter,srh1,esrh,sr46_spd,shr8, sblcl, mllcl, lr1, bot, low_mid_rh, rm_scp,mucn, dncp, sighail, cbsig, wind_dmg);
|
||||
Decision tree below is identical to the operational "ww_type" flow chart documentation 9/23/09 RLT */
|
||||
if ((sig_tor >= 3.0) && (sig_tor_winter >= 3.0) && (srh1 >= 150) && (esrh >= 150) && (sr46_spd >= 15.0) && (shr8 >= 40.0) && (sblcl < 1000) && (mllcl < 1100) && (lr1 >= 5.0) && (bot == 0.0)) {
|
||||
if ((sig_tor >= 3.0) && (sig_tor_winter >= 4.0) && (srh1 >=200) && (esrh >= 200) && (sr46_spd >= 15.0) && (shr8 >= 45.0) && (sblcl < 1000) && (mllcl < 1200) && (lr1 >= 5.0) && (mlcn > -50.0) && (bot == 0.0)) {
|
||||
// Chin V9 was::if ((sig_tor >= 3.0) && (sig_tor_winter >= 3.0) && (srh1 >= 150) && (esrh >= 150) && (sr46_spd >= 15.0) && (shr8 >= 40.0) && (sblcl < 1000) && (mllcl < 1100) && (lr1 >= 5.0) && (bot == 0.0)) {
|
||||
//*dcp = 1;
|
||||
//*wwtype = 5;
|
||||
ww_choice = 5;
|
||||
|
||||
/*outgtext( "PDS TOR", tlx + 45, tly + 60 );*/
|
||||
}
|
||||
|
||||
else if (((sig_tor >= 3.0) || (sig_tor_winter >= 4.0)) && (bot == 0.0)) {
|
||||
else if (((sig_tor >= 3.0) || (sig_tor_winter >= 4.0)) && (mlcn > -125.0) && (bot == 0.0)) {
|
||||
// Chin V9 was::else if (((sig_tor >= 3.0) || (sig_tor_winter >= 4.0)) && (bot == 0.0)) {
|
||||
//*dcp = 3;
|
||||
//*wwtype = 4;
|
||||
ww_choice = 4;
|
||||
|
@ -1093,7 +1123,8 @@ int cave_ww_type()
|
|||
/*outgtext( "TOR", tlx + 45, tly + 60 );*/
|
||||
}
|
||||
|
||||
else if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && ((sr46_spd >= 15.0) || (shr8 >= 40.0)) && (bot == 0.0)) {
|
||||
else if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && ((sr46_spd >= 15.0) || (shr8 >= 40.0)) && (mlcn > -75.0) && (bot == 0.0)) {
|
||||
// Chin V9 was::if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && ((sr46_spd >= 15.0) || (shr8 >= 40.0)) && (bot == 0.0)) {
|
||||
//*dcp = 4;
|
||||
//*wwtype = 4;
|
||||
ww_choice = 4;
|
||||
|
@ -1101,7 +1132,8 @@ int cave_ww_type()
|
|||
/*outgtext( "TOR", tlx + 45, tly + 60 );*/
|
||||
}
|
||||
|
||||
else if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (low_mid_rh >= 60) && (lr1 >= 5.0) && (bot == 0.0)) {
|
||||
else if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (low_mid_rh >= 60) && (lr1 >= 5.0) && (mlcn > -50.0) && (bot == 0.0)) {
|
||||
// Chin V9 was::if if (((sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (low_mid_rh >= 60) && (lr1 >= 5.0) && (bot == 0.0)) {
|
||||
//*dcp = 5;
|
||||
//*wwtype = 4;
|
||||
ww_choice = 4;
|
||||
|
@ -1110,7 +1142,8 @@ int cave_ww_type()
|
|||
outgtext( "TOR", tlx + 45, tly + 60 );*/
|
||||
}
|
||||
|
||||
else if ((( sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (bot == 0.0)) {
|
||||
else if ((( sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (mlcn > -150.0) && (bot == 0.0)) {
|
||||
// Chin V9 was:: if ((( sig_tor >= 1.0) || (sig_tor_winter >= 1.0)) && (bot == 0.0)) {
|
||||
//*dcp = 6;
|
||||
//*wwtype = 3;
|
||||
ww_choice = 3;
|
||||
|
@ -1119,7 +1152,8 @@ int cave_ww_type()
|
|||
outgtext( "mrgl TOR", tlx + 40, tly + 60 );*/
|
||||
}
|
||||
|
||||
else if (((( sig_tor >= 0.5) && (esrh >= 150)) || ((sig_tor_winter >= 0.5) && (srh1 >= 150))) && (bot == 0.0)) {
|
||||
else if (((( sig_tor >= 0.5) && (esrh >= 150)) || ((sig_tor_winter >= 0.5) && (srh1 >= 150))) && (mlcn > -50.0) && (bot == 0.0)) {
|
||||
// Chin V9 was:: if (((( sig_tor >= 0.5) && (esrh >= 150)) || ((sig_tor_winter >= 0.5) && (srh1 >= 150))) && (bot == 0.0)) {
|
||||
//*dcp = 7;
|
||||
//*wwtype = 3;
|
||||
ww_choice = 3;
|
||||
|
@ -1939,12 +1973,17 @@ void getSarsInfo(SarsInfoStr * sarsInfo)
|
|||
wind_shear(sndg[sfc()][pIndex], i_pres(msl(3000)), &ix1, &ix2, &ix3, &ix4); shr3k = ix4;
|
||||
|
||||
cavespnsharp(&mlcp, &mllcl, &t500, &lr75, &shr6k, &srh1, &nsndgs, &matches, &p1, sndglist, &suplist, &sup_filename, &shr3k, &shr9k, &srh3, &totalsndgs);
|
||||
/*
|
||||
for (i=0; i < 15; i++) sndglist[i][14] = '\0';
|
||||
printf( "%d High Quality SUPERCELL Matches were found.\n", nsndgs);
|
||||
for (i=0;i<nsndgs;i++) { printf( "SUPERCELL match = %s %.0f\n", sndglist[i]), suplist[i]; }
|
||||
printf( "%.0f Total matches were found.\n", matches);
|
||||
printf( "%.0f Percent were TOR.\n", p1);
|
||||
|
||||
/* Chin TBD::: bignsharpV2013Jun12
|
||||
* for (i=0; i < 15; i++) sndglist[i][14] = '\0';
|
||||
printf( "%d High Quality SUPERCELL Matches were found.\n", nsndgs);
|
||||
// modified loop and printf statement to properly display supercell match type - RLT 4/24/12
|
||||
for (i=0;i<nsndgs;i++) {
|
||||
j = suplist[i];
|
||||
printf( "SUPERCELL match = %s %s\n", sndglist[i], tortags[j]);
|
||||
}
|
||||
printf( "%.0f Total matches were found.\n", matches);
|
||||
printf( "%.0f Percent were TOR.\n", p1);
|
||||
*/
|
||||
// ----- Supercell SARS matches -----
|
||||
if (nsndgs>0)
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
subroutine cavesars(mumr, mucape, temp, lr, shr,
|
||||
+ km9, shr3, ship, srh, tier1,
|
||||
+ matches, p1, avsize, matches2,
|
||||
+ sndglist, haillist, fname, cnt)
|
||||
+ sndglist, haillist, fname, totalSnd)
|
||||
|
||||
c Jan 27, 2010, REJ.
|
||||
integer maob,saob
|
||||
|
||||
parameter (maob=15000) ! Max number of raobs allowed.
|
||||
parameter (saob=15) ! Number of raobs to return to NSHARP.
|
||||
|
||||
|
@ -21,9 +21,9 @@ c Jan 27, 2010, REJ.
|
|||
character datestn*15,dummy*25,matdatestn(maob)*15
|
||||
character sndglist(saob)*15, fname*(256), fname1*(256)
|
||||
|
||||
integer j,cnt,mrmat(maob),capemat(maob),tempmat(maob),
|
||||
& lrmat(maob),shrmat(maob),km9mat(maob),shr3mat(maob),golf,
|
||||
& sigm(maob),tier1,tier1cnt,srhmat(maob)
|
||||
integer cnt, maob,j,mrmat(maob),capemat(maob),tempmat(maob),
|
||||
&lrmat(maob),shrmat(maob),km9mat(maob),shr3mat(maob),golf,
|
||||
& sigm(maob),tier1,tier1cnt,srhmat(maob),totalSnd
|
||||
|
||||
c print *, "****************************************************"
|
||||
c print *, " Entering SARS fortran subroutine"
|
||||
|
@ -32,7 +32,7 @@ c print *, "****************************************************"
|
|||
1 format(a)
|
||||
|
||||
fname1 = fname(1:len_trim(fname))
|
||||
c print *, "Sars Opening input file: ", fname1(1:len_trim(fname1))
|
||||
c print *, "Opening input file: ", fname1(1:len_trim(fname1))
|
||||
open(unit=10,status='old',file=fname1,err=999,iostat=IERR)
|
||||
|
||||
************* Read file list.txt into array ********************
|
||||
|
@ -70,48 +70,48 @@ c Calculate difference in shear magnitude between sounding and match
|
|||
c count number of soundings
|
||||
cnt = j - 1
|
||||
c mixing ratio ranges (g/kg) - k1
|
||||
ranmr= 2.0
|
||||
ranmrt1= 2.0
|
||||
|
||||
c ranmr= 2.0
|
||||
c ranmrt1= 2.0
|
||||
c
|
||||
c determine cape ranges based on cape magnitude (j/kg) - k2
|
||||
|
||||
rancape = mucape*.30
|
||||
|
||||
if(mucape.lt.500.) then
|
||||
rancapet1= mucape*.50
|
||||
elseif(mucape.ge.500.0.and.mucape.lt.2000.) then
|
||||
rancapet1= mucape*.25
|
||||
else
|
||||
rancapet1= mucape*.20
|
||||
endif
|
||||
|
||||
c
|
||||
c rancape = mucape*.30
|
||||
c
|
||||
c if(mucape.lt.500.) then
|
||||
c rancapet1= mucape*.50
|
||||
c elseif(mucape.ge.500.0.and.mucape.lt.2000.) then
|
||||
c rancapet1= mucape*.25
|
||||
c else
|
||||
c rancapet1= mucape*.20
|
||||
c endif
|
||||
c
|
||||
c 700-500 mb lapse rate ranges (c/km)- k3
|
||||
ranlr= 2.0
|
||||
ranlrt1= 0.4
|
||||
|
||||
c ranlr= 2.0
|
||||
c ranlrt1= 0.4
|
||||
c
|
||||
c 500 mb temperature ranges (c) - k4
|
||||
rantemp= 9
|
||||
rantempt1= 1.5
|
||||
|
||||
c rantemp= 9
|
||||
c rantempt1= 1.5
|
||||
c
|
||||
c 0-6 km shear ranges (m/s) - k6
|
||||
ranshr= 12
|
||||
ranshrt1= 6
|
||||
|
||||
c ranshr= 12
|
||||
c ranshrt1= 6
|
||||
c
|
||||
c 0-9 shear ranges - k7
|
||||
rankm9= 22
|
||||
rankm9t1= 15
|
||||
|
||||
c rankm9= 22
|
||||
c rankm9t1= 15
|
||||
c
|
||||
c 0-3 km shear ranges (m/s) - k8
|
||||
ranshr3= 10
|
||||
ranshr3t1= 8
|
||||
|
||||
c ranshr3= 10
|
||||
c ranshr3t1= 8
|
||||
c
|
||||
c SRH shear ranges (m/s) - k9
|
||||
c ransrh = 100
|
||||
if(srh.lt.50) then
|
||||
ransrht1 = 25
|
||||
else
|
||||
ransrht1= srh*0.5
|
||||
endif
|
||||
c if(srh.lt.50) then
|
||||
c ransrht1 = 25
|
||||
c else
|
||||
c ransrht1= srh*0.5
|
||||
c endif
|
||||
*************************************************************
|
||||
c using passed sounding, check against all soundings j .
|
||||
|
||||
|
@ -124,9 +124,53 @@ c using passed sounding, check against all soundings j .
|
|||
golf = 0
|
||||
tier1 = 0
|
||||
jh = 0
|
||||
|
||||
totalSnd = cnt
|
||||
DO 99 j=1,cnt
|
||||
|
||||
c mixing ratio ranges (g/kg) - k1
|
||||
ranmr= 2.0
|
||||
ranmrt1= 2.0
|
||||
|
||||
c determine cape ranges based on cape magnitude (j/kg) - k2
|
||||
|
||||
rancape = mucape*.30
|
||||
|
||||
if(mucape.lt.500.) then
|
||||
rancapet1= mucape*.50
|
||||
elseif(mucape.ge.500.0.and.mucape.lt.2000.) then
|
||||
rancapet1= mucape*.25
|
||||
else
|
||||
rancapet1= mucape*.20
|
||||
endif
|
||||
|
||||
c 700-500 mb lapse rate ranges (c/km)- k3
|
||||
ranlr= 2.0
|
||||
ranlrt1= 0.4
|
||||
|
||||
c 500 mb temperature ranges (c) - k4
|
||||
rantemp= 9
|
||||
rantempt1= 1.5
|
||||
|
||||
c 0-6 km shear ranges (m/s) - k6
|
||||
ranshr= 12
|
||||
ranshrt1= 6
|
||||
|
||||
c 0-9 shear ranges - k7
|
||||
rankm9= 22
|
||||
rankm9t1= 15
|
||||
|
||||
c 0-3 km shear ranges (m/s) - k8
|
||||
ranshr3= 10
|
||||
ranshr3t1= 8
|
||||
|
||||
c SRH shear ranges (m/s) - k9
|
||||
c ransrh = 100
|
||||
if(srh.lt.50) then
|
||||
ransrht1 = 25
|
||||
else
|
||||
ransrht1= srh*0.5
|
||||
endif
|
||||
|
||||
|
||||
mrmat(j) = 0
|
||||
capemat(j) = 0
|
||||
|
@ -293,8 +337,8 @@ c endif
|
|||
|
||||
c matches = sigcnt + nulcnt
|
||||
|
||||
c print *, 'SARS Searching',cnt,' soundings, found',matches
|
||||
|
||||
C print *, 'SARS Searching',cnt,' soundings, found',matches
|
||||
|
||||
if(matches2.gt.0) then
|
||||
c Calculate average hail size from matches...
|
||||
avsize = avsize/matches2
|
||||
|
|
|
@ -2,11 +2,11 @@ c program sup_nsharp
|
|||
|
||||
subroutine cavespnsharp(mlcape, mllcl, temp, lr, shr,
|
||||
+ srh, tier1, matches, p1, sndglist, supl2,
|
||||
+ fname,shr3k,shr9k,srh3, cnt)
|
||||
+ fname,shr3k,shr9k,srh3, totalSnd)
|
||||
|
||||
|
||||
c SARS For Supercells
|
||||
integer saob,maob
|
||||
|
||||
parameter (maob=15000) ! Max number of raobs allowed.
|
||||
parameter (saob=15) ! Number of raobs to return to NSHARP.
|
||||
|
||||
|
@ -26,10 +26,10 @@ c SARS For Supercells
|
|||
character sndglist(saob)*15, fname*(256), fname1*(256)
|
||||
character tortype(maob)*8,suplist(saob)*8
|
||||
|
||||
integer i,j,cnt,mlmrmat(maob),mlcapemat(maob),
|
||||
integer totalSnd, cnt, maob,i,j,mlmrmat(maob),mlcapemat(maob),
|
||||
& mlcinmat(maob),mllclmat(maob),mucapemat(maob),sblclmat(maob),
|
||||
& shrmat(maob),srhmat(maob),tempmat(maob),lrmat(maob),stpmat(maob),
|
||||
& h500umat(maob),h500vmat(maob),shrcat(maob),matshrcat(maob),tier1,
|
||||
&shrmat(maob),srhmat(maob),tempmat(maob),lrmat(maob),stpmat(maob),
|
||||
&h500umat(maob),h500vmat(maob),shrcat(maob),matshrcat(maob),tier1,
|
||||
& tier1cnt,matcat(maob),srh3mat(maob)
|
||||
|
||||
c print *, "****************************************************"
|
||||
|
@ -39,7 +39,7 @@ c print *, "****************************************************"
|
|||
|
||||
1 format(a)
|
||||
fname1 = fname(1:len_trim(fname))
|
||||
c print *, "SUP Opening input file: ", fname1(1:len_trim(fname1))
|
||||
c print *, "Opening input file: ", fname1(1:len_trim(fname1))
|
||||
open(unit=10,status='old',file=fname1,err=999,iostat=IERR)
|
||||
|
||||
|
||||
|
@ -73,7 +73,6 @@ c matsrh(j) = abs(matsrh(j))
|
|||
c count number of soundings
|
||||
cnt = j - 1
|
||||
|
||||
|
||||
c mlcape ranges - k2
|
||||
ranmlcape= 1300
|
||||
ranmlcapet1 = mlcape*0.25
|
||||
|
@ -139,7 +138,7 @@ c using sounding i , check against all soundings j .
|
|||
noncnt = 0
|
||||
p1=0
|
||||
p2=0
|
||||
|
||||
totalSnd = cnt
|
||||
DO 99 j=1,cnt
|
||||
|
||||
mlcapemat(j) = 0
|
||||
|
@ -248,8 +247,8 @@ c endif
|
|||
|
||||
matches = torcnt + noncnt
|
||||
|
||||
c print *, 'SARS Supercell Searching',cnt,' soundings, found',matches
|
||||
|
||||
c print *, 'SARS Searching',cnt,' soundings, found',matches
|
||||
|
||||
if(matches.ne.0) then
|
||||
p1 = torcnt/matches*100
|
||||
p2 = noncnt/matches*100
|
||||
|
@ -280,6 +279,6 @@ c write(*,*) ''
|
|||
999 matches = 0
|
||||
p1 = 0
|
||||
tier1 = 0
|
||||
print *, "ERROR - SUPERCELL input file not found. Aborting..."
|
||||
print *, "ERROR - SARS input file not found. Aborting..."
|
||||
end
|
||||
|
||||
|
|
|
@ -20,7 +20,10 @@
|
|||
package gov.noaa.nws.ncep.ui.nsharp.display;
|
||||
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
|
||||
import gov.noaa.nws.ncep.ui.nsharp.display.map.NsharpMapResource;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpSkewTPaneResource;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpTimeStnPaneResource;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.view.NsharpShowTextDialog;
|
||||
|
||||
|
@ -76,7 +79,7 @@ public class NsharpTimeStnPaneMouseHandler extends NsharpAbstractMouseHandler{
|
|||
Coordinate c = editor.translateClick(x, y);
|
||||
if(timeStnRsc.getTimeLineRectangle().contains((int) c.x, (int) c.y) == true && this.mode == Mode.TIMELINE_DOWN) {
|
||||
//data time line has been touched, and may be changed
|
||||
timeStnRsc.getRscHandler().handleUserClickOnTimeLine(c);
|
||||
timeStnRsc.getRscHandler().handleUserClickOnTimeLine(c,shiftDown);// FixMark:clickOnTimeStnPane
|
||||
handleMouseMove(x,y);
|
||||
|
||||
NsharpShowTextDialog textarea = NsharpShowTextDialog.getAccess();
|
||||
|
@ -87,12 +90,12 @@ public class NsharpTimeStnPaneMouseHandler extends NsharpAbstractMouseHandler{
|
|||
}
|
||||
else if(timeStnRsc.getStnIdRectangle().contains((int) c.x, (int) c.y) == true && this.mode == Mode.STATIONID_DOWN) {
|
||||
//stn id line has been touched, and may be changed
|
||||
timeStnRsc.getRscHandler().handleUserClickOnStationId(c);
|
||||
timeStnRsc.getRscHandler().handleUserClickOnStationId(c,shiftDown);// FixMark:clickOnTimeStnPane
|
||||
handleMouseMove(x,y);
|
||||
}
|
||||
else if(timeStnRsc.getSndRectangle().contains((int) c.x, (int) c.y) == true && this.mode == Mode.SNDTYPE_DOWN) {
|
||||
//stn id line has been touched, and may be changed
|
||||
timeStnRsc.getRscHandler().handleUserClickOnSndLine(c);
|
||||
timeStnRsc.getRscHandler().handleUserClickOnSndLine(c,shiftDown);// FixMark:clickOnTimeStnPane
|
||||
handleMouseMove(x,y);
|
||||
}
|
||||
|
||||
|
@ -106,6 +109,31 @@ public class NsharpTimeStnPaneMouseHandler extends NsharpAbstractMouseHandler{
|
|||
}
|
||||
return false;
|
||||
}
|
||||
// FixMark:clickOnTimeStnPane
|
||||
@Override
|
||||
public boolean handleKeyDown(int keyCode) {
|
||||
//System.out.println("key down="+(char)keyCode+ " code ="+keyCode);
|
||||
|
||||
if ((keyCode & SWT.SHIFT) != 0) {
|
||||
shiftDown = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean handleKeyUp(int keyCode) {
|
||||
//String s = "key up="+(char)keyCode;
|
||||
//System.out.println(s+ " code ="+keyCode);
|
||||
if (getPaneDisplay() == null) {
|
||||
return false;
|
||||
}
|
||||
if (keyCode == SWT.SHIFT) {
|
||||
shiftDown = false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
//End FixMark:clickOnTimeStnPane
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -11,6 +11,7 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
|
|||
* ------- ------- -------- -----------
|
||||
* 04/23/2012 229 Chin Chen Initial coding
|
||||
* May 08, 2013 1847 bsteffen Allow painting with no Wind Data.
|
||||
* 02/03/2014 1106 Chin Chen Need to be able to use clicking on the Src,Time, or StnId to select display
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -175,7 +176,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
|||
this.cursorTopWindBarb = cursorTopWindBarb;
|
||||
}
|
||||
|
||||
public boolean isJustMoveToSidePane() {
|
||||
public boolean isJustMoveToSidePane() {
|
||||
return justMoveToSidePane;
|
||||
}
|
||||
|
||||
|
@ -797,7 +798,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
|||
WGraphics world, RGB iicolor, List<NcSoundingLayer> sndLys, double xPosition, double botPress)throws VizException {
|
||||
if(sndLys.size()< 4)
|
||||
return;
|
||||
//ArrayList<List<LineStroke>> windList = new ArrayList<List<LineStroke>>();
|
||||
//ArrayList<List<LineStroke>> windList = new ArrayList<List<LineStroke>>();
|
||||
List<windPickedElement> layerStateList = new ArrayList<windPickedElement>();
|
||||
float lastHeight = -9999;
|
||||
RGB icolor = iicolor;//graphConfigProperty.getWindBarbColor();
|
||||
|
@ -897,10 +898,10 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
|||
//Chin::if we want pgen to draw un-picked wind as a circle, then set this.
|
||||
spd=0.1f;
|
||||
curWbSize = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
continue;
|
||||
}
|
||||
}
|
||||
/* TBDWB
|
||||
else if(windBarbMagnify==true && cursorTopWindBarb == true && currentWindBarbSoundingLayerIndex == this.soundingLys.indexOf(layer)){
|
||||
curWbSize = wbSize*2;
|
||||
|
@ -1417,9 +1418,12 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
|||
protected void paintInternal(IGraphicsTarget target,
|
||||
PaintProperties paintProps) throws VizException {
|
||||
this.paintProps = paintProps;
|
||||
if(soundingLys==null)
|
||||
return;
|
||||
super.paintInternal(target, paintProps);
|
||||
if(soundingLys==null){
|
||||
drawNoDataMessage(target);// FixMark:clickOnTimeStnPane
|
||||
return;
|
||||
}
|
||||
|
||||
//System.out.println("skew paintInternal zoomL="+currentZoomLevel);
|
||||
if(rscHandler== null)
|
||||
return;
|
||||
|
@ -2071,6 +2075,27 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource{
|
|||
|
||||
dacpeTraceRscShape.compile();
|
||||
}
|
||||
//start FixMark:clickOnTimeStnPane
|
||||
private void drawNoDataMessage(IGraphicsTarget target){
|
||||
IExtent ext = descriptor.getRenderableDisplay().getExtent();
|
||||
double xmin = ext.getMinX(); //Extent's viewable envelope min x and y
|
||||
double xmax = ext.getMaxX();
|
||||
double xDefault = world.mapX(NsharpConstants.left);
|
||||
if(xmin <xDefault)
|
||||
xmin = xDefault;
|
||||
double x = xmin + 15 * currentZoomLevel * xRatio;
|
||||
x= (xmax-xmin)/4;
|
||||
double y = world.mapY(NsharpWxMath.getSkewTXY(300, 0).y);
|
||||
try {
|
||||
target.drawString(font12,"Data is not loaded at selected current time line/station/source", x,y, 0.0, TextStyle.BOXED,
|
||||
NsharpConstants.color_red, HorizontalAlignment.LEFT,
|
||||
VerticalAlignment.MIDDLE, null);
|
||||
} catch (VizException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
// end FixMark:clickOnTimeStnPane
|
||||
// Chin: to handle dynamically moving height mark within viewable zone when zooming, I could not use wireframeShape successfully
|
||||
// It will chop off lower part of marks. Therefore use this draw function.
|
||||
@SuppressWarnings("deprecation")
|
||||
|
|
|
@ -236,7 +236,7 @@ public class ColorMapUtil {
|
|||
|
||||
Map<LocalizationLevel, LocalizationFile> files = PathManagerFactory
|
||||
.getPathManager().getTieredLocalizationFile(
|
||||
LocalizationType.COMMON_STATIC,
|
||||
LocalizationType.CAVE_STATIC,
|
||||
NcPathConstants.LOCKED_CMAP_TBL);
|
||||
|
||||
File locCmapFile = null;
|
||||
|
|
|
@ -7,6 +7,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.io.File;
|
||||
import javax.xml.bind.JAXBException;
|
||||
|
||||
import com.raytheon.uf.common.localization.FileUpdatedMessage;
|
||||
import com.raytheon.uf.common.localization.ILocalizationAdapter;
|
||||
|
@ -56,6 +57,7 @@ import gov.noaa.nws.ncep.viz.resources.AbstractNatlCntrsRequestableResourceData;
|
|||
* 07/22/12 #568 Greg Hull return Rbds and rbdNames sorted by seq num.
|
||||
* 02/10/13 #972 Greg Hull changed to work with AbstractRbds
|
||||
* 05/19/13 #1001 Greg Hull getRbdsFromSpf(), trap RBD errors
|
||||
* 03/06/14 ? B. Yin Replaced SerializationUtil with JAXBManager.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -451,7 +453,7 @@ public class SpfsManager implements ILocalizationFileObserver {
|
|||
// group and spf
|
||||
//
|
||||
try {
|
||||
SerializationUtil.jaxbMarshalToXmlFile( rbd, rbdFile.getAbsolutePath() );
|
||||
AbstractRBD.getJaxbManager().marshalToXmlFile( rbd, rbdFile.getAbsolutePath() );
|
||||
|
||||
rbd.setLocalizationFile( lFile );
|
||||
|
||||
|
@ -463,6 +465,8 @@ public class SpfsManager implements ILocalizationFileObserver {
|
|||
|
||||
} catch (LocalizationOpFailedException e) {
|
||||
throw new VizException(e);
|
||||
} catch (JAXBException e) {
|
||||
throw new VizException(e);
|
||||
} catch (SerializationException e) {
|
||||
throw new VizException(e);
|
||||
} finally {
|
||||
|
|
|
@ -71,6 +71,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 05/20/2013 988 Archana.S Initial creation.
|
||||
* 02/26/2014 1061 B. Hebbard Relax tolerance for extent/zoom compare to avoid infinite loop.
|
||||
*/
|
||||
|
||||
public class NcPlotImageCreator {
|
||||
|
@ -219,9 +220,11 @@ public class NcPlotImageCreator {
|
|||
|
||||
private RGB defaultColor;
|
||||
|
||||
private static double TOLERANCE = 0.000000000000000000000001;
|
||||
private static double TOLERANCE = 1E-04; // 1E-24; //
|
||||
// 0.000000000000000000000001;
|
||||
|
||||
private static double ZOOM_TOLERANCE = 0.0000000000000000000001;
|
||||
private static double ZOOM_TOLERANCE = 1E-04; // 1E-22; //
|
||||
// 0.0000000000000000000001;
|
||||
|
||||
private static Amount WIND_SPD_3KNOTS = new Amount(3, NonSI.KNOT);
|
||||
|
||||
|
|
|
@ -52,6 +52,19 @@ import com.raytheon.uf.viz.core.exception.VizException;
|
|||
import com.raytheon.uf.viz.core.jobs.JobPool;
|
||||
import com.raytheon.viz.pointdata.PointDataRequest;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 05/20/2013?? 988 Archana.S Initial creation.
|
||||
* 02/26/2014 1061 B. Hebbard Don't block on JobPool cancel, so CAVE doesn't freeze if resource unloaded during long retrieval
|
||||
*/
|
||||
|
||||
public class NcPlotModelHdf5DataRequestor {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
|
||||
|
@ -136,6 +149,10 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
|
||||
Map<String, RequestConstraint> condFilterMap = null;
|
||||
|
||||
// Indicates the dataRequestJobPool is being cancelled, so jobs
|
||||
// should just exit gracefully on return from a long HDF5 request.
|
||||
private boolean canceling = false;
|
||||
|
||||
// Map< AbstractMetParameter, RequestConstraint >
|
||||
// condMetParamReqConstraintMap = null;
|
||||
public void queueStationsForHdf5Query(DataTime dt,
|
||||
|
@ -183,7 +200,8 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
allMetParamsMap = new HashMap<String, AbstractMetParameter>();
|
||||
plotPrmDefns = PlotParameterDefnsMngr.getInstance().getPlotParamDefns(
|
||||
plotModel.getPlugin());
|
||||
dataRequestJobPool = new JobPool("Requesting HDF5 data...", 8, false);
|
||||
dataRequestJobPool = new JobPool("Requesting met param data...", 8,
|
||||
false);
|
||||
queueOfStations = new ConcurrentLinkedQueue<QueueEntry>();
|
||||
parameters = new String[0];
|
||||
metParamNameToDbNameMap = new HashMap<String, String>();
|
||||
|
@ -700,8 +718,10 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
public void dispose() {
|
||||
Tracer.print("> Entry");
|
||||
Tracer.print("Invoking NcPlotModelHdf5DataRequestor.dispose()");
|
||||
canceling = true;
|
||||
if (dataRequestJobPool != null) {
|
||||
dataRequestJobPool.cancel();
|
||||
dataRequestJobPool.cancel(false); // false = don't wait for jobs to
|
||||
// complete
|
||||
dataRequestJobPool = null;
|
||||
}
|
||||
imageCreator.dispose();
|
||||
|
@ -1229,6 +1249,7 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
private Collection<Station> requestSurfaceData(DataTime time,
|
||||
List<Station> listOfStationsRequestingForData) {
|
||||
Tracer.print("> Entry " + Tracer.shortTimeString(time));
|
||||
|
||||
// sem1.acquireUninterruptibly();
|
||||
Map<String, Station> stationMap = new HashMap<String, Station>(
|
||||
listOfStationsRequestingForData.size());
|
||||
|
@ -1467,6 +1488,7 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
.shortTimeString(time)
|
||||
+ " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ " "
|
||||
+ currentStation.info.stationId
|
||||
+ " "
|
||||
+ " from pkeySet updating prmToPlot(Key) "
|
||||
|
@ -1479,6 +1501,7 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
.shortTimeString(time)
|
||||
+ " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ " "
|
||||
+ currentStation.info.stationId
|
||||
+ " "
|
||||
+ " prmToPlot non-null "
|
||||
|
@ -1492,6 +1515,7 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
.shortTimeString(time)
|
||||
+ " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ " "
|
||||
+ currentStation.info.stationId
|
||||
+ " "
|
||||
+ " from pkeySet updating prmToPlot(Key) "
|
||||
|
@ -1523,6 +1547,7 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
Tracer.print(Tracer.shortTimeString(time)
|
||||
+ " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ " "
|
||||
+ currentStation.info.stationId
|
||||
+ " "
|
||||
+ " NULL metPrm return from dbParamsMap for key -- skipping"
|
||||
|
@ -1572,9 +1597,9 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
if (jfk)
|
||||
Tracer.print(Tracer.shortTimeString(time) + " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ currentStation.info.stationId + " "
|
||||
+ " before setMetParamFromPDV " + dbPrm
|
||||
+ " " + metPrm);
|
||||
+ " " + currentStation.info.stationId
|
||||
+ " " + " before setMetParamFromPDV "
|
||||
+ dbPrm + " " + metPrm);
|
||||
|
||||
/*
|
||||
* Set the value for Met parameters from the
|
||||
|
@ -1584,9 +1609,9 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
if (jfk)
|
||||
Tracer.print(Tracer.shortTimeString(time) + " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ currentStation.info.stationId + " "
|
||||
+ " after setMetParamFromPDV " + dbPrm
|
||||
+ " " + metPrm);
|
||||
+ " " + currentStation.info.stationId
|
||||
+ " " + " after setMetParamFromPDV "
|
||||
+ dbPrm + " " + metPrm);
|
||||
|
||||
// if(
|
||||
// metPrm.getMetParamName().compareTo("StationID")
|
||||
|
@ -1617,9 +1642,9 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
if (jfk)
|
||||
Tracer.print(Tracer.shortTimeString(time) + " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ currentStation.info.stationId + " "
|
||||
+ " after put " + dbPrm + " " + metPrm
|
||||
+ " into dbParamsMap");
|
||||
+ " " + currentStation.info.stationId
|
||||
+ " " + " after put " + dbPrm + " "
|
||||
+ metPrm + " into dbParamsMap");
|
||||
|
||||
if (condFilterMap != null
|
||||
&& !condFilterMap.isEmpty()) {
|
||||
|
@ -1734,6 +1759,7 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
Tracer.print(Tracer.shortTimeString(time)
|
||||
+ " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ " "
|
||||
+ currentStation.info.stationId
|
||||
+ " " + " trying to add metParam "
|
||||
+ metParam);
|
||||
|
@ -1744,6 +1770,7 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
.shortTimeString(time)
|
||||
+ " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ " "
|
||||
+ currentStation.info.stationId
|
||||
+ " "
|
||||
+ " newPrm NULL from newInstance -- skipping!!! "
|
||||
|
@ -1755,6 +1782,7 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
Tracer.print(Tracer.shortTimeString(time)
|
||||
+ " "
|
||||
+ Tracer.shortTimeString(dataTime)
|
||||
+ " "
|
||||
+ currentStation.info.stationId
|
||||
+ " " + " added newPrm " + newPrm);
|
||||
}
|
||||
|
@ -2061,9 +2089,14 @@ public class NcPlotModelHdf5DataRequestor {
|
|||
|
||||
Tracer.sanityCheckStationSet(stationsWithData);
|
||||
|
||||
if (stationsWithData.size() > 0)
|
||||
if (canceling) {
|
||||
Tracer.print("CANCEL in progress; no plot creation will occur for frame "
|
||||
+ Tracer.shortTimeString(time));
|
||||
|
||||
} else if (stationsWithData.size() > 0) {
|
||||
imageCreator.queueStationsToCreateImages(time,
|
||||
stationsWithData, plotDensity);
|
||||
}
|
||||
|
||||
Tracer.print("< Exit END TASK " + Tracer.shortTimeString(time));
|
||||
|
||||
|
|
|
@ -32,9 +32,25 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
|
||||
//import org.hibernate.mapping.Array;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 05/20/2013 988 Archana.S Initial creation.
|
||||
* 02/26/2014 1061 B. Hebbard Relax tolerance for extent/zoom compare to avoid infinite loop.
|
||||
*/
|
||||
|
||||
public final class ProgressiveDisclosure {
|
||||
|
||||
private final static double TOLERANCE = 0.0000000001;// 0.00000001;//0.000000000001;
|
||||
private final static double TOLERANCE = 1E-03; // 0.0000000001;//
|
||||
// 0.00000001;//0.000000000001;
|
||||
|
||||
private final static double ZOOM_TOLERANCE = TOLERANCE; // need different?
|
||||
|
||||
private ConcurrentLinkedQueue<QueueEntry> queueOfStationsToBeDisclosed;
|
||||
|
||||
|
@ -308,7 +324,7 @@ public final class ProgressiveDisclosure {
|
|||
}
|
||||
}
|
||||
|
||||
if (Math.abs(progDiscTask.zoomLevel - activePane.getZoomLevel()) > 0.00000000000001) {
|
||||
if (Math.abs(progDiscTask.zoomLevel - activePane.getZoomLevel()) > ZOOM_TOLERANCE) {
|
||||
progDiscTask.zoomLevel = activePane.getZoomLevel();
|
||||
progDiscTask.extent = currViewExtents.clone();
|
||||
Tracer.print("Changed zoom level");
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.text.ParseException;
|
|||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
@ -28,6 +29,8 @@ import java.util.Map;
|
|||
import java.util.TimeZone;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.opengis.referencing.FactoryException;
|
||||
import org.opengis.referencing.operation.TransformException;
|
||||
|
@ -38,8 +41,10 @@ import com.raytheon.uf.common.colormap.prefs.DataMappingPreferences;
|
|||
import com.raytheon.uf.common.colormap.prefs.DataMappingPreferences.DataMappingEntry;
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.geospatial.ReferencedCoordinate;
|
||||
import com.raytheon.uf.common.serialization.JAXBManager;
|
||||
import com.raytheon.uf.common.serialization.SerializationException;
|
||||
import com.raytheon.uf.common.serialization.SerializationUtil;
|
||||
import com.raytheon.uf.common.serialization.jaxb.JAXBClassLocator;
|
||||
import com.raytheon.uf.common.serialization.jaxb.JaxbDummyObject;
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
|
@ -53,12 +58,14 @@ import com.raytheon.uf.common.style.image.DataScale;
|
|||
import com.raytheon.uf.common.style.image.DataScale.Type;
|
||||
import com.raytheon.uf.common.style.image.ImagePreferences;
|
||||
import com.raytheon.uf.common.style.image.SamplePreferences;
|
||||
import com.raytheon.uf.common.style.level.Level;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
|
||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
||||
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
||||
import com.raytheon.uf.viz.core.drawables.ResourcePair;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.reflect.SubClassLocator;
|
||||
import com.raytheon.uf.viz.core.rsc.IInputHandler;
|
||||
import com.raytheon.uf.viz.core.rsc.IInputHandler.InputPriority;
|
||||
import com.raytheon.uf.viz.core.rsc.IResourceDataChanged;
|
||||
|
@ -90,6 +97,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* 12/16/2013 #958 sgurung Set virtual cursor to point to lat/lon instead of pixel coordinates (in multipnaes)
|
||||
* 12/27/2013 #1046 qzhou Added getFunctioningRecords method
|
||||
* Sep 5,2013 2051 mnash Fixed a deprecated method.
|
||||
* 02/27/2014 qzhou Changed SerializaitionUtil to JAXBManager. Added getJaxbManager function
|
||||
* </pre>
|
||||
*
|
||||
* @author qzhou, sgurung
|
||||
|
@ -136,6 +144,8 @@ public class SolarImageResource extends
|
|||
|
||||
private RGB rgbB;
|
||||
|
||||
private static JAXBManager jaxb;
|
||||
|
||||
protected static class SampleResult {
|
||||
|
||||
public SampleResult() {
|
||||
|
@ -260,7 +270,6 @@ public class SolarImageResource extends
|
|||
return legendStr;
|
||||
}
|
||||
|
||||
// TODO : probably not correct : fix this as it needs to be.
|
||||
public void setLegendForFrame(SolarImageRecord rec) {
|
||||
|
||||
String timeStr = dateFmt.format(rec.getDataTime().getRefTime());
|
||||
|
@ -393,7 +402,6 @@ public class SolarImageResource extends
|
|||
sampleCoord);
|
||||
}
|
||||
|
||||
// TODO : draw the lat lon lines even if there is no image?
|
||||
if (isLatLonOverlayOn()) {
|
||||
try {
|
||||
if (isCarrington) {
|
||||
|
@ -838,6 +846,31 @@ public class SolarImageResource extends
|
|||
return NcPathConstants.SOLAR_IMG_STYLE_RULES;
|
||||
}
|
||||
|
||||
public static synchronized JAXBManager getJaxbManager()
|
||||
throws JAXBException {
|
||||
if (jaxb == null) {
|
||||
SubClassLocator locator = new SubClassLocator();
|
||||
Collection<Class<?>> classes = JAXBClassLocator.getJAXBClasses(
|
||||
locator, StyleRuleset.class, StyleRule.class, Level.class,
|
||||
AbstractStylePreferences.class, MatchCriteria.class);
|
||||
|
||||
locator.save();
|
||||
|
||||
Class<?>[] jaxbClasses = new Class<?>[classes.size() + 1];
|
||||
classes.toArray(jaxbClasses);
|
||||
|
||||
/*
|
||||
* Add JaxbDummyObject at the beginning so properties are loaded
|
||||
* correctly
|
||||
*/
|
||||
jaxbClasses[jaxbClasses.length - 1] = jaxbClasses[0];
|
||||
jaxbClasses[0] = JaxbDummyObject.class;
|
||||
|
||||
jaxb = new JAXBManager(jaxbClasses);
|
||||
}
|
||||
return jaxb;
|
||||
}
|
||||
|
||||
private void setColorMapParametersAndColorBar() throws VizException {
|
||||
double minPixVal = Double.NaN;
|
||||
double maxPixVal = Double.NaN;
|
||||
|
@ -881,8 +914,10 @@ public class SolarImageResource extends
|
|||
File file = NcPathManager.getInstance().getStaticFile(locFileName);
|
||||
StyleRule sRule = null;
|
||||
try {
|
||||
StyleRuleset styleSet = (StyleRuleset) SerializationUtil
|
||||
.jaxbUnmarshalFromXmlFile(StyleRuleset.class, file);
|
||||
StyleRuleset styleSet = (StyleRuleset) getJaxbManager()
|
||||
.unmarshalFromXmlFile(file);
|
||||
|
||||
// .jaxbUnmarshalFromXmlFile(StyleRuleset.class, file);
|
||||
|
||||
if (styleSet != null) {
|
||||
List<StyleRule> styleRuleList = styleSet.getStyleRules();
|
||||
|
@ -932,6 +967,9 @@ public class SolarImageResource extends
|
|||
}
|
||||
|
||||
}
|
||||
} catch (JAXBException e) {
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
|
||||
|
||||
} catch (SerializationException e1) {
|
||||
|
||||
e1.printStackTrace();
|
||||
|
|
Loading…
Add table
Reference in a new issue