home *** CD-ROM | disk | FTP | other *** search
- SKYLIB
-
- SKYLIB is a library of Fortran 77 routines for solving linear systems
- of equations where the matrix is banded, with the bands varying in
- width, stored in a packed form known as skyline. These routines handle
- two types of matrices: symmetric (LDL**T factorization) and symmetric
- in shape, but not in values (LU factorization). Further details can
- be found below.
-
- The current library comes in four formats:
-
- o mips1: compilation flags -O2,
- will run on all systems,
- This is NOT a parallel version.
-
- o mips2: compiled with the "-O2 -mips2" flags,
- will run only on systems with R4000 CPUs,
- This is NOT a parallel version.
-
- o mp_mips1: compiled "-O2 -mp"
- will run all systems.
- Requires Fortran compilers since it uses the Fortran MP library.
- This version will run in parallel on Power Series systems.
-
- o mp_mips2: compiled "-O2 -mips2 -mp"
- will run all Challenge and Onyx systems only.
- Requires Fortran compilers since it uses the Fortran MP library.
- This version will run in parallel.
-
-
- The example directory contains example routines that use both solvers.
- The makefile in this directory will create single and double precision
- test programs for both solvers. You have to modify the Makefile to point
- to the appropriate skylib for your machine
-
-
-
- LDL SKYLINE SOLVER
- ( for symmetric matrices )
-
- The routines for the skyline solver operate on matrices that are
- banded and symmetric in form and in values. The operations performed
- are the triangular factorization LDL(t) WITHOUT pivoting of
- matrices and the solution of simultaneous linear equations.
-
- The system parameter routine is in: dparam.f
-
- The factorization routines are in the files: dskydc.f
- dspslv.f
- dmpslv.f
- dskyul.f
- The solve routines are in the file: djesol.f
- drjsol.f
-
-
- ( Note: The routines should be linked to the blas library by including
- ---- -lblas or -lblas_mp and the appropriate link flags -mips2 -mp
- on the link command. Also, the system parameters need to be initialized
- before the factorization routines are called. )
-
-
-
- DSKYDC computes a LDL(t) factorization without pivoting of a
- real*8 matrix V stored in either Jenning's or reverse
- Jenning's storage scheme.
-
-
- Arguments
- ---------
-
- ON ENTRY
-
- V DOUBLE PRECISION ( PD(N) )
- The matrix to be factored stored as a 1-dim
- vector. The storage scheme is described in detail
- below.
-
- N INTEGER
- The order of the matrix (number of columns).
-
- PD INTEGER (N), or INTEGER (N+1)
- An integer vector pointing to the position of the
- diagonal elements in V.
- V( PD(1) ) will have the first diagonal element,
- V( PD(2) ) will have the second diagonal element,
- .
- .
- V( PD(N) ) will have the last diagonal element,
-
- For the Jenning's method,
- PD(N) will also have the number of elements in V.
- For the reverse Jenning's method,
- PD(N+1) will have the number of elements in V plus 1.
-
- ITYP INTEGER
- The type of storage schemes
- .EQ.1 == Jennings
- .EQ.2 == reverse Jenning's (NOT AVAILABLE YET)
-
-
- ON RETURN
-
- V DOUBLE PRECISION ( PD(N) )
- The resultant L matrix as a 1-dim vector, except that
- the V(PD(i)) term corresponds to the i_th term in D(-1).
-
- INFO INTEGER
- = 0 Successful exit.
- = K If V(pd(k)) .EQ. 0.0 . The factorization has
- not been completed due to this singularity.
-
-
- DRJSOL solves the double precision system
- V * X = B using the factorized matrix
- stored in reverse Jenning's format
- (This routine has NOT been implemented yet)
-
-
- DJESOL solves the double precision system
- V * X = B using the factorized matrix
- stored in Jenning's format
-
-
-
- Arguments
- ---------
-
- ON ENTRY
-
- V DOUBLE PRECISION ( PD(N) )
- The output from DSKYDC stored in Jenning's skyline
- form. The storage scheme is described in DSKYDC.
-
- N INTEGER
- The order of the matrix (number of rows/columns).
-
-
- PD INTEGER (N)
- An integer vector pointing to the position of the
- diagonal elements in V.
- V( PD(1) ) will have the first diagonal element,
- V( PD(2) ) will have the second diagonal element,
- .
- .
- V( PD(N) ) will have the last diagonal element,
- PD(N) will also have the number of elements in V.
-
-
- B DOUBLE PRECISION ( N )
- The right hand side vector.
-
-
- ON RETURN
-
- B THE SOLUTION VECTOR X .
-
-
-
-
- Jenning's Storage Method
- ------------------------
-
- The variable band or skyline storage scheme is illustrated
- by the following example, where:
-
- N = 7
- PD = ( 1, 3, 6, 9, 13, 16, 21 )
- V = ( 11, 12, 22, 13, 23, 33, 24, 0, 44, 25,
- 35, 0, 55, 46, 56, 66, 37, 0, 57, 0, 77 )
-
-
- The elements of V correponding to the elements of A
-
- ------------------------------------ ------------------------------------
- | 1 | 2 | 4 | * | * | * | * | | 11 | 12 | 13 | 0 | 0 | 0 | 0 |
- |----| | | | | | | |----| | | | | | |
- | 3 | 5 | 7 | 10 | * | * | | 12 | 22 | 23 | 24 | 25 | 0 | 0 |
- -----| | | | | | |---------| | | | | |
- | 6 | 8 | 11 | * | 17 | | 13 | 23 | 33 | 0 | 35 | 0 | 37 |
- -----| | | | | |--------------| | | | |
- | 9 | 12 | 14 | 18 | | 0 24 0 | 44 | 0 | 46 | 0 |
- -----| | | | |-------------------| | | |
- | 13 | 15 | 19 | | 0 25 35 0 | 55 | 56 | 57 |
- -----| | | |------------------------| | |
- | 16 | 20 | | 0 0 0 46 56 | 66 | 0 |
- -----| | |-----------------------------| |
- | 21 | | 0 0 37 0 57 0 | 77 |
- ------ ------------------------------------
-
- Due to symmetry, only the upper triangular part of the array needs
- to be stored. The columns are stored in a top-down fashion, i.e.
- from the first nonzero entry to the diagonal, into V. The zero
- entries outside the skyline profile are not stored. The book-keeping
- array PD keeps track of the locations of the diagonal elements in V.
-
-
- Reverse Jenning's Method
- ------------------------
-
- The variable band or skyline storage scheme is illustrated
- by the following example, where:
-
- N = 7
- PD = ( 1, 2, 4, 7, 10, 14, 17, 22 )
- V = ( 11, 22, 12, 33, 23, 13, 44, 0, 24, 55,
- 0, 35, 25, 66, 56, 46, 77, 0, 57, 0, 37 )
-
-
- The elements of V correponding to the elements of A
-
- ------------------------------------ ------------------------------------
- | 1 | 3 | 6 | * | * | * | * | | 11 | 12 | 13 | 0 | 0 | 0 | 0 |
- |----| | | | | | | |----| | | | | | |
- | 2 | 5 | 9 | 13 | * | * | | 12 | 22 | 23 | 24 | 25 | 0 | 0 |
- -----| | | | | | |---------| | | | | |
- | 4 | 8 | 12 | * | 21 | | 13 | 23 | 33 | 0 | 35 | 0 | 37 |
- -----| | | | | |--------------| | | | |
- | 7 | 11 | 16 | 20 | | 0 24 0 | 44 | 0 | 46 | 0 |
- -----| | | | |-------------------| | | |
- | 10 | 15 | 19 | | 0 25 35 0 | 55 | 56 | 57 |
- -----| | | |------------------------| | |
- | 14 | 18 | | 0 0 0 46 56 | 66 | 0 |
- -----| | |-----------------------------| |
- | 17 | | 0 0 37 0 57 0 | 77 |
- ------ ------------------------------------
-
- Due to symmetry, only the upper triangular part of the array needs
- to be stored. The columns are stored in a bottom-up fashion, i.e.
- from the diagonal to the first nonzero entry, into V. The zero
- entries outside the skyline profile are not stored. The book-keeping
- array PD keeps track of the locations of the diagonal elements in V.
- Note that there are N+1 terms in PD. The last term provides the
- information of the total number of terms in V plus 1.
-
-
-
-
-
- LU SKYLINE SOLVER
- (for symmetrical shaped matrices)
-
- The routines for the skyline solver operate on matrices that are
- variable band and symmetric in form but not in values. The operations
- performed are the triangular factorization (LU) WITHOUT pivoting of
- matrices and the solution of simultaneous linear equations.
-
- The factorization routines are in the files: dskyfa.f
- dskyf1.f
- dskyf2.f
- The solve routines are in the file: dskysl.f
- dskyf1.f
-
-
- ( Note: The routines should be linked to the blas library by including
- ---- -lblas on the link command. )
-
-
-
- DSKYFA computes an LU factorization without pivoting of a
- real n-by-n variable band (skyline) matrix V stored in a
- fishbone packed form.
-
- Arguments
- ---------
-
- ON ENTRY
-
- V DOUBLE PRECISION ( PD(N) )
- The matrix to be factored stored as a 1-dim
- vector. The storage scheme is described in detail
- below.
-
- N INTEGER
- The order of the matrix (number of columns).
-
- PD INTEGER (N)
- An integer vector pointing to the position of the
- diagonal elements in V.
- V( PD(1) ) will have the first diagonal element,
- V( PD(2) ) will have the second diagonal element,
- .
- .
- V( PD(N) ) will have the last diagonal element,
- PD(N) will also have the number of elements in V.
-
-
- ON RETURN
-
- V An upper triangular matrix stored as a 1-dim vector
- and the multipliers which were used to obtain it.
-
- INFO INTEGER
- = 0 Successful exit.
- = K If V(pd(k)) .EQ. 0.0 . The factorization has
- been completed, but the factor U is exactly
- singular. Division by zero will occur if it is
- used to solve a system of equations in DSKYSL.
-
-
-
- DGESL solves the double precision system
- V * X = B OR TRANS(V) * X = B
- using the factors computed by DSKYFA.
-
- Arguments
- ---------
-
- ON ENTRY
-
- V DOUBLE PRECISION ( PD(N) )
- The output from DSKYSL stored in skyline
- packed form. The storage scheme is described
- in more detail below.
-
- N INTEGER
- The order of the matrix (number of rows/columns).
-
-
- PD INTEGER (N)
- An integer vector pointing to the position of the
- diagonal elements in V.
- V( PD(1) ) will have the first diagonal element,
- V( PD(2) ) will have the second diagonal element,
- .
- .
- V( PD(N) ) will have the last diagonal element,
- PD(N) will also have the number of elements in V.
-
-
- B DOUBLE PRECISION ( N )
- The right hand side vector.
-
- TRANS CHARACTER*1
- The operation applied to V.
- = 'N': Solve V * X = B (No transpose)
- = 'T': Solve V'* X = B (Transpose)
-
-
- ON RETURN
-
- B THE SOLUTION VECTOR X .
-
- INFO INTEGER
- = 0: successful exit
- < 0: if INFO = -k, the k-th argument had an illegal value
-
-
- Storage
- -------
- The variable band or skyline storage scheme is illustrated
- by the following example, where:
-
- N = 7
- PD = ( 1, 4, 9, 14, 21, 26, 35 )
-
-
- The elements of V correponding to the elements of A
-
- ------------------------------------ ------------------------------------
- | 1 | 3 | 7 | * | * | * | * | | 11 | 12 | 13 | * | * | * | * |
- |----| | | | | | | |----| | | | | | |
- | 2 | 4 | 8 | 12 | 18 | * | * | | 21 | 22 | 23 | 24 | 25 | * | * |
- |---------| | | | | | |---------| | | | | |
- | 5 6 | 9 | 13 | 19 | * | 31 | | 31 | 32 | 33 | 34 | 35 | * | 37 |
- |--------------| | | | | |--------------| | | | |
- | * 10 11 | 14 | 20 | 24 | 32 | | * 42 43 | 44 | 45 | 46 | 47 |
- |-------------------| | | | |-------------------| | | |
- | * 15 16 17 | 21 | 25 | 33 | | * 52 53 54 | 55 | 56 | 57 |
- |------------------------| | | |------------------------| | |
- | * * * 22 23 | 26 | 34 | | * * * 64 65 | 66 | 67 |
- |-----------------------------| | |-----------------------------| |
- | * * 27 28 29 30 | 35 | | * * 73 74 75 76 | 77 |
- ------------------------------------ ------------------------------------
-
- The elements are stored in the array V in a packed fashion following
- a fishbone design. The rows below the diagonal and the columns above
- the diagonal are stored with stride 1. Elements marked with * are
- not stored in V. If you look at V as a 2 dimensional array A, you
- see that A is symmetric in shape, but the corresponding symmetric
- values are not the same.
-
-
-
-