org.netlib.arpack
Class Dnapps
java.lang.Object
org.netlib.arpack.Dnapps
public class Dnapps
- 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: dnapps
\Description:
Given the Arnoldi factorization
A*V_{k} - V_{k}*H_{k} = r_{k+p}*e_{k+p}^T,
apply NP implicit shifts resulting in
A*(V_{k}*Q) - (V_{k}*Q)*(Q^T* H_{k}*Q) = r_{k+p}*e_{k+p}^T * Q
where Q is an orthogonal matrix which is the product of rotations
and reflections resulting from the NP bulge chage sweeps.
The updated Arnoldi factorization becomes:
A*VNEW_{k} - VNEW_{k}*HNEW_{k} = rnew_{k}*e_{k}^T.
\Usage:
call dnapps
( N, KEV, NP, SHIFTR, SHIFTI, V, LDV, H, LDH, RESID, Q, LDQ,
WORKL, WORKD )
\Arguments
N Integer. (INPUT)
Problem size, i.e. size of matrix A.
KEV Integer. (INPUT/OUTPUT)
KEV+NP is the size of the input matrix H.
KEV is the size of the updated matrix HNEW. KEV is only
updated on ouput when fewer than NP shifts are applied in
order to keep the conjugate pair together.
NP Integer. (INPUT)
Number of implicit shifts to be applied.
SHIFTR, Double precision array of length NP. (INPUT)
SHIFTI Real and imaginary part of the shifts to be applied.
Upon, entry to dnapps, the shifts must be sorted so that the
conjugate pairs are in consecutive locations.
V Double precision N by (KEV+NP) array. (INPUT/OUTPUT)
On INPUT, V contains the current KEV+NP Arnoldi vectors.
On OUTPUT, V contains the updated KEV Arnoldi vectors
in the first KEV columns of V.
LDV Integer. (INPUT)
Leading dimension of V exactly as declared in the calling
program.
H Double precision (KEV+NP) by (KEV+NP) array. (INPUT/OUTPUT)
On INPUT, H contains the current KEV+NP by KEV+NP upper
Hessenber matrix of the Arnoldi factorization.
On OUTPUT, H contains the updated KEV by KEV upper Hessenberg
matrix in the KEV leading submatrix.
LDH Integer. (INPUT)
Leading dimension of H exactly as declared in the calling
program.
RESID Double precision array of length N. (INPUT/OUTPUT)
On INPUT, RESID contains the the residual vector r_{k+p}.
On OUTPUT, RESID is the update residual vector rnew_{k}
in the first KEV locations.
Q Double precision KEV+NP by KEV+NP work array. (WORKSPACE)
Work array used to accumulate the rotations and reflections
during the bulge chase sweep.
LDQ Integer. (INPUT)
Leading dimension of Q exactly as declared in the calling
program.
WORKL Double precision work array of length (KEV+NP). (WORKSPACE)
Private (replicated) array on each PE or array allocated on
the front end.
WORKD Double precision work array of length 2*N. (WORKSPACE)
Distributed array used in the application of the accumulated
orthogonal matrix Q.
\EndDoc
-----------------------------------------------------------------------
\BeginLib
\Local variables:
xxxxxx real
\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.
\Routines called:
ivout ARPACK utility routine that prints integers.
second ARPACK utility routine for timing.
dmout ARPACK utility routine that prints matrices.
dvout ARPACK utility routine that prints vectors.
dlabad LAPACK routine that computes machine constants.
dlacpy LAPACK matrix copy routine.
dlamch LAPACK routine that determines machine constants.
dlanhs LAPACK routine that computes various norms of a matrix.
dlapy2 LAPACK routine to compute sqrt(x**2+y**2) carefully.
dlarf LAPACK routine that applies Householder reflection to
a matrix.
dlarfg LAPACK Householder reflection construction routine.
dlartg LAPACK Givens rotation construction routine.
dlaset LAPACK matrix initialization routine.
dgemv Level 2 BLAS routine for matrix vector multiplication.
daxpy Level 1 BLAS that computes a vector triad.
dcopy Level 1 BLAS that copies one vector to another .
dscal Level 1 BLAS that scales a vector.
\Author
Danny Sorensen Phuong Vu
Richard Lehoucq CRPC / Rice University
Dept. of Computational & Houston, Texas
Applied Mathematics
Rice University
Houston, Texas
\Revision history:
xx/xx/92: Version ' 2.4'
\SCCS Information: @(#)
FILE: napps.F SID: 2.4 DATE OF SID: 3/28/97 RELEASE: 2
\Remarks
1. In this version, each shift is applied to all the sublocks of
the Hessenberg matrix H and not just to the submatrix that it
comes from. Deflation as in LAPACK routine dlahqr (QR algorithm
for upper Hessenberg matrices ) is used.
The subdiagonals of H are enforced to be non-negative.
\EndLib
-----------------------------------------------------------------------
Field Summary |
static boolean |
first
|
static org.netlib.util.doubleW |
ovfl
|
static double |
smlnum
|
static org.netlib.util.floatW |
t0
|
static org.netlib.util.floatW |
t1
|
static float |
t2
|
static float |
t3
|
static float |
t4
|
static float |
t5
|
static double |
ulp
|
static org.netlib.util.doubleW |
unfl
|
Method Summary |
static void |
dnapps(int n,
org.netlib.util.intW kev,
int np,
double[] shiftr,
int _shiftr_offset,
double[] shifti,
int _shifti_offset,
double[] v,
int _v_offset,
int ldv,
double[] h,
int _h_offset,
int ldh,
double[] resid,
int _resid_offset,
double[] q,
int _q_offset,
int ldq,
double[] workl,
int _workl_offset,
double[] workd,
int _workd_offset)
|
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 float t2
t3
public static float t3
t4
public static float t4
t5
public static float t5
ovfl
public static org.netlib.util.doubleW ovfl
smlnum
public static double smlnum
ulp
public static double ulp
unfl
public static org.netlib.util.doubleW unfl
first
public static boolean first
Dnapps
public Dnapps()
dnapps
public static void dnapps(int n,
org.netlib.util.intW kev,
int np,
double[] shiftr,
int _shiftr_offset,
double[] shifti,
int _shifti_offset,
double[] v,
int _v_offset,
int ldv,
double[] h,
int _h_offset,
int ldh,
double[] resid,
int _resid_offset,
double[] q,
int _q_offset,
int ldq,
double[] workl,
int _workl_offset,
double[] workd,
int _workd_offset)