HP MLIB User's Guide Vol. 2 7th Ed.

1042 HP MLIB User’s Guide
DSEVEX Eigenextraction
Actual character arguments in a subroutine call may be longer than
corresponding dummy arguments. Therefore, readability of the CALL
statement may be improved by coding the pbtype argument as ’vibration’ or
’buckling’.
Example 1 Compute the lowest 10 eigenvalues of a structural engineering vibration
analysis, where the matrix A is the stiffness matrix K, the matrix Bis the mass
matrix M, and both matrices K and M are positive definite or semi-definite.
INTEGER*4 NFOUND,NDISCD,IER,WARNNG
CALL DSEVEX (10,’LOWEST’,’VIBRATION’,.FALSE.,-1.0D30,
.FALSE,.1.0D30,1.0D30,0,0.0D0,0.0D0,0,0.0D0,
NFOUND,NDISCD,GLOBAL,IER,WARNNG)
IF ( IER .NE. 0 ) THEN
handle error condition
ENDIF
IF ( IER .GE. 0 ) THEN
retrieve eigenvalues and/or eigenvectors
ENDIF
Example 2 Compute the lowest negative eigenvalue and corresponding eigenvector for a
structural engineering buckling analysis, where the matrix A is the stiffness
matrix K and the matrix B is the geometric stiffness matrix K
δ
. The matrix K
and M is positive semi-definite. A good guess at the eigenvector is available
from static analysis and is stored in array USRSVC.
INTEGER*4 NFOUND, NDISCD, IER, WARNNG
REAL*8 USRSVC(NORDER)
CALL DSEVEX (1,’LOWEST’,’BUCKLING’,.FALSE.,-1.0D30,
.TRUE.,0.0D0,0.0D0,0,0.0D0,0.0D0,1,USRSVC,
NFOUND,NDISCD,GLOBAL,IER,WARNNG)
IF ( IER .NE. 0 ) THEN
handle error condition
ENDIF
IF ( IER .GE. 0 ) THEN
retrieve eigenvalues and/or eigenvectors
ENDIF
Example 3 Compute the 200 eigenvalues and corresponding eigenvectors closest to
3.14159 for a sparse matrix A. Less accuracy is needed than usual, but highly
multiple eigenvalues are expected. It is known from previous analyses that
eigenvalues closest to zero are about 1.5×10
5
.
INTEGER*4 NFOUND,NDISCD,IER,WARNNG
CALL DSEVEX (200,’NEAREST’,’ORDINARY’,.FALSE.,-1.0D30,
.FALSE.,1.0D30,3.14159D0,10,1.0D-8,1.5D-5,
0,0.0D0,NFOUND,NDISCD,GLOBAL,IER,WARNNG)
IF ( IER .NE. 0 ) THEN
handle error condition
ENDIF
IF ( IER .GE. 0 ) THEN
check orthogonality with DSEVCK
retrieve eigenvalues and/or eigenvectors
ENDIF