コード例 #1
0
    def getVertVars(self):
        u = wrf.unstaggerX(np.squeeze(self.readNCVariable('U')))
        v = wrf.unstaggerY(np.squeeze(self.readNCVariable('V')))
        w = wrf.unstaggerZ(np.squeeze(self.readNCVariable('W')))
        ph = np.squeeze(self.readNCVariable('PH'))
        phb = np.squeeze(self.readNCVariable('PHB'))
        p = np.squeeze(self.readNCVariable('P'))
        pb = np.squeeze(self.readNCVariable('PB'))
        press = (p + pb) / 100.
        height = wrf.unstaggerZ((ph + phb) / 9.81) / 1000.

        return u, v, w, press, height
コード例 #2
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
    def shear0_6km(self):

        #get the height array in reference to ground level
        height = wrf.unstaggerZ(self.height) - wrf.unstaggerZ(self.height)[0,:,:]
        u = self.dataSet.readNCVariable('U')
        v = self.dataSet.readNCVariable('V')
        ref_val = 6000. # meters
        self.u10, self.v10, var1 = wrf.get_shear(u, v, height, ref_val)
        self.var = wrf.convertWind_MStoKT(var1)
        self.var2 = self.var
        self.varTitle = "0-6km Shear (knots)\n" + self.dataSet.getTime()        
        #Set short variable title for time series
        self.sTitle = "0-6km Shear (knots)"
コード例 #3
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
    def bulk_rich(self):
        u = self.dataSet.readNCVariable('U')
        v = self.dataSet.readNCVariable('V')
        qv = self.dataSet.readNCVariable('QVAPOR')
        u_corr = wrf.unstaggerX(u)
        v_corr = wrf.unstaggerY(v)
        tv = self.temp*(1+0.611*qv)
        thetav = self.theta*(1+0.611*qv)
        height = wrf.unstaggerZ(self.height)

        #compute the vertical gradient of theta
        dtheta = np.gradient(thetav)[0]
        dz = np.gradient(height)[0]
        du = np.gradient(u_corr)[0]
        dv = np.gradient(v_corr)[0]
        print(np.min(dtheta),np.max(dtheta),np.min(dz),np.max(dz))
        print(np.mean(du),np.mean(dv))
        print(np.min(du),np.max(du),np.min(dv),np.max(dv))
        #compute bulk richardson number
        self.u10 = u_corr
        self.v10 = v_corr
        self.var = ((self.g/tv)*(dtheta)*dz)/((du)**2+(dv)**2)
        self.var2 = self.var
        self.varTitle = 'Bulk Richardson number\n' + self.dataSet.getTime()
        #Set short variable title for time series
        self.sTitle = 'Bulk Richardson number'
コード例 #4
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
    def froude(self):
        u = self.dataSet.readNCVariable('U')
        v = self.dataSet.readNCVariable('V')
        u_corr = wrf.unstaggerX(u)
        v_corr = wrf.unstaggerY(v)
        self.u10 = u_corr
        self.v10 = v_corr
        wind = (u_corr*u_corr + v_corr*v_corr)**(0.5)
        height = wrf.unstaggerZ(self.height)
        
        #compute the vertical gradient of theta
        dtheta = np.gradient(self.theta)[0]
        dz = np.gradient(height)[0]
 
        #calculate the Brunt-Vaisala Frequency
        dtheta_dz = dtheta/dz
        dims = dtheta_dz.shape
        N = np.zeros((dims[0],dims[1],dims[2]))
        #Account for statically unstable and neutral conditions
        N[dtheta_dz<=0] = 0.00001
        N[dtheta_dz>0] = ((self.g/self.theta[dtheta_dz>0])*(dtheta_dz[dtheta_dz>0]))**(0.5)
        self.var = wind/(height*N)
        self.var2 = self.var
        self.varTitle = "Froude Number\n" + self.dataSet.getTime()
        #Set short variable title for time series
        self.sTitle = "Froude Number"
コード例 #5
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
 def cape_MU(self):
     #Switched to Cython
     #self.var, self.var2 = wrf.get_cape(self.temp,self.qvapor,
     #                      self.press,self.height,'most_unstable')
     height = wrf.unstaggerZ(self.height)
     self.var, self.var2 = wrf_cython.cape_mu(self.temp,self.qvapor,
                           self.press,height)
     self.varTitle = "Most Unstable CAPE (J kg$^{-1}$)\n"+ self.dataSet.getTime()
     #Set short variable title for time series
     self.sTitle = "Most Unstable CAPE (J kg$^{-1}$)"
コード例 #6
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
 def cin_ML(self):
     #Sitched to Cython
     #self.var2, self.var = wrf.get_cape(self.temp,self.qvapor,
     #                      self.press,self.height,'mixed_layer')
     height = wrf.unstaggerZ(self.height)
     self.var2, self.var = np.array(wrf_cython.cape_ml(self.temp,self.qvapor,
                           self.press,height))
     self.var *= -1
     self.varTitle = "Mixed Layer CIN (J kg$^{-1}$)\n"+ self.dataSet.getTime()
     #Set short variable title for time series
     self.sTitle = "Mixed Layer CIN (J kg$^{-1}$)"
コード例 #7
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
 def cin_SB(self):
     #Switched to Cython
     #self.var2, self.var = wrf.get_cape(self.temp,self.qvapor,
     #                      self.press,self.height,'surface_based')
     height = wrf.unstaggerZ(self.height)
     self.var2, self.var = np.array(wrf_cython.cape_sb(self.temp,self.qvapor,
                           self.press,height))        
     self.var *= -1
     self.varTitle = "Surface-Based CIN (J kg$^{-1}$)\n"+ self.dataSet.getTime()
     #Set short variable title for time series
     self.sTitle = "Surface-Based CIN (J kg$^{-1}$)"
コード例 #8
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
 def mean_layer_temp(self):
     height = wrf.unstaggerZ(self.height)
     pblh = self.dataSet.readNCVariable('PBLH')
     #Calculate mean layer temperature
     #Switch to Cython
     #self.var = wrf.mean_layer(self.temp,height,0,pblh)
     points = pblh.shape
     ref1 = np.zeros((points[1],points[0]),dtype=np.float32)
     self.var = wrf_cython.mean_layer(self.temp,height,ref1,pblh)
     self.var2 = self.var
     self.varTitle = "Mean Layer Temperature (K) \n"+ self.dataSet.getTime()
     #Set short variable title for time series
     self.sTitle = "Mean Layer Temperature (K)"
コード例 #9
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
    def refl(self):

        if 'REFL_10CM' not in self.dataSet.variableList:
            qrain = self.dataSet.readNCVariable('QRAIN')
            qsnow = self.dataSet.readNCVariable('QSNOW')
            qgraup = self.dataSet.readNCVariable('QGRAUP')
            height = wrf.unstaggerZ(self.height)
            self.var = wrf.get_refl(qrain, qgraup, qsnow, self.rho, self.temp, self.height)
            self.var2 = self.var
        if 'REFL_10CM' in self.dataSet.variableList:
            tmp = self.dataSet.readNCVariable('REFL_10CM')
            if self.dataSet.dx[self.dataSet.currentGrid-1] < 12000.:
                #get the index 1.5-km AGL
                height = wrf.unstaggerZ(self.height)
                diff = (self.height) - (self.height[0,:,:]+1500.)
                zz = min(np.where(diff > 0)[0])
                self.var = np.amax(tmp[0:zz,:,:], axis=0)
            else:
                 self.var = np.amax(tmp,axis=0)
            self.var2 = self.var
        self.varTitle = "0-1km Simulated Radar Reflectivity (dBZ)\n" + self.dataSet.getTime()
        #Set short variable title for time series
        self.sTitle = "0-1km Simulated Radar Reflectivity (dBZ)"
コード例 #10
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
    def hgt_500mb(self):

        u = self.dataSet.readNCVariable('U')
        v = self.dataSet.readNCVariable('V')
        u_corr = wrf.unstaggerX(u)
        v_corr = wrf.unstaggerY(v)
        height = wrf.unstaggerZ(self.height)
        ref_val = 50000.
        #Switched to Cython
        #self.u10 = wrf.loglinear_interpolate(u_corr, self.press, ref_val)
        #self.v10 = wrf.loglinear_interpolate(v_corr, self.press, ref_val)
        self.u10 = np.array(wrf_cython.loglinear_interpolate(u_corr, self.press, ref_val))
        self.v10 = np.array(wrf_cython.loglinear_interpolate(v_corr, self.press, ref_val))
        #self.var = wrf.hypsometric(height,self.press, ref_val, self.temp)
        self.var = np.array(wrf_cython.hypsometric(height, self.press, ref_val, self.temp))
        self.var2 = self.var
        self.varTitle = "500-mb Geopotential Height (m)\n" + self.dataSet.getTime()
        #Set short variable title for time series
        self.sTitle = "500-mb Geopotential Height (m)"
コード例 #11
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
 def winds_300mb(self):
     
     u = self.dataSet.readNCVariable('U')
     v = self.dataSet.readNCVariable('V')
     u_corr = wrf.unstaggerX(u)
     v_corr = wrf.unstaggerY(v)
     height = wrf.unstaggerZ(self.height)
     ref_val = 30000.
     #Switched to Cython
     #self.u10 = wrf.loglinear_interpolate(u_corr, self.press, ref_val)
     #self.v10 = wrf.loglinear_interpolate(v_corr, self.press, ref_val)
     self.u10 = np.array(wrf_cython.loglinear_interpolate(u_corr, self.press, ref_val))
     self.v10 = np.array(wrf_cython.loglinear_interpolate(v_corr, self.press, ref_val))
     var1 = wrf.get_bulk_wind(self.u10,self.v10)
     self.var = wrf.convertWind_MStoKT(var1)
     #self.var2 = wrf.hypsometric(height, self.press, ref_val, self.temp)
     self.var2 = np.array(wrf_cython.hypsometric(height, self.press, ref_val, self.temp))
     self.varTitle = "300-mb Wind\n" + self.dataSet.getTime()
     #Set short variable title for time series
     self.sTitle = "300-mb Wind"
コード例 #12
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
    def richardson(self):
        u = self.dataSet.readNCVariable('U')
        v = self.dataSet.readNCVariable('V')
        u_corr = wrf.unstaggerX(u)
        v_corr = wrf.unstaggerY(v)
        wind = (u_corr*u_corr + v_corr*v_corr)**(0.5)
        height = wrf.unstaggerZ(self.height)

        #compute the vertical gradient of theta
        dtheta = np.gradient(self.theta)[0]
        du = np.gradient(wind)[0]
        dz = np.gradient(height)[0]
       
        #compute the richardson number
        self.u10 = u_corr
        self.v10 = v_corr
        self.var = ((self.g/self.theta)*(dtheta/dz))/(du/dz)**(2)
        self.var2 = self.var
        self.varTitle = "Richardson Number\n" + self.dataSet.getTime()
        #Set short variable title for time series
        self.sTitle = "Richardson Number"
コード例 #13
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
 def temp_500mb(self):
    
     u = self.dataSet.readNCVariable('U')
     v = self.dataSet.readNCVariable('V')
     u_corr = wrf.unstaggerX(u)
     v_corr = wrf.unstaggerY(v)
     height = wrf.unstaggerZ(self.height)
     ref_val = 50000.
     #Switched to Cython
     #var1 = wrf.loglinear_interpolate(self.temp, self.press, ref_val)
     #self.u10 = wrf.loglinear_interpolate(u_corr, self.press, ref_val)
     #self.v10 = wrf.loglinear_interpolate(v_corr, self.press, ref_val)
     var1 = np.array(wrf_cython.loglinear_interpolate(self.temp, self.press, ref_val))
     self.u10 = np.array(wrf_cython.loglinear_interpolate(u_corr, self.press, ref_val))
     self.v10 = np.array(wrf_cython.loglinear_interpolate(v_corr, self.press, ref_val))
     self.var = wrf.convertT_KtoC(var1)
     #self.var2 = wrf.hypsometric(height, self.press, ref_val, self.temp)
     self.var2 = np.array(wrf_cython.hypsometric(height, self.press, ref_val, self.temp))
     self.varTitle = "500-mb Temperature ($^{\circ}$C)\n" + self.dataSet.getTime()
     #Set short variable title for time series
     self.sTitle = "500-mb Temperature ($^{\circ}$C)"
コード例 #14
0
ファイル: DerivedVar.py プロジェクト: xigrug/PyGEOMET
    def vort_500mb(self):

        u = self.dataSet.readNCVariable('U')
        v = self.dataSet.readNCVariable('V')
        u_corr = wrf.unstaggerX(u)
        v_corr = wrf.unstaggerY(v)
        height = wrf.unstaggerZ(self.height)
        ref_val = 50000.     
        #Switched to Cython
        #self.u10 = wrf.loglinear_interpolate(u_corr, self.press, ref_val)
        #self.v10 = wrf.loglinear_interpolate(v_corr, self.press, ref_val)
        self.u10 = np.array(wrf_cython.loglinear_interpolate(u_corr, self.press, ref_val))
        self.v10 = np.array(wrf_cython.loglinear_interpolate(v_corr, self.press, ref_val))
        self.var = wrf.rel_vort(self.u10, self.v10,
                   self.dataSet.dx[self.dataSet.currentGrid-1],
                   self.dataSet.dy[self.dataSet.currentGrid-1])
        #self.var2 = wrf.hypsometric(height, self.press, ref_val, self.temp)
        self.var2 = np.array(wrf_cython.hypsometric(height, self.press, ref_val, self.temp))
        self.varTitle = "500-mb Relative Vorticity ($10^{-5}$ $s^{-1}$)\n" +\
                         self.dataSet.getTime()
        #Set short variable title for time series
        self.sTitle = "500-mb Relative Vorticity ($10^{-5}$ $s^{-1}$)"