petsc-3.14.6 2021-03-30
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
ierr = PetscVFPrintfDefault(fd,format,Argp);CHKERR(ierr);
} else {
char buff[BIG];
size_t length;
ierr = PetscVSNPrintf(buff,BIG,format,&length,Argp);CHKERRQ(ierr);
now send buff to whatever stream or whatever you want
}
PetscFunctionReturn(0);
} then before the call to PetscInitialize() do the assignment
PetscVFPrintf = mypetscvfprintf;
Notes
For error messages this may be called by any process, for regular standard out it is
called only by process 0 of a given communicator
Developer Notes
this could be called by an error handler, if that happens then a recursion of the error handler may occur
and a crash
See Also
PetscVSNPrintf(), PetscErrorPrintf()
Level
developer
Location
src/sys/fileio/mprint.c
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages