def GetTimeFlow(self, el, time): ''' Calculating inlet flow (coefficients of the FFT x(t)=A0+sum(2*Ck*exp(j*k*2*pi*f*t))) for a specific time value. If signal is specified, flow is computed from time values. ''' try: period = self.SimulationContext.Context['period'] except KeyError: print "Error, Please set period in Simulation Context XML File" raise try: signal = self.InFlows[el]['signal'] try: timestep = self.SimulationContext.Context['timestep'] except KeyError: print "Error, Please set timestep in Simulation Context XML File" raise t = arange(0.0,period+timestep,timestep) t2 = list(t) Flow = float(signal[t2.index(time)])/6.0e7 self.Flow = Flow return Flow except KeyError: f_coeff = self.InFlows[el]['f_coeff'] A0 = self.InFlows[el]['A0'] Cc = f_coeff*1.0/2.0*1e-6 Flow = A0 for k in arange(0,f_coeff.shape[0]): Flow += real(2.0*complex(Cc[k,0],Cc[k,1])*exp(1j*(k+1)*2.0*pi*time/period)) self.Flow = Flow return Flow
def GetFlow(self): ''' Calculating inlet flow (coefficients of the FFT x(t)=A0+sum(2*Ck*exp(j*k*2*pi*f*t))) Timestep and period from SimulationContext are necessary. ''' try: timestep = self.SimulationContext.Context['timestep'] except KeyError: print "Error, Please set timestep in Simulation Context XML File" raise try: period = self.SimulationContext.Context['period'] except KeyError: print "Error, Please set period in Simulation Context XML File" raise t = arange(0.0,period+timestep,timestep).reshape((1,ceil(period/timestep+1.0))) Cc = self.f_coeff*1.0/2.0*1e-6 Flow = zeros((1, ceil(period/timestep+1.0))) for freq in arange(0,ceil(period/timestep+1.0)): Flow[0, freq] = self.A0_v for k in arange(0,self.f_coeff.shape[0]): Flow[0, freq] = Flow[0, freq]+real(2.0*complex(Cc[k,0],Cc[k,1])*exp(1j*(k+1)*2.0*pi*t[0,freq]/period)) self.Flow = Flow return Flow