Good Broyden package - Release 1.1 at September 4, 1991

The Good Broyden package consists of the files listed and briefly
described below:

filename     contents of file

gbit1.f      Good Broyden user interface (GBIT1) and internal
             subroutines, 
             Time monitor subroutines and
             machine dependent subroutines SECOND and D1MACH.

gbit1e.f     An "easy to use" interface subroutine to gbit1 for a
             linear system where the matrix is given in SLAP format.
             Requires also the easypack subroutines.  

easypack.f   A package of subroutines supplying standard programs
             for matrix times vector multiplication and preconditio-
             ning. 
             This package allows an easy use of the GBIT1 program -
             the only users task remaining is to supply the right
             hand side and the linear systems matrix in a special
             sparse matrix format. 
             This package contains software from SLAP (Sparse Linear
             Algebra Package), LINPACK and BLAS subroutines. 
            
maingb.f     An example main program to illustrate the usage of GBIT1
             in connection with EASYPACK.

maingbe.f    An example main program to illustrate the usage of GBIT1E.

maingbe.data Input data to be read by the example program maingbe. 

makefile     An input file to the UNIX make utility containing infor-
             mation how to build the executable programs maingb and
             maingbe.

readme       This description.

maingb.out   Example output to FORTRAN unit 6 of program run of maingb.

maingbe.out  Example output to FORTRAN unit 6 of program run of maingbe.

To build executable programs without using the UNIX make utility,
you need to compile and to link:

maingb.f, gbit1.f, easypack.f ;             or
maingbe.f, gbit1e.f, gbit1.f, easypack.f .

Under UNIX with the make-utility, for example simply type in:
make maingb
to build the program maingb.


The remaining part of this document contains a description of the test
example supplied with the main program maingb.

The linear system to be solved originates from a boundary value
problem with an elliptical partial differential equation in two
variables x,y , and homogeneous Dirichlet boundary conditions, on the 
rectangle -3 <= x <= 3 and -3 <= y <= 3 . The equation and the boundary
conditions have been discretizised on a homogeneous grid dividing the 
interval from -3 to 3 for each variable in 30 parts, and such
consisting of 31*31=961 grid points. The second order partial deriva-
tives are replaced by the usual second order central difference appro-
ximations. As coded, these approximations are also valid for nonhomo-
geneous grids. Additionally, the example shows up how to include terms
with first order derivatives in the partial differential equation.

The differential equation is:

uxx + uyy + g(u,x,y) = 0 , where

g(u,x,y) := -(9/10*exp(-q(x,y))+1/10*u)*(4*x^2/r1^4 - 2/r1^2
                                        +4*y^2/r2^4 - 2/r2^2)

with q(x,y) := x^2/r1^2 + y^2/r2^2 .

Herein, r1 and r2 are positive real parameters. (Note, that the integer
parameter ipar must have the value 3 to realize the above described 
problem with the distributed code).
In the delivered main program, r1 is denoted as the variable rpar1 and
r2 as rpar2, and the parameters are set to the values r1=r2=1.0, but
these settings may be easily changed in the main program
(Note, that a setting of ipar=1 will cause a divergent iteration of
Good Broyden).

The analytical solution of the problem is:

u(x,y) = exp(-q(x,y)) .



 
