1 static char help[] = "Tests calling PetscOptionsSetValue() before PetscInitialize()\n\n";
2
3 #include <petscsys.h>
main(int argc,char ** argv)4 int main(int argc, char **argv)
5 {
6 PetscMPIInt rank, size;
7
8 /*
9 Every PETSc routine should begin with the PetscInitialize() routine.
10 argc, argv - These command line arguments are taken to extract the options
11 supplied to PETSc and options supplied to MPI.
12 help - When PETSc executable is invoked with the option -help,
13 it prints the various options that can be applied at
14 runtime. The user can use the "help" variable place
15 additional help messages in this printout.
16
17 Since when PetscInitialize() returns with an error the PETSc data structures
18 may not be set up hence we cannot call PetscCall() hence directly return the error code.
19
20 Since PetscOptionsSetValue() is called before the PetscInitialize() we cannot call
21 PetscCall() on the error code and just return it directly.
22 */
23 PetscCall(PetscOptionsSetValue(NULL, "-no_signal_handler", "true"));
24 PetscFunctionBeginUser;
25 PetscCall(PetscInitialize(&argc, &argv, NULL, help));
26 PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD, &size));
27 PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD, &rank));
28 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "Number of processors = %d, rank = %d\n", size, rank));
29 PetscCall(PetscFinalize());
30 return 0;
31 }
32
33 /*TEST
34
35 test:
36 requires: defined(PETSC_USE_LOG)
37 nsize: 2
38 args: -options_view -get_total_flops
39 filter: grep -E -v "(cuda_initialize|Total flops)"
40
41 TEST*/
42