xref: /petsc/src/sys/tests/options/ex55.c (revision 4e8208cbcbc709572b8abe32f33c78b69c819375)
1c522b486SVaclav Hapla static char help[] = "Tests options database monitoring and precedence.\n\n";
2c522b486SVaclav Hapla 
3c522b486SVaclav Hapla #include <petscsys.h>
4c522b486SVaclav Hapla #include <petscviewer.h>
5c522b486SVaclav Hapla 
PetscOptionsMonitorCustom(const char name[],const char value[],PetscOptionSource source,PetscCtx ctx)6*2a8381b2SBarry Smith PetscErrorCode PetscOptionsMonitorCustom(const char name[], const char value[], PetscOptionSource source, PetscCtx ctx)
7d71ae5a4SJacob Faibussowitsch {
8c522b486SVaclav Hapla   PetscViewer viewer = (PetscViewer)ctx;
9c522b486SVaclav Hapla 
10c522b486SVaclav Hapla   PetscFunctionBegin;
11c522b486SVaclav Hapla   if (!value) {
129566063dSJacob Faibussowitsch     PetscCall(PetscViewerASCIIPrintf(viewer, "* Removing option: %s\n", name));
13c522b486SVaclav Hapla   } else if (!value[0]) {
149566063dSJacob Faibussowitsch     PetscCall(PetscViewerASCIIPrintf(viewer, "* Setting option: %s (no value)\n", name));
15c522b486SVaclav Hapla   } else {
169566063dSJacob Faibussowitsch     PetscCall(PetscViewerASCIIPrintf(viewer, "* Setting option: %s = %s\n", name, value));
17c522b486SVaclav Hapla   }
183ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
19c522b486SVaclav Hapla }
20c522b486SVaclav Hapla 
main(int argc,char ** argv)21d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv)
22d71ae5a4SJacob Faibussowitsch {
23c522b486SVaclav Hapla   PetscViewer       viewer = NULL;
24c522b486SVaclav Hapla   PetscViewerFormat format;
25c522b486SVaclav Hapla 
26327415f7SBarry Smith   PetscFunctionBeginUser;
279566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, "ex55options", help));
289566063dSJacob Faibussowitsch   PetscCall(PetscOptionsInsertString(NULL, "-option1 1 -option2 -option3 value3"));
29648c30bcSBarry Smith   PetscCall(PetscOptionsCreateViewer(PETSC_COMM_WORLD, NULL, NULL, "-options_monitor_viewer", &viewer, &format, NULL));
30c522b486SVaclav Hapla   if (viewer) {
319566063dSJacob Faibussowitsch     PetscCall(PetscViewerPushFormat(viewer, format));
329566063dSJacob Faibussowitsch     PetscCall(PetscOptionsMonitorSet(PetscOptionsMonitorCustom, viewer, NULL));
339566063dSJacob Faibussowitsch     PetscCall(PetscViewerPopFormat(viewer));
34648c30bcSBarry Smith     PetscCall(PetscViewerDestroy(&viewer));
35c522b486SVaclav Hapla   }
369566063dSJacob Faibussowitsch   PetscCall(PetscOptionsInsertString(NULL, "-option4 value4 -option5"));
37aa0398b8SRené Chenard   PetscCall(PetscOptionsClearValue(NULL, "-option5"));
389566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
39b122ec5aSJacob Faibussowitsch   return 0;
40c522b486SVaclav Hapla }
41c522b486SVaclav Hapla 
42c522b486SVaclav Hapla /*TEST
43c522b486SVaclav Hapla 
44c522b486SVaclav Hapla    testset:
45c522b486SVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
46c522b486SVaclav Hapla       args: -options_left 0 -options_view -options_monitor_viewer ascii
47c522b486SVaclav Hapla       args: -skip_petscrc {{0 1}separate output} -options_monitor_cancel {{0 1}separate output}
48c522b486SVaclav Hapla       test:
49c522b486SVaclav Hapla         suffix: 1
50c522b486SVaclav Hapla       test:
51c522b486SVaclav Hapla         suffix: 2
52c522b486SVaclav Hapla         args: -options_monitor
53c522b486SVaclav Hapla       test:
54c522b486SVaclav Hapla         suffix: 3
55c522b486SVaclav Hapla         args: -options_monitor -option_cmd_1 option_cmd_1_val -option_cmd_2
56c522b486SVaclav Hapla    test:
57c522b486SVaclav Hapla       # test effect of -skip_petscrc in ex55options file
5898fcc90bSVaclav Hapla       suffix: 4
59c522b486SVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
60c522b486SVaclav Hapla       args: -options_left 0 -options_view -options_monitor
6198fcc90bSVaclav Hapla    testset:
62c524e44cSVaclav Hapla       # test -help / -help intro / -version from command line
6398fcc90bSVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
64f53b81b6SPierre Jolivet       filter: grep -E -e "(version|help|^See)"
65c524e44cSVaclav Hapla       args: -options_left -options_view -options_monitor
6698fcc90bSVaclav Hapla       test:
6798fcc90bSVaclav Hapla         suffix: 5a
6898fcc90bSVaclav Hapla         args: -help
6998fcc90bSVaclav Hapla       test:
7098fcc90bSVaclav Hapla         suffix: 5b
7198fcc90bSVaclav Hapla         args: -help intro
7298fcc90bSVaclav Hapla       test:
7398fcc90bSVaclav Hapla         suffix: 5c
7498fcc90bSVaclav Hapla         args: -version
75c524e44cSVaclav Hapla    testset:
76c524e44cSVaclav Hapla       # test -help / -help intro / -version from file
77c524e44cSVaclav Hapla       localrunfiles: ex55options rc_help rc_help_intro rc_version
78f53b81b6SPierre Jolivet       filter: grep -E -e "(version|help|^See)"
79c524e44cSVaclav Hapla       args: -skip_petscrc
80c524e44cSVaclav Hapla       args: -options_left -options_view -options_monitor
81c524e44cSVaclav Hapla       test:
82c524e44cSVaclav Hapla         suffix: 6a
83c524e44cSVaclav Hapla         args: -options_file rc_help
84c524e44cSVaclav Hapla       test:
85c524e44cSVaclav Hapla         suffix: 6b
86c524e44cSVaclav Hapla         args: -options_file rc_help_intro
87c524e44cSVaclav Hapla       test:
88c524e44cSVaclav Hapla         suffix: 6c
89c524e44cSVaclav Hapla         args: -options_file rc_version
90c522b486SVaclav Hapla 
91758f5028SMatthew G. Knepley    test:
92758f5028SMatthew G. Knepley      localrunfiles: ex55options .petscrc petscrc
93758f5028SMatthew G. Knepley      suffix: 7
94758f5028SMatthew G. Knepley      args: -options_monitor -options_left 0
95758f5028SMatthew G. Knepley 
96c522b486SVaclav Hapla TEST*/
97