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)
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)
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)
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)
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)
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)
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()
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()