| 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);
|
}
|
}
|