It is not a temporary solution, it is a solution that does not also encompass 
the desired ability to remove a selected viewer; this functionality doesn't 
exist today anyways :-) so my change is in the correct direction :-).

On Jan 22, 2023, at 8:25 PM, Jacob Faibussowitsch <jacob....@gmail.com> wrote:
> 
>> But I'd like a short term solution for the current design bug, so I'll 
>> eventually try a minimal change to the code.
> 
> There is nothing is more permanent than a temporary solution.
> 
> Best regards,
> 
> Jacob Faibussowitsch
> (Jacob Fai - booss - oh - vitch)
> 
>> On Jan 22, 2023, at 20:12, Barry Smith <bsm...@petsc.dev> wrote:
>> 
>> 
>> One can turn on a multitude of viewers with ad hoc names at the same time 
>> like -ksp_view_solution.
>> 
>> My eventual hope is to consolidate them with an additional part of the 
>> argument, for 
>> example -ksp_view :::solution then one could have -ksp_view 
>> :::solution:cancel and something like -ksp_view :::ALL:cancel to cancel all 
>> of them.
>> 
>> But I'd like a short term solution for the current design bug, so I'll 
>> eventually try a minimal change to the code.
>> 
>> 
>> 
>>> On Jan 22, 2023, at 7:59 PM, Jed Brown <j...@jedbrown.org> wrote:
>>> 
>>> Can we have a -xxx_view none or null to unset the view? Could even be a 
>>> viewer type that does nothing. I don't like the out-of-band 
>>> -xxx_view_cancel.
>>> 
>>> Barry Smith <bsm...@petsc.dev> writes:
>>> 
>>>> ALL the other options are sticky.  Calling setFromOptions() twice does not 
>>>> change the value of rtol etc etc etc that was set the last time and even 
>>>> -ksp_monitor is sticky, why are the viewers so special in that they are 
>>>> the only ones that are not sticky? Is not consistent, doesn't make sense, 
>>>> when -ksp_monitor is sticky. It is just a freak feature of the 
>>>> implementation of PetscOptionsGetViewer() that no one realized was there 
>>>> when they wrote it (probably me :-)).
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On Jan 22, 2023, at 1:16 PM, Jed Brown <j...@jedbrown.org> wrote:
>>>>> 
>>>>> Matthew Knepley <knep...@gmail.com> writes:
>>>>> 
>>>>>> On Sun, Jan 22, 2023 at 1:06 PM Barry Smith <bsm...@petsc.dev> wrote:
>>>>>> 
>>>>>>> 
>>>>>>> That makes incrementally adding new options to an existing object
>>>>>>> difficult, since each call to setFromOptions() screws up previous calls.
>>>>>>> 
>>>>>>> We already have
>>>>>>> 
>>>>>>> -ksp_monitor_cancel
>>>>>>> -ksp_converged_reason_view_cancel
>>>>>>> 
>>>>>> 
>>>>>> Let me address it another way. If I understand correctly, what happens
>>>>>> currently is that at each ViewFromOptions() call, the database is 
>>>>>> inspected
>>>>>> and if a *_view is found, then the view is executed. So when you replace
>>>>>> the database, if this option is not found then nothing happens. This 
>>>>>> seems
>>>>>> to satisfy a kind of options locality. If instead we make some options
>>>>>> sticky, like -ksp_view, so that once given they never expire, this would
>>>>>> make the code exceedingly hard to reason about, especially if options are
>>>>>> set deep inside something, before a user is knowingly doing things. This
>>>>>> does not sound like the right model to me.
>>>>> 
>>>>> We could have something like PetscOptionsMerge() if one wants to preserve 
>>>>> previously set options while adding some new ones (without tainting the 
>>>>> global database). I don't like stickiness in general (a key reason why 
>>>>> CMake is impossible to reason about and best practice is to run rm -rf * 
>>>>> && cmake .. -DALL_THE_OPTIONS).
>> 
> 

Reply via email to