Subversion Repositories slepc-dev

Rev

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

Rev 2644 Rev 2671
Line 178... Line 178...
.  nconv  - number of converged eigenpairs so far
.  nconv  - number of converged eigenpairs so far
.  eigr   - real part of the eigenvalues
.  eigr   - real part of the eigenvalues
.  eigi   - imaginary part of the eigenvalues
.  eigi   - imaginary part of the eigenvalues
.  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: EPSMonitorSet(), EPSMonitorFirst(), EPSMonitorConverged()
.seealso: EPSMonitorSet(), EPSMonitorFirst(), EPSMonitorConverged()
@*/
@*/
PetscErrorCode EPSMonitorAll(EPS eps,PetscInt its,PetscInt nconv,PetscScalar *eigr,PetscScalar *eigi,PetscReal *errest,PetscInt nest,void *dummy)
PetscErrorCode EPSMonitorAll(EPS eps,PetscInt its,PetscInt nconv,PetscScalar *eigr,PetscScalar *eigi,PetscReal *errest,PetscInt nest,void *monctx)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
  PetscInt       i;
  PetscInt       i;
  PetscScalar    er,ei;
  PetscScalar    er,ei;
  PetscViewer    viewer = dummy? (PetscViewer)dummy: PETSC_VIEWER_STDOUT_(((PetscObject)eps)->comm);
  PetscViewer    viewer = monctx? (PetscViewer)monctx: PETSC_VIEWER_STDOUT_(((PetscObject)eps)->comm);
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  if (its) {
  if (its) {
    ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)eps)->tablevel);CHKERRQ(ierr);
    ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)eps)->tablevel);CHKERRQ(ierr);
    ierr = PetscViewerASCIIPrintf(viewer,"%3D EPS nconv=%D Values (Errors)",its,nconv);CHKERRQ(ierr);
    ierr = PetscViewerASCIIPrintf(viewer,"%3D EPS nconv=%D Values (Errors)",its,nconv);CHKERRQ(ierr);
Line 228... Line 228...
.  nconv  - number of converged eigenpairs so far
.  nconv  - number of converged eigenpairs so far
.  eigr   - real part of the eigenvalues
.  eigr   - real part of the eigenvalues
.  eigi   - imaginary part of the eigenvalues
.  eigi   - imaginary part of the eigenvalues
.  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: EPSMonitorSet(), EPSMonitorAll(), EPSMonitorConverged()
.seealso: EPSMonitorSet(), EPSMonitorAll(), EPSMonitorConverged()
@*/
@*/
PetscErrorCode EPSMonitorFirst(EPS eps,PetscInt its,PetscInt nconv,PetscScalar *eigr,PetscScalar *eigi,PetscReal *errest,PetscInt nest,void *dummy)
PetscErrorCode EPSMonitorFirst(EPS eps,PetscInt its,PetscInt nconv,PetscScalar *eigr,PetscScalar *eigi,PetscReal *errest,PetscInt nest,void *monctx)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
  PetscScalar    er,ei;
  PetscScalar    er,ei;
  PetscViewer    viewer = dummy? (PetscViewer)dummy: PETSC_VIEWER_STDOUT_(((PetscObject)eps)->comm);
  PetscViewer    viewer = monctx? (PetscViewer)monctx: PETSC_VIEWER_STDOUT_(((PetscObject)eps)->comm);
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  if (its && nconv<nest) {
  if (its && nconv<nest) {
    ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)eps)->tablevel);CHKERRQ(ierr);
    ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)eps)->tablevel);CHKERRQ(ierr);
    ierr = PetscViewerASCIIPrintf(viewer,"%3D EPS nconv=%D first unconverged value (error)",its,nconv);CHKERRQ(ierr);
    ierr = PetscViewerASCIIPrintf(viewer,"%3D EPS nconv=%D first unconverged value (error)",its,nconv);CHKERRQ(ierr);
Line 274... Line 274...
.  nconv  - number of converged eigenpairs so far
.  nconv  - number of converged eigenpairs so far
.  eigr   - real part of the eigenvalues
.  eigr   - real part of the eigenvalues
.  eigi   - imaginary part of the eigenvalues
.  eigi   - imaginary part of the eigenvalues
.  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: EPSMonitorSet(), EPSMonitorFirst(), EPSMonitorAll()
.seealso: EPSMonitorSet(), EPSMonitorFirst(), EPSMonitorAll()
@*/
@*/
PetscErrorCode EPSMonitorConverged(EPS eps,PetscInt its,PetscInt nconv,PetscScalar *eigr,PetscScalar *eigi,PetscReal *errest,PetscInt nest,void *dummy)
PetscErrorCode EPSMonitorConverged(EPS eps,PetscInt its,PetscInt nconv,PetscScalar *eigr,PetscScalar *eigi,PetscReal *errest,PetscInt nest,void *monctx)
{
{
  PetscErrorCode   ierr;
  PetscErrorCode   ierr;
  PetscInt         i;
  PetscInt         i;
  PetscScalar      er,ei;
  PetscScalar      er,ei;
  SlepcConvMonitor ctx = (SlepcConvMonitor)dummy;
  PetscViewer      viewer;
 
  SlepcConvMonitor ctx = (SlepcConvMonitor)monctx;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
 
  if (!monctx) SETERRQ(((PetscObject)eps)->comm,PETSC_ERR_ARG_WRONG,"Must provide a context for EPSMonitorConverged");
  if (!its) {
  if (!its) {
    ctx->oldnconv = 0;
    ctx->oldnconv = 0;
  } else {
  } else {
 
    viewer = ctx->viewer? ctx->viewer: PETSC_VIEWER_STDOUT_(((PetscObject)eps)->comm);
    for (i=ctx->oldnconv;i<nconv;i++) {
    for (i=ctx->oldnconv;i<nconv;i++) {
      ierr = PetscViewerASCIIAddTab(ctx->viewer,((PetscObject)eps)->tablevel);CHKERRQ(ierr);
      ierr = PetscViewerASCIIAddTab(viewer,((PetscObject)eps)->tablevel);CHKERRQ(ierr);
      ierr = PetscViewerASCIIPrintf(ctx->viewer,"%3D EPS converged value (error) #%D",its,i);CHKERRQ(ierr);
      ierr = PetscViewerASCIIPrintf(viewer,"%3D EPS converged value (error) #%D",its,i);CHKERRQ(ierr);
      er = eigr[i]; ei = eigi[i];
      er = eigr[i]; ei = eigi[i];
      ierr = STBackTransform(eps->OP,1,&er,&ei);CHKERRQ(ierr);
      ierr = STBackTransform(eps->OP,1,&er,&ei);CHKERRQ(ierr);
#if defined(PETSC_USE_COMPLEX)
#if defined(PETSC_USE_COMPLEX)
      ierr = PetscViewerASCIIPrintf(ctx->viewer," %G%+Gi",PetscRealPart(er),PetscImaginaryPart(er));CHKERRQ(ierr);
      ierr = PetscViewerASCIIPrintf(viewer," %G%+Gi",PetscRealPart(er),PetscImaginaryPart(er));CHKERRQ(ierr);
#else
#else
      ierr = PetscViewerASCIIPrintf(ctx->viewer," %G",er);CHKERRQ(ierr);
      ierr = PetscViewerASCIIPrintf(viewer," %G",er);CHKERRQ(ierr);
      if (ei!=0.0) { ierr = PetscViewerASCIIPrintf(ctx->viewer,"%+Gi",ei);CHKERRQ(ierr); }
      if (ei!=0.0) { ierr = PetscViewerASCIIPrintf(viewer,"%+Gi",ei);CHKERRQ(ierr); }
#endif
#endif
      ierr = PetscViewerASCIIPrintf(ctx->viewer," (%10.8e)\n",(double)errest[i]);CHKERRQ(ierr);
      ierr = PetscViewerASCIIPrintf(viewer," (%10.8e)\n",(double)errest[i]);CHKERRQ(ierr);
      ierr = PetscViewerASCIISubtractTab(ctx->viewer,((PetscObject)eps)->tablevel);CHKERRQ(ierr);
      ierr = PetscViewerASCIISubtractTab(viewer,((PetscObject)eps)->tablevel);CHKERRQ(ierr);
    }
    }
    ctx->oldnconv = nconv;
    ctx->oldnconv = nconv;
  }
  }
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}