| Line 335... |
Line 335... |
.seealso:
|
.seealso:
|
@*/
|
@*/
|
PetscErrorCode SVDSetFromOptions(SVD svd)
|
PetscErrorCode SVDSetFromOptions(SVD svd)
|
{
|
{
|
PetscErrorCode ierr;
|
PetscErrorCode ierr;
|
char type[256];
|
char type[256],monfilename[PETSC_MAX_PATH_LEN];;
|
PetscTruth flg;
|
PetscTruth flg;
|
const char *mode_list[2] = { "explicit", "implicit" };
|
const char *mode_list[2] = { "explicit", "implicit" };
|
PetscInt i,j;
|
PetscInt i,j;
|
PetscReal r;
|
PetscReal r;
|
|
PetscViewer monviewer;
|
|
|
PetscFunctionBegin;
|
PetscFunctionBegin;
|
PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
|
PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
|
svd->setupcalled = 0;
|
svd->setupcalled = 0;
|
ierr = PetscOptionsBegin(svd->comm,svd->prefix,"Singular Value Solver (SVD) Options","SVD");CHKERRQ(ierr);
|
ierr = PetscOptionsBegin(svd->comm,svd->prefix,"Singular Value Solver (SVD) Options","SVD");CHKERRQ(ierr);
|
| Line 374... |
Line 375... |
|
|
ierr = PetscOptionsTruthGroupBegin("-svd_largest","compute largest singular values","SVDSetWhichSingularTriplets",&flg);CHKERRQ(ierr);
|
ierr = PetscOptionsTruthGroupBegin("-svd_largest","compute largest singular values","SVDSetWhichSingularTriplets",&flg);CHKERRQ(ierr);
|
if (flg) { ierr = SVDSetWhichSingularTriplets(svd,SVD_LARGEST);CHKERRQ(ierr); }
|
if (flg) { ierr = SVDSetWhichSingularTriplets(svd,SVD_LARGEST);CHKERRQ(ierr); }
|
ierr = PetscOptionsTruthGroupEnd("-svd_smallest","compute smallest singular values","SVDSetWhichSingularTriplets",&flg);CHKERRQ(ierr);
|
ierr = PetscOptionsTruthGroupEnd("-svd_smallest","compute smallest singular values","SVDSetWhichSingularTriplets",&flg);CHKERRQ(ierr);
|
if (flg) { ierr = SVDSetWhichSingularTriplets(svd,SVD_SMALLEST);CHKERRQ(ierr); }
|
if (flg) { ierr = SVDSetWhichSingularTriplets(svd,SVD_SMALLEST);CHKERRQ(ierr); }
|
|
|
|
ierr = PetscOptionsName("-svd_cancelmonitors","Remove any hardwired monitor routines","SVDClearMonitor",&flg);CHKERRQ(ierr);
|
|
if (flg) {
|
|
ierr = SVDClearMonitor(svd); CHKERRQ(ierr);
|
|
}
|
|
|
|
ierr = PetscOptionsString("-svd_monitor","Monitor approximate singular values and error estimates","SVDSetMonitor","stdout",monfilename,PETSC_MAX_PATH_LEN,&flg);CHKERRQ(ierr);
|
|
if (flg) {
|
|
ierr = PetscViewerASCIIOpen(svd->comm,monfilename,&monviewer);CHKERRQ(ierr);
|
|
ierr = SVDSetMonitor(svd,SVDDefaultMonitor,monviewer,(PetscErrorCode (*)(void*))PetscViewerDestroy);CHKERRQ(ierr);
|
|
}
|
|
ierr = PetscOptionsName("-svd_xmonitor","Monitor error estimates graphically","SVDSetMonitor",&flg);CHKERRQ(ierr);
|
|
if (flg) {
|
|
ierr = SVDSetMonitor(svd,SVDLGMonitor,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
|
|
}
|
|
|
ierr = PetscOptionsEnd();CHKERRQ(ierr);
|
ierr = PetscOptionsEnd();CHKERRQ(ierr);
|
if (svd->ops->setfromoptions) {
|
if (svd->ops->setfromoptions) {
|
ierr = (*svd->ops->setfromoptions)(svd);CHKERRQ(ierr);
|
ierr = (*svd->ops->setfromoptions)(svd);CHKERRQ(ierr);
|
}
|
}
|