petsc-3.12.5 2020-03-29
Report Typos and Errors

PetscError

Routine that is called when an error has been detected, usually called through the macro SETERRQ(PETSC_COMM_SELF,).

Synopsis

#include "petscsys.h" 
PetscErrorCode PetscError(MPI_Comm comm,int line,const char *func,const char *file,PetscErrorCode n,PetscErrorType p,const char *mess,...)
Not Collective

Input Parameters

comm - communicator over which error occurred. ALL ranks of this communicator MUST call this routine
line - the line number of the error (indicated by __LINE__)
func - the function name in which the error was detected
file - the file in which the error was detected (indicated by __FILE__)
n - the generic error number
p - PETSC_ERROR_INITIAL indicates the error was initially detected, PETSC_ERROR_REPEAT indicates this is a traceback from a previously detected error
mess - formatted message string - aka printf

Notes

Most users need not directly use this routine and the error handlers, but can instead use the simplified interface SETERRQ, which has the calling sequence
    SETERRQ(comm,n,mess)

Fortran Note

This routine is used differently from Fortran
   PetscError(MPI_Comm comm,PetscErrorCode n,PetscErrorType p,char *message)

Experienced users can set the error handler with PetscPushErrorHandler().

Developer Note: Since this is called after an error condition it should not be calling any error handlers (currently it ignores any error codes) BUT this routine does call regular PETSc functions that may call error handlers, this is problematic and could be fixed by never calling other PETSc routines but this annoying.

See Also

PetscTraceBackErrorHandler(), PetscPushErrorHandler(), SETERRQ(), CHKERRQ(), CHKMEMQ, SETERRQ1(), SETERRQ2(), PetscErrorMessage()

Level

intermediate

Location

src/sys/error/err.c

Examples

src/vec/vec/examples/tutorials/ex21.c.html

Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages