Subversion Repositories slepc-dev

Rev

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

Rev 2702 Rev 2724
Line 196... Line 196...
 
 
#undef __FUNCT__  
#undef __FUNCT__  
#define __FUNCT__ "EPSSolve_BLOPEX"
#define __FUNCT__ "EPSSolve_BLOPEX"
PetscErrorCode EPSSolve_BLOPEX(EPS eps)
PetscErrorCode EPSSolve_BLOPEX(EPS eps)
{
{
  EPS_BLOPEX *blopex = (EPS_BLOPEX *)eps->data;
  EPS_BLOPEX     *blopex = (EPS_BLOPEX *)eps->data;
  int        i,j,info,its,nconv;
  int            i,j,info,its,nconv;
  double     *lambdahist=PETSC_NULL,*residhist=PETSC_NULL;
  double         *residhist=PETSC_NULL;
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
#if defined(PETSC_USE_COMPLEX)
 
  komplex        *lambdahist=PETSC_NULL;
 
#else
 
  double         *lambdahist=PETSC_NULL;
 
#endif
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  if (eps->numbermonitors>0) {
  if (eps->numbermonitors>0) {
 
#if defined(PETSC_USE_COMPLEX)
 
    ierr = PetscMalloc(eps->ncv*(eps->max_it+1)*sizeof(komplex),&lambdahist);CHKERRQ(ierr);
 
#else
    ierr = PetscMalloc(eps->ncv*(eps->max_it+1)*sizeof(double),&lambdahist);CHKERRQ(ierr);
    ierr = PetscMalloc(eps->ncv*(eps->max_it+1)*sizeof(double),&lambdahist);CHKERRQ(ierr);
 
#endif
    ierr = PetscMalloc(eps->ncv*(eps->max_it+1)*sizeof(double),&residhist);CHKERRQ(ierr);
    ierr = PetscMalloc(eps->ncv*(eps->max_it+1)*sizeof(double),&residhist);CHKERRQ(ierr);
  }
  }
 
 
#if defined(PETSC_USE_COMPLEX)
#if defined(PETSC_USE_COMPLEX)
  info = lobpcg_solve_complex(blopex->eigenvectors,eps,OperatorAMultiVector,
  info = lobpcg_solve_complex(blopex->eigenvectors,eps,OperatorAMultiVector,
Line 226... Line 235...
 
 
  if (eps->numbermonitors>0) {
  if (eps->numbermonitors>0) {
    for (i=0;i<its;i++) {
    for (i=0;i<its;i++) {
      nconv = 0;
      nconv = 0;
      for (j=0;j<eps->ncv;j++) { if (residhist[j+i*eps->ncv]>eps->tol) break; else nconv++; }
      for (j=0;j<eps->ncv;j++) { if (residhist[j+i*eps->ncv]>eps->tol) break; else nconv++; }
      ierr = EPSMonitor(eps,i,nconv,lambdahist+i*eps->ncv,eps->eigi,residhist+i*eps->ncv,eps->ncv);CHKERRQ(ierr);
      ierr = EPSMonitor(eps,i,nconv,(PetscScalar*)lambdahist+i*eps->ncv,eps->eigi,residhist+i*eps->ncv,eps->ncv);CHKERRQ(ierr);
    }
    }
    ierr = PetscFree(lambdahist);CHKERRQ(ierr);
    ierr = PetscFree(lambdahist);CHKERRQ(ierr);
    ierr = PetscFree(residhist);CHKERRQ(ierr);
    ierr = PetscFree(residhist);CHKERRQ(ierr);
  }
  }