> On Nov 16, 2014, at 6:53 AM, Matthew Knepley <[email protected]> wrote:
> 
> Our output needs some overhauling to operate nicely here:
> 
>   a) ALL monitors need to take the type:file:format:mode form argument. 
> -snes_monitor
>       does but -ksp_monitor does not

   I changed all the -xxx_view to use the ::: format  but NONE of the monitor 
options. So I don't see how you say -snes_monitor does but -ksp_monitor 
doesn't, neither does, they both just take an optional file name and always use 
ASCII viewer.

   I agree we should refactor the -xxx_monitor to be consistent and use the ::: 
notation but it is not as simple as the viewers because the monitors monitor a 
variety of different things (residual norm, preconditioning residual norm, 
range, solution etc etc) and we handle these in a variety of ad hoc ways. For 
example -snes_monitor_solution plots the solution with a VecView() 
SNESMonitorSolutionUpdate() plots the update to the solution with VecView() 
-snes_ratiomonitor (bad naming) monitors the ratio of the norms of the 
residuals -snes_monitor_lg_range plots something that is not clear to me (note 
for this one part of the name is lg which defines the viewer and there is a 
-snes_monitor_range that provides the same information as ASCII. etc etc

  How do you propose to unify them? We could do

1)    -xxx_monitor[_thingtomonitor] ::::  changes current API the least

  or 

2)    -xxx_monitor thingtomonitor::::   (then not consistent with -xxx_view so 
probably a bad idea) 

  or 

3)    -xxx_monitor :::[:thingtomonitor]  annoying to have to put the :::: to 
set the thing to monitor

   Is 1) powerful enough to do everything we want and be totally consistent?  

   Examples:    -snes_monitor   (monitors residual to various viewers)  
                                 for example -snes_monitor lg would plot 
residual norms in line graph and replace -snes_monitor_lg 
                                       -snes_monitor draw  would plot the 
residual (and replace -snes_monitor_lg_residual) 
                        -snes_monitor_solution draw   or binary or socket etc
                        -snes_monitor

    I don't think 1) can be done perfectly but would be a much more consistent 
approach then we currently use. 

    At this time baring other concerns I am fine with coming up with a plan to 
refactor towards 1)

> 
>   b) PetscObjectViewFromOptions() has a static variable to shuts it off after 
> any error
>       so long running processes are hosed. I would like to make any error in 
> that short
>       function jump to a label which sets incall = PETSC_FALSE and then calls 
> CHKERRQ

   I don't understand this.
> 
>   c) The converged_reason options need to take the ::: argument
> 
> Comments?
> 
>    Matt
> 
> -- 
> 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

Reply via email to