Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
 def getPhaseSpace(self, shift=1):
     return hu.f_H(self.rho, self.K, self.x, self.u, self.hbar_, self.L)
Beispiel #5
0
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