NLEQ1 package - release 2.3 at January 3, 1992
Description of the package:
---------------------------
The NLEQ1 package consists of the files listed and briefly described
below:
filename contents of file
nleq1.f NLEQ1 standard user interface and internal subroutines.
wnorm.f Norm computation subroutine used for termination criteria.
main_nleq1.f An example main program illustrating the usage of NLEQ1.
nleq1e.f An easy-to-use driver subroutine to NLEQ1 for nonlinear
problems with n <= 50 equations. The calling parameter list
consists of 4 items and, additionally, only the nonlinear
problem function (named FCN) must be supplied.
main_nleq1_easy.f An example main program illustrating the usage of NLEQ1E.
linalg_nleq1.f Linear algebra routines (linpack).
zibmon.f Monitor.
zibsec.f Time routine ZIBSEC.
zibconst.f Machine constants ZIBCONST.
makefile An input file to the UNIX make utility containing informa-
tion how to build the executable programs nleq1 and
nleq1_easy.
readme This information.
nleq1_out.nrm Example monitor output of program run of nleq1.
nleq1_dat.nrm Example data output of program run of nleq1.
nleq1_easy.nrm Example monitor output (to FORTRAN unit 6) of program run
of nleq1-easy.
The two main programs solve the same sequence of test problems
(the Chebyquad problem with dimensions n=2,3,...,9) in two
slightly different ways. To build the executable programs, you need to
compile and to link:
main_nleq1.f, nleq1.f, linalg_nleq1.f, zibmon.f, zibsec.f, zibconst.f
(to build program nleq1),
main_nleq1_easy.f, nleq1e.f, nleq1.f, linalg_nleq1.f, zibmon.f, zibsec.f,
zibconst.f (to build program nleq1-easy) .
Under UNIX with the make-utility, for example simply type in:
make - to build program nleq1 - or
make nleq1-easy - to build program nleq1-easy.
Note that a few adaptations may be necessary to utilize the code for
your computer at hand. Please examine the two subroutines ZIBCONST and
ZIBSEC. Probably, you need to adapt ZIBCONST to correspond to the arithmetic
of your computer. If you want to obtain time measurements from the time
monitor, you must supply a "time stamp", measured in seconds, through the
argument of the subroutine zibsec.
If you replace version 2.2 with the new one and if you examine the
output values from RWK (e.g. CONV, SUMX, DLEVF), please notice that
the positions of some RWK output values have been changed.
What is new within the current release?
---------------------------------------
In release 2.4 of NLEQ1, the LINPACK routines for solving the linear systems
(full mode and band mode) have been replaced by the corresponding LAPACK
routines, to allow easy use of system-optimized linear algebra libraries, which
are supplied by your computer- or system-manufacturer, with NLEQ1.
A lot of improvements have been included within release 2.3 of NLEQ1
since the previous release 2.2. They are shortly summarized below:
- The easy to use interface NLEQ1E - see above
- The time monitor, which can be used to measure the performance
of the package and of the users problem subroutines -
see IOPT(19), IOPT(20) and subroutine ZIBSEC
- An optionally selectable bounded damping strategy which can be helpful
for solving extremely nonlinear problems -
see IOPT(38) (also IOPT(31)) and RWK(20)
- If the user problem function FCN returns IERR=1, indicating that
F(X1) cannot be evaluated for the given X1, a damping factor reduction
is done and F is tried to be evaluated again with a different argument
X2. The degree of reduction of the damping factor may be also
controlled by the user - see description of FCN
- Certain characteristic internal parameters of the numerical approxi-
mation subroutines may be altered now easily by the user -
see RWK(26), RWK(27), RWK(28), RWK(29)
- The convergence rate of the Newton iteration is monitored and based
in this, the iteration will be terminated if it significantly slows
down when approaching the solution - due to roundoff errors. (A
corresponding warning message will be printed and a warning code
returned through parameter IERR). Also, in connection with this
monitor feature, a warning message and code will be given, if
the iteration terminated because the usual criterion has been
fulfilled, but the corresponding error estimate may not be appro-
priate due to lack of theoretical assumptions in the actual context.
see IOPT(39) and error messages
- The standard rank-1 updates procedure, operating directly on a full
mode Jacobian, has been replaced by an (equivalent) iterative rank-1
updates algorithm which uses exclusively vectors for computations
and, by this reason, is always applicable - independent of the
Jacobians storage mode -
see IOPT(32), IWK(36).
- Double precision storage will be saved against the previous version
if rank-1 updates are inhibited - up to n(n-1) elements if the
Jacobian is hold in full mode.
- The computation of the norm which is used in connection with the
convergence termination criterion, is now separated in the function
subroutine WNORM and may be easily exchanged.
Further minor changes:
- The default value for IOPT(3) (JACGEN) is now 2 (Jacobian by numerical
approximation w i t h o u t feedback device).
- RWK positions, which have been changed:
name new old
CONV 17 24
SUMX 18 26
DLEVF 19 27
SIGMA2 24 28