Ejemplo n.º 1
0
def visualize_front(u, t, window_width, savefig=False):
    """
    Visualize u and the exact solution vs t, using a
    moving plot window and continuous drawing of the
    curves as they evolve in time.
    Makes it easy to plot very long time series.
    P is the approximate duration of one period.
    """
    import scitools.std as st
    from scitools.MovingPlotWindow import MovingPlotWindow

    umin = 1.2 * u.min()
    umax = -umin
    plot_manager = MovingPlotWindow(window_width=window_width,
                                    dt=t[1] - t[0],
                                    yaxis=[umin, umax],
                                    mode='continuous drawing')
    for n in range(1, len(u)):
        if plot_manager.plot(n):
            s = plot_manager.first_index_in_plot
            st.plot(t[s:n + 1],
                    u[s:n + 1],
                    'r-1',
                    title='t=%6.3f' % t[n],
                    axis=plot_manager.axis(),
                    show=not savefig)  # drop window if savefig
            if savefig:
                print 't=%g' % t[n]
                st.savefig('tmp_vib%04d.png' % n)
        plot_manager.update(n)
Ejemplo n.º 2
0
def visualize_front(u, t, I, w, savefig=False):
    """
    Visualize u and the exact solution vs t, using a
    moving plot window and continuous drawing of the
    curves as they evolve in time.
    Makes it easy to plot very long time series.
    """
    import scitools.std as st
    from scitools.MovingPlotWindow import MovingPlotWindow

    P = 2 * pi / w  # one period
    umin = 1.2 * u.min()
    umax = -umin
    plot_manager = MovingPlotWindow(window_width=8 * P,
                                    dt=t[1] - t[0],
                                    yaxis=[umin, umax],
                                    mode='continuous drawing')
    for n in range(1, len(u)):
        if plot_manager.plot(n):
            s = plot_manager.first_index_in_plot
            st.plot(t[s:n + 1],
                    u[s:n + 1],
                    'r-1',
                    t[s:n + 1],
                    I * cos(w * t)[s:n + 1],
                    'b-1',
                    title='t=%6.3f' % t[n],
                    axis=plot_manager.axis(),
                    show=not savefig)  # drop window if savefig
            if savefig:
                filename = 'tmp_vib%04d.png' % n
                st.savefig(filename)
                print 'making plot file', filename, 'at t=%g' % t[n]
        plot_manager.update(n)
Ejemplo n.º 3
0
def visualize_front(u, t, I, w, savefig=False, skip_frames=1):
    """
    Visualize u and the exact solution vs t, using a
    moving plot window and continuous drawing of the
    curves as they evolve in time.
    Makes it easy to plot very long time series.
    Plots are saved to files if savefig is True.
    Only each skip_frames-th plot is saved (e.g., if
    skip_frame=10, only each 10th plot is saved to file;
    this is convenient if plot files corresponding to
    different time steps are to be compared).
    """
    import scitools.std as st
    from scitools.MovingPlotWindow import MovingPlotWindow
    from math import pi

    # Remove all old plot files tmp_*.png
    import glob, os
    for filename in glob.glob('tmp_*.png'):
        os.remove(filename)

    P = 2 * pi / w  # one period
    umin = 1.2 * u.min()
    umax = -umin
    dt = t[1] - t[0]
    plot_manager = MovingPlotWindow(window_width=8 * P,
                                    dt=dt,
                                    yaxis=[umin, umax],
                                    mode='continuous drawing')
    frame_counter = 0
    for n in range(1, len(u)):
        if plot_manager.plot(n):
            s = plot_manager.first_index_in_plot
            st.plot(t[s:n + 1],
                    u[s:n + 1],
                    'r-1',
                    t[s:n + 1],
                    I * cos(w * t)[s:n + 1],
                    'b-1',
                    title='t=%6.3f' % t[n],
                    axis=plot_manager.axis(),
                    show=not savefig)  # drop window if savefig
            if savefig and n % skip_frames == 0:
                filename = 'tmp_%04d.png' % frame_counter
                st.savefig(filename)
                print 'making plot file', filename, 'at t=%g' % t[n]
                frame_counter += 1
        plot_manager.update(n)