Esempio n. 1
0
def test_animate_multiple_solutions():
    # Must delete all archives so we really recompute them
    # and get their names from the pulse function
    for filename in glob.glob('.*.npz') + glob.glob('tmp_*.png'):
        os.remove(filename)
    archives = []
    umin = umax = 0
    from wave1D_dn_vc import pulse
    for spatial_resolution in [20, 45, 100]:
        archive_name, u_min, u_max = pulse(
            Nx=spatial_resolution, pulse_tp='gaussian')
        archives.append(archive_name)
        if u_min < umin: umin = u_min
        if u_max > umax: umax = u_max

    print archives
    details = animate_multiple_solutions(
        archives, umin, umax, show=False)
    # Round data:
    for i in range(len(details)):
        for j in range(len(details[i])):
            if details[i][j] == 'coarsest':
                continue
            details[i][j][0] = round(details[i][j][0], 4)
            if isinstance(details[i][j][2], float):
                details[i][j][2] = round(details[i][j][2], 4)
    expected = [['coarsest', [0.05, 2, 0.25], [0.05, 5, None]], ['coarsest', [0.1, 4, 0.5], [0.1, 10, None]], ['coarsest', [0.15, 6, 0.75], [0.15, 15, None]], ['coarsest', [0.2, 9, None], [0.2, 20, None]], ['coarsest', [0.25, 11, 0.25], [0.25, 25, None]], ['coarsest', [0.3, 13, 0.5], [0.3, 30, None]], ['coarsest', [0.35, 15, 0.75], [0.35, 35, None]], ['coarsest', [0.4, 18, None], [0.4, 40, None]], ['coarsest', [0.45, 20, 0.25], [0.45, 45, None]], ['coarsest', [0.5, 22, 0.5], [0.5, 50, None]], ['coarsest', [0.55, 24, 0.75], [0.55, 55, None]], ['coarsest', [0.6, 27, None], [0.6, 60, None]], ['coarsest', [0.65, 29, 0.25], [0.65, 65, None]], ['coarsest', [0.7, 31, 0.5], [0.7, 70, None]], ['coarsest', [0.75, 33, 0.75], [0.75, 75, None]], ['coarsest', [0.8, 36, None], [0.8, 80, None]], ['coarsest', [0.85, 38, 0.25], [0.85, 85, None]], ['coarsest', [0.9, 40, 0.5], [0.9, 90, None]], ['coarsest', [0.95, 42, 0.75], [0.95, 95, None]], ['coarsest', [1.0, 45, None], [1.0, 100, None]], ['coarsest', [1.05, 47, 0.25], [1.05, 105, None]], ['coarsest', [1.1, 49, 0.5], [1.1, 110, None]], ['coarsest', [1.15, 51, 0.75], [1.15, 115, None]], ['coarsest', [1.2, 54, None], [1.2, 120, None]], ['coarsest', [1.25, 56, 0.25], [1.25, 125, None]], ['coarsest', [1.3, 58, 0.5], [1.3, 130, None]], ['coarsest', [1.35, 60, 0.75], [1.35, 135, None]], ['coarsest', [1.4, 63, None], [1.4, 140, None]], ['coarsest', [1.45, 65, 0.25], [1.45, 145, None]], ['coarsest', [1.5, 67, 0.5], [1.5, 150, None]], ['coarsest', [1.55, 69, 0.75], [1.55, 155, None]], ['coarsest', [1.6, 72, None], [1.6, 160, None]], ['coarsest', [1.65, 74, 0.25], [1.65, 165, None]], ['coarsest', [1.7, 76, 0.5], [1.7, 170, None]], ['coarsest', [1.75, 78, 0.75], [1.75, 175, None]], ['coarsest', [1.8, 81, None], [1.8, 180, None]], ['coarsest', [1.85, 83, 0.25], [1.85, 185, None]], ['coarsest', [1.9, 85, 0.5], [1.9, 190, None]], ['coarsest', [1.95, 87, 0.75], [1.95, 195, None]], ['coarsest', [2.0, 90, None], [2.0, 200, None]]]
    assert details == expected
Esempio n. 2
0
def demo_animate_multiple_solutions():
    '''First run all simulations. Then animate all from archives.'''
    # Must delete all archives so we really recompute them
    # and get their names from the pulse function
    for filename in glob.glob('.*.npz') + glob.glob('tmp_*.png'):
        os.remove(filename)
    archives = []
    umin = umax = 0
    from wave1D_dn_vc import pulse
    for spatial_resolution in [20, 55, 200]:
        archive_name, u_min, u_max = pulse(
            Nx=spatial_resolution, pulse_tp='gaussian')
        archives.append(archive_name)
        if u_min < umin: umin = u_min
        if u_max > umax: umax = u_max

    print archives
    animate_multiple_solutions(archives, umin, umax, show=True)
    cmd = 'ffmpeg -i tmp_%04d.png -r 25 -vcodec libtheora movie.ogg'
    os.system(cmd)
Esempio n. 3
0
def test_animate_multiple_solutions():
    # Must delete all archives so we really recompute them
    # and get their names from the pulse function
    for filename in glob.glob('.*.npz') + glob.glob('tmp_*.png'):
        os.remove(filename)
    archives = []
    umin = umax = 0
    from wave1D_dn_vc import pulse
    for spatial_resolution in [20, 45, 100]:
        archive_name, u_min, u_max = pulse(
            Nx=spatial_resolution, pulse_tp='gaussian')
        archives.append(archive_name)
        if u_min < umin: umin = u_min
        if u_max > umax: umax = u_max

    print archives
    details = animate_multiple_solutions(
        archives, umin, umax, show=False)
    # Round data:
    for i in range(len(details)):
        for j in range(len(details[i])):
            if details[i][j] == 'coarsest':
                continue
            details[i][j][0] = round(details[i][j][0], 4)
            if isinstance(details[i][j][2], float):
                details[i][j][2] = round(details[i][j][2], 4)
    expected = [
        ['coarsest', [0.05, 2, 0.25], [0.05, 5, None]],
        ['coarsest', [0.1, 4, 0.5], [0.1, 10, None]],
        ['coarsest', [0.15, 6, 0.75], [0.15, 15, None]],
        ['coarsest', [0.2, 9, None], [0.2, 20, None]],
        ['coarsest', [0.25, 11, 0.25], [0.25, 25, None]],
        ['coarsest', [0.3, 13, 0.5], [0.3, 30, None]],
        ['coarsest', [0.35, 15, 0.75], [0.35, 35, None]],
        ['coarsest', [0.4, 18, None], [0.4, 40, None]],
        ['coarsest', [0.45, 20, 0.25], [0.45, 45, None]],
        ['coarsest', [0.5, 22, 0.5], [0.5, 50, None]],
        ['coarsest', [0.55, 24, 0.75], [0.55, 55, None]],
        ['coarsest', [0.6, 27, None], [0.6, 60, None]],
        ['coarsest', [0.65, 29, 0.25], [0.65, 65, None]],
        ['coarsest', [0.7, 31, 0.5], [0.7, 70, None]],
        ['coarsest', [0.75, 33, 0.75], [0.75, 75, None]],
        ['coarsest', [0.8, 36, None], [0.8, 80, None]],
        ['coarsest', [0.85, 38, 0.25], [0.85, 85, None]],
        ['coarsest', [0.9, 40, 0.5], [0.9, 90, None]],
        ['coarsest', [0.95, 42, 0.75], [0.95, 95, None]],
        ['coarsest', [1.0, 45, None], [1.0, 100, None]],
        ['coarsest', [1.05, 47, 0.25], [1.05, 105, None]],
        ['coarsest', [1.1, 49, 0.5], [1.1, 110, None]],
        ['coarsest', [1.15, 51, 0.75], [1.15, 115, None]],
        ['coarsest', [1.2, 54, None], [1.2, 120, None]],
        ['coarsest', [1.25, 56, 0.25], [1.25, 125, None]],
        ['coarsest', [1.3, 58, 0.5], [1.3, 130, None]],
        ['coarsest', [1.35, 60, 0.75], [1.35, 135, None]],
        ['coarsest', [1.4, 63, None], [1.4, 140, None]],
        ['coarsest', [1.45, 65, 0.25], [1.45, 145, None]],
        ['coarsest', [1.5, 67, 0.5], [1.5, 150, None]],
        ['coarsest', [1.55, 69, 0.75], [1.55, 155, None]],
        ['coarsest', [1.6, 72, None], [1.6, 160, None]],
        ['coarsest', [1.65, 74, 0.25], [1.65, 165, None]],
        ['coarsest', [1.7, 76, 0.5], [1.7, 170, None]],
        ['coarsest', [1.75, 78, 0.75], [1.75, 175, None]],
        ['coarsest', [1.8, 81, None], [1.8, 180, None]],
        ['coarsest', [1.85, 83, 0.25], [1.85, 185, None]],
        ['coarsest', [1.9, 85, 0.5], [1.9, 190, None]],
        ['coarsest', [1.95, 87, 0.75], [1.95, 195, None]],
        ['coarsest', [2.0, 90, None], [2.0, 200, None]],
        ]
    assert details == expected
Esempio n. 4
0
import wave1D_dn_vc as wave
import os, sys, shutil, glob

for pulse_tp in 'gaussian', 'cosinehat', 'half-cosinehat', 'plug':
    for Nx in 40, 80, 160:
        for sf in 2, 4:
            if sf == 1 and Nx > 40:
                continue  # homogeneous medium with C=1: Nx=40 enough
            print 'wave1D.pulse:', pulse_tp, Nx, sf

            wave.pulse(C=1, Nx=Nx, animate=False, # just hardcopies
                       version='vectorized',
                       T=2, loc='left', pulse_tp=pulse_tp,
                       slowness_factor=sf, medium=[0.7, 0.9],
                       skip_frame = 1,
                       sigma=0.05)
Esempio n. 5
0
import sys, os, glob
path = os.path.join(os.pardir, os.pardir,
                    os.pardir, os.pardir, 'wave', 'src-wave', 'wave1D')
#print path, glob.glob(path + '/w*')
sys.path.insert(0, path)
from wave1D_dn_vc import pulse
pulse_tp = sys.argv[1]
C = float(sys.argv[2])
pulse(pulse_tp=pulse_tp, C=C,
      Nx=100, animate=False, slowness_factor=4)