Subversion Repositories slepc-dev

Rev

Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2654 Rev 2670
Line 174... Line 174...
.  its    - iteration number
.  its    - iteration number
.  nconv  - number of converged singular triplets so far
.  nconv  - number of converged singular triplets so far
.  sigma  - singular values
.  sigma  - singular values
.  errest - error estimates
.  errest - error estimates
.  nest   - number of error estimates to display
.  nest   - number of error estimates to display
-  dummy  - unused monitor context
-  monctx - monitor context (contains viewer, can be PETSC_NULL)
 
 
   Level: intermediate
   Level: intermediate
 
 
.seealso: SVDMonitorSet(), SVDMonitorFirst(), SVDMonitorConverged()
.seealso: SVDMonitorSet(), SVDMonitorFirst(), SVDMonitorConverged()
@*/
@*/
PetscErrorCode SVDMonitorAll(SVD svd,PetscInt its,PetscInt nconv,PetscReal *sigma,PetscReal *errest,PetscInt nest,void *dummy)
PetscErrorCode SVDMonitorAll(SVD svd,PetscInt its,PetscInt nconv,PetscReal *sigma,PetscReal *errest,PetscInt nest,void *monctx)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
  PetscInt       i;
  PetscInt       i;
  PetscViewer    viewer = dummy? (PetscViewer)dummy: PETSC_VIEWER_STDOUT_(((PetscObject)svd)->comm);
  PetscViewer    viewer = monctx? (PetscViewer)monctx: PETSC_VIEWER_STDOUT_(((PetscObject)svd)->comm);
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  if (its) {
  if (its) {
    ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)svd)->tablevel);CHKERRQ(ierr);
    ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)svd)->tablevel);CHKERRQ(ierr);
    ierr = PetscViewerASCIIPrintf(viewer,"%3D SVD nconv=%D Values (Errors)",its,nconv);CHKERRQ(ierr);
    ierr = PetscViewerASCIIPrintf(viewer,"%3D SVD nconv=%D Values (Errors)",its,nconv);CHKERRQ(ierr);
Line 214... Line 214...
.  its    - iteration number
.  its    - iteration number
.  nconv  - number of converged singular triplets so far
.  nconv  - number of converged singular triplets so far
.  sigma  - singular values
.  sigma  - singular values
.  errest - error estimates
.  errest - error estimates
.  nest   - number of error estimates to display
.  nest   - number of error estimates to display
-  dummy  - unused monitor context
-  monctx - monitor context (contains viewer, can be PETSC_NULL)
 
 
   Level: intermediate
   Level: intermediate
 
 
.seealso: SVDMonitorSet(), SVDMonitorAll(), SVDMonitorConverged()
.seealso: SVDMonitorSet(), SVDMonitorAll(), SVDMonitorConverged()
@*/
@*/
PetscErrorCode SVDMonitorFirst(SVD svd,PetscInt its,PetscInt nconv,PetscReal *sigma,PetscReal *errest,PetscInt nest,void *dummy)
PetscErrorCode SVDMonitorFirst(SVD svd,PetscInt its,PetscInt nconv,PetscReal *sigma,PetscReal *errest,PetscInt nest,void *monctx)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
  PetscViewer    viewer = dummy? (PetscViewer)dummy: PETSC_VIEWER_STDOUT_(((PetscObject)svd)->comm);
  PetscViewer    viewer = monctx? (PetscViewer)monctx: PETSC_VIEWER_STDOUT_(((PetscObject)svd)->comm);
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  if (its && nconv<nest) {
  if (its && nconv<nest) {
    ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)svd)->tablevel);CHKERRQ(ierr);
    ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)svd)->tablevel);CHKERRQ(ierr);
    ierr = PetscViewerASCIIPrintf(viewer,"%3D SVD nconv=%D first unconverged value (error)",its,nconv);CHKERRQ(ierr);
    ierr = PetscViewerASCIIPrintf(viewer,"%3D SVD nconv=%D first unconverged value (error)",its,nconv);CHKERRQ(ierr);
Line 249... Line 249...
.  its    - iteration number
.  its    - iteration number
.  nconv  - number of converged singular triplets so far
.  nconv  - number of converged singular triplets so far
.  sigma  - singular values
.  sigma  - singular values
.  errest - error estimates
.  errest - error estimates
.  nest   - number of error estimates to display
.  nest   - number of error estimates to display
-  dummy  - unused monitor context
-  monctx - monitor context
 
 
 
   Note:
 
   The monitor context must contain a struct with a PetscViewer and a
 
   PetscInt. In Fortran, pass a PETSC_NULL_OBJECT.
 
 
   Level: intermediate
   Level: intermediate
 
 
.seealso: SVDMonitorSet(), SVDMonitorFirst(), SVDMonitorAll()
.seealso: SVDMonitorSet(), SVDMonitorFirst(), SVDMonitorAll()
@*/
@*/
PetscErrorCode SVDMonitorConverged(SVD svd,PetscInt its,PetscInt nconv,PetscReal *sigma,PetscReal *errest,PetscInt nest,void *dummy)
PetscErrorCode SVDMonitorConverged(SVD svd,PetscInt its,PetscInt nconv,PetscReal *sigma,PetscReal *errest,PetscInt nest,void *monctx)
{
{
  PetscErrorCode   ierr;
  PetscErrorCode   ierr;
  PetscInt         i;
  PetscInt         i;
  SlepcConvMonitor ctx = (SlepcConvMonitor) dummy;
  PetscViewer      viewer;
 
  SlepcConvMonitor ctx = (SlepcConvMonitor) monctx;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
 
  if (!monctx) SETERRQ(((PetscObject)svd)->comm,PETSC_ERR_ARG_WRONG,"Must provide a context for SVDMonitorConverged");
  if (!its) {
  if (!its) {
    ctx->oldnconv = 0;
    ctx->oldnconv = 0;
  } else {
  } else {
 
    viewer = ctx->viewer? ctx->viewer: PETSC_VIEWER_STDOUT_(((PetscObject)svd)->comm);
    for (i=ctx->oldnconv;i<nconv;i++) {
    for (i=ctx->oldnconv;i<nconv;i++) {
      ierr = PetscViewerASCIIAddTab(ctx->viewer,((PetscObject)svd)->tablevel);CHKERRQ(ierr);
      ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)svd)->tablevel);CHKERRQ(ierr);
      ierr = PetscViewerASCIIPrintf(ctx->viewer,"%3D SVD converged value (error) #%D",its,i);CHKERRQ(ierr);
      ierr = PetscViewerASCIIPrintf(viewer,"%3D SVD converged value (error) #%D",its,i);CHKERRQ(ierr);
      ierr = PetscViewerASCIIPrintf(ctx->viewer," %G (%10.8e)\n",sigma[i],(double)errest[i]);CHKERRQ(ierr);
      ierr = PetscViewerASCIIPrintf(viewer," %G (%10.8e)\n",sigma[i],(double)errest[i]);CHKERRQ(ierr);
      ierr = PetscViewerASCIISubtractTab(ctx->viewer,((PetscObject)svd)->tablevel);CHKERRQ(ierr);
      ierr = PetscViewerASCIISubtractTab(viewer,((PetscObject)svd)->tablevel);CHKERRQ(ierr);
    }
    }
    ctx->oldnconv = nconv;
    ctx->oldnconv = nconv;
  }
  }
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}