Initializes the PETSc database and MPI. PetscInitialize() calls MPI_Init() if that has yet to be called, so this routine should always be called near the beginning of your program -- usually the very first line!


#include "petsc.h"   
PetscErrorCode  PetscInitialize(int *argc,char ***args,const char file[],const char help[])
Collective on MPI_COMM_WORLD or PETSC_COMM_WORLD if it has been set

Input Parameters

argc - count of number of command line arguments
args - the command line arguments
file - [optional] PETSc database file, also checks ~username/.petscrc and .petscrc use PETSC_NULL to not check for code specific file. Use -skip_petscrc in the code specific file to skip the .petscrc files
help - [optional] Help message to print, use PETSC_NULL for no message

If you wish PETSc to run on a subcommunicator of MPI_COMM_WORLD, create that communicator first and assign it to PETSC_COMM_WORLD BEFORE calling PetscInitialize()

Options Database Keys

-start_in_debugger [noxterm,dbx,xdb,gdb,...] - Starts program in debugger
-on_error_attach_debugger [noxterm,dbx,xdb,gdb,...] - Starts debugger when error detected
-on_error_emacs <machinename> causes emacsclient to jump to error file- . -debugger_nodes [node1,node2,...] - Indicates nodes to start in debugger
-debugger_pause [sleeptime] (in seconds) - Pauses debugger
-stop_for_debugger - Print message on how to attach debugger manually to process and wait (-debugger_pause) seconds for attachment
-malloc - Indicates use of PETSc error-checking malloc (on by default for debug version of libraries)
-malloc no - Indicates not to use error-checking malloc
-malloc_debug - check for memory corruption at EVERY malloc or free
-fp_trap - Stops on floating point exceptions (Note that on the IBM RS6000 this slows code by at least a factor of 10.)
-no_signal_handler - Indicates not to trap error signals
-shared_tmp - indicates /tmp directory is shared by all processors
-not_shared_tmp - each processor has own /tmp
-tmp - alternative name of /tmp directory
-get_total_flops - returns total flops done by all processors
-memory_info - Print memory usage at end of run

Options Database Keys for Profiling

See the Profiling chapter of the users manual for details.
-log_trace [filename] - Print traces of all PETSc calls to the screen (useful to determine where a program hangs without running in the debugger). See PetscLogTraceBegin().
-info <optional filename> - Prints verbose information to the screen
-info_exclude <null,vec,mat,pc,ksp,snes,ts> - Excludes some of the verbose messages

Environmental Variables

PETSC_TMP - alternative tmp directory
PETSC_SHARED_TMP - tmp is shared by all processes
PETSC_NOT_SHARED_TMP - each process has its own private tmp
PETSC_VIEWER_SOCKET_PORT - socket number to use for socket viewer
PETSC_VIEWER_SOCKET_MACHINE - machine to use for socket viewer to connect to

C++ variants

  PetscInitialize(int *argc,char ***args)->PetscInitialize(argc,args,PETSC_NULL,PETSC_NULL)


If for some reason you must call MPI_Init() separately, call it before PetscInitialize().

Fortran Version

In Fortran this routine has the format
      call PetscInitialize(file,ierr)

ierr - error return code
file - [optional] PETSc database file, also checks ~username/.petscrc and .petscrc use PETSC_CHARACTER_NULL to not check for code specific file. Use -skip_petscrc in the code specific file to skip the .petscrc files

Important Fortran Note

In Fortran, you MUST use PETSC_NULL_CHARACTER to indicate a null character string; you CANNOT just use PETSC_NULL as in the C version. See the users manual for details.

See Also

PetscFinalize(), PetscInitializeFortran(), PetscGetArgs()

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