On Fri, May 8, 2009 at 3:55 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
> ?Quick look is ok for me.
>
Just a note, to put it clear. With my patch, passing both "-snes_mf
-snes_mf_operator" is valid, and equivalent to just passing
"-snes_mf_operator" ...
> ?Barry
>
> On May 8, 2009, at 1:39 PM, Lisandro Dalcin wrote:
>
>> Well, it was not so easy to change the options name...
>>
>> We would need to update docs, tests, tutorial examples, and at this
>> point it is not clear if we could agree on better options names...
>>
>> I'm now following a different approach, hope the diff attached make it
>> clear enough... Just take a look to changes to SNESSetFromOptions()
>>
>> -
>>
>>
>> On Thu, May 7, 2009 at 10:26 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>>>
>>> ?How about?
>>>
>>> ?-snes_mf ? (means what it currently means)
>>>
>>> ?-snes_mf operator (means what -snes_mf_operator means)
>>>
>>> ?Barry
>>>
>>> On May 7, 2009, at 6:03 PM, Lisandro Dalcin wrote:
>>>
>>>> On Thu, May 7, 2009 at 6:14 PM, Jed Brown <jed at 59a2.org> wrote:
>>>>>
>>>>> Barry Smith wrote:
>>>>>>
>>>>>> ?I understand this. I just don't view this as a big deal worth
>>>>>> changing the code over.
>>>>>
>>>>> I agree. ?My comment was that *if* the options were to be changed, as
>>>>> Lisandro was suggesting, then it would be better to eliminate
>>>>> unnecessary options conflicts.
>>>>>
>>>>
>>>> Well, now that I'm actually writing the code, things are a bit more
>>>> clear...
>>>>
>>>> perhaps we should have just two options
>>>>
>>>> 1) -snes_mf, if passed, should be string "full" or "operator" (not
>>>> sure about these)
>>>> 2) -snes_mf_version, if passed, should be integer 1 or 2
>>>>
>>>> In Python pseudocode (thinking options like a Python dict)
>>>>
>>>>
>>>> if "snes_mf" in options:
>>>>
>>>> ?version = options.get("snes_mf_version", 1)
>>>> ?if version == 1:
>>>> ? ?MatCreateSNESMF(...)
>>>> ?elif version == 2:
>>>> ? ?SNESDefaultMatrixFreeCreate2(...)
>>>> ?else:
>>>> ? ?raise PetscError
>>>>
>>>> ?value = options["snes_mf"]
>>>> ?if value == "operator":
>>>> ? ?SNESSetJacobian(J,0,0,...)
>>>> ?elif value == "full":
>>>> ? ?SNESSetJacobian(J,J,MatMFFDComputeJacobian)
>>>> ?else:
>>>> ? ?raise PetscError
>>>>
>>>>
>>>> Note that I expect snes_mf_version=2 (despite being MatShell based) to
>>>> work with snes_mf="operator"
>>>>
>>>> What do you think?
>>>>
>>>> --
>>>> Lisandro Dalc?n
>>>> ---------------
>>>> Centro Internacional de M?todos Computacionales en Ingenier?a (CIMEC)
>>>> Instituto de Desarrollo Tecnol?gico para la Industria Qu?mica (INTEC)
>>>> Consejo Nacional de Investigaciones Cient?ficas y T?cnicas (CONICET)
>>>> PTLC - G?emes 3450, (3000) Santa Fe, Argentina
>>>> Tel/Fax: +54-(0)342-451.1594
>>>
>>>
>>
>>
>>
>> --
>> Lisandro Dalc?n
>> ---------------
>> Centro Internacional de M?todos Computacionales en Ingenier?a (CIMEC)
>> Instituto de Desarrollo Tecnol?gico para la Industria Qu?mica (INTEC)
>> Consejo Nacional de Investigaciones Cient?ficas y T?cnicas (CONICET)
>> PTLC - G?emes 3450, (3000) Santa Fe, Argentina
>> Tel/Fax: +54-(0)342-451.1594
>> <snes.diff>
>
>
--
Lisandro Dalc?n
---------------
Centro Internacional de M?todos Computacionales en Ingenier?a (CIMEC)
Instituto de Desarrollo Tecnol?gico para la Industria Qu?mica (INTEC)
Consejo Nacional de Investigaciones Cient?ficas y T?cnicas (CONICET)
PTLC - G?emes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594