Subversion Repositories slepc-dev

Rev

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

Rev 1341 Rev 1352
Line 76... Line 76...
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  ierr = SVDMatMult(svd,PETSC_FALSE,V[k],u);CHKERRQ(ierr);
  ierr = SVDMatMult(svd,PETSC_FALSE,V[k],u);CHKERRQ(ierr);
  for (i=k+1;i<n;i++) {
  for (i=k+1;i<n;i++) {
    ierr = SVDMatMult(svd,PETSC_TRUE,u,V[i]);CHKERRQ(ierr);
    ierr = SVDMatMult(svd,PETSC_TRUE,u,V[i]);CHKERRQ(ierr);
    svd->dots += i;
    ierr = IPNormBegin(svd->ip,u,&a);CHKERRQ(ierr);
    ierr = VecNormBegin(u,NORM_2,&a);CHKERRQ(ierr);
    ierr = IPMInnerProductBegin(svd->ip,i,V[i],V,work);CHKERRQ(ierr);
    ierr = VecMDotBegin(V[i],i,V,work);CHKERRQ(ierr);
    ierr = IPNormEnd(svd->ip,u,&a);CHKERRQ(ierr);
    ierr = VecNormEnd(u,NORM_2,&a);CHKERRQ(ierr);
    ierr = IPMInnerProductEnd(svd->ip,i,V[i],V,work);CHKERRQ(ierr);
    ierr = VecMDotEnd(V[i],i,V,work);CHKERRQ(ierr);
 
   
   
    ierr = VecScale(u,1.0/a);CHKERRQ(ierr);
    ierr = VecScale(u,1.0/a);CHKERRQ(ierr);
    ierr = VecScale(V[i],1.0/a);CHKERRQ(ierr);
    ierr = VecScale(V[i],1.0/a);CHKERRQ(ierr);
    for (j=0;j<i;j++) work[j] = - work[j] / a;
    for (j=0;j<i;j++) work[j] = - work[j] / a;
    ierr = VecMAXPY(V[i],i,work,V);CHKERRQ(ierr);
    ierr = VecMAXPY(V[i],i,work,V);CHKERRQ(ierr);
Line 100... Line 99...
    temp = u;
    temp = u;
    u = u_1;
    u = u_1;
    u_1 = temp;
    u_1 = temp;
  }
  }
  ierr = SVDMatMult(svd,PETSC_TRUE,u,v);CHKERRQ(ierr);
  ierr = SVDMatMult(svd,PETSC_TRUE,u,v);CHKERRQ(ierr);
  svd->dots += i;
  ierr = IPNormBegin(svd->ip,u,&a);CHKERRQ(ierr);
  ierr = VecNormBegin(u,NORM_2,&a);CHKERRQ(ierr);
  ierr = IPMInnerProductBegin(svd->ip,n,v,V,work);CHKERRQ(ierr);
  ierr = VecMDotBegin(v,n,V,work);CHKERRQ(ierr);
  ierr = IPNormEnd(svd->ip,u,&a);CHKERRQ(ierr);
  ierr = VecNormEnd(u,NORM_2,&a);CHKERRQ(ierr);
  ierr = IPMInnerProductEnd(svd->ip,n,v,V,work);CHKERRQ(ierr);
  ierr = VecMDotEnd(v,n,V,work);CHKERRQ(ierr);
 
   
   
  ierr = VecScale(u,1.0/a);CHKERRQ(ierr);
  ierr = VecScale(u,1.0/a);CHKERRQ(ierr);
  ierr = VecScale(v,1.0/a);CHKERRQ(ierr);
  ierr = VecScale(v,1.0/a);CHKERRQ(ierr);
  for (j=0;j<n;j++) work[j] = - work[j] / a;
  for (j=0;j<n;j++) work[j] = - work[j] / a;
  ierr = VecMAXPY(v,n,work,V);CHKERRQ(ierr);
  ierr = VecMAXPY(v,n,work,V);CHKERRQ(ierr);