Exemplo n.º 1
0
def analytic_model_fig(ax, var_md, time=1):
    lamb = eq.d1_lambda_evol(time)
    h_a = eq.d1_height(lamb, var_md["x_range"])
    v_a = eq.d1_velocity(lamb, var_md["x_range"])
    ax.plot(
        var_md["x_range"],
        eq.d1_initial(var_md["x_range"]),
        "k",
        var_md["x_range"],
        h_a,
        "b",
        var_md["x_range"],
        var_md["h"],
        "r",
    )
    ax.plot(
        var_md["x_range"],
        0 * var_md["x_range"],
        "k-",
        var_md["x_range"],
        v_a,
        "b--",
        var_md["x_range"],
        var_md["vx"],
        "r--",
    )
    ps.ticks_changes(ax)
Exemplo n.º 2
0
def analytic_model_fig(ax, var_md, time=1):
    lamb = eq.d1_lambda_evol(time)
    h_a = eq.d1_height(lamb, var_md["x_range"])
    v_a = eq.d1_velocity(lamb, var_md["x_range"])
    ax.plot(var_md["x_range"], eq.d1_initial(var_md["x_range"]), 'k',
            var_md["x_range"], h_a, 'b', var_md["x_range"], var_md["h"], "r")
    ax.plot(var_md["x_range"], 0 * var_md["x_range"], "k-", var_md["x_range"],
            v_a, 'b--', var_md["x_range"], var_md["vx"], "r--")
    ps.ticks_changes(ax)
Exemplo n.º 3
0
def analytic_fig(ax, x_lim, time_l=[0,1,2,3], nx=320):
    x_range = np.linspace(-x_lim, x_lim, nx)
    oznacz = ['k', 'b', 'c', 'y', 'g', 'm', 'r']
    for it, time in enumerate(time_l):
        lamb = eq.d1_lambda_evol(time)
        h = eq.d1_height(lamb, x_range)
        v = eq.d1_velocity(lamb, x_range)
        ax.plot(x_range, h, oznacz[it])
        ax.plot(x_range, v, oznacz[it]+ "--")
    ps.ticks_changes(ax)
Exemplo n.º 4
0
def analytic_fig(ax, x_lim, time_l=[0, 1, 2, 3], nx=320):
    x_range = np.linspace(-x_lim, x_lim, nx)
    oznacz = ['k', 'b', 'c', 'y', 'g', 'm', 'r']
    for it, time in enumerate(time_l):
        lamb = eq.d1_lambda_evol(time)
        h = eq.d1_height(lamb, x_range)
        v = eq.d1_velocity(lamb, x_range)
        ax.plot(x_range, h, oznacz[it])
        ax.plot(x_range, v, oznacz[it] + "--")
    ps.ticks_changes(ax)
Exemplo n.º 5
0
def analytic_model_fig(ax, x_range, h_m, v_m, t_m, it):
    lamb = eq.d1_lambda_evol(t_m[it,0])
    h_a = eq.d1_height(lamb, x_range)
    v_a = eq.d1_velocity(lamb, x_range)

    ax.plot(x_range, eq.d1_initial(x_range), 'k', x_range, h_a, 'b',
            x_range, h_m[it], "r")
    ax.plot(x_range, 0*x_range, "k-", x_range, v_a, 'b--',
            x_range, v_m[it], "r--")

    ax.set_ylim(-2,2)
    ps.ticks_changes(ax)
Exemplo n.º 6
0
def analytic_model_fig(ax, x_range, h_m, v_m, t_m, it):
    lamb = eq.d1_lambda_evol(t_m[it,0])
    h_a = eq.d1_height(lamb, x_range)
    v_a = eq.d1_velocity(lamb, x_range)

    ax.plot(x_range, eq.d1_initial(x_range), 'k', x_range, h_a, 'b',
            x_range, h_m[it], "r")
    ax.plot(x_range, 0*x_range, "k--", x_range, v_a, 'b--',
            x_range, v_m[it], "r--")

    ax.set_ylim(-2,2)
    ps.ticks_changes(ax)
Exemplo n.º 7
0
def errors(dir, time_l, x_lim):
    for it, time in enumerate(time_l):
        # reading the model output
        var_model = reading_modeloutput(dir, time)

        var_model["x_range"] = np.arange(-x_lim + var_model["dx"] / 2., x_lim,
                                         var_model["dx"])
        assert (var_model["x_range"].shape == var_model["h"].shape
                ), "domain size differs from model output shape"

        # calculating the analytical solution
        lamb = eq.d1_lambda_evol(time)
        h_an = eq.d1_height(lamb, var_model["x_range"])

        # calculating the errors of the drop depth, eq. 25 and 26 from the paper
        h_diff = var_model["h"] - h_an
        points_nr = var_model["h"].shape[0]
        delh_inf = abs(h_diff).max()
        delh_2 = 1. / time * ((h_diff**2).sum() / points_nr)**0.5

        # outputing general info
        if time == time_l[0]:
            file = open(dir + "_stats.txt", "w")
            fstring = (
                "dx                                 = {dx:.4f}\n"
                "dt                                 = {dt:.4f}\n"
                "number of points in the domain     = {npoints}\n"
                "L_inf                              = max|h_m-h_an|\n"
                "L_2                                = sqrt(sum(h_m-h_an)^2 / N) / time\n\n"
            )
            file.write(
                fstring.format(dx=var_model["dx"],
                               dt=var_model["dt"],
                               npoints=points_nr))

        # outputting error statistics
        fstring = ("time                               = {time:.4f}\n"
                   "max(h_an)                          = {max_h_an:.8f}\n"
                   "max(h_num)                         = {max_h_num:.8f}\n"
                   "L_inf                              = {L_inf:.8f}\n"
                   "L_2                                = {L_2:.8f}\n"
                   "max(px_num)                        = {max_px_num:.8f}\n\n")
        file.write(
            fstring.format(time=time,
                           max_h_an=h_an.max(),
                           max_h_num=var_model["h"].max(),
                           L_inf=delh_inf,
                           L_2=delh_2,
                           max_px_num=var_model["qx"].max()))
    file.close()
Exemplo n.º 8
0
def errors(dir, time_l, x_lim):
    for it, time in enumerate(time_l):
        # reading the model output
        var_model = reading_modeloutput(dir, time)

        var_model["x_range"] = np.arange(-x_lim+var_model["dx"]/2., x_lim, var_model["dx"])
        assert(var_model["x_range"].shape == var_model["h"].shape), "domain size differs from model output shape"

        # calculating the analytical solution 
        lamb = eq.d1_lambda_evol(time)
        h_an = eq.d1_height(lamb, var_model["x_range"])

        # calculating the errors of the drop depth, eq. 25 and 26 from the paper
        h_diff    = var_model["h"] - h_an
        points_nr = var_model["h"].shape[0]
        delh_inf  = abs(h_diff).max() 
        delh_2    = 1./time * ((h_diff**2).sum() / points_nr )**0.5 

        # outputing general info
        if time == time_l[0]:
            file = open(dir + "_stats.txt", "w")
            fstring = (
                       "dx                                 = {dx:.4f}\n"
                       "dt                                 = {dt:.4f}\n"
                       "number of points in the domain     = {npoints}\n"
                       "L_inf                              = max|h_m-h_an|\n"
                       "L_2                                = sqrt(sum(h_m-h_an)^2 / N) / time\n\n"
                      )
            file.write(fstring.format(dx = var_model["dx"], dt = var_model["dt"], npoints = points_nr))

        # outputting error statistics                                             
        fstring = (
                   "time                               = {time:.4f}\n"
                   "max(h_an)                          = {max_h_an:.8f}\n"
                   "max(h_num)                         = {max_h_num:.8f}\n"
                   "L_inf                              = {L_inf:.8f}\n"
                   "L_2                                = {L_2:.8f}\n"
                   "max(px_num)                        = {max_px_num:.8f}\n\n"
                  )
        file.write(fstring.format(
                                  time = time,
                                  max_h_an = h_an.max(),
                                  max_h_num = var_model["h"].max(),
                                  L_inf = delh_inf,
                                  L_2 = delh_2,
                                  max_px_num = var_model["qx"].max()
                                 )
                  )
    file.close()