We have performed the optimization analysis on the mesh inside a
spiralling pipe as shown in figure 4.20. In this case we
solved the Helmholtz equation with a forcing function designed so that
we could measure the numerical error. In each of the three methods the
L2 and the
errors were identical for a given
expansion order.
| p | 2c|Bandwidth | 3c|User solve time in seconds | |||
| initial | final | unbanded direct | banded direct | iterative | |
| 3 | 361 | 59 | 0.53 | 0.50 | 0.82 |
| 4 | 1501 | 244 | 1.14 | 0.98 | 2.41 |
| 5 | 3441 | 558 | 2.59 | 1.94 | 6.19 |
| 6 | 6181 | 1001 | 5.7 | 3.70 | 17.4 |
| 7 | 9721 | 1573 | 10.95 | 6.08 | 39.35 |
| 8 | 14061 | 2274 | 20.45 | 10.37 | 76.09 |
| 9 | 19201 | 3104 | -- | 16.77 | 141.66 |
In table 4.2 we have compared the timings for the backsolve routine only for the unoptimized and optimized direct solves versus a diagonally preconditioned conjugate gradient iterative solve. The improvement in CPU time for the banded computations compared with the unbanded computations is substantial, where an improvement of an order of magnitude is obtained compared to the iterative solve. The preconditioner used in the iterative solve is based on the diagonal; in current work we are using the hierarchies of the expansion basis to obtain more effective preconditioners. The CPU savings reported here are coupled with an extreme reduction in storage requirements making this method quite competitive with the iterative method. Of course the iterative method wins for very high orders p due to memory restriction, but for these kinds of orders the banded method looks superior given a reasonable memory capacity.
![]() |