Subversion Repositories slepc-dev

Rev

Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1283 Rev 1288
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);
  }
  }