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



 
