##// END OF EJS Templates
update de weather radar y test
avaldez -
r1354:4c733a444ed8
parent child
Show More
@@ -0,0 +1,50
1 import os,sys
2 import datetime
3 import time
4 from schainpy.controller import Project
5 path = '/home/developer/Downloads/hdf5_testPP3'
6 figpath = path
7 desc = "Simulator Test"
8
9 controllerObj = Project()
10
11 controllerObj.setup(id='10',name='Test Simulator',description=desc)
12
13 readUnitConfObj = controllerObj.addReadUnit(datatype='SimulatorReader',
14 frequency=9.345e9,
15 FixRCP_IPP= 60,
16 Tau_0 = 30,
17 AcqH0_0=0,
18 samples=330,
19 AcqDH_0=0.15,
20 FixRCP_TXA=0.15,
21 FixRCP_TXB=0.15,
22 Fdoppler=600.0,
23 Hdoppler=36,
24 Adoppler=300,#300
25 delay=0,
26 online=0,
27 walk=0,
28 profilesPerBlock=625,
29 dataBlocksPerFile=360)#,#nTotalReadFiles=2)
30
31 ### opObj11 = readUnitConfObj.addOperation(name='printInfo')
32
33 procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
34
35 opObj11 = procUnitConfObjA.addOperation(name='PulsePair', optype='other')
36 opObj11.addParameter(name='n', value='625', format='int')#10
37 opObj11.addParameter(name='removeDC', value=1, format='int')
38
39 procUnitConfObjB= controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjA.getId())
40
41 opObj10 = procUnitConfObjB.addOperation(name="WeatherRadar")
42
43 opObj10 = procUnitConfObjB.addOperation(name='HDFWriter')
44 opObj10.addParameter(name='path',value=figpath)
45 #opObj10.addParameter(name='mode',value=0)
46 opObj10.addParameter(name='blocksPerFile',value='100',format='int')
47 opObj10.addParameter(name='metadataList',value='utctimeInit,timeInterval',format='list')
48 opObj10.addParameter(name='dataList',value='dataPP_POW,dataPP_DOP,dataPP_SNR,dataPP_WIDTH,factor_Zeh,utctime')#,format='list'
49
50 controllerObj.start()
@@ -4006,6 +4006,92 class SMOperations():
4006 #
4006 #
4007 # return heights, error
4007 # return heights, error
4008
4008
4009
4010 class WeatherRadar(Operation):
4011 '''
4012 Function tat implements Weather Radar operations-
4013 Input:
4014 Output:
4015 Parameters affected:
4016 '''
4017 isConfig = False
4018
4019 def __init__(self):
4020 Operation.__init__(self)
4021
4022 def setup(self,dataOut,Pt=0,Gt=0,Gr=0,lambda_=0, aL=0,
4023 tauW= 0,thetaT=0,thetaR=0,Km =0):
4024 self.nCh = dataOut.nChannels
4025 self.nHeis = dataOut.nHeights
4026 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
4027 self.Range = numpy.arange(dataOut.nHeights)*deltaHeight + dataOut.heightList[0]
4028 self.Range = self.Range.reshape(1,self.nHeis)
4029 self.Range = numpy.tile(self.Range,[self.nCh,1])
4030 '''-----------1 Constante del Radar----------'''
4031 self.Pt = Pt
4032 self.Gt = Gt
4033 self.Gr = Gr
4034 self.lambda_ = lambda_
4035 self.aL = aL
4036 self.tauW = tauW
4037 self.thetaT = thetaT
4038 self.thetaR = thetaR
4039 self.Km = Km
4040 Numerator = ((4*numpy.pi)**3 * aL**2 * 16 *numpy.log(2))
4041 Denominator = (Pt * Gt * Gr * lambda_**2 * SPEED_OF_LIGHT * tauW * numpy.pi*thetaT*thetaR)
4042 self.RadarConstant = Numerator/Denominator
4043 '''-----------2 Reflectividad del Radar y Factor de Reflectividad------'''
4044 self.n_radar = numpy.zeros((self.nCh,self.nHeis))
4045 self.Z_radar = numpy.zeros((self.nCh,self.nHeis))
4046
4047 def setMoments(self,dataOut,i):
4048
4049 type = dataOut.inputUnit
4050 nCh = dataOut.nChannels
4051 nHeis= dataOut.nHeights
4052 data_param = numpy.zeros((nCh,4,nHeis))
4053 if type == "Voltage":
4054 data_param[:,0,:] = dataOut.dataPP_POW/(dataOut.nCohInt**2)
4055 data_param[:,1,:] = dataOut.dataPP_DOP
4056 data_param[:,2,:] = dataOut.dataPP_WIDTH
4057 data_param[:,3,:] = dataOut.dataPP_SNR
4058 if type == "Spectra":
4059 data_param[:,0,:] = dataOut.data_POW
4060 data_param[:,1,:] = dataOut.data_DOP
4061 data_param[:,2,:] = dataOut.data_WIDTH
4062 data_param[:,3,:] = dataOut.data_SNR
4063
4064 return data_param[:,i,:]
4065
4066
4067 def run(self,dataOut,Pt=25,Gt=200.0,Gr=50.0,lambda_=0.32, aL=2.5118,
4068 tauW= 4.0e-6,thetaT=0.165,thetaR=0.367,Km =0.93):
4069
4070 if not self.isConfig:
4071 self.setup(dataOut= dataOut,Pt=25,Gt=200.0,Gr=50.0,lambda_=0.32, aL=2.5118,
4072 tauW= 4.0e-6,thetaT=0.165,thetaR=0.367,Km =0.93)
4073 self.isConfig = True
4074 '''-----------------------------Potencia de Radar -Signal S-----------------------------'''
4075 Pr = self.setMoments(dataOut,0)
4076
4077 for R in range(self.nHeis):
4078 self.n_radar[:,R] = self.RadarConstant*Pr[:,R]* (self.Range[:,R])**2
4079
4080 self.Z_radar[:,R] = self.n_radar[:,R]* self.lambda_**4/( numpy.pi**5 * self.Km**2)
4081
4082 '''----------- Factor de Reflectividad Equivalente lamda_ < 10 cm , lamda_= 3.2cm-------'''
4083 Zeh = self.Z_radar
4084 dBZeh = 10*numpy.log10(Zeh)
4085 dataOut.factor_Zeh= dBZeh
4086 self.n_radar = numpy.zeros((self.nCh,self.nHeis))
4087 self.Z_radar = numpy.zeros((self.nCh,self.nHeis))
4088
4089 return dataOut
4090
4091
4092
4093
4094
4009 class Block360(Operation):
4095 class Block360(Operation):
4010 '''
4096 '''
4011 '''
4097 '''
General Comments 0
You need to be logged in to leave comments. Login now