| Line 83... |
Line 83... |
ierr = MatNorm(qep->M,NORM_INFINITY,&mnorm);CHKERRQ(ierr);
|
ierr = MatNorm(qep->M,NORM_INFINITY,&mnorm);CHKERRQ(ierr);
|
qep->sfactor = sqrt(knorm/mnorm);
|
qep->sfactor = sqrt(knorm/mnorm);
|
}
|
}
|
else qep->sfactor = 1.0;
|
else qep->sfactor = 1.0;
|
}
|
}
|
|
|
/* initialize the random number generator */
|
|
ierr = PetscRandomCreate(((PetscObject)qep)->comm,&qep->rand);CHKERRQ(ierr);
|
|
ierr = PetscRandomSetFromOptions(qep->rand);CHKERRQ(ierr);
|
|
|
|
/* Call specific solver setup */
|
/* Call specific solver setup */
|
ierr = (*qep->ops->setup)(qep);CHKERRQ(ierr);
|
ierr = (*qep->ops->setup)(qep);CHKERRQ(ierr);
|
|
|
if (qep->ncv > 2*qep->n)
|
if (qep->ncv > 2*qep->n)
|
| Line 204... |
Line 200... |
ierr = MatGetSize(K,&m,&n);CHKERRQ(ierr);
|
ierr = MatGetSize(K,&m,&n);CHKERRQ(ierr);
|
if (m!=n) { SETERRQ(((PetscObject)qep)->comm,1,"K is a non-square matrix"); }
|
if (m!=n) { SETERRQ(((PetscObject)qep)->comm,1,"K is a non-square matrix"); }
|
if (m!=m0) { SETERRQ(((PetscObject)qep)->comm,1,"Dimensions of M and K do not match"); }
|
if (m!=m0) { SETERRQ(((PetscObject)qep)->comm,1,"Dimensions of M and K do not match"); }
|
|
|
/* Store a copy of the matrices */
|
/* Store a copy of the matrices */
|
|
if (qep->setupcalled) { ierr = QEPReset(qep);CHKERRQ(ierr); }
|
ierr = PetscObjectReference((PetscObject)M);CHKERRQ(ierr);
|
ierr = PetscObjectReference((PetscObject)M);CHKERRQ(ierr);
|
ierr = MatDestroy(&qep->M);CHKERRQ(ierr);
|
ierr = MatDestroy(&qep->M);CHKERRQ(ierr);
|
qep->M = M;
|
qep->M = M;
|
ierr = PetscObjectReference((PetscObject)C);CHKERRQ(ierr);
|
ierr = PetscObjectReference((PetscObject)C);CHKERRQ(ierr);
|
ierr = MatDestroy(&qep->C);CHKERRQ(ierr);
|
ierr = MatDestroy(&qep->C);CHKERRQ(ierr);
|
qep->C = C;
|
qep->C = C;
|
ierr = PetscObjectReference((PetscObject)K);CHKERRQ(ierr);
|
ierr = PetscObjectReference((PetscObject)K);CHKERRQ(ierr);
|
ierr = MatDestroy(&qep->K);CHKERRQ(ierr);
|
ierr = MatDestroy(&qep->K);CHKERRQ(ierr);
|
qep->K = K;
|
qep->K = K;
|
|
|
qep->setupcalled = 0;
|
|
PetscFunctionReturn(0);
|
PetscFunctionReturn(0);
|
}
|
}
|
|
|
#undef __FUNCT__
|
#undef __FUNCT__
|
#define __FUNCT__ "QEPGetOperators"
|
#define __FUNCT__ "QEPGetOperators"
|