Viewer VIEWER_STDOUT_(MPI_Comm comm)
Collective on MPI_Comm
Note: Unlike almost all other PETSc routines this does not returnan error code. Usually used in the form
XXXView(XXX object,VIEWER_STDOUT_(comm));
PetscFunctionBegin; if (Petsc_Viewer_Stdout_keyval == MPI_KEYVAL_INVALID) { ierr = MPI_Keyval_create(MPI_NULL_COPY_FN,MPI_NULL_DELETE_FN,&Petsc_Viewer_Stdout_keyval,0); if (ierr) {PetscError(__LINE__,"VIEWER_STDOUT_",__FILE__,__SDIR__,1,1,0); viewer = 0;} } ierr = MPI_Attr_get( comm, Petsc_Viewer_Stdout_keyval, (void **)&viewer, &flag ); if (ierr) {PetscError(__LINE__,"VIEWER_STDOUT_",__FILE__,__SDIR__,1,1,0); viewer = 0;} if (!flag) { /* viewer not yet created */ ierr = ViewerFileOpenASCII(comm,"stdout",&viewer); if (ierr) {PetscError(__LINE__,"VIEWER_STDOUT_",__FILE__,__SDIR__,1,1,0); viewer = 0;} ierr = MPI_Attr_put( comm, Petsc_Viewer_Stdout_keyval, (void *) viewer ); if (ierr) {PetscError(__LINE__,"VIEWER_STDOUT_",__FILE__,__SDIR__,1,1,0); viewer = 0;} } PetscFunctionReturn(viewer); }
/* If there is a Viewer associated with this communicator it is destroyed. */ int VIEWER_STDOUT_Destroy(MPI_Comm comm) { int ierr,flag; Viewer viewer;
PetscFunctionBegin; if (Petsc_Viewer_Stdout_keyval == MPI_KEYVAL_INVALID) { PetscFunctionReturn(0); } ierr = MPI_Attr_get( comm, Petsc_Viewer_Stdout_keyval, (void **)&viewer, &flag ); CHKERRQ(ierr); if (flag) { ierr = ViewerDestroy(viewer); CHKERRQ(ierr); ierr = MPI_Attr_delete(comm,Petsc_Viewer_Stdout_keyval); CHKERRQ(ierr); } PetscFunctionReturn(0); }
/* ---------------------------------------------------------------------*/ /* The variable Petsc_Viewer_Stderr_keyval is used to indicate an MPI attribute thatis attached to a communicator, in this case the attribute is a Viewer. */ static int Petsc_Viewer_Stderr_keyval = MPI_KEYVAL_INVALID;
#undef __FUNC__#define __FUNC__ "VIEWER_STDERR_" /*@ CVIEWER_STDERR_ - Creates a window viewer shared by all processorsin a communicator.
Collective on MPI_Comm
Note: Unlike almost all other PETSc routines this does not returnan error code. Usually used in the form
XXXView(XXX object,VIEWER_STDERR_(comm));
PetscFunctionBegin; if (Petsc_Viewer_Stderr_keyval == MPI_KEYVAL_INVALID) { ierr = MPI_Keyval_create(MPI_NULL_COPY_FN,MPI_NULL_DELETE_FN,&Petsc_Viewer_Stderr_keyval,0); if (ierr) {PetscError(__LINE__,"VIEWER_STDERR_",__FILE__,__SDIR__,1,1,0); viewer = 0;} } ierr = MPI_Attr_get( comm, Petsc_Viewer_Stderr_keyval, (void **)&viewer, &flag ); if (ierr) {PetscError(__LINE__,"VIEWER_STDERR_",__FILE__,__SDIR__,1,1,0); viewer = 0;} if (!flag) { /* viewer not yet created */ ierr = ViewerFileOpenASCII(comm,"stderr",&viewer); if (ierr) {PetscError(__LINE__,"VIEWER_STDERR_",__FILE__,__SDIR__,1,1,0); viewer = 0;} ierr = MPI_Attr_put( comm, Petsc_Viewer_Stderr_keyval, (void *) viewer ); if (ierr) {PetscError(__LINE__,"VIEWER_STDERR_",__FILE__,__SDIR__,1,1,0); viewer = 0;} } PetscFunctionReturn(viewer); }
/* If there is a Viewer associated with this communicator it is destroyed. */ int VIEWER_STDERR_Destroy(MPI_Comm comm) { int ierr,flag; Viewer viewer;
PetscFunctionBegin; if (Petsc_Viewer_Stderr_keyval == MPI_KEYVAL_INVALID) { PetscFunctionReturn(0); } ierr = MPI_Attr_get( comm, Petsc_Viewer_Stderr_keyval, (void **)&viewer, &flag );CHKERRQ(ierr); if (flag) { ierr = ViewerDestroy(viewer); CHKERRQ(ierr); ierr = MPI_Attr_delete(comm,Petsc_Viewer_Stderr_keyval);CHKERRQ(ierr); } PetscFunctionReturn(0); }
/* ----------------------------------------------------------------------*/ #undef __FUNC__#define __FUNC__ "ViewerDestroy_File" int ViewerDestroy_File(Viewer v) { int rank = 0;
PetscFunctionBegin; if (v->type == ASCII_FILES_VIEWER) {MPI_Comm_rank(v->comm,&rank);} if (!rank && v->fd != stderr && v->fd != stdout) fclose(v->fd); PLogObjectDestroy((PetscObject)v); PetscHeaderDestroy((PetscObject)v); PetscFunctionReturn(0); }
#undef __FUNC__#define __FUNC__ "ViewerFlush_File" int ViewerFlush_File(Viewer v) { int rank;
PetscFunctionBegin; MPI_Comm_rank(v->comm,&rank); if (rank) PetscFunctionReturn(0); fflush(v->fd); PetscFunctionReturn(0); }
#undef __FUNC__#define __FUNC__ "ViewerASCIIGetPointer" /*@ CViewerASCIIGetPointer - Extracts the file pointer from an ASCII viewer.
Not Collective
Location: src/viewer/impls/file/filev.c
Viewer Index
Table of Contents