| Line 400... |
Line 400... |
if (R) { ierr = IPOrthogonalize(ip,0,PETSC_NULL,k,PETSC_NULL,V,V[k],&R[0+ldr*k],&norm,&lindep);CHKERRQ(ierr); }
|
if (R) { ierr = IPOrthogonalize(ip,0,PETSC_NULL,k,PETSC_NULL,V,V[k],&R[0+ldr*k],&norm,&lindep);CHKERRQ(ierr); }
|
else { ierr = IPOrthogonalize(ip,0,PETSC_NULL,k,PETSC_NULL,V,V[k],PETSC_NULL,&norm,&lindep);CHKERRQ(ierr); }
|
else { ierr = IPOrthogonalize(ip,0,PETSC_NULL,k,PETSC_NULL,V,V[k],PETSC_NULL,&norm,&lindep);CHKERRQ(ierr); }
|
|
|
/* normalize v_k: r_{k,k} = ||v_k||_2; v_k = v_k/r_{k,k} */
|
/* normalize v_k: r_{k,k} = ||v_k||_2; v_k = v_k/r_{k,k} */
|
if (norm==0.0 || lindep) {
|
if (norm==0.0 || lindep) {
|
PetscInfo(ip,"Linearly dependent vector found, generating a new random vector\n");
|
ierr = PetscInfo(ip,"Linearly dependent vector found, generating a new random vector\n");CHKERRQ(ierr);
|
if (!rctx) {
|
if (!rctx) {
|
ierr = PetscRandomCreate(((PetscObject)ip)->comm,&rctx);CHKERRQ(ierr);
|
ierr = PetscRandomCreate(((PetscObject)ip)->comm,&rctx);CHKERRQ(ierr);
|
ierr = PetscRandomSetSeed(rctx,0x12345678);CHKERRQ(ierr);
|
ierr = PetscRandomSetSeed(rctx,0x12345678);CHKERRQ(ierr);
|
ierr = PetscRandomSetFromOptions(rctx);CHKERRQ(ierr);
|
ierr = PetscRandomSetFromOptions(rctx);CHKERRQ(ierr);
|
}
|
}
|