Good day,
I have done a little more work with the Sparse Iteration Method and thought
the results might be of interest to those who write their own code. To
review, the equation
(1) ZI=V
in which Z and V are known, can be written as
(2) (S+D)I=V, SI=V-DI
in which S is sparse and D is dense. Since I is now on both sides of the
equation, it can be iterated from a trial value.
(3) SI_(k+1)=V-DI_k
The code I applied this to is a Galerkin method which gives a symmetric Z
matrix. Equation (3) can be solved by either direct factorization of S or by
another iteration method. Rather than get into a general sparse matrix
solution method, I decided to take advantage of the diagonal dominace in the Z
matrix and simply make S a diagonally banded matrix. This allowed me to use
the symmetric matrix facorization code I already have, since it is
straightforward to modify it for the banded case. I did this and applied it
to a wire-and-dielectric problem with the following results.
Table 1. Wire windings only. The no. of unknowns is 146. Nr is the number
of subdiagonals on one side of the main diagonal. Ns is the no. of steps in
the iteration, T is the solution time in minutes.
Exact solution time=0.0037 min.
Nr Ns T
0 23 0.0027
1 23 0.021
2 23 0.0037
3 23 0.0047
5 23 0.021
7 23 0.022
10 23 0.0047
Tabe 2. Wire and dielectric. The no. of unknowns is 1733.
Exact solution time =10.56 min.
Nr Ns T
70 100 4.46
100 25 1.22
200 25 1.603
The convergence criterion was abs(1-rms(I_(k+1))/rms(I_k))<1e-5. This gave
3-figure agreement between the exact and approximate solutions' input
impedance. 100 was the maximum no. of iterations allowed. Nr=70 in Table 2
did not actually converge, but it was getting close. Nr=50 for the 1733
unknowns diverged. Table 1 shows that the iterative method doesn't pay for a
small problem. It also shows that a diagonal-only S can give a solution even
though there are strong off -diagonal terms. Since the physical structure is
coiled, there is strong coupling between segments that are far apart in index.
In the Z matrix, all the wir-to-wire terms are in the upper left block.
Therefore, Nr=100 doesn't pick up many of the wir-dielectric terms. I
speculate that the reason for Nr being larger with the dielectric is that the
dielectric portion of the matrix is not so strongly dominant as the wire
portion.
These runs were done in Win98SE DOS mode, on a 500 MHz, 512 MB, celeron-based
Compaq EP machine. This accounts for the practically meaningless times for
the small problem.
I expect that simply making S a banded matrix would work in the case of an
unsymmetric Z, since the efficacy really depends on the diagonal dominance.
It would be straightforward to modify an LU factorization for a banded case,
and it probably already exists.
Douglas B. Miron
-- The NEC-List mailing list <nec-list_at_gweep.ca> http://www.gweep.ca/mailman/listinfo.cgi/nec-listReceived on Fri Nov 02 2001 - 12:10:19 EST
This archive was generated by hypermail 2.2.0 : Sat Oct 02 2010 - 00:10:41 EDT