[petsc-dev] PETSc release soon, request for input on needed fixes or enhancements
Barry Smith
bsmith at mcs.anl.gov
Wed Mar 16 21:39:50 CDT 2016
> On Mar 16, 2016, at 9:35 PM, Matthew Knepley <knepley at gmail.com> wrote:
>
> On Wed, Mar 16, 2016 at 2:40 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
> Thanks. This is definitely a bug, but very different from my understanding of what was reported (which is why one should always tell someone how to reproduce a problem in a bug report). It is because the PushFormat is done regardless of whether it is a new viewer or just the same viewer being set again.
>
> Absolutely needs to be fixed. I don't like the idea of cluttering up the object landscape of PETSc even more by adding new objects such as "viewer plus format" as was suggested.
>
> I need to think about a way to fix this that results in less cluttered code, nor more cluttered code.
>
> To me it seems like this PushFormat is occurring in completely the wrong place. For example
>
> PetscErrorCode KSPMonitorSetFromOptions(KSP ksp,const char name[],const char help[], const char manual[],PetscErrorCode (*monitor)(KSP,PetscInt,PetscReal,void*))
> {
> ierr = PetscOptionsGetViewer(PetscObjectComm((PetscObject)ksp),((PetscObject)ksp)->prefix,name,&viewer,&format,&flg);CHKERRQ(ierr);
> if (flg) {
> ierr = PetscViewerPushFormat(viewer,format);CHKERRQ(ierr);
> ierr = KSPMonitorSet(ksp,monitor,viewer,(PetscErrorCode (*)(void**))PetscViewerDestroy);CHKERRQ(ierr);
> }
> }
>
> This clearly cannot be what we want because two monitors of different formats cannot coexist on the same Viewer,
> even if its a shared Viewer like PETSC_VIEWER_ASCII_WORLD. I think the format should be passed to MonitorSet,
> and put into the monitor struct (someone likes arrays more then structs):
>
> ksp->monitorformats[ksp->numbermonitors] = format;
>
> and then the monitor call should push and pop the format around the monitor routine.
Sure, it is just a question of writing the simplest clean code that does this.
>
> Matt
>
>
> Barry
>
>
>
> > On Mar 16, 2016, at 2:18 PM, Lawrence Mitchell <lawrence.mitchell at imperial.ac.uk> wrote:
> >
> >
> >
> > On 16/03/16 18:56, Barry Smith wrote:
> >>
> >> Please send me a command line option and example (one in the repository?) where this problem happens.
> >
> > I had slightly misread the code (MG setup doesn't call
> > KSPSetFromOptions more than once even when PCSetUP_MG is called
> > again), but here is an example:
> >
> > cd src/ts/examples/tutorials
> > make ex26
> > ./ex26 -da_refine 1 -ts_max_steps 10 -ts_rtol 1e-3 -ts_atol 1e-3
> > -ts_type beuler -pc_type asm -pc_asm_blocks 30 -sub_ksp_type
> > richardson -sub_ksp_monitor
> >
> > Cheers,
> >
> > Lawrence
> >
> >
>
>
>
>
> --
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener
More information about the petsc-dev
mailing list