xref: /petsc/src/sys/tests/options/ex55.c (revision c524e44ceafee4aa1f13666ee553c16f4e41b8f4)
1c522b486SVaclav Hapla 
2c522b486SVaclav Hapla static char help[] = "Tests options database monitoring and precedence.\n\n";
3c522b486SVaclav Hapla 
4c522b486SVaclav Hapla #include <petscsys.h>
5c522b486SVaclav Hapla #include <petscviewer.h>
6c522b486SVaclav Hapla 
7c522b486SVaclav Hapla PetscErrorCode PetscOptionsMonitorCustom(const char name[],const char value[],void *ctx)
8c522b486SVaclav Hapla {
9c522b486SVaclav Hapla   PetscErrorCode ierr;
10c522b486SVaclav Hapla   PetscViewer    viewer = (PetscViewer)ctx;
11c522b486SVaclav Hapla 
12c522b486SVaclav Hapla   PetscFunctionBegin;
13c522b486SVaclav Hapla   if (!value) {
14c522b486SVaclav Hapla     ierr = PetscViewerASCIIPrintf(viewer,"* Removing option: %s\n",name,value);CHKERRQ(ierr);
15c522b486SVaclav Hapla   } else if (!value[0]) {
16c522b486SVaclav Hapla     ierr = PetscViewerASCIIPrintf(viewer,"* Setting option: %s (no value)\n",name);CHKERRQ(ierr);
17c522b486SVaclav Hapla   } else {
18c522b486SVaclav Hapla     ierr = PetscViewerASCIIPrintf(viewer,"* Setting option: %s = %s\n",name,value);CHKERRQ(ierr);
19c522b486SVaclav Hapla   }
20c522b486SVaclav Hapla   PetscFunctionReturn(0);
21c522b486SVaclav Hapla }
22c522b486SVaclav Hapla 
23c522b486SVaclav Hapla int main(int argc,char **argv)
24c522b486SVaclav Hapla {
25c522b486SVaclav Hapla   PetscErrorCode    ierr;
26c522b486SVaclav Hapla   PetscViewer       viewer=NULL;
27c522b486SVaclav Hapla   PetscViewerFormat format;
28c522b486SVaclav Hapla 
29c522b486SVaclav Hapla   ierr = PetscInitialize(&argc,&argv,"ex55options",help);if (ierr) return ierr;
30c522b486SVaclav Hapla   ierr = PetscOptionsInsertString(NULL,"-option1 1 -option2 -option3 value3");CHKERRQ(ierr);
31c522b486SVaclav Hapla   ierr = PetscOptionsGetViewer(PETSC_COMM_WORLD,NULL,NULL,"-options_monitor_viewer",&viewer,&format,NULL);CHKERRQ(ierr);
32c522b486SVaclav Hapla   if (viewer) {
33c522b486SVaclav Hapla     ierr = PetscViewerPushFormat(viewer,format);CHKERRQ(ierr);
34c522b486SVaclav Hapla     ierr = PetscOptionsMonitorSet(PetscOptionsMonitorCustom,viewer,NULL);CHKERRQ(ierr);
35c522b486SVaclav Hapla     ierr = PetscViewerPopFormat(viewer);CHKERRQ(ierr);
36c522b486SVaclav Hapla     ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr);
37c522b486SVaclav Hapla   }
38c522b486SVaclav Hapla   ierr = PetscOptionsInsertString(NULL,"-option4 value4 -option5");CHKERRQ(ierr);
39c522b486SVaclav Hapla   ierr = PetscFinalize();
40c522b486SVaclav Hapla   return ierr;
41c522b486SVaclav Hapla }
42c522b486SVaclav Hapla 
43c522b486SVaclav Hapla /*TEST
44c522b486SVaclav Hapla 
45c522b486SVaclav Hapla    testset:
46c522b486SVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
4798fcc90bSVaclav Hapla       filter: egrep -v -e "(malloc|nox|display|saws_port|vecscatter|options_left|check_pointer_intensity|cuda_initialize|error_output_stdout|use_gpu_aware_mpi)"
48c522b486SVaclav Hapla       args: -options_left 0 -options_view -options_monitor_viewer ascii
49c522b486SVaclav Hapla       args: -skip_petscrc {{0 1}separate output} -options_monitor_cancel {{0 1}separate output}
50c522b486SVaclav Hapla       test:
51c522b486SVaclav Hapla         suffix: 1
52c522b486SVaclav Hapla       test:
53c522b486SVaclav Hapla         suffix: 2
54c522b486SVaclav Hapla         args: -options_monitor
55c522b486SVaclav Hapla       test:
56c522b486SVaclav Hapla         suffix: 3
57c522b486SVaclav Hapla         args: -options_monitor -option_cmd_1 option_cmd_1_val -option_cmd_2
58c522b486SVaclav Hapla    test:
59c522b486SVaclav Hapla       # test effect of -skip_petscrc in ex55options file
6098fcc90bSVaclav Hapla       suffix: 4
61c522b486SVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
6298fcc90bSVaclav Hapla       filter: egrep -v -e "(malloc|nox|display|saws_port|vecscatter|options_left|check_pointer_intensity|cuda_initialize|error_output_stdout|use_gpu_aware_mpi)"
63c522b486SVaclav Hapla       args: -options_left 0 -options_view -options_monitor
6498fcc90bSVaclav Hapla    testset:
65*c524e44cSVaclav Hapla       # test -help / -help intro / -version from command line
6698fcc90bSVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
6769a0b2a7SSatish Balay       filter: egrep -e "(version|help|^See)"
68*c524e44cSVaclav Hapla       args: -options_left -options_view -options_monitor
6998fcc90bSVaclav Hapla       test:
7098fcc90bSVaclav Hapla         suffix: 5a
7198fcc90bSVaclav Hapla         args: -help
7298fcc90bSVaclav Hapla       test:
7398fcc90bSVaclav Hapla         suffix: 5b
7498fcc90bSVaclav Hapla         args: -help intro
7598fcc90bSVaclav Hapla       test:
7698fcc90bSVaclav Hapla         suffix: 5c
7798fcc90bSVaclav Hapla         args: -version
78*c524e44cSVaclav Hapla    testset:
79*c524e44cSVaclav Hapla       # test -help / -help intro / -version from file
80*c524e44cSVaclav Hapla       localrunfiles: ex55options rc_help rc_help_intro rc_version
81*c524e44cSVaclav Hapla       filter: egrep -e "(version|help|^See)"
82*c524e44cSVaclav Hapla       args: -skip_petscrc
83*c524e44cSVaclav Hapla       args: -options_left -options_view -options_monitor
84*c524e44cSVaclav Hapla       test:
85*c524e44cSVaclav Hapla         suffix: 6a
86*c524e44cSVaclav Hapla         args: -options_file rc_help
87*c524e44cSVaclav Hapla       test:
88*c524e44cSVaclav Hapla         suffix: 6b
89*c524e44cSVaclav Hapla         args: -options_file rc_help_intro
90*c524e44cSVaclav Hapla       test:
91*c524e44cSVaclav Hapla         suffix: 6c
92*c524e44cSVaclav Hapla         args: -options_file rc_version
93c522b486SVaclav Hapla 
94c522b486SVaclav Hapla TEST*/
95