| Line 152... |
Line 152... |
case EPS_NHEP: type = "non-" HERM " eigenvalue problem"; break;
|
case EPS_NHEP: type = "non-" HERM " eigenvalue problem"; break;
|
case EPS_GNHEP: type = "generalized non-" HERM " eigenvalue problem"; break;
|
case EPS_GNHEP: type = "generalized non-" HERM " eigenvalue problem"; break;
|
case EPS_PGNHEP: type = "generalized non-" HERM " eigenvalue problem with " HERM " positive definite B"; break;
|
case EPS_PGNHEP: type = "generalized non-" HERM " eigenvalue problem with " HERM " positive definite B"; break;
|
case EPS_GHIEP: type = "generalized " HERM "-indefinite eigenvalue problem"; break;
|
case EPS_GHIEP: type = "generalized " HERM "-indefinite eigenvalue problem"; break;
|
case 0: type = "not yet set"; break;
|
case 0: type = "not yet set"; break;
|
default: SETERRQ(1,"Wrong value of eps->problem_type");
|
default: SETERRQ(((PetscObject)eps)->comm,1,"Wrong value of eps->problem_type");
|
}
|
}
|
ierr = PetscViewerASCIIPrintf(viewer," problem type: %s\n",type);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," problem type: %s\n",type);CHKERRQ(ierr);
|
ierr = EPSGetType(eps,&type);CHKERRQ(ierr);
|
ierr = EPSGetType(eps,&type);CHKERRQ(ierr);
|
if (type) {
|
if (type) {
|
ierr = PetscViewerASCIIPrintf(viewer," method: %s\n",type);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," method: %s\n",type);CHKERRQ(ierr);
|
| Line 175... |
Line 175... |
case EPS_HARMONIC_RELATIVE:extr = "relative harmonic Ritz"; break;
|
case EPS_HARMONIC_RELATIVE:extr = "relative harmonic Ritz"; break;
|
case EPS_HARMONIC_RIGHT: extr = "right harmonic Ritz"; break;
|
case EPS_HARMONIC_RIGHT: extr = "right harmonic Ritz"; break;
|
case EPS_HARMONIC_LARGEST: extr = "largest harmonic Ritz"; break;
|
case EPS_HARMONIC_LARGEST: extr = "largest harmonic Ritz"; break;
|
case EPS_REFINED: extr = "refined Ritz"; break;
|
case EPS_REFINED: extr = "refined Ritz"; break;
|
case EPS_REFINED_HARMONIC: extr = "refined harmonic Ritz"; break;
|
case EPS_REFINED_HARMONIC: extr = "refined harmonic Ritz"; break;
|
default: SETERRQ(1,"Wrong value of eps->extraction");
|
default: SETERRQ(((PetscObject)eps)->comm,1,"Wrong value of eps->extraction");
|
}
|
}
|
ierr = PetscViewerASCIIPrintf(viewer," extraction type: %s\n",extr);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," extraction type: %s\n",extr);CHKERRQ(ierr);
|
}
|
}
|
if (eps->balance && !eps->ishermitian && eps->balance!=EPS_BALANCE_NONE) {
|
if (eps->balance && !eps->ishermitian && eps->balance!=EPS_BALANCE_NONE) {
|
switch (eps->balance) {
|
switch (eps->balance) {
|
case EPS_BALANCE_ONESIDE: bal = "one-sided Krylov"; break;
|
case EPS_BALANCE_ONESIDE: bal = "one-sided Krylov"; break;
|
case EPS_BALANCE_TWOSIDE: bal = "two-sided Krylov"; break;
|
case EPS_BALANCE_TWOSIDE: bal = "two-sided Krylov"; break;
|
case EPS_BALANCE_USER: bal = "user-defined matrix"; break;
|
case EPS_BALANCE_USER: bal = "user-defined matrix"; break;
|
default: SETERRQ(1,"Wrong value of eps->balance");
|
default: SETERRQ(((PetscObject)eps)->comm,1,"Wrong value of eps->balance");
|
}
|
}
|
ierr = PetscViewerASCIIPrintf(viewer," balancing enabled: %s",bal);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," balancing enabled: %s",bal);CHKERRQ(ierr);
|
if (eps->balance==EPS_BALANCE_ONESIDE || eps->balance==EPS_BALANCE_TWOSIDE) {
|
if (eps->balance==EPS_BALANCE_ONESIDE || eps->balance==EPS_BALANCE_TWOSIDE) {
|
ierr = PetscViewerASCIIPrintf(viewer,", with its=%d",eps->balance_its);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer,", with its=%d",eps->balance_its);CHKERRQ(ierr);
|
}
|
}
|
| Line 239... |
Line 239... |
ierr = PetscViewerASCIIPrintf(viewer,"largest imaginary parts\n");CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer,"largest imaginary parts\n");CHKERRQ(ierr);
|
break;
|
break;
|
case EPS_SMALLEST_IMAGINARY:
|
case EPS_SMALLEST_IMAGINARY:
|
ierr = PetscViewerASCIIPrintf(viewer,"smallest imaginary parts\n");CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer,"smallest imaginary parts\n");CHKERRQ(ierr);
|
break;
|
break;
|
default: SETERRQ(1,"Wrong value of eps->which");
|
default: SETERRQ(((PetscObject)eps)->comm,1,"Wrong value of eps->which");
|
}
|
}
|
if (eps->leftvecs) {
|
if (eps->leftvecs) {
|
ierr = PetscViewerASCIIPrintf(viewer," computing left eigenvectors also\n");CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," computing left eigenvectors also\n");CHKERRQ(ierr);
|
}
|
}
|
if (eps->trueres) {
|
if (eps->trueres) {
|
| Line 445... |
Line 445... |
eps->data = 0;
|
eps->data = 0;
|
}
|
}
|
|
|
ierr = PetscFListFind(EPSList,((PetscObject)eps)->comm,type,(void (**)(void)) &r);CHKERRQ(ierr);
|
ierr = PetscFListFind(EPSList,((PetscObject)eps)->comm,type,(void (**)(void)) &r);CHKERRQ(ierr);
|
|
|
if (!r) SETERRQ1(1,"Unknown EPS type given: %s",type);
|
if (!r) SETERRQ1(((PetscObject)eps)->comm,1,"Unknown EPS type given: %s",type);
|
|
|
eps->setupcalled = 0;
|
eps->setupcalled = 0;
|
ierr = PetscMemzero(eps->ops,sizeof(struct _EPSOps));CHKERRQ(ierr);
|
ierr = PetscMemzero(eps->ops,sizeof(struct _EPSOps));CHKERRQ(ierr);
|
ierr = (*r)(eps); CHKERRQ(ierr);
|
ierr = (*r)(eps); CHKERRQ(ierr);
|
|
|
| Line 822... |
Line 822... |
ierr = STGetOperators(eps->OP,PETSC_NULL,&B);CHKERRQ(ierr);
|
ierr = STGetOperators(eps->OP,PETSC_NULL,&B);CHKERRQ(ierr);
|
if( B ) *is = PETSC_TRUE;
|
if( B ) *is = PETSC_TRUE;
|
else *is = PETSC_FALSE;
|
else *is = PETSC_FALSE;
|
if( eps->setupcalled ) {
|
if( eps->setupcalled ) {
|
if( eps->isgeneralized != *is ) {
|
if( eps->isgeneralized != *is ) {
|
SETERRQ(0,"Warning: Inconsistent EPS state");
|
SETERRQ(((PetscObject)eps)->comm,0,"Warning: Inconsistent EPS state");
|
}
|
}
|
}
|
}
|
PetscFunctionReturn(0);
|
PetscFunctionReturn(0);
|
}
|
}
|
|
|