PetscErrorCode KSPView_Chebyshev(KSP ksp,PetscViewer viewer) { KSP_Chebyshev *cheb = (KSP_Chebyshev*)ksp->data; PetscErrorCode ierr; PetscBool iascii; PetscFunctionBegin; ierr = PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&iascii);CHKERRQ(ierr); if (iascii) { ierr = PetscViewerASCIIPrintf(viewer," Chebyshev: eigenvalue estimates: min = %g, max = %g\n",(double)cheb->emin,(double)cheb->emax);CHKERRQ(ierr); if (cheb->kspest) { ierr = PetscViewerASCIIPrintf(viewer," Chebyshev: estimated using: [%g %g; %g %g]\n",(double)cheb->tform[0],(double)cheb->tform[1],(double)cheb->tform[2],(double)cheb->tform[3]);CHKERRQ(ierr); if (cheb->random) { ierr = PetscViewerASCIIPrintf(viewer," Chebyshev: estimating eigenvalues using random right hand side\n");CHKERRQ(ierr); ierr = PetscViewerASCIIPushTab(viewer);CHKERRQ(ierr); ierr = PetscRandomView(cheb->random,viewer);CHKERRQ(ierr); ierr = PetscViewerASCIIPopTab(viewer);CHKERRQ(ierr); } ierr = PetscViewerASCIIPushTab(viewer);CHKERRQ(ierr); ierr = KSPView(cheb->kspest,viewer);CHKERRQ(ierr); ierr = PetscViewerASCIIPopTab(viewer);CHKERRQ(ierr); } } PetscFunctionReturn(0); }
/* PetscRandomViewFromOptions - This function visualizes the type and the seed of the generated random numbers based upon user options. Collective on PetscRandom Input Parameters: + rnd - The random number generator context . prefix - prefix to use for viewing, or NULL to use prefix of 'rnd' - optionname - option to activate viewing Level: intermediate .keywords: PetscRandom, view, options, database .seealso: PetscRandomSetFromOptions() */ PetscErrorCode PetscRandomViewFromOptions(PetscRandom rnd, const char prefix[], const char optionname[]) { PetscBool flg; PetscViewer viewer; PetscErrorCode ierr; PetscViewerFormat format; PetscFunctionBegin; if (prefix) { ierr = PetscOptionsGetViewer(PetscObjectComm((PetscObject)rnd),prefix,optionname,&viewer,&format,&flg);CHKERRQ(ierr); } else { ierr = PetscOptionsGetViewer(PetscObjectComm((PetscObject)rnd),((PetscObject)rnd)->prefix,optionname,&viewer,&format,&flg);CHKERRQ(ierr); } if (flg) { ierr = PetscViewerPushFormat(viewer,format);CHKERRQ(ierr); ierr = PetscRandomView(rnd,viewer);CHKERRQ(ierr); ierr = PetscViewerPopFormat(viewer);CHKERRQ(ierr); ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr); } PetscFunctionReturn(0); }