def main(argv): L = 1.0 alpha = 1.22e-3 t_final = 20.0 dt = 0.1 nt = int(t_final / dt) nx_values = np.asarray([11, 21, 41, 81, 161]) error = np.zeros(len(nx_values)) for i, nx in enumerate(nx_values): dx = L / (nx - 1) sigma = alpha * dt / (dx * dx) x = np.linspace(0, L, nx) T = np.zeros(nx) T[0] = 100 A = rod_03.generateMatrix(nx, sigma) T = rod_03.CrankNicolson(T, A, nt, sigma) T_exact = T_analytical(x, t_final, 100, alpha, L) error[i] = L2_error(T, T_exact) plot_error(nx_values, error, 'error_02.png')
def main(argv): L = 1.0 alpha = 1.22e-3 nx = 1001 dx = L / (nx - 1) x = np.linspace(0, L, nx) dt_values = np.asarray([1.0, 0.5, 0.25, 0.125]) error = np.zeros(len(dt_values)) error_ftcs = np.zeros(len(dt_values)) t_final = 10.0 t_initial = 1.0 Ti = T_analytical(x, t_initial, 100, alpha, L) T_exact = T_analytical(x, t_final, 100, alpha, L) for i, dt in enumerate(dt_values): sigma = alpha * dt / (dx * dx) nt = int((t_final - t_initial) / dt) T = Ti.copy() A = rod_03.generateMatrix(nx, sigma) T = rod_03.CrankNicolson(T, A, nt, sigma) error[i] = L2_error(T, T_exact) T = Ti.copy() A_ftcs = rod_02.generateMatrix(nx, sigma) T = rod_02.implicit_ftcs(T, A_ftcs, nt, sigma) error_ftcs[i] = L2_error(T, T_exact) plot_error(dt_values, error, error_ftcs, 'error_01.png')