Affected routines: testall.f, testc90.f, bsolves.f.
The routine for calling BILUM has been modified. We take the traditional
format of calling a preconditioner by passing a temporary array. The
exchange of date is now done inside _bsolve_.
Old version:
DO i = 1, n
vec2(i) = vec1(i)
END DO
call bsolve(n,vec2,wk,alu,jlu,ilu,riord,nlast,ipar(1),iord)
New version:
call bsolve(n,vec1,vec2,wk,alu,jlu,ilu,riord,nlast,ipar(1),iord)
The two dimensional array _riord_ for the multi-level permutation matrices is
now a one dimensional array.
Affected routines: testall.f, testc90.f, bilum.f solves.f.
Old version:
riord(lev,nmx)
New version:
riord(lev*nmx/2)
_ipar(8)_ is used to record the maximum number of levels allowed.
In routine _bilum.f_, we no longer store the matrix _E*D^{-1}_. In stead,
we store the matrix _E_ only without any dropping. The action of _E*D^{-1}_
in routine _solves.f_ is accomplished by applying _D^{-1}_ first, followed
by the application of _E_. The matrix _E*D^{-1}_ is still computed and
sparsified by a new dropping parameter _droptol1_ = 0.1*droptol for the
purpose of forming the Schur complement only. The resulting factorization
is much more accurate and the amount of fill-ins is greatly reduced.
Affected routines: bilum.f, solves.f.
In _bilum.f_, the 14th argument "ikw" was removed from
the calling to _aplb1_. It is not needed.
Affected routine: bilum.f.
In _bilum.f_, the parameter lev is set to be equal to ipar(8), but ipar(8) is not explained in comment lines. ipar(8) is the number of maximum levels allowed, It should be defined in the driver routine.