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