org.netlib.arpack
Class Dsaup2
java.lang.Object
org.netlib.arpack.Dsaup2
public class Dsaup2
- extends java.lang.Object
Following is the description from the original
Fortran source. For each array argument, the Java
version will include an integer offset parameter, so
the arguments may not match the description exactly.
Contact seymour@cs.utk.edu with any questions.
*-----------------------------------------------------------------------
\BeginDoc
\Name: dsaup2
\Description:
Intermediate level interface called by dsaupd.
\Usage:
call dsaup2
( IDO, BMAT, N, WHICH, NEV, NP, TOL, RESID, MODE, IUPD,
ISHIFT, MXITER, V, LDV, H, LDH, RITZ, BOUNDS, Q, LDQ, WORKL,
IPNTR, WORKD, INFO )
\Arguments
IDO, BMAT, N, WHICH, NEV, TOL, RESID: same as defined in dsaupd.
MODE, ISHIFT, MXITER: see the definition of IPARAM in dsaupd.
NP Integer. (INPUT/OUTPUT)
Contains the number of implicit shifts to apply during
each Arnoldi/Lanczos iteration.
If ISHIFT=1, NP is adjusted dynamically at each iteration
to accelerate convergence and prevent stagnation.
This is also roughly equal to the number of matrix-vector
products (involving the operator OP) per Arnoldi iteration.
The logic for adjusting is contained within the current
subroutine.
If ISHIFT=0, NP is the number of shifts the user needs
to provide via reverse comunication. 0 < NP < NCV-NEV.
NP may be less than NCV-NEV since a leading block of the current
upper Tridiagonal matrix has split off and contains "unwanted"
Ritz values.
Upon termination of the IRA iteration, NP contains the number
of "converged" wanted Ritz values.
IUPD Integer. (INPUT)
IUPD .EQ. 0: use explicit restart instead implicit update.
IUPD .NE. 0: use implicit update.
V Double precision N by (NEV+NP) array. (INPUT/OUTPUT)
The Lanczos basis vectors.
LDV Integer. (INPUT)
Leading dimension of V exactly as declared in the calling
program.
H Double precision (NEV+NP) by 2 array. (OUTPUT)
H is used to store the generated symmetric tridiagonal matrix
The subdiagonal is stored in the first column of H starting
at H(2,1). The main diagonal is stored in the second column
of H starting at H(1,2). If dsaup2 converges store the
B-norm of the final residual vector in H(1,1).
LDH Integer. (INPUT)
Leading dimension of H exactly as declared in the calling
program.
RITZ Double precision array of length NEV+NP. (OUTPUT)
RITZ(1:NEV) contains the computed Ritz values of OP.
BOUNDS Double precision array of length NEV+NP. (OUTPUT)
BOUNDS(1:NEV) contain the error bounds corresponding to RITZ.
Q Double precision (NEV+NP) by (NEV+NP) array. (WORKSPACE)
Private (replicated) work array used to accumulate the
rotation in the shift application step.
LDQ Integer. (INPUT)
Leading dimension of Q exactly as declared in the calling
program.
WORKL Double precision array of length at least 3*(NEV+NP). (INPUT/WORKSPACE)
Private (replicated) array on each PE or array allocated on
the front end. It is used in the computation of the
tridiagonal eigenvalue problem, the calculation and
application of the shifts and convergence checking.
If ISHIFT .EQ. O and IDO .EQ. 3, the first NP locations
of WORKL are used in reverse communication to hold the user
supplied shifts.
IPNTR Integer array of length 3. (OUTPUT)
Pointer to mark the starting locations in the WORKD for
vectors used by the Lanczos iteration.
-------------------------------------------------------------
IPNTR(1): pointer to the current operand vector X.
IPNTR(2): pointer to the current result vector Y.
IPNTR(3): pointer to the vector B * X when used in one of
the spectral transformation modes. X is the current
operand.
-------------------------------------------------------------
WORKD Double precision work array of length 3*N. (REVERSE COMMUNICATION)
Distributed array to be used in the basic Lanczos iteration
for reverse communication. The user should not use WORKD
as temporary workspace during the iteration !!!!!!!!!!
See Data Distribution Note in dsaupd.
INFO Integer. (INPUT/OUTPUT)
If INFO .EQ. 0, a randomly initial residual vector is used.
If INFO .NE. 0, RESID contains the initial residual vector,
possibly from a previous run.
Error flag on output.
= 0: Normal return.
= 1: All possible eigenvalues of OP has been found.
NP returns the size of the invariant subspace
spanning the operator OP.
= 2: No shifts could be applied.
= -8: Error return from trid. eigenvalue calculation;
This should never happen.
= -9: Starting vector is zero.
= -9999: Could not build an Lanczos factorization.
Size that was built in returned in NP.
\EndDoc
-----------------------------------------------------------------------
\BeginLib
\References:
1. D.C. Sorensen, "Implicit Application of Polynomial Filters in
a k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992),
pp 357-385.
2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
Restarted Arnoldi Iteration", Rice University Technical Report
TR95-13, Department of Computational and Applied Mathematics.
3. B.N. Parlett, "The Symmetric Eigenvalue Problem". Prentice-Hall,
1980.
4. B.N. Parlett, B. Nour-Omid, "Towards a Black Box Lanczos Program",
Computer Physics Communications, 53 (1989), pp 169-179.
5. B. Nour-Omid, B.N. Parlett, T. Ericson, P.S. Jensen, "How to
Implement the Spectral Transformation", Math. Comp., 48 (1987),
pp 663-673.
6. R.G. Grimes, J.G. Lewis and H.D. Simon, "A Shifted Block Lanczos
Algorithm for Solving Sparse Symmetric Generalized Eigenproblems",
SIAM J. Matr. Anal. Apps., January (1993).
7. L. Reichel, W.B. Gragg, "Algorithm 686: FORTRAN Subroutines
for Updating the QR decomposition", ACM TOMS, December 1990,
Volume 16 Number 4, pp 369-377.
\Routines called:
dgetv0 ARPACK initial vector generation routine.
dsaitr ARPACK Lanczos factorization routine.
dsapps ARPACK application of implicit shifts routine.
dsconv ARPACK convergence of Ritz values routine.
dseigt ARPACK compute Ritz values and error bounds routine.
dsgets ARPACK reorder Ritz values and error bounds routine.
dsortr ARPACK sorting routine.
ivout ARPACK utility routine that prints integers.
second ARPACK utility routine for timing.
dvout ARPACK utility routine that prints vectors.
dlamch LAPACK routine that determines machine constants.
dcopy Level 1 BLAS that copies one vector to another.
ddot Level 1 BLAS that computes the scalar product of two vectors.
dnrm2 Level 1 BLAS that computes the norm of a vector.
dscal Level 1 BLAS that scales a vector.
dswap Level 1 BLAS that swaps two vectors.
\Author
Danny Sorensen Phuong Vu
Richard Lehoucq CRPC / Rice University
Dept. of Computational & Houston, Texas
Applied Mathematics
Rice University
Houston, Texas
\Revision history:
12/15/93: Version ' 2.4'
xx/xx/95: Version ' 2.4'. (R.B. Lehoucq)
\SCCS Information: @(#)
FILE: saup2.F SID: 2.7 DATE OF SID: 5/19/98 RELEASE: 2
\EndLib
-----------------------------------------------------------------------
Field Summary |
static boolean |
cnorm
|
static double |
eps23
|
static boolean |
getv0
|
static boolean |
initv
|
static org.netlib.util.intW |
iter
|
static int |
kplusp
|
static int |
msglvl
|
static org.netlib.util.intW |
nconv
|
static int |
nev0
|
static int |
np0
|
static org.netlib.util.doubleW |
rnorm
|
static org.netlib.util.floatW |
t0
|
static org.netlib.util.floatW |
t1
|
static org.netlib.util.floatW |
t2
|
static org.netlib.util.floatW |
t3
|
static float |
t4
|
static float |
t5
|
static boolean |
update
|
static boolean |
ushift
|
Method Summary |
static void |
dsaup2(org.netlib.util.intW ido,
java.lang.String bmat,
int n,
java.lang.String which,
org.netlib.util.intW nev,
org.netlib.util.intW np,
double tol,
double[] resid,
int _resid_offset,
int mode,
int iupd,
int ishift,
org.netlib.util.intW mxiter,
double[] v,
int _v_offset,
int ldv,
double[] h,
int _h_offset,
int ldh,
double[] ritz,
int _ritz_offset,
double[] bounds,
int _bounds_offset,
double[] q,
int _q_offset,
int ldq,
double[] workl,
int _workl_offset,
int[] ipntr,
int _ipntr_offset,
double[] workd,
int _workd_offset,
org.netlib.util.intW info)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
t0
public static org.netlib.util.floatW t0
t1
public static org.netlib.util.floatW t1
t2
public static org.netlib.util.floatW t2
t3
public static org.netlib.util.floatW t3
t4
public static float t4
t5
public static float t5
cnorm
public static boolean cnorm
getv0
public static boolean getv0
initv
public static boolean initv
update
public static boolean update
ushift
public static boolean ushift
iter
public static org.netlib.util.intW iter
kplusp
public static int kplusp
msglvl
public static int msglvl
nconv
public static org.netlib.util.intW nconv
nev0
public static int nev0
np0
public static int np0
rnorm
public static org.netlib.util.doubleW rnorm
eps23
public static double eps23
Dsaup2
public Dsaup2()
dsaup2
public static void dsaup2(org.netlib.util.intW ido,
java.lang.String bmat,
int n,
java.lang.String which,
org.netlib.util.intW nev,
org.netlib.util.intW np,
double tol,
double[] resid,
int _resid_offset,
int mode,
int iupd,
int ishift,
org.netlib.util.intW mxiter,
double[] v,
int _v_offset,
int ldv,
double[] h,
int _h_offset,
int ldh,
double[] ritz,
int _ritz_offset,
double[] bounds,
int _bounds_offset,
double[] q,
int _q_offset,
int ldq,
double[] workl,
int _workl_offset,
int[] ipntr,
int _ipntr_offset,
double[] workd,
int _workd_offset,
org.netlib.util.intW info)