petsc-master 2021-02-25
Report Typos and Errors


Logs informative data


#include <petscsys.h>
PetscErrorCode PetscInfo(PetscObject obj, const char message[])
PetscErrorCode PetscInfo1(PetscObject obj, const char formatmessage[],arg1)
PetscErrorCode PetscInfo2(PetscObject obj, const char formatmessage[],arg1,arg2)
Collective on obj

Input Parameter

obj - object most closely associated with the logging statement or NULL
message - logging message
formatmessage - logging message using standard "printf" format
arg1, arg2, ... - arguments of the format


PetscInfo() prints only from the first processor in the communicator of obj. If obj is NULL, the PETSC_COMM_SELF communicator is used, i.e. every rank of PETSC_COMM_WORLD prints the message.

Extent of the printed messages can be controlled using the option database key -info as follows.

  -info [filename][:[~]<list,of,classnames>[:[~]self]]

No filename means standard output PETSC_STDOUT is used.

The optional <list,of,classnames> is a comma separated list of enabled classes, e.g. vec,mat,ksp. If this list is not specified, all classes are enabled. Prepending the list with ~ means inverted selection, i.e. all classes except the listed are enabled. A special classname sys relates to PetscInfo() with obj being NULL.

The optional self keyword specifies that PetscInfo() is enabled only for communicator size = 1 (e.g. PETSC_COMM_SELF), i.e. only PetscInfo() calls which print from every rank of PETSC_COMM_WORLD are enabled. By contrast, ~self means that PetscInfo() is enabled only for communicator size > 1 (e.g. PETSC_COMM_WORLD), i.e. those PetscInfo() calls which print from every rank of PETSC_COMM_WORLD are disabled.

All classname/self matching is case insensitive. Filename is case sensitive.

Example of Usage

    Mat A;
    PetscInt alpha;
    PetscInfo1(A,"Matrix uses parameter alpha=%D\n",alpha);

Options Examples

Each call of the form
    PetscInfo(obj, msg);
    PetscInfo1(obj, msg, arg1);
    PetscInfo2(obj, msg, arg1, arg2);
is evaluated as follows.
    -info or -info :: prints msg to PETSC_STDOUT, for any obj regardless class or communicator
    -info :mat:self prints msg to PETSC_STDOUT only if class of obj is Mat, and its communicator has size = 1
    -info myInfoFileName:~vec:~self prints msg to file named myInfoFileName, only if the obj's class is NULL or other than Vec, and obj's communicator has size > 1
    -info :sys prints to PETSC_STDOUT only if obj is NULL
Note that
    -info :sys:~self
deactivates all info messages because sys means obj = NULL which implies PETSC_COMM_SELF but ~self filters out everything on PETSC_COMM_SELF.

Fortran Note

This function does not take the obj argument, there is only the PetscInfo() version, not PetscInfo1() etc.

See Also

PetscInfoAllow(), PetscInfoSetFromOptions()







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