| Line 83... |
Line 83... |
if (!eps->ishermitian) SETERRQ(((PetscObject)eps)->comm,PETSC_ERR_SUP,"Requested method is only available for Hermitian problems");
|
if (!eps->ishermitian) SETERRQ(((PetscObject)eps)->comm,PETSC_ERR_SUP,"Requested method is only available for Hermitian problems");
|
if (eps->which==EPS_ALL) {
|
if (eps->which==EPS_ALL) {
|
if (eps->inta==0.0 && eps->intb==0.0) SETERRQ(((PetscObject)eps)->comm,1,"Must define a computational interval when using EPS_ALL");
|
if (eps->inta==0.0 && eps->intb==0.0) SETERRQ(((PetscObject)eps)->comm,1,"Must define a computational interval when using EPS_ALL");
|
blz->slice = 1;
|
blz->slice = 1;
|
}
|
}
|
ierr = PetscTypeCompare((PetscObject)eps->OP,STSINVERT,&issinv);CHKERRQ(ierr);
|
ierr = PetscObjectTypeCompare((PetscObject)eps->OP,STSINVERT,&issinv);CHKERRQ(ierr);
|
if (blz->slice || eps->isgeneralized) {
|
if (blz->slice || eps->isgeneralized) {
|
if (!issinv) SETERRQ(((PetscObject)eps)->comm,PETSC_ERR_SUP,"Shift-and-invert ST is needed for generalized problems or spectrum slicing");
|
if (!issinv) SETERRQ(((PetscObject)eps)->comm,PETSC_ERR_SUP,"Shift-and-invert ST is needed for generalized problems or spectrum slicing");
|
}
|
}
|
if (blz->slice) {
|
if (blz->slice) {
|
if (eps->intb >= PETSC_MAX_REAL) { /* right-open interval */
|
if (eps->intb >= PETSC_MAX_REAL) { /* right-open interval */
|
| Line 318... |
Line 318... |
PetscErrorCode ierr;
|
PetscErrorCode ierr;
|
EPS_BLZPACK *blz = (EPS_BLZPACK*)eps->data;
|
EPS_BLZPACK *blz = (EPS_BLZPACK*)eps->data;
|
PetscBool isascii;
|
PetscBool isascii;
|
|
|
PetscFunctionBegin;
|
PetscFunctionBegin;
|
ierr = PetscTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii);CHKERRQ(ierr);
|
ierr = PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii);CHKERRQ(ierr);
|
if (!isascii) SETERRQ1(((PetscObject)eps)->comm,1,"Viewer type %s not supported for EPSBLZPACK",((PetscObject)viewer)->type_name);
|
if (!isascii) SETERRQ1(((PetscObject)eps)->comm,1,"Viewer type %s not supported for EPSBLZPACK",((PetscObject)viewer)->type_name);
|
ierr = PetscViewerASCIIPrintf(viewer," BLZPACK: block size=%d\n",blz->block_size);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," BLZPACK: block size=%d\n",blz->block_size);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," BLZPACK: maximum number of steps per run=%d\n",blz->nsteps);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," BLZPACK: maximum number of steps per run=%d\n",blz->nsteps);CHKERRQ(ierr);
|
if (blz->slice) {
|
if (blz->slice) {
|
ierr = PetscViewerASCIIPrintf(viewer," BLZPACK: computational interval [%f,%f]\n",eps->inta,eps->intb);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," BLZPACK: computational interval [%f,%f]\n",eps->inta,eps->intb);CHKERRQ(ierr);
|