def plot_one_resol(resol, style_lines='-', linewidth=1):
    str_resol = repr(resol)
    str_to_find_path = (dir_base + '/Pure_standing_waves_' + str_resol + '*')

    # print str_to_find_path
    paths_dir = glob.glob(str_to_find_path)
    # print paths_dir
    path_base = paths_dir[0]

    set_of_dir = solveq2d.SetOfDirResults(path_base)

    set_of_dir = set_of_dir.filter(solver='SW1lwaves', FORCING=True, f=0)

    paths = set_of_dir.paths

    print paths
    nb_dirs = len(paths)

    # dicos = []
    for ii in xrange(nb_dirs):
        dico, c = load_from_path(paths[ii])
        # dicos.append(dico)
        t = dico['t']
        E = dico['E']

        color = colors[c]

        ax1.plot(t / tn, E / En, color + style_lines, linewidth=linewidth)
        ax2.plot(t / tn, E / En, color + style_lines, linewidth=linewidth)
Exemple #2
0
def print1sim(paths):
    """Print informations on one simulation."""

    print('\n\n')

    if len(paths) == 1:
        path = paths[0]
    else:
        set_of_dir = solveq2d.SetOfDirResults(paths)
        path = set_of_dir.path_larger_t_start()

    sim = solveq2d.create_sim_plot_from_dir(path)
    param = sim.param
    nx = param['nx']
    c = np.sqrt(sim.param['c2'])
    nu8 = param['nu_8']
    f = sim.param['f']

    tmin, tmax, tstatio = baseSW1lw.tminmaxstatio_from_sim(sim, VERBOSE=True)

    dico1, dico2 = sim.output.spatial_means.compute_time_means(tstatio=tstatio)
    epsK = dico1['epsK']
    epsA = dico1['epsA']
    eps = epsK + epsA
    Ff = eps**(1. / 3) * kf**(-1. / 3) / c

    n = 8
    kd8 = (eps / nu8**3)**(1. / (3 * n - 2))
    kmax = param['coef_dealiasing'] * np.pi * nx / param['Lx']

    minh, maxu = minhmaxu_from_sim(sim)

    ftable.write('\n')
    ftable.write('{0:4d} & {1:4.0f} & '.format(nx, c))

    ftable.write('{0:7.1e} & '.format(nu8))

    ftable.write('{0:4.2f} & '.format(eps))

    ftable.write('{0:.2f} & '.format(kmax / kd8))

    ftable.write('{0:3.0f} & '.format(kd8 / kf))

    ftable.write('{0:6.3f} & '.format(Ff))

    ftable.write('{0:4.2f} & {1:4.2f} '.format(minh, maxu / c))

    ftable.write('\\\\')

    if f > 0:
        Ro = (eps / Lf**2)**(1. / 3) / f
        Bu = (Ro / Ff)**2
        print('Ro = {0:.2f};    Bu =  {1:.2f}'.format(Ro, Bu))
def plot_one_resol(resol, style_lines='-'):
    """plot on resolution."""
    str_resol = repr(resol)
    str_to_find_path = (
        dir_base+'/Pure_standing_waves_'+
        str_resol+'*'
        )

    paths = glob.glob(str_to_find_path)
    path = paths[0]

    set_of_dir = solveq2d.SetOfDirResults(path)
    set_of_dir = set_of_dir.filter(solver='SW1lwaves',
                                   FORCING=True,
                                   c=20)


    print('poum Emean_f', set_of_dir.dico_values['f'])


    dicos = []
    for f in set_of_dir.dico_values['f']:
        dico = load_from_f(set_of_dir, f)
        dicos.append(dico)

    nb_f = len(dicos)

    f = np.empty([nb_f])
    kd = np.empty([nb_f])
    EKd = np.empty([nb_f])
    EA = np.empty([nb_f])
    eps = np.empty([nb_f])
    E = np.empty([nb_f])
    for ii in xrange(nb_f):
        f[ii] = dicos[ii]['f']
        kd[ii] = dicos[ii]['kd']
        EKd[ii] = dicos[ii]['EKd']
        EA[ii] = dicos[ii]['EA']
        eps[ii] = dicos[ii]['eps']
        E[ii] = dicos[ii]['E']


    kadim = (kd/kf)**2

    ax1.plot(kadim, E, 'k'+style_lines, linewidth=2)


    return kadim, E
def paths_from_nh_c_f(nh, c, f=None):
    """Return paths corresponding to nh and c."""
    str_nh = repr(nh)
    str_to_find_path = (
        path_base_dir_results+'/Pure_standing_waves_'+
        str_nh+'*/SE2D*c='+repr(c)+'_*'
        )
    # print str_to_find_path
    paths = glob.glob(str_to_find_path)

    if len(paths) == 0:
        print('No path for resol = {0} and c = {1}'.format(nh, c))

    if f is not None:
        set_of_dir = solveq2d.SetOfDirResults(paths)
        set_of_dir = set_of_dir.filter(f=f)
        paths = set_of_dir.paths

    return paths
def plot_one_c(c, style_lines='-', linewidth=2.2):

    paths_c = baseSW1lw.paths_from_c(c)
    # print paths_c

    set_of_dir = solveq2d.SetOfDirResults(paths_c)
    set_of_dir = set_of_dir.filter(solver='SW1lwaves',
                                   FORCING=True,
                                   f=0.,
                                   c2=c**2)

    dicos = []
    for nh in set_of_dir.dico_values['nh']:
        if nh < 7000:
            dico = load_from_nh(set_of_dir, nh)
            dicos.append(dico)

    nb_nh = len(dicos)

    nh = np.empty([nb_nh])
    c = np.empty([nb_nh])
    EKd = np.empty([nb_nh])
    EA = np.empty([nb_nh])
    eps = np.empty([nb_nh])
    E = np.empty([nb_nh])

    Enorm = np.empty([nb_nh])
    for ii in xrange(nb_nh):
        nh[ii] = dicos[ii]['nh']
        c[ii] = dicos[ii]['c']
        EKd[ii] = dicos[ii]['EKd']
        EA[ii] = dicos[ii]['EA']
        eps[ii] = dicos[ii]['eps']
        E[ii] = dicos[ii]['E']
        Enorm[ii] = dicos[ii]['Enorm']

    Ueps = eps**(1. / 3)

    line = ax1.plot(nh, E / Enorm, 'kx' + style_lines, linewidth=linewidth)

    return line[0]
Exemple #6
0
def plot_one_dir_base(dir_base, tstatio=40):

    set_of_dir_results = solveq2d.SetOfDirResults(dir_base=dir_base)
    dirs = set_of_dir_results.dirs_from_values(solver='SW1lwaves',
                                               FORCING=True)

    print dirs

    print set_of_dir_results.dico_c2.keys()

    nb_dirs = len(dirs)

    dicos = []
    temp = 0
    for ii in xrange(nb_dirs):
        if set_of_dir_results.dico_c2[dirs[ii]] > 50**2:
            temp += 1
            dico = load_from_namedir(set_of_dir_results, dirs[ii], tstatio)
            dicos.append(dico)

    nb_dirs = temp
    c = np.empty([nb_dirs])
    EKd = np.empty([nb_dirs])
    EA = np.empty([nb_dirs])
    eps = np.empty([nb_dirs])
    E = np.empty([nb_dirs])
    for ii in xrange(nb_dirs):
        c[ii] = dicos[ii]['c']
        EKd[ii] = dicos[ii]['EKd']
        EA[ii] = dicos[ii]['EA']
        eps[ii] = dicos[ii]['eps']
        E[ii] = dicos[ii]['E']

    K0 = 0.
    K1 = 0.
    K2 = 0.
    K4 = 0.

    K0 = 0.1
    K1 = -10.
# K2 = 0.23
    K4 = 0
    Ueps = eps**(1./3)



    def Efit_from_params(params):
        K0 = params[0]
        K1 = params[1]
        K2 = params[2]
        Efit_classic = K0*Ueps**2/(1 + 0*K1/c)**(2./3)
        Efit_weak = K2*np.sqrt(Ueps**3*c)
        Efit = Efit_classic + Efit_weak
        return Efit, Efit_classic, Efit_weak

    def to_minimize(params):
        Efit, Efit_classic, Efit_weak = Efit_from_params(params)
        return np.sum((Efit - E)**2)

    params = np.array([K0, K1, K2])
    params = optimize.fmin(to_minimize, params, xtol=1e-4, disp=True)
    Efit, Efit_classic, Efit_weak = Efit_from_params(params)

    K0 = params[0]
    K1 = params[1]
    K2 = params[2]
    print('K0 ={0} ; K1 = {1} ; K2 = {2}'.format(K0, K1, K2))
    
    # ax1.plot(c, EA/norm, 'b', linewidth=2)
    # ax1.plot(c, EKd/norm, 'r', linewidth=2)

    ax1.plot(c, E, 'k-x', linewidth=2)
    ax1.plot(c, Efit, 'c-x', linewidth=2)


    ax1.plot(c, Efit_classic, 'r-x', linewidth=2)
    ax1.plot(c, Efit_weak, 'y-x', linewidth=2)
Exemple #7
0
import numpy as np
import glob
import os

import matplotlib.pylab as plt

from solveq2d import solveq2d

LOAD = True
# LOAD = False

dir_base = 'Approach_runs_1024x1024'
# dir_base = 'Waves_statio_256x256'

set_of_dir_results = solveq2d.SetOfDirResults(dir_base=dir_base)

values_c2 = set_of_dir_results.values_c2
# values_c2 = [600]
values_solver = set_of_dir_results.values_solver
values_solver = ['SW1l']

tstatio = 250

if LOAD:

    tuple_loop = [(c2, name_solver) for c2 in values_c2
                  for name_solver in values_solver]

    nb_runs = 0
    for c2, name_solver in tuple_loop:
                        SAVE_FIG=SAVE_FIG,
                        FOR_BEAMER=False,
                        fontsize=fontsize)

dir_base = baseSW1lw.path_base_dir_results

str_resol = repr(resol)
str_to_find_path = (dir_base + '/Pure_standing_waves_' + str_resol +
                    '*/SE2D*c=' + repr(c)) + '_*'
print(str_to_find_path)

paths = glob.glob(str_to_find_path)

print(paths)

set_of_dir = solveq2d.SetOfDirResults(paths)
path = set_of_dir.path_larger_t_start()

sim = solveq2d.create_sim_plot_from_dir(path)

tmin, tmax, tstatio = baseSW1lw.tminmaxstatio_from_sim(sim, VERBOSE=True)

dico_spectra, dico_results = sim.output.time_sigK.compute_spectra()

omega = dico_spectra['omega']
time_spectra_q = dico_spectra['time_spectra_q']
time_spectra_a = dico_spectra['time_spectra_a']
time_spectra_d = dico_spectra['time_spectra_d']
omega_shell = dico_results['omega_shell']
kh_shell = dico_results['kh_shell']
def plot_one_resol(nh, style_lines='-'):

    paths = baseSW1lw.paths_from_nh(nh)

    set_of_dir = solveq2d.SetOfDirResults(paths)
    set_of_dir = set_of_dir.filter(solver='SW1lwaves', FORCING=True, f=0)

    path = set_of_dir.path_larger_t_start()

    dicos = []
    for c in set_of_dir.dico_values['c']:
        dico = load_from_c(set_of_dir, c)
        dicos.append(dico)

    nb_c = len(dicos)

    c = np.empty([nb_c])
    EKd = np.empty([nb_c])
    EA = np.empty([nb_c])
    eps = np.empty([nb_c])
    E = np.empty([nb_c])
    for ii in xrange(nb_c):
        c[ii] = dicos[ii]['c']
        EKd[ii] = dicos[ii]['EKd']
        EA[ii] = dicos[ii]['EA']
        eps[ii] = dicos[ii]['eps']
        E[ii] = dicos[ii]['E']

    K0 = 0.
    K1 = 0.
    K2 = 0.
    K4 = 0.

    K0 = 0.
    K1 = 0.
    K2 = 0.3
    K4 = 0
    Ueps = eps**(1. / 3)

    def Efit_from_params(params):
        K0 = params[0]
        K1 = params[1]
        K2 = params[2]
        Efit_classic = 0  #K0*Ueps**2  #/(1 + 0*K1/c)**(2./3)
        Efit_weak = K2 * np.sqrt(eps * Lf * c)
        # Efit = Efit_classic + Efit_weak

        Efit = Efit_weak
        return Efit, Efit_classic, Efit_weak

    def to_minimize(params):
        Efit, Efit_classic, Efit_weak = Efit_from_params(params)
        for_sum = (Efit - E)**2
        return np.sum(for_sum[c > 0])

    params = np.array([K0, K1, K2])
    params = optimize.fmin(to_minimize, params, xtol=1e-4, disp=True)
    Efit, Efit_classic, Efit_weak = Efit_from_params(params)

    K2 = params[2]
    print('K2 = {0}'.format(K2))

    norm = np.sqrt(eps)

    ax1.plot(c, E / norm, 'k' + style_lines, linewidth=2.2)
    ax1.plot(c, Efit / norm, 'c' + style_lines, linewidth=2.2)