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