def get_fire(self): ''' Function to generate different indices and information regarding any fire weather in the sounding. This helps fill the data shown in the FIRE inset. Parameters ---------- None Returns ------- None ''' self.fosberg = fire.fosberg(self) self.ppbl_top = params.pbl_top(self) self.sfc_rh = thermo.relh(self.pres[self.sfc], self.tmpc[self.sfc], self.dwpc[self.sfc]) pres_sfc = self.pres[self.sfc] pres_1km = interp.pres(self, interp.to_msl(self, 1000.)) pbl_h = interp.to_agl(self, interp.hght(self, self.ppbl_top)) self.rh01km = params.mean_relh(self, pbot=pres_sfc, ptop=pres_1km) self.pblrh = params.mean_relh(self, pbot=pres_sfc, ptop=self.ppbl_top) self.meanwind01km = winds.mean_wind(self, pbot=pres_sfc, ptop=pres_1km) self.meanwindpbl = winds.mean_wind(self, pbot=pres_sfc, ptop=self.ppbl_top) self.pblmaxwind = winds.max_wind(self, lower=0, upper=pbl_h) #self.pblmaxwind = [np.ma.masked, np.ma.masked] mulplvals = params.DefineParcel(self, flag=3, pres=500) mupcl = params.cape(self, lplvals=mulplvals) self.bplus_fire = mupcl.bplus
def get_thermo(self): ''' Function to generate thermodynamic indices. Function returns nothing, but sets the following variables: self.k_idx - K Index, a severe weather index self.pwat - Precipitable Water Vapor (inches) self.lapserate_3km - 0 to 3km AGL lapse rate (C/km) self.lapserate_3_6km - 3 to 6km AGL lapse rate (C/km) self.lapserate_850_500 - 850 to 500mb lapse rate (C/km) self.lapserate_700_500 - 700 to 500mb lapse rate (C/km) self.convT - The Convective Temperature (F) self.maxT - The Maximum Forecast Surface Temp (F) self.mean_mixr - Mean Mixing Ratio self.low_rh - low level mean relative humidity self.mid_rh - mid level mean relative humidity self.totals_totals - Totals Totals index, a severe weather index Parameters ---------- None Returns ------- None ''' ## either get or calculate the indices, round to the nearest int, and ## convert them to strings. ## K Index self.k_idx = params.k_index( self ) ## precipitable water self.pwat = params.precip_water( self ) ## 0-3km agl lapse rate self.lapserate_3km = params.lapse_rate( self, 0., 3000., pres=False ) ## 3-6km agl lapse rate self.lapserate_3_6km = params.lapse_rate( self, 3000., 6000., pres=False ) ## 850-500mb lapse rate self.lapserate_850_500 = params.lapse_rate( self, 850., 500., pres=True ) ## 700-500mb lapse rate self.lapserate_700_500 = params.lapse_rate( self, 700., 500., pres=True ) ## 2-6 km max lapse rate self.max_lapse_rate_2_6 = params.max_lapse_rate( self ) ## convective temperature self.convT = thermo.ctof( params.convective_temp( self ) ) ## sounding forecast surface temperature self.maxT = thermo.ctof( params.max_temp( self ) ) #fzl = str(int(self.sfcparcel.hght0c)) ## 100mb mean mixing ratio self.mean_mixr = params.mean_mixratio( self ) ## 150mb mean rh self.low_rh = params.mean_relh( self ) self.mid_rh = params.mean_relh( self, pbot=(self.pres[self.sfc] - 150), ptop=(self.pres[self.sfc] - 350) ) ## calculate the totals totals index self.totals_totals = params.t_totals( self ) ## calculate the inferred temperature advection self.inf_temp_adv = params.inferred_temp_adv(self, lat=self.latitude)
def get_thermo(self): ''' Function to generate thermodynamic indices. Function returns nothing, but sets the following variables: self.k_idx - K Index, a severe weather index self.pwat - Precipitable Water Vapor (inches) self.lapserate_3km - 0 to 3km AGL lapse rate (C/km) self.lapserate_3_6km - 3 to 6km AGL lapse rate (C/km) self.lapserate_850_500 - 850 to 500mb lapse rate (C/km) self.lapserate_700_500 - 700 to 500mb lapse rate (C/km) self.convT - The Convective Temperature (F) self.maxT - The Maximum Forecast Surface Temp (F) self.mean_mixr - Mean Mixing Ratio self.low_rh - low level mean relative humidity self.mid_rh - mid level mean relative humidity self.totals_totals - Totals Totals index, a severe weather index Parameters ---------- None Returns ------- None ''' ## either get or calculate the indices, round to the nearest int, and ## convert them to strings. ## K Index self.k_idx = params.k_index( self ) ## precipitable water self.pwat = params.precip_water( self ) ## 0-3km agl lapse rate self.lapserate_3km = params.lapse_rate( self, 0., 3000., pres=False ) ## 3-6km agl lapse rate self.lapserate_3_6km = params.lapse_rate( self, 3000., 6000., pres=False ) ## 850-500mb lapse rate self.lapserate_850_500 = params.lapse_rate( self, 850., 500., pres=True ) ## 700-500mb lapse rate self.lapserate_700_500 = params.lapse_rate( self, 700., 500., pres=True ) ## convective temperature self.convT = thermo.ctof( params.convective_temp( self ) ) ## sounding forecast surface temperature self.maxT = thermo.ctof( params.max_temp( self ) ) #fzl = str(int(self.sfcparcel.hght0c)) ## 100mb mean mixing ratio self.mean_mixr = params.mean_mixratio( self ) ## 150mb mean rh self.low_rh = params.mean_relh( self ) self.mid_rh = params.mean_relh( self, pbot=(self.pres[self.sfc] - 150), ptop=(self.pres[self.sfc] - 350) ) ## calculate the totals totals index self.totals_totals = params.t_totals( self ) ## calculate the inferred temperature advection self.inf_temp_adv = params.inferred_temp_adv(self)
def get_precip(self): ''' Function to generate different indices and information regarding any precipitation in the sounding. This helps fill the data shown in the WINTER inset. Returns nothing, but sets the following variables: self.dgz_pbot, self.dgz_ptop : the dendretic growth zone (DGZ) top and bottom (mb) self.dgz_meanrh : DGZ mean relative humidity (%) self.dgz_pw : the preciptable water vapor in the DGZ (inches) self.dgz_meanq : the mean water vapor mixing ratio in the DGZ (g/kg) self.dgz_meanomeg : the mean omega in the DGZ (microbars/second) self.oprh : the OPRH variable (units don't mean anything) self.plevel, self.phase, self.tmp, self.st : the initial phase, level, temperature, and state of any precip in the sounding self.tpos, self.tneg, self.ttop, self.tbot : positive and negative temperature layers in the sounding self.wpos, self.wneg, self.wtop, self.wbot : positive and negative wetbulb layers in the soundings self.precip_type : the best guess precipitation type Parameters ---------- None Returns ------- None ''' self.dgz_pbot, self.dgz_ptop = params.dgz(self) self.dgz_meanrh = params.mean_relh(self, pbot=self.dgz_pbot, ptop=self.dgz_ptop) self.dgz_pw = params.precip_water(self, pbot=self.dgz_pbot, ptop=self.dgz_ptop) self.dgz_meanq = params.mean_mixratio(self, pbot=self.dgz_pbot, ptop=self.dgz_ptop) self.dgz_meanomeg = params.mean_omega( self, pbot=self.dgz_pbot, ptop=self.dgz_ptop) * 10 # to microbars/sec self.oprh = self.dgz_meanomeg * self.dgz_pw * (self.dgz_meanrh / 100.) self.plevel, self.phase, self.tmp, self.st = watch_type.init_phase( self) self.tpos, self.tneg, self.ttop, self.tbot = watch_type.posneg_temperature( self, start=self.plevel) self.wpos, self.wneg, self.wtop, self.wbot = watch_type.posneg_wetbulb( self, start=self.plevel) self.precip_type = watch_type.best_guess_precip( self, self.phase, self.plevel, self.tmp, self.tpos, self.tneg)
def get_precip(self): ''' Function to generate different indices and information regarding any precipitation in the sounding. This helps fill the data shown in the WINTER inset. Returns nothing, but sets the following variables: self.dgz_pbot, self.dgz_ptop : the dendretic growth zone (DGZ) top and bottom (mb) self.dgz_meanrh : DGZ mean relative humidity (%) self.dgz_pw : the preciptable water vapor in the DGZ (inches) self.dgz_meanq : the mean water vapor mixing ratio in the DGZ (g/kg) self.dgz_meanomeg : the mean omega in the DGZ (microbars/second) self.oprh : the OPRH variable (units don't mean anything) self.plevel, self.phase, self.tmp, self.st : the initial phase, level, temperature, and state of any precip in the sounding self.tpos, self.tneg, self.ttop, self.tbot : positive and negative temperature layers in the sounding self.wpos, self.wneg, self.wtop, self.wbot : positive and negative wetbulb layers in the soundings self.precip_type : the best guess precipitation type Parameters ---------- None Returns ------- None ''' self.dgz_pbot, self.dgz_ptop = params.dgz(self) self.dgz_meanrh = params.mean_relh(self, pbot=self.dgz_pbot, ptop=self.dgz_ptop) self.dgz_pw = params.precip_water(self, pbot=self.dgz_pbot, ptop=self.dgz_ptop) self.dgz_meanq = params.mean_mixratio(self, pbot=self.dgz_pbot, ptop=self.dgz_ptop) self.dgz_meanomeg = params.mean_omega(self, pbot=self.dgz_pbot, ptop=self.dgz_ptop) * 10 # to microbars/sec self.oprh = self.dgz_meanomeg * self.dgz_pw * (self.dgz_meanrh/100.) self.plevel, self.phase, self.tmp, self.st = watch_type.init_phase(self) self.tpos, self.tneg, self.ttop, self.tbot = watch_type.posneg_temperature(self, start=self.plevel) self.wpos, self.wneg, self.wtop, self.wbot = watch_type.posneg_wetbulb(self, start=self.plevel) self.precip_type = watch_type.best_guess_precip(self, self.phase, self.plevel, self.tmp, self.tpos, self.tneg)
''' Create the Sounding (Profile) Object '''
if m15_rh > 50: date = datetime.datetime.strptime(datestring, "%m%d%y/%H%M") # this returns a SHARPPy profile, including theta-e and wetbulb prof = profile.create_profile(profile='default', pres=pres, hght=hght, tmpc=tmpc, \ dwpc=dwpc, wspd=wspd, wdir=wdir, missing=-9999, date=date, \ location=loc, strictQC=True) prof = interpZeroTemps(prof) prof = interpZeroWetbulbs(prof) #mean_rh_tmp = params.mean_relh(prof) mean_rh = params.mean_relh(prof, ptop=400) # print mean_rh #if prof.tmpc[0] > -12: #dgz_pbot, dgz_ptop = params.dgz(prof) dgz_pbot, dgz_ptop = dgz(prof) # If DGZ properly decreases in pressure, meaning both # the top and bottom were found, proceed. if dgz_pbot > dgz_ptop: dgz_meanrh = params.mean_relh(prof, pbot=dgz_pbot, ptop=dgz_ptop)