| Line 205... |
Line 205... |
|
|
if (svd->ncv != svd->n) {
|
if (svd->ncv != svd->n) {
|
/* free memory for previous solution */
|
/* free memory for previous solution */
|
if (svd->n) {
|
if (svd->n) {
|
ierr = PetscFree(svd->sigma);CHKERRQ(ierr);
|
ierr = PetscFree(svd->sigma);CHKERRQ(ierr);
|
|
ierr = PetscFree(svd->errest);CHKERRQ(ierr);
|
for (i=0;i<svd->n;i++) {
|
for (i=0;i<svd->n;i++) {
|
ierr = VecDestroy(svd->U[i]); CHKERRQ(ierr);
|
ierr = VecDestroy(svd->U[i]); CHKERRQ(ierr);
|
}
|
}
|
ierr = PetscFree(svd->U);CHKERRQ(ierr);
|
ierr = PetscFree(svd->U);CHKERRQ(ierr);
|
for (i=0;i<svd->n;i++) {
|
for (i=0;i<svd->n;i++) {
|
| Line 216... |
Line 217... |
}
|
}
|
ierr = PetscFree(svd->V);CHKERRQ(ierr);
|
ierr = PetscFree(svd->V);CHKERRQ(ierr);
|
}
|
}
|
/* allocate memory for next solution */
|
/* allocate memory for next solution */
|
ierr = PetscMalloc(svd->ncv*sizeof(PetscReal),&svd->sigma);CHKERRQ(ierr);
|
ierr = PetscMalloc(svd->ncv*sizeof(PetscReal),&svd->sigma);CHKERRQ(ierr);
|
|
ierr = PetscMalloc(svd->ncv*sizeof(PetscReal),&svd->errest);CHKERRQ(ierr);
|
ierr = PetscMalloc(svd->ncv*sizeof(Vec),&svd->U);CHKERRQ(ierr);
|
ierr = PetscMalloc(svd->ncv*sizeof(Vec),&svd->U);CHKERRQ(ierr);
|
ierr = PetscMalloc(svd->ncv*sizeof(Vec),&svd->V);CHKERRQ(ierr);
|
ierr = PetscMalloc(svd->ncv*sizeof(Vec),&svd->V);CHKERRQ(ierr);
|
for (i=0;i<svd->ncv;i++) {
|
for (i=0;i<svd->ncv;i++) {
|
ierr = MatGetVecs(svd->A,svd->V+i,svd->U+i);CHKERRQ(ierr);
|
ierr = MatGetVecs(svd->A,svd->V+i,svd->U+i);CHKERRQ(ierr);
|
}
|
}
|