Beispiel #1
0
def make_stat_panel(Mlist,fignum=1,**kwargs):
    
    for M in Mlist:
        make_plot_lin([M],fignum=fignum,**kwargs)
    
    figs,Dirname = make_plot_lin(Mlist,fignum=fignum,label='r',**kwargs)
    graphes.save_figs(figs,savedir=Dirname,prefix='General',suffix='_vs_t',dpi=300,frmt='png',display=True)
Beispiel #2
0
def spatial_corr(data, N=1024, Dt=10):
    Cxx = np.zeros((N / 2, Dt))
    d = np.arange(N / 2)
    figs = {}

    for p in range(3):
        for k in range(Dt):
            key = data.keys()[k]
            Z = np.asarray(data[key])

            Ex = np.nanmean(np.power(Z[:N / 2, 0, 0, p], 2))
            Cxx[:, k] = np.nanmean(np.asarray([[
                Z[i, 0, 0, p] * Z[i + j, 0, 0, p] / Ex for i in range(N / 2)
            ] for j in range(N / 2)]),
                                   axis=1)
    #print(Cxx[0,:])
        C = np.nanmean(Cxx, axis=1)
        graphes.graph(d, C, fignum=1)
        graphes.set_axis(0, N / 4, -1, 1.5)
        figs.update(graphes.legende('d', 'C', ''))

    graphes.save_figs(figs,
                      savedir='./Corr_functions/',
                      suffix='',
                      prefix='',
                      frmt='pdf',
                      dpi=300)
Beispiel #3
0
def make_plot_lin(Mlist,Range=None,color='k',label=None,field=[['Ux','Uy'],['omega']],Dirbase=None,Dt=1,example=False,total=True,fignum=1,save=True):
    M = Mlist[0]
    if Dirbase==None:
        Dirbase = '/Users/stephane/Documents/Experiences_local/Accelerated_grid/PIV_data/Test6/' #local saving
        Dirbase = './Stat_avg/Panel/'+M.Id.date
    
    axes = panel_graphs(M,subplot=[2,3],fignum=fignum)

    frames = select_range(M,Range)
    
    figs={}    
    if hasattr(M,'Id'):
        Dirname = Dirbase+'/'+M.Id.get_id()+'/'+graphes.remove_special_chars(str(field))+'/'
    else:
        Dirname = Dirbase+'/JHTD_Data/'+graphes.remove_special_chars(str(field))+'/'
    print(Dirname)
    
    if Dt>1:
        print('Smoothed data')
        Dirname = Dirname + 'Smooth_Dt_'+str(int(Dt))+'/'

    figs.update(plot_scales(Mlist,axes,fignum=fignum,color=color,label=label))
    
    plt.sca(axes[2])
    frame = 1500
    Dt = 1400
    
    if label is None:
        labels = ['m^','b>','ko']
    else:
        labels = [label,label,label]
        
    for i,f in enumerate(field[0]):#should contain either one or two fields
        figs.update(graphes.pdf_ensemble(Mlist,f,frame,Dt=Dt,fignum=fignum,label=labels[i],norm=False))
        figs.update(graphes.legende(f,'pdf of '+f,''))

    plt.sca(axes[3])
    for f in field[1]:
        figs.update(graphes.pdf_ensemble(Mlist,f,frame,Dt=Dt,fignum=fignum,label=labels[2],norm=False))
        figs.update(graphes.legende(f,'pdf of '+f,''))    

    plt.sca(axes[4])
    corr.corr_v_t(Mlist,frame,axes=['Ux','Ux'],N=200,p=1,display=True,save=False,label=labels[0],fignum=fignum)
    corr.corr_v_t(Mlist,frame,axes=['Uy','Uy'],N=200,p=1,display=True,save=False,label=labels[1],fignum=fignum)
    
    plt.sca(axes[5])
    corr.corr_v_t(Mlist,frame,axes=['omega','omega'],N=200,p=1,display=True,save=False,label=labels[2],fignum=fignum)
    
    if save:
        graphes.save_figs(figs,savedir=Dirname,prefix='General',suffix='_vs_t',dpi=300,frmt='png',display=True)
    else:
        return figs,Dirname
Beispiel #4
0
def make_movie(M,Range=None,field=['E','vorticity'],Dirbase=None,Dt=1):
    if Dirbase==None:
        Dirbase = '/Users/stephane/Documents/Experiences_local/Accelerated_grid/PIV_data' #local saving
    
    nx,ny,nt = M.shape()
    
    axes = panel(M)
    if Range is not None:
        start,stop,step = tuple(Range)
    else:
        start,stop,step = tuple([0,nt,1])
    frames = range(start,stop,step)
    
#    field = ['Ux','Uy']
  #  field = ['E','vorticity']
    figs={}
    Dirname = Dirbase+'/'+M.Id.get_id()+'/'+graphes.remove_special_chars(str(field))+'/'
    print(Dirname)
    
    for i,f in enumerate(field):
        if not hasattr(M,f):
            M,field_n[i] = vgradient.compute(M,field[i],Dt=Dt)
            field = field_n
            
#    M,field[1] = vgradient.compute(M,field[1],Dt=Dt)
    
    if Dt>1:
        print('Smoothed data')
        Dirname = Dirname + 'Smooth_Dt_'+str(int(Dt))+'/'

    for i in frames:        
        graphes.set_fig(1)
        for axe in axes:
            plt.sca(axe)
            plt.cla()
            
        axes = panel(M,fignum=1)        
        plt.sca(axes[1])
        print(i)
        graphes.Mplot(M,field[0],i,fignum=1,log=True)
        plt.text(-10,80,field[0],fontsize=20)

        plt.sca(axes[2])
        graphes.Mplot(M,field[1],i,fignum=1,log=True)
        plt.text(-10,80,field[1],fontsize=20)
        
        figs.update(graphes.legende('','','Front view',cplot=True))
        graphes.save_figs(figs,savedir=Dirname,suffix='_'+str(i),dpi=100,frmt='png',display=False)
    return axes
Beispiel #5
0
def comparison(Mlist, indices=None, version=0, save=False):
    M = Mlist[0]
    #    suffix = graphes.set_name(M,param=['freq','v'])
    savedir = '/Users/stephane/Documents/Experiences_local/Results/Vortex_collision/' + M.Id.date + '/'
    subdir = 'Summary/'

    ######### Comparison spectrum ##############
    for M, ind in zip(Mlist, indices):
        figs = spectrum_1d(M,
                           indices=ind,
                           norm_factor=(M.param.v / 100.)**(2. / 3))
    graphes.save_figs(figs,
                      savedir=savedir + subdir,
                      prefix='norm',
                      suffix=str(version))
Beispiel #6
0
def vfield(sigma, modes, fignum=1):

    names = {
        'sigma': sigma,
        'n': modes
    }  #name:eval(name) for name in ['sigma','n','N_p']}# this piece of code does not work

    t = distribution(sigma, modes)

    B = 1.
    n = 100
    dx = 2 * B / n
    x = np.arange(-B, B, dx)
    y = 0.
    z = np.arange(-B, B, dx)
    P = np.asarray(np.meshgrid(x, y, z))

    dim = P.shape
    N = np.prod(dim[1:])
    X = np.reshape(P[0, ...], (N, ))
    Y = np.reshape(P[1, ...], (N, ))
    Z = np.reshape(P[2, ...], (N, ))

    Pos = [np.asarray([x0, y0, z0]) for x0, y0, z0 in zip(X, Y, Z)]

    V = biot.velocity_from_line(t.paths, Pos, Gamma=1, d=3)

    V_2d = np.reshape(V, (n, n, 3))
    E = np.sum(np.power(V_2d, 2), axis=2)

    subplot = [111]
    fig, axes = panel.make(subplot, fignum=fignum)
    fig.set_size_inches(10, 10)

    graphes.color_plot(x, z, E, fignum=fignum, vmin=0, vmax=0, log=True)
    c = graphes.colorbar()

    figs = {}
    figs.update(graphes.legende('X', 'Z', 'E'))

    graphes.save_figs(figs,
                      prefix='Random_path/V_Distributions/Fields/',
                      suffix=suf(names),
                      dpi=300,
                      display=True,
                      frmt='png')
Beispiel #7
0
def example(M,Range=None,field=['E','vorticity']):
    nx,ny,nt = M.shape()
    axes = panel(M)
    if Range is not None:
        start,stop,step = tuple(Range)
    else:
        start,stop,step = tuple([0,nt,1])
    frames = range(start,stop,step)
    
#    field = ['Ux','Uy']
  #  field = ['E','vorticity']
    
    figs={}
    
    Dirbase = '/Users/stephane/Documents/Experiences_local/Accelerated_grid/PIV_data' #local saving
    Dirname = Dirbase+'/'+M.Id.get_id()+'/'+graphes.remove_special_chars(str(field))+'/'
    print(Dirname)
    
    M,field[0] = vgradient.compute(M,field[0])
    M,field[1] = vgradient.compute(M,field[1])
    
    for i in frames:        
        graphes.set_fig(1)
        for axe in axes:
            plt.sca(axe)
            plt.cla()
        axes = panel(M,fignum=1)    
            
        plt.sca(axes[1])
        graphes.Mplot(M,field[0],i,log=True)
        plt.text(-10,20,field[0],fontsize=20)

        plt.sca(axes[2])
        graphes.Mplot(M,field[1],i,fignum=1,log=True)
        plt.text(-10,20,field[1],fontsize=20)
        
        figs.update(graphes.legende('','','Front view',cplot=True))
        graphes.save_figs(figs,savedir=Dirname,suffix='_'+str(i),dpi=100,frmt='png')
    return axes
    
    
Beispiel #8
0
def time_corr(data, param, N=800):
    keys = data.keys()

    figs = {}

    for p in range(3):
        print(p)
        keys = np.sort(keys)

        [data[key] for key in keys]
        t = np.asarray([param[key]['t0'] for key in keys[0:N / 2]])

        C = np.zeros(N / 2)
        Dt = np.zeros(N / 2)
        for i in range(N / 2):
            if i % 100 == 0:
                print(i)
            C[i] = np.nanmean(np.asarray([
                data[key1][..., p] * data[keys[i + j]][..., p]
                for j, key1 in enumerate(keys[0:N / 2])
            ]),
                              axis=(0, 1, 2))
            Dt[i] = np.nanmean(
                np.asarray([
                    param[keys[j + i]]['t0'] - param[keys[j]]['t0']
                    for j in range(N / 2)
                ]))

    #  print(Dt)
        graphes.graph(Dt, C / C[0], fignum=4)
        graphes.set_axis(0, 400, -1, 1.1)
        figs.update(graphes.legende('t', 'C', 'JHTD corr functions'))

    graphes.save_figs(figs,
                      savedir='./Corr_functions/',
                      suffix='',
                      prefix='',
                      frmt='pdf',
                      dpi=300)
Beispiel #9
0
def compute_tc(Mlist, Corr_fun, fields, log=True):
    M = Mlist[0]

    labels = ['ro', 'k^']
    s = ''
    figs = {}

    for i, field in enumerate(fields):
        C = Corr_fun[field]

        t = []
        tau = []
        for tup in C:
            tc = tup[1]
            C_norm = tup[2]
            N = len(C_norm) / 2
            ind1 = np.argmin(np.abs(C_norm[N + 1] / 2. - C_norm[1:N]))
            ind2 = np.argmin(np.abs(C_norm[N + 1] / 2. - C_norm[N:]))
            tau.append(tc[ind2 + N] - tc[ind1])
            t.append(tc[N])

        if log:
            graphes.graphloglog(t, tau, fignum=1, label=labels[i])
            # graphes.set_axis(min(t),max(t),min(t),0.1)
        else:
            graphes.graph(t, tau, fignum=1, label=labels[i])
            graphes.set_axis(0, 0.4, 0, 0.1)
        s = s + field + ', '
        figs.update(graphes.legende('t (s)', 't_c (s)', s[:-2]))

        name = 'fx_' + str(int(np.floor(M.fx * 1000))) + 'm'
        graphes.save_figs(figs,
                          prefix='./Stat_avg/Time_correlation/Overview/' +
                          field + '/' + name,
                          dpi=300,
                          display=True,
                          frmt='png')
Beispiel #10
0
def make_figures(M, indices=None, version=0):
    suffix = graphes.set_name(M, param=['freq', 'v'])
    savedir = '/Users/stephane/Documents/Experiences_local/Results/Vortex_collision/' + M.Id.date + '/' + M.Id.get_id(
    ) + '/'

    ###### Field examples ##############
    subdir = 'Example/'
    figs = example(M, i=None)
    graphes.save_figs(figs, savedir=savedir + subdir, prefix=suffix)
    graphes.plt.close('all')
    ####### Time average fields #############
    subdir = 'Time average/'
    figs = time_average(M, indices=indices)
    graphes.save_figs(figs, savedir=savedir + subdir, prefix=suffix)
    graphes.plt.close('all')

    ######## Energy vs time ##############
    subdir = 'Spatial average/'
    figs = spatial_average(M, indices=indices)
    graphes.save_figs(figs, savedir=savedir + subdir, prefix=suffix)
    graphes.plt.close('all')

    ######### 2d spectrum, average in time ##############
    subdir = 'Spectrum/'
    figs = spectrum_2d(M, indices=indices)
    graphes.save_figs(figs, savedir=savedir + subdir, prefix=suffix)
    graphes.plt.close('all')

    ######### 1d spectrum, average in time ##############
    subdir = 'Spectrum/'
    figs = spectrum_1d(M, indices=indices)
    graphes.save_figs(figs,
                      savedir=savedir + subdir,
                      prefix=suffix,
                      suffix=str(version))
    graphes.plt.close('all')
Beispiel #11
0
def display_profile(M,
                    i,
                    t0,
                    z,
                    Ux_moy,
                    Uy_moy,
                    Ux_rms,
                    Uy_rms,
                    Dt=1,
                    fig=1,
                    logscale=True):
    t = M.t[t0]
    U_noise_low, U_noise_high = check.bounds(M, t0)
    graphes.set_fig(fig)
    title = 't=' + str(int(t * 1000)) + ' ms' + 'Urms_zprofile'

    Dir = M.fileDir + 'Velocity_distribution_log_M_2015_12_28_Meanfield' + '/'

    z, Ux_th = fit_profile(M, t0, z, Ux_rms, p=9, log=True)
    z, Uy_th = fit_profile(M, t0, z, Uy_rms, p=9, log=True)

    #  Ux_adv,Uy_adv = advection(Dt,z,Ux_moy,Uy_moy,Ux_rms,Uy_rms)
    #  print(Ux_adv/Ux_rms)
    #    print(Ux_adv)

    figs = {}
    if logscale:
        #   graphes.semilogx(Ux_rms,z,fignum=0,label='bo--')
        graphes.semilogx(Uy_rms, z, fignum=i, label='k^--')

        graphes.semilogx([U_noise_low, U_noise_low], [-400, -100],
                         fignum=i,
                         label='r--')
        graphes.semilogx([U_noise_high, U_noise_high], [-400, -100],
                         fignum=i,
                         label='r--')

        #   graphes.semilogx(np.sqrt(np.power(Ux_moy,2)),z,fignum=i,label='b+--')
        #   graphes.semilogx(np.sqrt(np.power(Uy_moy,2)),z,fignum=i,label='c ^--')

        graphes.set_axis(10**0, 10**4, -300, -120)
        figs.update(graphes.legende('$U_{rms} (t/t_0)$', '$z$ (m)', ''))
        file = graphes.set_title(M, title)
        filename = Dir + file

    else:
        graphes.graph(Ux_rms, z, fignum=0, label='bo--')
        graphes.graph(Uy_rms, z, fignum=i, label='k^--')

        #   graphes.semilogx(Ux_th,z,fignum=i,label='r-')
        #   graphes.semilogx(Uy_th,z,fignum=i,label='r-')
        graphes.graph([U_noise_low, U_noise_low], [-400, -100],
                      fignum=i,
                      label='r--')
        graphes.graph([U_noise_high, U_noise_high], [-400, -100],
                      fignum=i,
                      label='r--')

        graphes.graph(np.sqrt(np.power(Ux_moy, 2)), z, fignum=i, label='b+--')
        graphes.graph(np.sqrt(np.power(Uy_moy, 2)), z, fignum=i, label='c ^--')

        graphes.set_axis(0, 2.5 * 10**3, -300, -120)
        figs.update(graphes.legende('$U_{rms} (t/t_0)$', '$z$ (m)', ''))
        file = graphes.set_title(M, title)
        filename = Dir + file

        graphes.save_figs(figs,
                          savedir='./Spreading/Stat_average_lin/',
                          suffix='',
                          prefix='2015_12_28_front_' + str(t0),
                          frmt='png')

    return figs
def example(filename):
    figs = {}
    savedir = '/Users/stephane/Documents/Postdoc_Chicago/Process_data/Scripts/Example/Smoothing/'

    M = M_manip.load_Mdata_file(filename, data=True)
    M.get('E')
    M.get('omega')

    nx, ny, nt = M.shape()
    x, y = M.x, M.y

    i = nt / 2

    # display raw energy
    graphes.Mplot(M, 'E', i, vmin=0, vmax=50000, fignum=1, colorbar=True)
    figs.update(
        graphes.legende('$x$ (mm)',
                        '$y$ (mm)',
                        'Energy without pre-processing',
                        cplot=True))

    #Display raw vorticity
    graphes.Mplot(M, 'omega', i, vmin=0, vmax=80, fignum=2, colorbar=True)
    figs.update(
        graphes.legende('$x$ (mm)',
                        '$y$ (mm)',
                        'Vorticity without pre-processing',
                        cplot=True))

    # Look for bada data point in amplitude
    E = M.E[..., i]
    tup, errors = cdata.rm_baddata(E, borne=2.)
    xc = []
    yc = []
    for t in tup:
        xc.append([x[t[0], t[1]]])
        yc.append([y[t[0], t[1]]])
    graphes.graph(xc, yc, label='ro', fignum=2)
    print(figs)
    graphes.save_figs(figs, savedir=savedir)

    Ux, Uy = M.Ux[..., i], M.Uy[..., i]
    #replace component of the velocity
    Ux = cdata.replace_data(Ux, tup)[..., 0]
    Uy = cdata.replace_data(Uy, tup)[..., 0]
    U = np.transpose(np.asarray([Uy, Ux]), (1, 2, 0))

    dU = strain.strain_tensor_C(U, b=2.)
    omega, enstrophy = strain.vorticity(dU, d=2, norm=False)
    E = Ux**2 + Uy**2

    graphes.color_plot(x, y, omega, vmin=0, vmax=80, fignum=4)
    graphes.plt.colorbar()
    figs.update(
        graphes.legende('$x$ (mm)',
                        '$y$ (mm)',
                        'Vorticity after pre-processing',
                        cplot=True))

    graphes.color_plot(x, y, E, vmin=0, vmax=50000, fignum=3)
    graphes.plt.colorbar()
    figs.update(
        graphes.legende('$x$ (mm)',
                        '$y$ (mm)',
                        'Energy after pre-processing',
                        cplot=True))

    ### Gaussian filter
    omega_filt = filters.gaussian_filter(omega, sigma=2.)  #[...,0]
    graphes.color_plot(x, y, omega_filt, vmin=0, vmax=80, fignum=5)
    graphes.plt.colorbar()
    figs.update(
        graphes.legende('$x$ (mm)',
                        '$y$ (mm)',
                        'Vorticity after gaussian smoothing',
                        cplot=True))
    graphes.save_figs(figs, savedir=savedir)
Beispiel #13
0
def vertical_spreading(M, N, Dt=10, label='k^'):
    """
    Compute the vertical profile of RMS velocity as a function of time
    
    INPUT
    -----
    
    OUTPUT
    -----
    figs : dict
        key correspond to figure index, value to their standarzied filename
    """
    n = 160
    ti = 50

    figs = {}

    z0 = -M.param.stroke  #!!!
    z_1 = np.zeros(n)
    z_2 = np.zeros(n)

    t = np.zeros(n)
    E = np.zeros(n)

    indices = [(i + 1) * N + ti for i in range(n)]
    for i, t0 in enumerate(indices):
        z_1[i], z_2[i], E[i], std_E = velocity_profile(M,
                                                       i,
                                                       t0,
                                                       Dt=Dt,
                                                       display=True)
        t[i] = M.t[t0]
    #average on horizontal line (if rotated, correspond to vertical line)


#compute the vertical RMS velocity profile

    fig = 1
    graphes.set_fig(fig)
    graphes.graph(t, z_1 - z0, fignum=fig, label=label)
    graphes.graph(t, z_2 - z0, fignum=fig, label=label)
    figs.update(graphes.legende('$t$ (s)', '$Front position z$ (mm)', ''))

    fig = 2
    graphes.set_fig(fig)
    graphes.graphloglog(t, np.abs(z0 - z_1), fignum=fig, label=label)
    graphes.graphloglog(t, np.abs(z0 - z_2), fignum=fig, label=label)

    graphes.graphloglog(t, np.power(t, 0.5) * 10**2, fignum=fig, label='r--')
    figs.update(graphes.legende('$t$ (s)', '$Front position z (log)$ (mm)',
                                ''))

    fig = 3
    graphes.set_fig(fig)
    graphes.graphloglog(t, E, fignum=fig, label=label)
    figs.update(graphes.legende('$t$ (s)', '$U_{rms}$ (mm/s)', ''))

    t_min = 6 * 10**-2
    t_max = 4 * 10**-1
    indices = np.where(np.logical_and(t < t_max, t > t_min))
    t_part = t[indices]
    z_part = np.abs(z0 - z_1[indices])

    P = np.polyfit(np.log(t_part / t_min), np.log(z_part), 1)
    C = np.exp(P[1])
    nu = C**2 / t_min
    print(P[0], C)
    print('Effective diffusion coefficient : ' + str(nu) + ' mm^2/s')

    graphes.graphloglog(t, C * np.power(t / t_min, P[0]), fignum=2, label='r-')
    figs.update(graphes.legende('$t$ (s)', '$Front position z (log)$ (mm)',
                                ''))

    graphes.save_figs(figs,
                      savedir='./Spreading/',
                      suffix='',
                      prefix='2015_12_28_front_both_C')

    return figs
Beispiel #14
0
def spreading(Mlist, logscale=False):
    labels = ['k^', 'ro', 'bs']
    M = Mlist[0]
    nx, ny, nt = M.shape()

    #for i,M in enumerate(Mlist):
    #    vertical_spreading(M,10,Dt=20,label=labels[i])
    print(M.shape())
    frame = range(10, 350, 10)
    Dt = np.asarray(
        [M.t[frame[i]] - M.t[frame[i - 1]] for i in range(1, len(frame))])
    # print(Dt)
    #    Ux_adv = np.zeros(nx)
    #    Uy_adv = np.zeros(ny)

    D = 5 * 10**2
    z_init, U_init = initial_shape(offset=140)

    t_init = 0.026

    for i, t0 in enumerate(frame[:-1]):
        z, Ux_moy, Uy_moy, Ux_rms, Uy_rms = profile_average(Mlist,
                                                            t0,
                                                            Dt=10,
                                                            display=False)

        print(M.t[t0])
        z_dif, U_dif = solve_diffusion(-z_init, U_init, D, M.t[t0] - t_init)

        # print(U_dif)

        if i == 0:
            fx = interp.splrep(z, Ux_rms, s=2)  # kind='cubic')
            fy = interp.splrep(z, Uy_rms,
                               s=2)  # interp1d(z, Ux_rms, kind='cubic')

            Ux_adv = interp.splev(z, fx)
            Uy_adv = interp.splev(z, fy)

        figs = display_profile(Mlist[0],
                               i,
                               t0,
                               z,
                               Ux_moy,
                               Uy_moy,
                               Ux_rms,
                               Uy_rms,
                               Dt=Dt[i],
                               fig=i,
                               logscale=logscale)
        #     Ux_adv,Uy_adv = advection(Dt[i],i,z,Ux_moy,Uy_moy,Ux_adv,Uy_adv,display=True)

        graphes.semilogx(U_dif, z_dif, fignum=i, label='r-')
        graphes.set_axis(10**0, 10**4, -300, -120)

        graphes.save_figs(figs,
                          savedir='./Spreading/Diffusion_noNoise/',
                          suffix='',
                          prefix='2015_12_28_front_' + str(t0),
                          frmt='png')

    figs = {}
    graphes.set_fig(1)
    figs.update(graphes.legende('$t$ (s)', '$Front position z$ (mm)', ''))
    graphes.set_fig(2)
    figs.update(graphes.legende('$t$ (s)', '$Front position z (log)$ (mm)',
                                ''))
    graphes.set_fig(3)
    figs.update(graphes.legende('$t$ (s)', '$U_{rms}$ (mm/s)', ''))

    graphes.save_figs(figs,
                      savedir='./Spreading/',
                      suffix='',
                      prefix='2015_12_28_all_')
def single(filename, display=False):
    figs = {}
    savedir = '/Users/stephane/Documents/Postdoc_Chicago/Process_data/Scripts/Samples/Smoothing/'

    filesave, ext = os.path.splitext(filename)
    filesave = filesave + '_processed.hdf5'

    M = M_manip.load_Mdata_file(filename, data=True)
    M.get('E')
    M.get('omega')

    nx, ny, nt = M.shape()
    i = nt / 2

    # display raw energy
    if display:
        graphes.plt.close('all')
        graphes.Mplot(M, 'E', i, vmin=0, vmax=50000, fignum=1, colorbar=True)
        figs.update(
            graphes.legende('$x$ (mm)',
                            '$y$ (mm)',
                            'Energy without pre-processing',
                            cplot=True))

        #Display raw vorticity
        graphes.Mplot(M, 'omega', i, vmin=0, vmax=100, fignum=2, colorbar=True)
        figs.update(
            graphes.legende('$x$ (mm)',
                            '$y$ (mm)',
                            'Vorticity without pre-processing',
                            cplot=True))
        graphes.save_figs(figs, savedir=savedir, prefix=M.Id.get_id())

        graphes.Mplot(M, 'Ux', i, vmin=-200, vmax=200, fignum=3, colorbar=True)
        figs.update(
            graphes.legende('$x$ (mm)',
                            '$y$ (mm)',
                            'Ux after pre-processing',
                            cplot=True))

    M = cdata.remove_spurious(M, borne=1.5)
    M.get('E', force=True)
    M.get('omega', force=True)

    if display:
        graphes.Mplot(M, 'E', i, vmin=0, vmax=50000, fignum=4, colorbar=True)
        figs.update(
            graphes.legende('$x$ (mm)',
                            '$y$ (mm)',
                            'Energy after pre-processing',
                            cplot=True))

        #Display raw vorticity
        graphes.Mplot(M, 'omega', i, vmin=0, vmax=100, fignum=5, colorbar=True)
        figs.update(
            graphes.legende('$x$ (mm)',
                            '$y$ (mm)',
                            'Vorticity after pre-processing',
                            cplot=True))

        ### Gaussian filter
        omega_filt = track.smoothing(M, i, field='omega', sigma=2.5)
        graphes.color_plot(M.x, M.y, omega_filt, vmin=0, vmax=100, fignum=6)
        graphes.plt.colorbar()
        figs.update(
            graphes.legende('$x$ (mm)',
                            '$y$ (mm)',
                            'Vorticity after gaussian smoothing',
                            cplot=True))
        graphes.save_figs(figs, savedir=savedir, prefix=M.Id.get_id())
    ### Gaussian filter
#    omega_filt = filters.gaussian_filter(omega, sigma=2.)#[...,0]
#    graphes.color_plot(x,y,omega_filt,vmin=0,vmax=50,fignum=5)
#    graphes.plt.colorbar()
#    figs.update(graphes.legende('$x$ (mm)','$y$ (mm)','Vorticity after gaussian smoothing',cplot=True))
#   graphes.save_figs(figs,savedir=savedir)

    to_hdf5.write(M, filename=filesave, key='Mdata')
Beispiel #16
0
def single(M,fun,**args,**kwargs):
    """
    call a measurement function fun and generate the following output 
    """
    data = {}
    output = fun(M,**args,**kwargs)
    data['X'] = output[0]
    data['Y'] = output[1]
    data['param'] = output[2:]

    figs = {}
    graphes.graph(X,Y,fignum=1)
    figs.update(graphes.legende('$t$ (s)','$<E>_{x,y}$ (mm^2/s^2)',graphes.title(M)))

    savedir = location(M)
    graphes.save_figs(figs,savedir=savedir,suffix='label',prefix='',frmt='pdf',dpi=300,display=True)
    
    write_dictionnary(file,keys,List_info,delimiter='\t')
    
    return data
    
def dict_fun():
    
    functions = [decay.decay,]
    
def multiple(Mlist):
    pass
    
def location(M):
    savedir = './Vortex_Turbulence/Mean_flow/'+date+'/'
    
Beispiel #17
0
def save_graphes(M, figs, method='vorticity'):
    graphes.save_figs(figs,
                      savedir='./Results/' + os.path.basename(M.dataDir) + '/',
                      suffix='_method_' + method + '_')
Beispiel #18
0
def V_distribution2(n, sigma, fignum=1):

    N = 10**4
    N_p = 10
    # names = {name:eval(name) for name in ['sigma','n','N_p']}# this piece of code does not work systematically
    names = {
        'sigma': sigma,
        'n': n,
        'Np': N_p
    }  #name:eval(name) for name in ['sigma','n','N_p']}# this piece of code does not work systematically

    B = 1.
    V_tot = []
    d = 3

    subplot = ['131', '132', '133']
    labels = ['Ux', 'Uy', 'Uz']

    fig, axes = panel.make(subplot, fignum=fignum + 1, axis='on')
    fig.set_size_inches(20, 5)
    figs = {}
    title = 'sigma=' + str(sigma) + ', n=' + str(n) + ', Np=' + str(N_p)
    V_tot = np.zeros((N, N_p, d))

    for p in range(N_p):
        Theta = 2 * np.pi * np.random.random(
            N)  # uniform distribution between 0 and 2pi
        Phi = np.pi * np.random.random(
            N)  # uniform distribution between 0 and pi
        R = B * np.random.random(N)

        X = R * np.cos(Theta) * np.sin(Phi)
        Y = R * np.sin(Theta) * np.sin(Phi)
        Z = R * np.cos(Phi)

        Pos = [np.asarray([x0, y0, z0]) for x0, y0, z0 in zip(X, Y, Z)]

        t = distribution(sigma, n)
        V = biot.velocity_from_line(t.paths, Pos, Gamma=1, d=3)
        if p == 0:
            t_tot = t
        else:
            t_tot.paths = t_tot.paths + t.paths

        V_tot[:, p, :] = V

        figs = radial_density(t, fignum=fignum, label='k')
        figs.update(graphes.legende('R', 'PDF(R)', title))

        for i, num in enumerate(subplot):
            panel.sca(axes[num])
            graphes.distribution(V[..., i],
                                 normfactor=1,
                                 a=10.,
                                 label='k',
                                 fignum=fignum + 1,
                                 norm=True)
            figs.update(graphes.legende(labels[i], 'PDF ' + labels[i], title))

    figs = radial_density(t_tot, fignum=fignum, label='r')
    figs.update(graphes.legende('R', 'PDF(R)', title))

    for i, num in enumerate(subplot):
        panel.sca(axes[num])
        graphes.distribution(V_tot[..., i],
                             normfactor=N_p,
                             a=10.,
                             label='r',
                             fignum=fignum + 1,
                             norm=True)
        figs.update(graphes.legende(labels[i], 'PDF ' + labels[i], title))

    graphes.save_figs(figs,
                      prefix='Random_path/V_Distributions/Compilation/',
                      suffix=suf(names),
                      dpi=300,
                      display=True,
                      frmt='png')
Beispiel #19
0
def compile(Mlist, V=None, method='circulation'):
    symbol = {'50': '^', '125': 'o', '250': 's'}
    color = {'circulation': 'r', 'vorticity': 'b', 'joseph': 'k'}
    labels = {key: color[method] + symbol[key] for key in symbol.keys()}
    if V == None:
        sub_labels = labels
        piston_v = None
    else:
        piston_v = str(V)
        sub_labels = {piston_v: labels[piston_v]}  #,'125':'ro','250':'bs'}

    figs = {}

    for i, M in enumerate(Mlist):
        piston1 = browse.get_string(M.Sdata.fileCine,
                                    '_v',
                                    end='.cine',
                                    shift=0,
                                    display=False,
                                    from_end=True)
        piston2 = browse.get_string(M.Sdata.fileCine,
                                    '_v',
                                    end='_p30mum',
                                    shift=0,
                                    display=False,
                                    from_end=True)

        error = 0.25
        for piston in [piston1, piston2]:
            if piston in sub_labels.keys():
                print(M.dataDir)
                dx = np.mean(np.diff(M.x[0, :]))
                print('Spatial scale : ' + str(dx) + ' mm/box')
                lc, std_lc, Gamma, std_Gamma = compute(M,
                                                       method=method,
                                                       display=False,
                                                       fignum=(i + 1) * 2)

                #                print(piston,dx,lc,std_lc)
                if std_lc / lc < error:
                    graphes.errorbar(dx,
                                     lc, [0],
                                     std_lc,
                                     label=labels[piston],
                                     fignum=250)
                    figs.update(graphes.legende('mm/box', 'Core size (mm)',
                                                ''))
                    graphes.set_axis(0, 1.5, 0, 6.)

                    if method == 'circulation':
                        #   if np.abs(std_Gamma/Gamma)<error:
                        graphes.errorbar(dx,
                                         Gamma, [0],
                                         std_Gamma,
                                         label=labels[piston],
                                         fignum=251)
                        figs.update(
                            graphes.legende('mm/box', 'Circulation (mm^2/s)',
                                            ''))
                        graphes.set_axis(0, 1.5, -2 * 10**4, 0)
                #print(piston,dx,lc,std_lc
                print('')

    print('figure', figs)
    print(figs)
    graphes.save_figs(figs,
                      suffix='Compilation_method_' + method + '_v' + piston_v)
Beispiel #20
0
def make_plot(M,Range=None,color='k',field=['E','vorticity'],Dirbase=None,Dt=1,example=False,total=True,fignum=1,save=True):
    if Dirbase==None:
        Dirbase = '/Users/stephane/Documents/Experiences_local/Accelerated_grid/PIV_data/Test6/' #local saving
        Dirbase = './Stat_avg/Panel/'+M.Id.date
    
    axes = flex_panel(M,fignum=fignum)
    
   # for axe in axes:
    #    plt.sca(axe)
        #plt.cla()
    
    frames = select_range(M,Range)
    
#    field = ['Ux','Uy']
  #  field = ['E','vorticity']
    figs={}
    
    if hasattr(M,'id'):
        Dirname = Dirbase+'/'+M.Id.get_id()+'/'+graphes.remove_special_chars(str(field))+'/'
    else:
        Dirname = Dirbase+'/JHTD_Data/'+graphes.remove_special_chars(str(field))+'/'
    print(Dirname)
    
    if Dt>1:
        print('Smoothed data')
        Dirname = Dirname + 'Smooth_Dt_'+str(int(Dt))+'/'

    #Dt = 50
    t_moy,E_moy = access.avg_vs_t(M,'E',frames,Dt=Dt)
    t_moy,Omega_moy = access.avg_vs_t(M,'omega',frames,Dt=Dt)
    t_moy,Strain_moy = access.avg_vs_t(M,'strain',frames,Dt=Dt)
    t_moy,Y_pdf_moy = access.avg_vs_t(M,field[1],frames,Dt=Dt)
    
    epsilon = scale.dissipation_rate(Omega_moy) #dissipation rate
    eta = scale.K_scale(epsilon)  #dissipative scale
    
    micro_1 = np.sqrt(1./4*E_moy/Strain_moy**2)
    micro_2 = np.sqrt(E_moy/(Omega_moy)**2) 
    
    Re = scale.Re(micro_1,eta)
    Re_lambda_1 = scale.Re_lambda(E_moy,micro_1)
    Re_lambda_2 = scale.Re_lambda(E_moy,micro_2)
    
    L = scale.I_scale(Re,E_moy)
    
#    plt.sca(axes[2])
#    graphes.graphloglog(t_moy,E_moy,fignum=1,label=color+'o-')
    #Fourier.add_theory(t_moy,E_moy,[-2.],fignum=1)
#    graphes.graphloglog(t_moy,Y_pdf_moy,fignum=1,label=color+'s-')
#    graphes.graphloglog(t_moy,epsilon,fignum=1,label='gv-')
    #Fourier.add_theory(t_moy,epsilon,[-3.],fignum=1)    
#    figs.update(graphes.legende('t (s)','E (mm^2/s^2), epsilon(mm^2/s^-3)',''))
    
    plt.sca(axes[1])
    graphes.graphloglog(t_moy,eta,fignum=fignum,label=color+'o-')
    graphes.graphloglog(t_moy,micro_1,fignum=fignum,label=color+'s-')
    graphes.graphloglog(t_moy,micro_2,fignum=fignum,label='cp-')
    graphes.graphloglog(t_moy,L,fignum=fignum,label='gv-')
    figs.update(graphes.legende('t (s)','eta (mm), lambda (mm)',''))        
    
    plt.sca(axes[2])
    graphes.graphloglog(t_moy,Re,fignum=fignum,label=color+'o-')
    graphes.graphloglog(t_moy,Re_lambda_1,fignum=fignum,label=color+'s-')
    graphes.graphloglog(t_moy,Re_lambda_2,fignum=fignum,label='cp-')
    figs.update(graphes.legende('t (s)','Re , Re_lambda',''))
    
   # print(t_moy)
#    print(Y_moy)
   # print(t)
#    print(Y_moy)
    indices = [0,1]
#    indices = [1,4]
    cla_axes = [axes[i] for i in indices]
    
    if save:
        graphes.save_figs(figs,savedir=Dirname,prefix='General',suffix='_vs_t',dpi=300,frmt='png',display=True)

    individual=False
    
    if example:
        frames_disp =[1200]
    else:
        step =frames[1]-frames[0]
        frames_disp = range(frames[0]+step*10,frames[-1],step*10)
        
    if individual:
        for frame in frames_disp:  
            #print(frame)
            #print(frames)
            i = frames.index(frame)      
            graphes.set_fig(1)
            for axe in cla_axes:
                plt.sca(axe)
                plt.cla()
            axes = flex_panel(M,fignum=1)   
            
            
            if total:     
                plt.sca(axes[0])
                graphes.Mplot(M,field[0],frame,fignum=1,log=True)
                plt.text(-10,80,field[0],fontsize=20)
                
            plt.sca(axes[1])
         #   graphes.graphloglog(t_moy,eta,fignum=1,label='ko-')
         #   graphes.graphloglog(t_moy,micro,fignum=1,label='ks-')
            graphes.graph([t_moy[i]],[eta[i]],fignum=1,label='ro')
            graphes.graph([t_moy[i]],[micro_1[i]],fignum=1,label='rs')
            graphes.graph([t_moy[i]],[micro_2[i]],fignum=1,label='rp')
            graphes.graphloglog([t_moy[i]],[L[i]],fignum=1,label='rv-')
            
            plt.sca(axes[2])
            graphes.graphloglog([t_moy[i]],[Re[i]],fignum=1,label='ro-')
            graphes.graphloglog([t_moy[i]],[Re_lambda_1[i]],fignum=1,label='rs-')
            graphes.graphloglog([t_moy[i]],[Re_lambda_2[i]],fignum=1,label='rp-')

        
            plt.sca(axes[3])
            figs.update(graphes.pdf(M,'Ux',frame,Dt=Dt,fignum=1,label='m^'))
            figs.update(graphes.pdf(M,'Uy',frame,Dt=Dt,fignum=1,label='b>'))
            figs.update(graphes.legende('t (s)','Re , Re_lambda',''))

            plt.sca(axes[4])
            figs.update(graphes.pdf(M,field[1],frame,Dt=Dt,fignum=1,label=color+'-'))
        
#        graphes.Mplot(M,field[1],i,fignum=1,log=True)
#        plt.text(-10,80,'PDF '+field[1],fontsize=20)       
#        figs.update(graphes.legende('','','Front view',cplot=True))
            graphes.save_figs(figs,savedir=Dirname,suffix='_'+str(frame),dpi=100,frmt='png',display=False)
            
    return axes
def example():
    Slist = Sdata_manip.load_all()
    graphic(Slist)

    graphes.save_figs(figs, savedir='./Figures/')
Beispiel #22
0
def corr_v_d(Mlist,
             t,
             axes=['Ux', 'Ux'],
             N=100,
             Dt=1,
             p=1,
             display=False,
             save=False,
             label='^',
             fignum=1):
    """
    compute the correlation function in space at a given time. Average over space (ie along d-1 dimensions of Mlist[axes[0]]),and eventually over time
    INPUT
    ------
    M : Mdata object
        must have attributes : t, fields ('Ux','Uy', ...)
        must have method shape()
    t : int
        time index
    axes : 2 elements string list
        attributes of M to be used for the correlation function
    N : int
        Number of frames before and after time t.
    p : int. default value is 1
        power of the fields C_p(Dt) = U1**p * U2**p / <U1**2p >
    display : bool. default value is false
    """
    #    Ct=[]
    #how to average ?? -> need a mean on several realization ? or just substract the average value (in space) ?
    M = Mlist[0]
    tlist = M.t
    # print("Compute mean values")
    tmin = max(0, t - N)
    tmax = min(len(tlist) - 1, t + N)
    #print(tmin)
    #print(tmax)
    t_c = np.asarray(M.t)[np.arange(tmin, tmax)]  #-M.t[t]
    # print(np.mean(np.diff(t_c)))
    #max number of time step
    #  print("Compute mean values 2")
    #Compute the average flow
    Xm = []
    Ym = []
    for M in Mlist:
        Xref, Yref = chose_axe(M, t, axes)
        Xm.append(Xref)
        Ym.append(Yref)

    Xm = np.asarray(Xm)
    Ym = np.asarray(Ym)
    #  print(Xm.shape)
    Xmoy_ref, Xstd_ref = statP.average(Xref, axis=())

    #idea : compute the flow average over several realizations (ensemble avg)
    Ct = []
    for tc in range(tmin, tmax):
        Sp = []
        Xt_moy = []
        XDt_moy = []
        for M in Mlist:
            Xref, Yref = chose_axe(M, t, axes)
            Xt_m, Xstd_ref = statP.average(Xref)
            Xt_moy.append(Xt_m)

            X, Y = chose_axe(M, tc, axes)
            XDt_m, Xstd = statP.average(X)
            XDt_moy.append(XDt_m)

        Xt_ref = statP.average(Xt_moy)
        XDt_ref = statP.average(XDt_moy)

        for M in Mlist:
            Xref, Yref = chose_axe(M, t, axes)
            #  Xmoy_ref,Xstd_ref=statP.average(Xref)
            X, Y = chose_axe(M, tc, axes)
            #  Xmoy,Xstd=statP.average(X)
            Sp.append((X - XDt_ref)**p * (Xref - XDt_ref)**p)
    #   print(np.shape(Sp))
        Ct.append(statP.average(Sp)[0])
    #   print(Ct)
    C0 = Ct[t - tmin]
    C_norm = np.asarray(Ct) / C0

    indices = np.argsort(t_c)
    t_c = t_c[indices] - M.t[t]
    C_norm = C_norm[indices]

    #plot distribution of Sp values ?
    figs = {}
    if display or save:
        field = axes[0]
        title = str(axes[0]) + ', ' + str(axes[1])
        graphes.graph(t_c, C_norm, fignum=fignum, label=label)
        figs.update(graphes.legende('$t (s)$', '$C$', title))

        if save:
            name = 'fx_' + str(int(np.floor(M.fx * 1000))) + 'm_t_' + str(
                int(np.floor(M.t[t] * 1000))) + 'm_'
            graphes.save_figs(figs,
                              prefix='./Stat_avg/Time_correlation/Serie/' +
                              field + '/' + name,
                              dpi=300,
                              display=True,
                              frmt='png')
    return t_c, C_norm
Beispiel #23
0
def profile_avg(Mlist,i,display=False,fignum=1):
    field = 'omega'
    
    R_list=np.arange(0.25,15.,0.25)
    R = np.arange(0.,15.,0.25)
    n = len(Mlist)
    
    figs = {}
    Gamma = np.zeros((n,len(R),2))
    Flux = np.zeros((n,len(R),2))
    
    for k,M in enumerate(Mlist):
        x = M.x[0,5:]
        y = -M.y[:,0]
        dx = M.x[0,1]-M.x[0,0]
        
        U,d = vgradient.make_Nvec(M,i)   # Z : d+1 dimension np array 
        
        imin,imax,jmin,jmax,Zfilt,X,Y = position_index(M,i,field=field,display=display)
        
        G = [[] for j in range(len(R_list)+1)]
        G[0].append(0)
        G[0].append(0)

        D = [[] for j in range(len(R_list)+1)]
        D[0].append(0)
        D[0].append(0)
        
        for j,b in enumerate(R_list):
            tau1 = strain.strain_tensor_loc(U,imin,jmin,d,b=b)
            tau2 = strain.strain_tensor_loc(U,imax,jmax,d,b=b)
    
            for tau in [tau1,tau2]:
                omega,enstrophy = strain.vorticity(tau,d=2,norm=False)
                div = strain.divergence_2d(tau,d=2)
                G[j+1].append((omega[0,0]) * np.pi*b**2*dx**2)  #-div[0,0]
                D[j+1].append((div[0,0]) * np.pi*b**2*dx**2)  #-div[0,0]
                
        Gamma[k,...] = np.asarray(G)
        Flux[k,...] = np.asarray(D)
        
        graphes.graph(R,-Gamma[k,:,0],label = 'kv',fignum=fignum*2)
        graphes.graph(R,Gamma[k,:,1],label = 'k^',fignum=fignum*2)
        
        graphes.graph(R,Flux[k,:,0],label = 'kv',fignum=fignum*2+1)
        graphes.graph(R,Flux[k,:,1],label = 'k^',fignum=fignum*2+1)
        
    
    Gamma_moy = np.nanmean(Gamma,axis=0)
    Flux_moy = np.nanmean(Flux,axis=0)
    
    
    graphes.graph(R,-Gamma_moy[:,0],label = 'r--',fignum=fignum*2)
    graphes.graph(R,Gamma_moy[:,1],label = 'r--',fignum=fignum*2)
    graphes.graph(R,np.nanmean(np.asarray([Gamma_moy[:,1],-Gamma_moy[:,0]]),axis=0),label = 'rs',fignum=fignum*2)
    figs.update(graphes.legende('Distance to center (mm)','Circulation (mm^2/s)',''))
    
    graphes.graph(R,Flux_moy[:,0],label = 'r--',fignum=fignum*2+1)
    graphes.graph(R,Flux_moy[:,1],label = 'r--',fignum=fignum*2+1)
    graphes.graph(R,np.nanmean(np.asarray([Flux_moy[:,1],Flux_moy[:,0]]),axis=0),label = 'rs',fignum=fignum*2+1)
    figs.update(graphes.legende('Distance to center (mm)','Divergence (mm^2/s)',''))
    
    savedir = title(Mlist[0])    
    graphes.save_figs(figs,savedir=savedir,suffix='',prefix='frame_'+str(i),frmt='pdf',dpi=300,display=True)
    
    M_profile = np.nanmean(np.asarray([Gamma_moy[:,1],-Gamma_moy[:,0]]),axis=0)
    return np.mean(M_profile[-10:]),np.std(Gamma[:,-10:,1])
Beispiel #24
0
def serie(Gamma, epsilon, d0=1):
    savedir = './Vortex/Advection/Gaussian_noise_linear/Stat/'

    n = 10**3
    N = 10**4

    plist = []
    fignum = 1
    # graphes.plt.clf()
    fig, axes = panel.make([121, 122], fignum=fignum, axis='on')
    fig.set_size_inches(10, 5)

    # print(figs)
    #    print(axes)

    for i in range(n):
        if i % 100 == 0:
            print(i)

        p = simulate(N, epsilon=epsilon, Gamma=Gamma, d0=d0)

        p['d'] = np.sqrt(np.sum((p['r'][..., 0] - p['r'][..., 1])**2, axis=1))
        p['n'] = n
        p['N'] = N
        #        graphes.graph(p['r'][:,0,0],p['r'][:,1,0])
        #        graphes.graph(p['r'][:,0,1],p['r'][:,1,1])

        # panel.sca(axes[121])
        # graphes.graph(p['r'][:,0,:],p['r'][:,1,:])
        #        graphes.graph(p['r'][:,0,1],p['r'][:,1,1])

        #    panel.sca(axes[122])
        #    graphes.graph(t,p['d'])

        plist.append(p)

    t = np.arange(N) * p['dt']

    figs = graphes.legende(
        'X', 'Y', 'Epsilon = ' + str(epsilon) + ', Gamma = ' + str(Gamma))
    keys = ['epsilon', 'Gamma', 'n', 'N']
    graphes.save_figs(figs, savedir=savedir, prefix=make_prefix(keys, p))

    R = np.asarray([p['r'] for p in plist])
    print(R.shape)
    graphes.graphloglog(t,
                        np.std(R, axis=0)[..., 1, 0]**2 /
                        (epsilon**2 * p['dt']),
                        fignum=2)

    #graphes.graphloglog(range(N),np.std(R,axis=0)[...,1,1]/epsilon,fignum=2)

    #graphes.graphloglog(range(N),np.std(R,axis=0)[...,1,0]/epsilon,fignum=2)
    #graphes.graphloglog(range(N),np.std(R,axis=0)[...,1,1]/epsilon,fignum=2)
    #graphes.graphloglog(t,t,fignum=2,label='r--')

    Y = t + 2 / 3. * Gamma**2 / d0**4 * t**3  #-np.arctan(t)
    graphes.graphloglog(t, Y, fignum=2, label='r--')

    #    graphes.graphloglog([10**-1,10**1],[10**-2,10**0],fignum=2,label='r--')
    #    graphes.graphloglog([10**0,10**2],[10**-1,10**5],fignum=2,label='r--')
    #    graphes.graphloglog([10**3,10**5],[10**6,10**10],fignum=2,label='r--')

    figs = graphes.legende('t (#)', 'Variance', '')
    graphes.save_figs(figs, savedir=savedir, prefix=make_prefix(keys, p))

    return plist, figs
Beispiel #25
0
def main(Mlist):
    savedir = title(Mlist[0])    
    
    indices = range(400,2000,10)
    n = len(indices)
    N = len(Mlist)
    print(N)

    figs = {}

    X = np.zeros((N,n,2))
    Y = np.zeros((N,n,2))

    for j,M in enumerate(Mlist):
        print(j)
        Xmin = []
        Xmax = []
        Ymin = []
        Ymax = []
    
        Vmin = []
        Vmax = []
        
        Gammamin = []
        Gammamax = []

        t=[]
        field = 'omega'
        Omega = access.get_all(M,field)
        for i in indices:
            Z = Omega[:,5:,i]
    
            t.append(M.t[i])
    
            xmin,xmax,ymin,ymax = positions(M,i)
        
            vmin,vmax,G = amplitude(M,i)
            Gammamin.append(G[0])
            Gammamax.append(G[1])
  
            Vmin.append(vmin)
            Vmax.append(vmax)
    
            Xmin.append(xmin)
            Xmax.append(xmax)
            Ymin.append(ymin)
            Ymax.append(ymax)
    
        X[j,:,0] = np.asarray(Xmin)
        X[j,:,1] = np.asarray(Xmax)
    
        Y[j,:,0] = np.asarray(Ymin)
        Y[j,:,1] = np.asarray(Ymax)
    
        graphes.graph(t,Xmin,label='bo',fignum=1)
        graphes.graph(t,Xmax,label='ro',fignum=1)
        figs.update(graphes.legende('Time (s)','Horizontal position (mm)',''))
        
        graphes.graph(Xmin,Ymin,label='bo',fignum=2)
        graphes.graph(Xmax,Ymax,label='ro',fignum=2)
        figs.update(graphes.legende('X (mm)','Y(mm)',''))
        
        graphes.graph(t,Vmin,label='b',fignum=3)
        graphes.graph(t,Vmax,label='r',fignum=3)
        figs.update(graphes.legende('Time (s)','Maximum vorticity (s^-1)',''))
        
        graphes.graph(t,Gammamin,label='b',fignum=4)
        graphes.graph(t,Gammamax,label='r',fignum=4)
        figs.update(graphes.legende('Time (s)','Circulation mm^2/s',''))
        graphes.set_axis(0,0.32,-25000,25000)
        
        
    Dx = (X-np.tile(np.nanmean(X,axis=0),(N,1,1)))
    Dy = (Y-np.tile(np.nanmean(Y,axis=0),(N,1,1)))

    D = np.sqrt(Dx**2+Dy**2)

    D_moy = np.nanmean(D,axis=0)
    #print(t)
    #print(D[j,:,1])
#    for j in range(N):
#        graphes.graph(t,D[j,:,0],label='bo',fignum=4)
#        graphes.graph(t,D[j,:,1],label='ro',fignum=4)

    graphes.graph(t,D_moy[:,0],label='b',fignum=6)
    graphes.graph(t,D_moy[:,1],label='r',fignum=6)
    figs.update(graphes.legende('Time (s)','Distance (mm)','Spreading of vortices'))
    graphes.set_axis(0,0.3,0,20)

    graphes.graph(np.power(t,3),np.power(D_moy[:,0],2),label='b',fignum=5)
    graphes.graph(np.power(t,3),np.power(D_moy[:,1],2),label='r',fignum=5)
    graphes.set_axis(0,0.3**3,0,100)

    figs.update(graphes.legende('t^3 (s^3)','d^2 (mm^2)','Spreading of vortices : rescaling'))
    
    
    graphes.save_figs(figs,savedir=savedir,suffix='',prefix='',frmt='pdf',dpi=300,display=True)
    #    fig,axes = panel.make([111],fignum=3+3*j)
    #    fig.set_size_inches(15,15)
    #    i = 1400
    #    graphes.Mplot(M,'enstrophy',i,fignum=3)
    #    graphes.graph(Xmin,Ymin,label='bo',fignum=3+3*j)
    #    graphes.graph(Xmax,Ymax,label='ro',fignum=3+3*j)