petsc-3.14.6 2021-03-30
PetscViewerGetSubViewer
Creates a new PetscViewer (same type as the old) that lives on a subcommunicator
Synopsis
#include "petscviewer.h"
PetscErrorCode PetscViewerGetSubViewer(PetscViewer viewer,MPI_Comm comm,PetscViewer *outviewer)
Collective on PetscViewer
Input Parameter
Output Parameter
Notes
The output of the subviewers is synchronized against the original viewer. For example, if a
viewer on two MPI ranks is decomposed into two subviewers, the output from the first viewer is
all printed before the output from the second viewer. You must call PetscViewerFlush() after
the call to PetscViewerRestoreSubViewer().
Call PetscViewerRestoreSubViewer() to destroy this PetscViewer, NOT PetscViewerDestroy()
This is most commonly used to view a sequential object that is part of a
parallel object. For example block Jacobi PC view could use this to obtain a
PetscViewer that is used with the sequential KSP on one block of the preconditioner.
Between the calls to PetscViewerGetSubViewer() and PetscViewerRestoreSubViewer() the original
viewer should not be used
PETSCVIEWERDRAW and PETSCVIEWERBINARY only support returning a singleton viewer on rank 0,
all other ranks will return a NULL viewer
Developer Notes
There is currently incomplete error checking that the user does not use the original viewer between the
the calls to PetscViewerGetSubViewer() and PetscViewerRestoreSubViewer(). If the user does there
could be errors in the viewing that go undetected or crash the code.
It would be nice if the call to PetscViewerFlush() was not required and was handled by
PetscViewerRestoreSubViewer()
See Also
PetscViewerSocketOpen(), PetscViewerASCIIOpen(), PetscViewerDrawOpen(), PetscViewerRestoreSubViewer()
Level
advanced
Location
src/sys/classes/viewer/interface/dupl.c
Examples
src/vec/vec/tutorials/ex9f.F90.html
src/vec/vec/tutorials/ex14f.F90.html
src/dm/tutorials/ex6.c.html
Implementations
PetscViewerGetSubViewer_ASCII in src/sys/classes/viewer/impls/ascii/filev.c
PetscViewerGetSubViewer_Binary in src/sys/classes/viewer/impls/binary/binv.c
PetscViewerGetSubViewer_Draw in src/sys/classes/viewer/impls/draw/drawv.c
PetscViewerGetSubViewer_String in src/sys/classes/viewer/impls/string/stringv.c
Index of all Viewer routines
Table of Contents for all manual pages
Index of all manual pages