def makeFig(): fig, axs = plt.subplots(2, 3, figsize=(18, 7)) s.axCl, s.axH, s.axH_ = axs[0] s.axECl, s.axEH, s.axEH_ = axs[1] H = hu.f_H(s.psi_r, s.K, dxS) H_ = hu_.f_H(s.rho, s.K_, x, u, hbar_, L) s.imCl, = s.axCl.plot(s.r, s.v / u_c, '.', markersize=.5, color='k') s.axCl.set_ylim(np.min(u / u_cS), np.max(u / u_cS)) s.axCl.set_ylabel(r'$u$ [$u_c$]') s.axCl.set_title(r"$f_{cl}(t,x,u_c)$") s.imH = s.axH.imshow(H, interpolation='none', extent=[0, L, np.min(u) / u_cS, np.max(u) / u_cS], aspect='auto', origin='lower', cmap='viridis') s.axH.set_xlabel('$x$ [kpc]') s.axH.set_title(r'$f_{H}(t, x, u_c)$') s.imH_ = s.axH_.imshow(H_, interpolation='none', extent=[0, L, np.min(u) / u_cS, np.max(u) / u_cS], aspect='auto', origin='lower', cmap='viridis') s.axH_.set_xlabel('$x$ [kpc]') s.axH_.set_title(r'$f_{new}(t, x, u_c)$') s.t.append(0) ECl = CIC_acc(s.r, mpart, N, C) / (-C) s.ECl.append(np.max(ECl)) rho_r = Mtot * (np.abs(s.psi_r))**2 phi_r = compute_phi(rho_r) E = a_from_Phi(phi_r) / (-CS) s.EH.append(np.max(E)) rho_r = Mtot * (np.abs(np.diagonal(s.rho))) phi_r = compute_phi(rho_r) E_ = a_from_Phi(phi_r) / (-CS) s.EH_.append(np.max(E_)) if max_: s.imECl, = s.axECl.plot(s.t, s.ECl) s.imEH, = s.axEH.plot(s.t, s.EH) s.imEH_, = s.axEH_.plot(s.t, s.EH_) s.axECl.set_xlabel(r"$t [\omega_0^{-1}]$") s.axEH.set_xlabel(r"$t [\omega_0^{-1}]$") s.axEH_.set_xlabel(r"$t [\omega_0^{-1}]$") s.axECl.set_ylabel(r"$E_{max}/C$") else: s.imECl, = s.axECl.plot(s.r, ECl, '.') s.imEH, = s.axEH.plot(x, E) s.imEH_, = s.axEH_.plot(x, E_) s.axECl.set_xlabel(r"$x [L]$") s.axEH.set_xlabel(r"$x [L]$") s.axEH_.set_xlabel(r"$x [L]$") s.axECl.set_ylabel(r"$E/C$") s.time_text = s.axCl.text(.7, .9, '', ha='center', va='center', transform=s.axCl.transAxes, bbox={ 'facecolor': 'white', 'pad': 5 }) #plt.show() return fig
def animate(i): s.time_text.set_text('$t=%.1f$' % s.T) H = hu.f_H(s.psi_r, s.K, dxS) H_ = hu_.f_H(s.rho, s.K_, x, u, hbar_, L) s.imCl.set_data(s.r, s.v / u_c) s.axCl.set_xlim(np.min(s.r), np.max(s.r)) s.axCl.set_ylim(np.min(u / u_cS), np.max(u / u_cS)) s.imH.set_array(H) if np.min(H) != np.max(H): s.imH.set_clim(vmin=np.min(H), vmax=np.max(H)) s.imH_.set_array(H_) if np.min(H_) != np.max(H_): s.imH_.set_clim(vmin=np.min(H_), vmax=np.max(H_)) s.t.append(s.T) ECl = (CIC_acc(s.r, mpart, N, C) / (-C)) s.ECl.append(np.max(ECl)) rho_r = Mtot * (np.abs(s.psi_r))**2 phi_r = compute_phi(rho_r) E = (a_from_Phi(phi_r) / (-CS)) s.EH.append(np.max(E)) rho_r = Mtot * (np.abs(np.diagonal(s.rho))) phi_r = compute_phi(rho_r) E_ = (a_from_Phi(phi_r) / (-CS)) s.EH_.append(np.max(E_)) if max_: s.imECl.set_data(s.t, s.ECl) s.axECl.set_xlim(0, np.max(s.t)) s.axECl.set_ylim(np.min(s.ECl), np.max(s.ECl)) s.imEH.set_data(s.t, s.EH) s.axEH.set_xlim(0, np.max(s.t)) s.axEH.set_ylim(np.min(s.EH), np.max(s.EH)) s.imEH_.set_data(s.t, s.EH_) s.axEH_.set_xlim(0, np.max(s.t)) s.axEH_.set_ylim(np.min(s.EH_), np.max(s.EH_)) else: s.imECl.set_data(s.r, ECl) s.axECl.set_ylim(-.02, .02) s.imEH.set_data(x, E) s.axEH.set_ylim(-.02, .02) s.imEH_.set_data(x, E_) s.axEH_.set_ylim(-.02, .02) update(i) repeat_print( ('%i hrs, %i mins, %i s remaining.' % remaining(i + 1, frames_))) return s.imCl, s.imH, s.imH_, s.imECl, s.imEH, s.imEH_, s.time_text
def makeFig(): fig, axs = plt.subplots(3, 3, figsize=(18, 18)) s.axCl, s.axrhoCl, s.axrhovCl = axs[0] s.axH, s.axrhoH, s.axrhovH = axs[1] s.ax_, s.axrho_, s.axrhov_ = axs[2] s.time_text = s.axrhoCl.text(.7, .9, '', ha='center', va='center', transform=s.axrhoCl.transAxes, bbox={ 'facecolor': 'white', 'pad': 5 }) s.rho_text = s.axrho_.text(.7, .9, '', ha='center', va='center', transform=s.axrho_.transAxes, bbox={ 'facecolor': 'white', 'pad': 5 }) H = hu.f_H(s.psi, s.K, dx) H_ = hu_.f_H(s.rho, s.K_, x, u, hbar_, L) s.axCl.set_title(r"$f_{Cl}$") s.axH.set_title(r"$f_{H}$") s.ax_.set_title(r"$f_{new}$") s.axCl.set_ylabel("u [kpc/Myr]") s.axH.set_ylabel("u [kpc/Myr]") s.ax_.set_ylabel("u [kpc/Myr]") s.ax_.set_xlabel("x [kpc]") s.axrhoCl.set_title(r"$\rho_x$") s.axrho_.set_xlabel("x [kpc]") s.axrhovCl.set_title(r"$\rho_u$") s.axrhov_.set_xlabel("u [kpc/Myr]") heatmap, xedges, yedges = np.histogram2d(s.r, s.v, bins=N, range=[[-L / 2, L / 2], [np.min(u), np.max(u)]]) extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] s.imCl = s.axCl.imshow(heatmap.T, extent=extent, origin='lower', aspect='auto', cmap='viridis') s.imH = s.axH.imshow(H, interpolation='none', extent=[-L / 2, L / 2, np.min(u), np.max(u)], aspect='auto', origin='lower', cmap='viridis') s.im_ = s.ax_.imshow(H_, interpolation='none', extent=[-L / 2, L / 2, np.min(u), np.max(u)], aspect='auto', origin='lower', cmap='viridis') s.imrhoCl, = s.axrhoCl.plot(X, rho_()) nv, binsv = np.histogram(s.v, bins=N, range=(np.min(u), np.max(u))) dv = (np.max(u) - np.min(u)) / N nv = nv * Mtot / float(n * dv) v_ = binsv[:-1] s.imrhovCl, = s.axrhovCl.plot(v_, nv) # rho = Mtot*H.sum(axis = 0)*du rho = Mtot * (np.abs(s.psi))**2 s.imrhoH, = s.axrhoH.plot(x, rho) rho = Mtot * H.sum(axis=1) * dx s.imrhovH, = s.axrhovH.plot(u, rho) # rho = Mtot*H_.sum(axis = 0) rho = Mtot * (np.abs(np.diagonal(s.rho))) s.imrho_, = s.axrho_.plot(x, rho) rho = Mtot * H_.sum(axis=1) s.imrhov_, = s.axrhov_.plot(u, rho) return fig
def getPhaseSpace(self, shift=1): return hu.f_H(self.rho, self.K, self.x, self.u, self.hbar_, self.L)
def animate(i): s.time_text.set_text('$t=%.1f$ Myr' % s.T) r2 = np.diagonal(np.matmul(s.rho, s.rho)).sum() * dx * dx # gets r2 s.rho_text.set_text(r'$\rho^2 = %.3f$' % r2) H = hu.f_H(s.psi, s.K, dx) H_ = hu_.f_H(s.rho, s.K_, x, u, hbar_, L, 1) heatmap, xedges, yedges = np.histogram2d(s.r, s.v, bins=N, range=[[-L / 2, L / 2], [np.min(u), np.max(u)]]) s.imCl.set_array(heatmap.T) if np.min(heatmap.T) != np.max(heatmap.T): s.imCl.set_clim(vmin=np.min(heatmap.T), vmax=np.max(heatmap.T)) s.imH.set_array(H) if np.min(H) != np.max(H): s.imCl.set_clim(vmin=np.min(H), vmax=np.max(H)) s.im_.set_array(H_) if np.min(H_) != np.max(H_): s.im_.set_clim(vmin=np.min(H_), vmax=np.max(H_)) rho = rho_() s.imrhoCl.set_data(X, rho) s.axrhoCl.set_xlim(np.min(X), np.max(X)) s.axrhoCl.set_ylim(np.min(rho), np.max(rho)) nv, binsv = np.histogram(s.v, bins=N, range=(np.min(u), np.max(u))) dv = (np.max(u) - np.min(u)) / N nv = nv * Mtot / float(n * dv) v_ = binsv[:-1] s.imrhovCl.set_data(v_, nv) s.axrhovCl.set_xlim(np.min(v_), np.max(v_)) s.axrhovCl.set_ylim(np.min(nv), np.max(nv)) #rho = Mtot*H.sum(axis = 0)*du rho = Mtot * (np.abs(s.psi))**2 s.imrhoH.set_data(x, rho) s.axrhoH.set_xlim(np.min(x), np.max(x)) s.axrhoH.set_ylim(np.min(rho), np.max(rho)) rho = Mtot * H.sum(axis=1) * dx s.imrhovH.set_data(u, rho) s.axrhovH.set_xlim(np.min(u), np.max(u)) s.axrhovH.set_ylim(np.min(rho), np.max(rho)) #rho = Mtot*H_.sum(axis = 0) rho = Mtot * (np.abs(np.diagonal(s.rho))) s.imrho_.set_data(x, rho) s.axrho_.set_xlim(np.min(x), np.max(x)) s.axrho_.set_ylim(np.min(rho), np.max(rho)) rho = Mtot * H_.sum(axis=1) s.imrhov_.set_data(u, rho) s.axrhov_.set_xlim(np.min(u), np.max(u)) s.axrhov_.set_ylim(np.min(rho), np.max(rho)) update(i) repeat_print( ('%i hrs, %i mins, %i s remaining.' % remaining(i + 1, frames_))) return s.imCl, s.imrhoCl, s.imrhovCl, s.imH, s.imrhoH, s.imrhovH, s.im_, s.imrho_, s.imrhov_, s.time_text, s.rho_text