| Line 114... |
Line 114... |
#undef __FUNCT__
|
#undef __FUNCT__
|
#define __FUNCT__ "QEPComputeVectors_Schur"
|
#define __FUNCT__ "QEPComputeVectors_Schur"
|
PetscErrorCode QEPComputeVectors_Schur(QEP qep)
|
PetscErrorCode QEPComputeVectors_Schur(QEP qep)
|
{
|
{
|
#if defined(SLEPC_MISSING_LAPACK_TREVC)
|
#if defined(SLEPC_MISSING_LAPACK_TREVC)
|
SETERRQ(PETSC_ERR_SUP,"TREVC - Lapack routine is unavailable.");
|
SETERRQ(((PetscObject)qep)->comm,PETSC_ERR_SUP,"TREVC - Lapack routine is unavailable.");
|
#else
|
#else
|
PetscErrorCode ierr;
|
PetscErrorCode ierr;
|
PetscInt i;
|
PetscInt i;
|
PetscBLASInt ncv,nconv,mout,info,one = 1;
|
PetscBLASInt ncv,nconv,mout,info,one = 1;
|
PetscScalar *Z,*work,tmp;
|
PetscScalar *Z,*work,tmp;
|
| Line 143... |
Line 143... |
#if !defined(PETSC_USE_COMPLEX)
|
#if !defined(PETSC_USE_COMPLEX)
|
LAPACKtrevc_("R","A",PETSC_NULL,&nconv,qep->T,&ncv,PETSC_NULL,&nconv,Z,&nconv,&nconv,&mout,work,&info);
|
LAPACKtrevc_("R","A",PETSC_NULL,&nconv,qep->T,&ncv,PETSC_NULL,&nconv,Z,&nconv,&nconv,&mout,work,&info);
|
#else
|
#else
|
LAPACKtrevc_("R","A",PETSC_NULL,&nconv,qep->T,&ncv,PETSC_NULL,&nconv,Z,&nconv,&nconv,&mout,work,rwork,&info);
|
LAPACKtrevc_("R","A",PETSC_NULL,&nconv,qep->T,&ncv,PETSC_NULL,&nconv,Z,&nconv,&nconv,&mout,work,rwork,&info);
|
#endif
|
#endif
|
if (info) SETERRQ1(PETSC_ERR_LIB,"Error in Lapack xTREVC %i",info);
|
if (info) SETERRQ1(((PetscObject)qep)->comm,PETSC_ERR_LIB,"Error in Lapack xTREVC %i",info);
|
|
|
/* normalize eigenvectors */
|
/* normalize eigenvectors */
|
for (i=0;i<qep->nconv;i++) {
|
for (i=0;i<qep->nconv;i++) {
|
#if !defined(PETSC_USE_COMPLEX)
|
#if !defined(PETSC_USE_COMPLEX)
|
if (qep->eigi[i] != 0.0) {
|
if (qep->eigi[i] != 0.0) {
|