Subversion Repositories slepc-dev

Rev

Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1028 Rev 1037
Line 33... Line 33...
  ierr = KSPSolve(st->ksp,b,x);CHKERRQ(ierr);
  ierr = KSPSolve(st->ksp,b,x);CHKERRQ(ierr);
  ierr = KSPGetConvergedReason(st->ksp,&reason);CHKERRQ(ierr);
  ierr = KSPGetConvergedReason(st->ksp,&reason);CHKERRQ(ierr);
  if (reason<0) { SETERRQ1(0,"Warning: KSP did not converge (%d)",reason); }
  if (reason<0) { SETERRQ1(0,"Warning: KSP did not converge (%d)",reason); }
  ierr = KSPGetIterationNumber(st->ksp,&its);CHKERRQ(ierr);  
  ierr = KSPGetIterationNumber(st->ksp,&its);CHKERRQ(ierr);  
  st->lineariterations += its;
  st->lineariterations += its;
  PetscVerboseInfo((st,"ST: linear solve iterations=%d\n",its));
  PetscInfo1(st,"ST: linear solve iterations=%d\n",its);
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
 
 
#undef __FUNCT__  
#undef __FUNCT__  
#define __FUNCT__ "STAssociatedKSPSolveTranspose"
#define __FUNCT__ "STAssociatedKSPSolveTranspose"
Line 66... Line 66...
  ierr = KSPSolveTranspose(st->ksp,b,x);CHKERRQ(ierr);
  ierr = KSPSolveTranspose(st->ksp,b,x);CHKERRQ(ierr);
  ierr = KSPGetConvergedReason(st->ksp,&reason);CHKERRQ(ierr);
  ierr = KSPGetConvergedReason(st->ksp,&reason);CHKERRQ(ierr);
  if (reason<0) { SETERRQ1(0,"Warning: KSP did not converge (%d)",reason); }
  if (reason<0) { SETERRQ1(0,"Warning: KSP did not converge (%d)",reason); }
  ierr = KSPGetIterationNumber(st->ksp,&its);CHKERRQ(ierr);  
  ierr = KSPGetIterationNumber(st->ksp,&its);CHKERRQ(ierr);  
  st->lineariterations += its;
  st->lineariterations += its;
  PetscVerboseInfo((st,"ST: linear solve iterations=%d\n",its));
  PetscInfo1(st,"ST: linear solve iterations=%d\n",its);
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
 
 
#undef __FUNCT__  
#undef __FUNCT__  
#define __FUNCT__ "STSetKSP"
#define __FUNCT__ "STSetKSP"
Line 204... Line 204...
  c = 0;
  c = 0;
  for (i=0;i<n;i++) {
  for (i=0;i<n;i++) {
    ierr = MatMult(A,V[i],w);CHKERRQ(ierr);
    ierr = MatMult(A,V[i],w);CHKERRQ(ierr);
    ierr = VecNorm(w,NORM_2,&norm);CHKERRQ(ierr);
    ierr = VecNorm(w,NORM_2,&norm);CHKERRQ(ierr);
    if (norm < 1e-8) {
    if (norm < 1e-8) {
      PetscVerboseInfo((st,"STCheckNullSpace: vector %i norm=%g\n",i,norm));
      PetscInfo2(st,"STCheckNullSpace: vector %i norm=%g\n",i,norm);
      T[c] = V[i];
      T[c] = V[i];
      c++;
      c++;
    }
    }
  }
  }
  ierr = VecDestroy(w);CHKERRQ(ierr);
  ierr = VecDestroy(w);CHKERRQ(ierr);