Subversion Repositories slepc-dev

Rev

Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2615 Rev 2629
Line 221... Line 221...
 
 
  /* In the case of Cayley transform, eigenvectors need to be B-normalized */
  /* In the case of Cayley transform, eigenvectors need to be B-normalized */
  ierr = PetscTypeCompare((PetscObject)eps->OP,STCAYLEY,&iscayley);CHKERRQ(ierr);
  ierr = PetscTypeCompare((PetscObject)eps->OP,STCAYLEY,&iscayley);CHKERRQ(ierr);
  if (iscayley && eps->isgeneralized && eps->ishermitian) {
  if (iscayley && eps->isgeneralized && eps->ishermitian) {
    ierr = STGetOperators(eps->OP,PETSC_NULL,&B);CHKERRQ(ierr);
    ierr = STGetOperators(eps->OP,PETSC_NULL,&B);CHKERRQ(ierr);
    ierr = MatGetVecs(B,&w,PETSC_NULL);CHKERRQ(ierr);
    ierr = MatGetVecs(B,PETSC_NULL,&w);CHKERRQ(ierr);
    if (!eps->evecsavailable) { ierr = (*eps->ops->computevectors)(eps);CHKERRQ(ierr); }
    if (!eps->evecsavailable) { ierr = (*eps->ops->computevectors)(eps);CHKERRQ(ierr); }
    for (i=0;i<eps->nconv;i++) {
    for (i=0;i<eps->nconv;i++) {
      x = eps->V[i];
      x = eps->V[i];
      ierr = MatMult(B,x,w);CHKERRQ(ierr);
      ierr = MatMult(B,x,w);CHKERRQ(ierr);
      ierr = VecDot(w,x,&dot);CHKERRQ(ierr);
      ierr = VecDot(w,x,&dot);CHKERRQ(ierr);
      ierr = VecScale(x,1.0/dot);CHKERRQ(ierr);
      ierr = VecScale(x,1.0/PetscSqrtScalar(dot));CHKERRQ(ierr);
    }
    }
    ierr = VecDestroy(&w);CHKERRQ(ierr);
    ierr = VecDestroy(&w);CHKERRQ(ierr);
  }
  }
 
 
  /* sort eigenvalues according to eps->which parameter */
  /* sort eigenvalues according to eps->which parameter */