The key to the redistribution method is to find a positive solution to the
system of linear equations (4.8) and following
for the redistribution fractions .
The system is linear, but usually not square:
the number of unknown fractions
is the number of vortices
in the neighborhood, while the number
of equations is determined by the order of accuracy
desired.
In this subsection we will discuss our strategy for obtaining a positive
solution for the
, assuming that one exists.
The question what to do if no positive solution exists will be addressed in
subsection 6.2.3.
The problem of finding a nonnegative solution to an
underdetermined system of equations
is the standard `phase I' problem in linear programming that can be
solved by slack variables.
However, following Van Dommelen [235] we will
use a different approach.
First, we note that the fractions
must be in the range [0,1].
We may shift the origin to the center of that range, by defining
Our approach is to find the
solution for with the least maximum norm.
If the maximum norm is less than
or equal to
, an acceptable solution has been found.
On the other hand, if the maximum norm exceeds
,
it must mean that no acceptable solution exists.
In that case we create more vortices as described in subsection 6.2.3.
The least maximum solution algorithm used in our computations is described in the next subsection. We did do some comparative testing of this algorithm against a standard library routine (IMSL) for the phase I linear programming problem. We found that the number of iterations in the methods was about equal, but that the library routine ran about two times more slowly, possibly due to the extensive safeguards in its implementation. It appears that computational speed is not an important consideration in selecting the method.
However, the least maximum procedure will create a strictly positive solution if one exists, while the linear programming method for the phase I problem will select the minimum number of vortices for the redistribution. As a result, the least maximum procedure tends to spread out the vorticity somewhat better.
In this study, the least maximum problem is solved from scratch
for each vortex at each time-step (even for the
Stokes flow in which a single solution could have been used for
all time-steps).
This is a very inefficient approach,
since the systems are almost unchanged from one time-step to the next.
The relative locations of the vortices in the neighborhood change
only by an amount during a time-step.
This means that a single solution can be used over an asymptotically
large number of time-steps.
Additionally, in our time splitting we perform two diffusion steps
back to back. We solve each from scratch although they are identical.
The disadvantage of using a single solution over many time steps
is that some information has to be stored
from one time-step to the next.
For example, the fractions could be stored and updated at
each time-step until one turns negative,
at which time the system could again be solved from scratch.
Alternately, we could merely store the information what fractions
have magnitude less than the maximum norm.
This is sufficient information
to solve a least maximum problem quickly.
In any case, our computational times for the redistribution method
can presumably still be improved significantly.
We did use one shortcut in our procedure. As a preconditioning to finding the least maximum solution, we performed a Gram-Schmidt orthogonalization on the rows of the system. This orthogonalization directly determines the least length solution, and we found that in about 60% of the cases, the least length solution was positive. Thus we could skip the determination of the least maximum solution in the majority of cases.
There are also tests that could be performed to decide
a priori that a system has no acceptable solution:
according to estimates given in Appendix A,
there must be at least one neighborhood vortex at a distance of more
than
, the maximum horizontal
and vertical distances should be at least
,
and at least
in any direction.
For third-order accuracy or higher,
there should be at least one vortex within a distance
.