##// END OF EJS Templates
UPDATE calculo de reflectividad, parametros adiciones flag CR y valor de RMIX
avaldezp -
r1587:ed17c399a06f
parent child
Show More
@@ -3944,12 +3944,13 class WeatherRadar(Operation):
3944 Operation.__init__(self)
3944 Operation.__init__(self)
3945
3945
3946 def setup(self,dataOut,variableList= None,Pt=0,Gt=0,Gr=0,Glna=0,lambda_=0, aL=0,
3946 def setup(self,dataOut,variableList= None,Pt=0,Gt=0,Gr=0,Glna=0,lambda_=0, aL=0,
3947 tauW= 0,thetaT=0,thetaR=0,Km =0):
3947 tauW= 0,thetaT=0,thetaR=0,Km =0,CR_Flag=False,min_index=0):
3948
3948
3949 self.nCh = dataOut.nChannels
3949 self.nCh = dataOut.nChannels
3950 self.nHeis = dataOut.nHeights
3950 self.nHeis = dataOut.nHeights
3951 self.min_index= min_index
3951 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
3952 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
3952 self.Range = numpy.arange(dataOut.nHeights)*deltaHeight + dataOut.heightList[0]
3953 self.Range = numpy.arange(dataOut.nHeights)*deltaHeight + dataOut.heightList[0]+min_index*deltaHeight
3953 self.Range = self.Range.reshape(1,self.nHeis)
3954 self.Range = self.Range.reshape(1,self.nHeis)
3954 self.Range = numpy.tile(self.Range,[self.nCh,1])
3955 self.Range = numpy.tile(self.Range,[self.nCh,1])
3955 '''-----------1 Constante del Radar----------'''
3956 '''-----------1 Constante del Radar----------'''
@@ -3963,6 +3964,7 class WeatherRadar(Operation):
3963 self.thetaT = thetaT # 1.8ΒΊ -- 0.0314 rad
3964 self.thetaT = thetaT # 1.8ΒΊ -- 0.0314 rad
3964 self.thetaR = thetaR # 1.8Βͺ --0.0314 rad
3965 self.thetaR = thetaR # 1.8Βͺ --0.0314 rad
3965 self.Km = Km
3966 self.Km = Km
3967 self.CR_Flag = CR_Flag
3966 Numerator = ((4*numpy.pi)**3 * aL**2 * 16 *numpy.log(2)*(10**18))
3968 Numerator = ((4*numpy.pi)**3 * aL**2 * 16 *numpy.log(2)*(10**18))
3967 Denominator = (Pt *(10**(Gt/10.0))*(10**(Gr/10.0))*(10**(Glna/10.0))* lambda_**2 * SPEED_OF_LIGHT * tauW * numpy.pi*thetaT*thetaR)
3969 Denominator = (Pt *(10**(Gt/10.0))*(10**(Gr/10.0))*(10**(Glna/10.0))* lambda_**2 * SPEED_OF_LIGHT * tauW * numpy.pi*thetaT*thetaR)
3968 self.RadarConstant = Numerator/Denominator
3970 self.RadarConstant = Numerator/Denominator
@@ -4028,8 +4030,9 class WeatherRadar(Operation):
4028 Pr = dataOut.data_param[:,0,:]
4030 Pr = dataOut.data_param[:,0,:]
4029 '''---------------------------- Calculo de Noise y threshold para Reflectividad---------'''
4031 '''---------------------------- Calculo de Noise y threshold para Reflectividad---------'''
4030
4032
4031 Pr = Pr/1000.0 # Conversion Watt
4033 Pr = Pr/100.0 # Conversion Watt
4032 '''-----------2 Reflectividad del Radar y Factor de Reflectividad------'''
4034 '''-----------2 Reflectividad del Radar y Factor de Reflectividad------'''
4035 if not self.CR_Flag:
4033 self.n_radar = numpy.zeros((self.nCh,self.nHeis))
4036 self.n_radar = numpy.zeros((self.nCh,self.nHeis))
4034 self.Z_radar = numpy.zeros((self.nCh,self.nHeis))
4037 self.Z_radar = numpy.zeros((self.nCh,self.nHeis))
4035
4038
@@ -4042,11 +4045,19 class WeatherRadar(Operation):
4042 Zeh = self.Z_radar
4045 Zeh = self.Z_radar
4043
4046
4044 if self.Pt<0.3:
4047 if self.Pt<0.3:
4045 factor=10.072
4048 factor=1
4046 else:
4049 else:
4047 factor=23.072
4050 factor=28#23.072
4048
4051
4049 dBZeh = 10*numpy.log10(Zeh) + factor
4052 dBZeh = 10*numpy.log10(Zeh) + factor
4053 else:
4054 self.Z_radar = numpy.zeros((self.nCh,self.nHeis))
4055
4056 for R in range(self.nHeis):
4057 self.Z_radar[0,R]= 10*numpy.log10(Pr[0,R])+20*numpy.log10(self.Range[0,R]*10**3)+62.17-10*numpy.log10(self.Pt)-59-10*numpy.log10(self.tauW)
4058 self.Z_radar[1,R]= 10*numpy.log10(Pr[1,R])+20*numpy.log10(self.Range[1,R]*10**3)+55.6-10*numpy.log10(self.Pt)-59-10*numpy.log10(self.tauW)
4059 dBZeh= self.Z_radar
4060
4050 if type=='N':
4061 if type=='N':
4051 return dBZeh
4062 return dBZeh
4052 elif type=='D':
4063 elif type=='D':
@@ -4062,12 +4073,11 class WeatherRadar(Operation):
4062 return Sigmav_W
4073 return Sigmav_W
4063
4074
4064
4075
4065 def run(self,dataOut,variableList=None,Pt=1.58,Gt=38.5,Gr=38.5,Glna=70.0,lambda_=0.032, aL=1,
4076 def run(self,dataOut,variableList=None,Pt=1.58,Gt=38.5,Gr=38.5,Glna=59.0,lambda_=0.032, aL=1,
4066 tauW= 0.2,thetaT=0.0314,thetaR=0.0314,Km =0.93):
4077 tauW= 0.2,thetaT=0.0314,thetaR=0.0314,Km =0.93,CR_Flag=0,min_index=0):
4067
4068 if not self.isConfig:
4078 if not self.isConfig:
4069 self.setup(dataOut= dataOut, variableList=variableList,Pt=Pt,Gt=Gt,Gr=Gr,Glna=Glna,lambda_=lambda_, aL=aL,
4079 self.setup(dataOut= dataOut, variableList=variableList,Pt=Pt,Gt=Gt,Gr=Gr,Glna=Glna,lambda_=lambda_, aL=aL,
4070 tauW= tauW,thetaT=thetaT,thetaR=thetaR,Km =Km)
4080 tauW= tauW,thetaT=thetaT,thetaR=thetaR,Km =Km,CR_Flag=CR_Flag,min_index=min_index)
4071 self.isConfig = True
4081 self.isConfig = True
4072
4082
4073 dataOut.data_param = self.setMoments(dataOut)
4083 dataOut.data_param = self.setMoments(dataOut)
@@ -4472,7 +4482,6 class MergeProc(ProcessingUnit):
4472 g = [getattr(data, attr_data) for data in data_inputs][1]
4482 g = [getattr(data, attr_data) for data in data_inputs][1]
4473 data = numpy.concatenate((f,g),axis=3)
4483 data = numpy.concatenate((f,g),axis=3)
4474 setattr(self.dataOut, attr_data, data)
4484 setattr(self.dataOut, attr_data, data)
4475
4476 # snr
4485 # snr
4477 # self.dataOut.data_snr = numpy.concatenate((data_inputs[0].data_snr, data_inputs[1].data_snr), axis=2)
4486 # self.dataOut.data_snr = numpy.concatenate((data_inputs[0].data_snr, data_inputs[1].data_snr), axis=2)
4478
4487
General Comments 0
You need to be logged in to leave comments. Login now