|
100 | 100 | c = 0.1; % Velocity, 1 makes FD sceme exact |
101 | 101 | west = -2.0; % Domain's leftmost limits |
102 | 102 | east = 2.0; % Domain's rightmost limit |
| 103 | +dt = 0.001; % Time step, must work for all cell sizes |
103 | 104 |
|
104 | 105 | % Number of cells to try, points is cells+1 |
105 | | -num_cells = [ 10, 20, 40, 80, 160 ]; |
| 106 | +num_cells = [ 20, 40, 80, 160 ]; |
106 | 107 |
|
107 | 108 | %% Run each of the methods over the different grids |
108 | | -[ U2_fd, error_fd, walltime_fd, flops_fd ] = finite_diff_two_way_wave_eq(); |
109 | | -[ U2_md, error_md, walltime_md, flops_md ] = mimetic_diff_two_way_wave_eq(); |
| 109 | +[ U2_fd, error_fd, walltime_fd, flops_fd ] = finite_diff_two_way_wave_eq(c, dt, num_cells); |
| 110 | +[ U2_md, error_md, walltime_md, flops_md ] = mimetic_diff_two_way_wave_eq(k, c, dt, num_cells); |
110 | 111 |
|
111 | 112 | %% Error analysis |
112 | 113 |
|
|
129 | 130 | xlim([1 / num_cells(end) 1 / num_cells(1)]); |
130 | 131 | xlabel('dx'); ylabel('error'); |
131 | 132 | grid on; |
132 | | -title(['Error: FD slope~', num2str(p_fd(1)), ', MD slope~', num2str(p_md(1))]); |
| 133 | +title(['Error Convergence, FD slope=', num2str(p_fd(1),'%.2f'), ... |
| 134 | + ', MD slope=', num2str(p_md(1),'%.2f')]); |
133 | 135 | legend('FD Error','MD error') |
134 | 136 | set(gca, "linewidth", 2, "fontsize", 16) |
135 | 137 |
|
|
142 | 144 | ylim([min( min(walltime_fd), min(walltime_md) ) max( max(walltime_fd), max(walltime_md) )]); |
143 | 145 | xlabel('num points'); ylabel('walltime [s]'); |
144 | 146 | grid on; |
145 | | -title(['Walltime, MD is order ', num2str(k)]); |
| 147 | +title(['Walltime: FD (order 2) vs MD (order ', num2str(k), ')']); |
146 | 148 | legend('FD time', 'MD time'); |
147 | 149 | set(gca, "linewidth", 2, "fontsize", 16) |
148 | 150 |
|
|
154 | 156 | xlim([ num_cells(1) num_cells(end) ]); ylim([ 1e5 1e8 ]); |
155 | 157 | xlabel('num cells'); ylabel('FLOPs'); |
156 | 158 | grid on; |
157 | | -title(['FLOPs for each method, mimetic order:', num2str(k)]); |
| 159 | +title(['FLOPs: FD (order 2) vs MD (order ', num2str(k), ')']); |
158 | 160 | legend('FD FLOPs', 'MD FLOPs'); |
159 | 161 | set(gca, "linewidth", 2, "fontsize", 16) |
160 | 162 |
|
0 commit comments