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 6758f5028SMatthew G. Knepley PetscErrorCode PetscOptionsMonitorCustom(const char name[], const char value[], PetscOptionSource source, void *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 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")); 299566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetViewer(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)); 34cd791dc2SBarry Smith PetscCall(PetscOptionsRestoreViewer(&viewer)); 35c522b486SVaclav Hapla } 369566063dSJacob Faibussowitsch PetscCall(PetscOptionsInsertString(NULL, "-option4 value4 -option5")); 37*aa0398b8SRené 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