def run_simulation(self): #self.q = odeint( self.flow_progress, self.q0, self.params, self.fs, self.T ) fp1, fp2 = calc_fixed_points(self.params) self.q0 = np.zeros(2*self.nm+3) self.q0[self.nm+2] = 1e-8 #self.q0 = fp1 + 1e-6 * abs(np.random.rand(2*self.nm+1)) self.q = integrate.odeint( self.flow_progress, self.q0, self.t, args = (self.params,) , mxstep = 0 )
def plot_page_one(self): [ax.cla() for ax in self.ax1.flatten()] #plot driving velocity t = self.t[self.t1:self.t2] * L / c a = np.real(self.s * np.sinh(self.s*L) ) u = np.dot(self.q[self.t1:self.t2, 2:self.nm+2],a) * c self.ax1[0].plot(t, u) self.ax1[0].set_xlabel('t (s)') self.ax1[0].set_ylabel('u0 (m/s)') #plot fourier transform of u #self.ax1[1].specgram(u - np.mean(u), Fs=self.fs*c/L) U = np.fft.rfft( u - np.mean(u) ) f = np.fft.rfftfreq(len(t), 1./self.fs) self.ax1[1].plot(f * c / L, abs(U)) self.ax1[1].set_xlabel('f (Hz)') fp1, fp2 = calc_fixed_points(self.params) jac = calc_jacobian(fp1, self.params) evs, evecs = np.linalg.eig(jac) self.ax1[2].plot(evs.real, c/L/2/pi*evs.imag, 'o') self.ax1[2].set_xlabel('Re(eig) (Hz)') self.ax1[2].set_ylabel('Im(eig) (Hz)') self.fig1.canvas.draw()
def set_defaults(self): self.page = 1 self.nm = 3 self.r_mouth = 0.001 self.omega_d = pi / 2 self.Gamma = 1e-4 self.p = 0.015 self.r_folds = 0.002 self.r_back = 0.002 self.fs = 3. #time sampling frequency self.T = 500. #total time self.t = np.arange(0, self.T, 1/self.fs) self.t1 = 0 self.t2 = len(self.t) self.s = cp.calc_spatial_evs(r_mouth=self.r_mouth/L, nm=self.nm, num_seeds=500, max_x=20, max_y=2) self.params = cp.calc_parameters(self.p, self.r_folds, self.r_folds, self.omega_d, self.Gamma, self.s.imag, self.s.real, self.nm) fp1, fp2 = calc_fixed_points(self.params)