#define BSMAINLOG #include "BSprivate.h" int BSinit_called = 0; int BSbegan_MPI = 0; /*@ BSinit - Initializes BlockSolve and MPI. BSinit() calls MPI_Init() if it has not already been called. Input Parameters: . argc - count of number of command line arguments . args - the command line arguments Notes: If you want to call MPI_Init() separately, call it before BSinit(). .keywords: initialize, startup .seealso: BSfinalize() @*/ int BSinit(int *argc,char ***args) { int ierr, flag; /* check to see if BSinit has already been called */ if (BSinit_called) return 0; /* Init MPI if not already done */ MPI_Initialized(&flag); if (!flag) { ierr = MPI_Init(argc,args); CHKERRN(ierr); BSbegan_MPI = 1; } /* Start up logging if MLOG is defined */ MLOG_INIT(); BSinit_called = 1; return(0); } /*@ BSfinalize - Finalizes BlockSolve and MPI. Prints the log stuff if MLOG was defined. .keywords: finalize .seealso: BSinit() @*/ int BSfinalize() { /* do memory check if HAVE_PETSC defined */ CHECK_MEMORY(); /* finalize MPI */ if(BSbegan_MPI) { MPI_Finalize(); } return(0); } /*@ BSprint_log - Print log stuff if MLOG is defined. Input Parameters: . procinfo - The usual procinfo Note: BSprint_log() will not print out anything unless BSctx_set_print_log has been set to TRUE. .seealso: BSctx_set_print_log() @*/ int BSprint_log(BSprocinfo *procinfo) { /* print out the log info and return */ if(procinfo->print_log) { MLOG_PRINT(procinfo); } return(0); }