PetscVFPrintf#
All PETSc standard out and error messages are sent through this function; so, in theory, this can can be replaced with something that does not simply write to a file.
Synopsis#
PetscErrorCode PetscVFPrintfDefault(FILE *fd, const char *format, va_list Argp)
To use, write your own function for example,
PetscErrorCode mypetscvfprintf(FILE *fd, const char format[], va_list Argp)
{
PetscErrorCode ierr;
PetscFunctionBegin;
if (fd != stdout && fd != stderr) { handle regular files
CHKERR(PetscVFPrintfDefault(fd,format,Argp));
} else {
char buff[BIG];
size_t length;
PetscCall(PetscVSNPrintf(buff,BIG,format,&length,Argp));
now send buff to whatever stream or whatever you want
}
PetscFunctionReturn(PETSC_SUCCESS);
}
then before the call to PetscInitialize()
do the assignment PetscVFPrintf = mypetscvfprintf
;
Note#
For error messages this may be called by any MPI process, for regular standard out it is called only by MPI rank 0 of a given communicator
Developer Note#
This could be called by an error handler, if that happens then a recursion of the error handler may occur and a resulting crash
See Also#
Level#
developer
Location#
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages