xref: /petsc/src/sys/tests/options/ex55.c (revision c522b48645237435654f2bec172508754b235c27)
1*c522b486SVaclav Hapla 
2*c522b486SVaclav Hapla static char help[] = "Tests options database monitoring and precedence.\n\n";
3*c522b486SVaclav Hapla 
4*c522b486SVaclav Hapla #include <petscsys.h>
5*c522b486SVaclav Hapla #include <petscviewer.h>
6*c522b486SVaclav Hapla 
7*c522b486SVaclav Hapla PetscErrorCode PetscOptionsMonitorCustom(const char name[],const char value[],void *ctx)
8*c522b486SVaclav Hapla {
9*c522b486SVaclav Hapla   PetscErrorCode ierr;
10*c522b486SVaclav Hapla   PetscViewer    viewer = (PetscViewer)ctx;
11*c522b486SVaclav Hapla 
12*c522b486SVaclav Hapla   PetscFunctionBegin;
13*c522b486SVaclav Hapla   if (!value) {
14*c522b486SVaclav Hapla     ierr = PetscViewerASCIIPrintf(viewer,"* Removing option: %s\n",name,value);CHKERRQ(ierr);
15*c522b486SVaclav Hapla   } else if (!value[0]) {
16*c522b486SVaclav Hapla     ierr = PetscViewerASCIIPrintf(viewer,"* Setting option: %s (no value)\n",name);CHKERRQ(ierr);
17*c522b486SVaclav Hapla   } else {
18*c522b486SVaclav Hapla     ierr = PetscViewerASCIIPrintf(viewer,"* Setting option: %s = %s\n",name,value);CHKERRQ(ierr);
19*c522b486SVaclav Hapla   }
20*c522b486SVaclav Hapla   PetscFunctionReturn(0);
21*c522b486SVaclav Hapla }
22*c522b486SVaclav Hapla 
23*c522b486SVaclav Hapla int main(int argc,char **argv)
24*c522b486SVaclav Hapla {
25*c522b486SVaclav Hapla   PetscErrorCode    ierr;
26*c522b486SVaclav Hapla   PetscViewer       viewer=NULL;
27*c522b486SVaclav Hapla   PetscViewerFormat format;
28*c522b486SVaclav Hapla 
29*c522b486SVaclav Hapla   ierr = PetscInitialize(&argc,&argv,"ex55options",help);if (ierr) return ierr;
30*c522b486SVaclav Hapla   ierr = PetscOptionsInsertString(NULL,"-option1 1 -option2 -option3 value3");CHKERRQ(ierr);
31*c522b486SVaclav Hapla   ierr = PetscOptionsGetViewer(PETSC_COMM_WORLD,NULL,NULL,"-options_monitor_viewer",&viewer,&format,NULL);CHKERRQ(ierr);
32*c522b486SVaclav Hapla   if (viewer) {
33*c522b486SVaclav Hapla     ierr = PetscViewerPushFormat(viewer,format);CHKERRQ(ierr);
34*c522b486SVaclav Hapla     ierr = PetscOptionsMonitorSet(PetscOptionsMonitorCustom,viewer,NULL);CHKERRQ(ierr);
35*c522b486SVaclav Hapla     ierr = PetscViewerPopFormat(viewer);CHKERRQ(ierr);
36*c522b486SVaclav Hapla     ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr);
37*c522b486SVaclav Hapla   }
38*c522b486SVaclav Hapla   ierr = PetscOptionsInsertString(NULL,"-option4 value4 -option5");CHKERRQ(ierr);
39*c522b486SVaclav Hapla   ierr = PetscFinalize();
40*c522b486SVaclav Hapla   return ierr;
41*c522b486SVaclav Hapla }
42*c522b486SVaclav Hapla 
43*c522b486SVaclav Hapla /*TEST
44*c522b486SVaclav Hapla 
45*c522b486SVaclav Hapla    testset:
46*c522b486SVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
47*c522b486SVaclav Hapla       filter: egrep -v -e "^WARNING!" -e "(malloc|nox|display|saws_port|vecscatter|options_left|check_pointer_intensity|cuda_initialize|error_output_stdout|use_gpu_aware_mpi)"
48*c522b486SVaclav Hapla       args: -options_left 0 -options_view -options_monitor_viewer ascii
49*c522b486SVaclav Hapla       args: -skip_petscrc {{0 1}separate output} -options_monitor_cancel {{0 1}separate output}
50*c522b486SVaclav Hapla       test:
51*c522b486SVaclav Hapla         suffix: 1
52*c522b486SVaclav Hapla       test:
53*c522b486SVaclav Hapla         suffix: 2
54*c522b486SVaclav Hapla         args: -options_monitor
55*c522b486SVaclav Hapla       test:
56*c522b486SVaclav Hapla         suffix: 3
57*c522b486SVaclav Hapla         args: -options_monitor -option_cmd_1 option_cmd_1_val -option_cmd_2
58*c522b486SVaclav Hapla    test:
59*c522b486SVaclav Hapla       # test effect of -skip_petscrc in ex55options file
60*c522b486SVaclav Hapla       suffix: 2_skip_from_file
61*c522b486SVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
62*c522b486SVaclav Hapla       filter: egrep -v -e "^WARNING!" -e "(malloc|nox|display|saws_port|vecscatter|options_left|check_pointer_intensity|cuda_initialize|error_output_stdout|use_gpu_aware_mpi)"
63*c522b486SVaclav Hapla       args: -options_left 0 -options_view -options_monitor
64*c522b486SVaclav Hapla 
65*c522b486SVaclav Hapla TEST*/
66